cloudprovider: use ProviderConfig

This commit is contained in:
Yousong Zhou
2020-03-25 17:16:35 +08:00
parent e2826b1338
commit 8009857c8a
19 changed files with 116 additions and 53 deletions
@@ -102,16 +102,16 @@ func (self *SOpenStackProviderFactory) ValidateUpdateCloudaccountCredential(ctx
return output, nil
}
func (self *SOpenStackProviderFactory) GetProvider(providerId, providerName, url, account, password string) (cloudprovider.ICloudProvider, error) {
accountInfo := strings.Split(account, "/")
func (self *SOpenStackProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig) (cloudprovider.ICloudProvider, error) {
accountInfo := strings.Split(cfg.Account, "/")
if len(accountInfo) < 2 {
return nil, fmt.Errorf("Missing username or project name %s", account)
return nil, fmt.Errorf("Missing username or project name %s", cfg.Account)
}
project, username, endpointType, domainName, projectDomainName := accountInfo[0], accountInfo[1], "internal", "Default", "Default"
if len(accountInfo) == 3 {
domainName, projectDomainName = accountInfo[2], accountInfo[2]
}
client, err := openstack.NewOpenStackClient(providerId, providerName, url, username, password, project, endpointType, domainName, projectDomainName, false)
client, err := openstack.NewOpenStackClient(cfg.Id, cfg.Name, cfg.URL, username, cfg.Secret, project, endpointType, domainName, projectDomainName, false)
if err != nil {
return nil, err
}