code: func GetCloudProvider(name string, config io.Reader) (Interface, error) {
  	providersMutex.Lock()
  	defer providersMutex.Unlock()
  	f, found := providers[name]
  	if !found {
  		return nil, nil
  	}
  	return f(config)
  }
docs: // GetCloudProvider creates an instance of the named cloud provider, or nil if
  // the name is unknown.  The error return is only used if the named provider
  // was known but failed to initialize. The config parameter specifies the
  // io.Reader handler of the configuration file for the cloud provider, or nil
  // for no configuration.