diff --git a/pkg/util/aliyun/aliyun.go b/pkg/util/aliyun/aliyun.go index 7c2336f821..26b9efce28 100644 --- a/pkg/util/aliyun/aliyun.go +++ b/pkg/util/aliyun/aliyun.go @@ -59,6 +59,16 @@ func jsonRequest(client *sdk.Client, apiName string, params map[string]string) ( return body, nil } +func (self *SAliyunClient) UpdateAccount(accessKey, secret string) error { + if self.accessKey != accessKey || self.secret != secret { + self.accessKey = accessKey + self.secret = secret + return self.fetchRegions() + } else { + return nil + } +} + func (self *SAliyunClient) getDefaultClient() (*sdk.Client, error) { return sdk.NewClientWithAccessKey(ALIYUN_DEFAULT_REGION, self.accessKey, self.secret) } diff --git a/pkg/util/aliyun/provider/provider.go b/pkg/util/aliyun/provider/provider.go index c637be6960..563e4a2ed3 100644 --- a/pkg/util/aliyun/provider/provider.go +++ b/pkg/util/aliyun/provider/provider.go @@ -18,7 +18,12 @@ func (self *SAliyunProviderFactory) GetId() string { func (self *SAliyunProviderFactory) GetProvider(providerId, providerName, url, account, secret string) (cloudprovider.ICloudProvider, error) { provider, ok := self.providerTable[providerId] if ok { - return provider, nil + err := provider.client.UpdateAccount(account, secret) + if err != nil { + return nil, err + } else { + return provider, nil + } } client, err := aliyun.NewAliyunClient(providerId, providerName, account, secret) if err != nil {