code: func InitCloudProvider(name string, configFilePath string) (Interface, error) {
  	var cloud Interface
  	var err error
  
  	if name == "" {
  		klog.Info("No cloud provider specified.")
  		return nil, nil
  	}
  
  	if IsExternal(name) {
  		klog.Info("External cloud provider specified")
  		return nil, nil
  	}
  
  	for _, provider := range deprecatedCloudProviders {
  		if provider.name == name {
  			detail := provider.detail
  			if provider.external {
  				detail = fmt.Sprintf("Please use 'external' cloud provider for %s: %s", name, provider.detail)
  			}
  			klog.Warningf("WARNING: %s built-in cloud provider is now deprecated. %s", name, detail)
  
  			break
  		}
  	}
  
  	if configFilePath != "" {
  		var config *os.File
  		config, err = os.Open(configFilePath)
  		if err != nil {
  			klog.Fatalf("Couldn't open cloud provider configuration %s: %#v",
  				configFilePath, err)
  		}
  
  		defer config.Close()
  		cloud, err = GetCloudProvider(name, config)
  	} else {
  		// Pass explicit nil so plugins can actually check for nil. See
  		// "Why is my nil error value not equal to nil?" in golang.org/doc/faq.
  		cloud, err = GetCloudProvider(name, nil)
  	}
  
  	if err != nil {
  		return nil, fmt.Errorf("could not init cloud provider %q: %v", name, err)
  	}
  	if cloud == nil {
  		return nil, fmt.Errorf("unknown cloud provider %q", name)
  	}
  
  	return cloud, nil
  }
docs: // InitCloudProvider creates an instance of the named cloud provider.