Merge pull request #8349 from ioito/hotfix/qx-huawei-clirc

fix: huawei clirc region not correct
This commit is contained in:
yunion-ci-robot
2020-10-21 01:01:13 +08:00
committed by GitHub
16 changed files with 74 additions and 56 deletions
+16 -3
View File
@@ -168,10 +168,17 @@ func (cp *ProviderConfig) AdaptiveTimeoutHttpClient() *http.Client {
return client
}
type SProviderInfo struct {
Name string
Url string
Account string
Secret string
}
type ICloudProviderFactory interface {
GetProvider(cfg ProviderConfig) (ICloudProvider, error)
GetClientRC(url, account, secret string) (map[string]string, error)
GetClientRC(SProviderInfo) (map[string]string, error)
GetId() string
GetName() string
@@ -331,12 +338,18 @@ func GetProvider(cfg ProviderConfig) (ICloudProvider, error) {
return driver.GetProvider(cfg)
}
func GetClientRC(accessUrl, account, secret, provider string) (map[string]string, error) {
func GetClientRC(name, accessUrl, account, secret, provider string) (map[string]string, error) {
driver, err := GetProviderFactory(provider)
if err != nil {
return nil, errors.Wrap(err, "GetProviderFactory")
}
return driver.GetClientRC(accessUrl, account, secret)
info := SProviderInfo{
Name: name,
Url: accessUrl,
Account: account,
Secret: secret,
}
return driver.GetClientRC(info)
}
func IsSupported(provider string) bool {
+1 -1
View File
@@ -1561,7 +1561,7 @@ func (provider *SCloudprovider) GetDetailsClirc(ctx context.Context, userCred mc
if err != nil {
return nil, err
}
rc, err := cloudprovider.GetClientRC(accessUrl, provider.Account, passwd, provider.Provider)
rc, err := cloudprovider.GetClientRC(provider.Name, accessUrl, provider.Account, passwd, provider.Provider)
if err != nil {
return nil, err
}
+3 -3
View File
@@ -191,10 +191,10 @@ func (self *SAliyunProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig
}, nil
}
func (self *SAliyunProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
func (self *SAliyunProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
return map[string]string{
"ALIYUN_ACCESS_KEY": account,
"ALIYUN_SECRET": secret,
"ALIYUN_ACCESS_KEY": info.Account,
"ALIYUN_SECRET": info.Secret,
"ALIYUN_REGION": aliyun.ALIYUN_DEFAULT_REGION,
}, nil
}
+5 -5
View File
@@ -182,12 +182,12 @@ func (self *SAwsProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig) (
}, nil
}
func (self *SAwsProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
func (self *SAwsProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
return map[string]string{
"AWS_ACCESS_URL": url,
"AWS_ACCESS_KEY": account,
"AWS_SECRET": secret,
"AWS_REGION": aws.GetDefaultRegionId(url),
"AWS_ACCESS_URL": info.Url,
"AWS_ACCESS_KEY": info.Account,
"AWS_SECRET": info.Secret,
"AWS_REGION": aws.GetDefaultRegionId(info.Url),
}, nil
}
+3 -3
View File
@@ -135,15 +135,15 @@ func (self *SAzureProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig)
}
}
func (self *SAzureProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
tenantId, appId, appKey, subId := parseAccount(account, secret)
func (self *SAzureProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
tenantId, appId, appKey, subId := parseAccount(info.Account, info.Secret)
return map[string]string{
"AZURE_DIRECTORY_ID": tenantId,
"AZURE_SUBSCRIPTION_ID": subId,
"AZURE_APPLICATION_ID": appId,
"AZURE_APPLICATION_KEY": appKey,
"AZURE_REGION_ID": "",
"AZURE_CLOUD_ENV": url,
"AZURE_CLOUD_ENV": info.Url,
}, nil
}
+4 -4
View File
@@ -99,11 +99,11 @@ func (self *SCtyunProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig)
}, nil
}
func (self *SCtyunProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
func (self *SCtyunProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
return map[string]string{
"CTYUN_ACCESS_URL": url,
"CTYUN_ACCESS_KEY": account,
"CTYUN_SECRET": secret,
"CTYUN_ACCESS_URL": info.Url,
"CTYUN_ACCESS_KEY": info.Account,
"CTYUN_SECRET": info.Secret,
"CTYUN_REGION": ctyun.CTYUN_DEFAULT_REGION,
}, nil
}
+4 -4
View File
@@ -125,8 +125,8 @@ func (self *SESXiProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig)
}, nil
}
func (self *SESXiProviderFactory) GetClientRC(urlStr, account, secret string) (map[string]string, error) {
parts, err := url.Parse(urlStr)
func (self *SESXiProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
parts, err := url.Parse(info.Url)
if err != nil {
return nil, err
}
@@ -138,8 +138,8 @@ func (self *SESXiProviderFactory) GetClientRC(urlStr, account, secret string) (m
return map[string]string{
"VMWARE_HOST": host,
"VMWARE_PORT": fmt.Sprintf("%d", port),
"VMWARE_ACCOUNT": account,
"VMWARE_PASSWORD": secret,
"VMWARE_ACCOUNT": info.Account,
"VMWARE_PASSWORD": info.Secret,
}, nil
}
+2 -2
View File
@@ -174,8 +174,8 @@ func parseAccount(account, secret string) (projectId string, clientEmail string,
return
}
func (self *SGoogleProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
projectId, clientEmail, privateKey, privateKeyId := parseAccount(account, secret)
func (self *SGoogleProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
projectId, clientEmail, privateKey, privateKeyId := parseAccount(info.Account, info.Secret)
return map[string]string{
"GOOGLE_CLIENT_EMAIL": clientEmail,
"GOOGLE_PROJECT_ID": projectId,
+10 -5
View File
@@ -139,13 +139,18 @@ func (self *SHuaweiProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig
}, nil
}
func (self *SHuaweiProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
accessKey, projectId := parseAccount(account)
func (self *SHuaweiProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
accessKey, projectId := parseAccount(info.Account)
region := huawei.HUAWEI_DEFAULT_REGION
data := strings.Split(info.Name, "-")
if len(data) >= 3 {
region = strings.Join(data[2:], "-")
}
return map[string]string{
"HUAWEI_CLOUD_ENV": url,
"HUAWEI_CLOUD_ENV": info.Url,
"HUAWEI_ACCESS_KEY": accessKey,
"HUAWEI_SECRET": secret,
"HUAWEI_REGION": huawei.HUAWEI_DEFAULT_REGION,
"HUAWEI_SECRET": info.Secret,
"HUAWEI_REGION": region,
"HUAWEI_PROJECT": projectId,
}, nil
}
@@ -50,11 +50,11 @@ func (self *SCephRadosProviderFactory) GetProvider(cfg cloudprovider.ProviderCon
}), nil
}
func (self *SCephRadosProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
func (self *SCephRadosProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
return map[string]string{
"S3_ACCESS_KEY": account,
"S3_SECRET": secret,
"S3_ACCESS_URL": url,
"S3_ACCESS_KEY": info.Account,
"S3_SECRET": info.Secret,
"S3_ACCESS_URL": info.Url,
"S3_BACKEND": api.CLOUD_PROVIDER_CEPH,
}, nil
}
@@ -85,11 +85,11 @@ func (self *SObjectStoreProviderFactory) GetProvider(cfg cloudprovider.ProviderC
}), nil
}
func (self *SObjectStoreProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
func (self *SObjectStoreProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
return map[string]string{
"S3_ACCESS_KEY": account,
"S3_SECRET": secret,
"S3_ACCESS_URL": url,
"S3_ACCESS_KEY": info.Account,
"S3_SECRET": info.Secret,
"S3_ACCESS_URL": info.Url,
"S3_BACKEND": api.CLOUD_PROVIDER_GENERICS3,
}, nil
}
@@ -50,10 +50,10 @@ func (self *SXskyProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig)
}), nil
}
func (self *SXskyProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
func (self *SXskyProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
client, err := xsky.NewXskyClient(
objectstore.NewObjectStoreClientConfig(
url, account, secret,
info.Url, info.Account, info.Secret,
),
)
if err != nil {
@@ -136,10 +136,10 @@ func (self *SOpenStackProviderFactory) GetProvider(cfg cloudprovider.ProviderCon
}, nil
}
func (self *SOpenStackProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
accountInfo := strings.Split(account, "/")
func (self *SOpenStackProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
accountInfo := strings.Split(info.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", info.Account)
}
project, username, endpointType, domainName, projectDomainName := accountInfo[0], accountInfo[1], "internal", "Default", "Default"
if len(accountInfo) == 3 {
@@ -147,9 +147,9 @@ func (self *SOpenStackProviderFactory) GetClientRC(url, account, secret string)
}
return map[string]string{
"OPENSTACK_AUTH_URL": url,
"OPENSTACK_AUTH_URL": info.Url,
"OPENSTACK_USERNAME": username,
"OPENSTACK_PASSWORD": secret,
"OPENSTACK_PASSWORD": info.Secret,
"OPENSTACK_PROJECT": project,
"OPENSTACK_ENDPOINT_TYPE": endpointType,
"OPENSTACK_DOMAIN_NAME": domainName,
+4 -4
View File
@@ -227,17 +227,17 @@ func (self *SQcloudProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig
}, nil
}
func (self *SQcloudProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
secretId := account
func (self *SQcloudProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
secretId := info.Account
appId := ""
if tmp := strings.Split(account, "/"); len(tmp) == 2 {
if tmp := strings.Split(info.Account, "/"); len(tmp) == 2 {
secretId = tmp[0]
appId = tmp[1]
}
return map[string]string{
"QCLOUD_APPID": appId,
"QCLOUD_SECRET_ID": secretId,
"QCLOUD_SECRET_KEY": secret,
"QCLOUD_SECRET_KEY": info.Secret,
"QCLOUD_REGION": qcloud.QCLOUD_DEFAULT_REGION,
}, nil
}
+3 -3
View File
@@ -98,11 +98,11 @@ func (self *SUcloudProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig
}, nil
}
func (self *SUcloudProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
accessKey, projectId := parseAccount(account)
func (self *SUcloudProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
accessKey, projectId := parseAccount(info.Account)
return map[string]string{
"UCLOUD_ACCESS_KEY": accessKey,
"UCLOUD_SECRET": secret,
"UCLOUD_SECRET": info.Secret,
"UCLOUD_REGION": ucloud.UCLOUD_DEFAULT_REGION,
"UCLOUD_PROJECT": projectId,
}, nil
+4 -4
View File
@@ -91,11 +91,11 @@ func (self *SZStackProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig
}, nil
}
func (self *SZStackProviderFactory) GetClientRC(url, account, secret string) (map[string]string, error) {
func (self *SZStackProviderFactory) GetClientRC(info cloudprovider.SProviderInfo) (map[string]string, error) {
return map[string]string{
"ZSTACK_AUTH_URL": url,
"ZSTACK_USERNAME": account,
"ZSTACK_PASSWORD": secret,
"ZSTACK_AUTH_URL": info.Url,
"ZSTACK_USERNAME": info.Account,
"ZSTACK_PASSWORD": info.Secret,
"ZSTACK_REGION_ID": zstack.ZSTACK_DEFAULT_REGION,
}, nil
}