From 8311f02839eab526a701bda27424e641bc6292ad Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Tue, 14 Aug 2018 12:14:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=9Aaliyun=E5=9C=A8?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=9E=E6=8E=A5=E5=90=8E=EF=BC=8C=E4=BC=9A?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=88=90=E5=8A=9F=E7=8A=B6=E6=80=81=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E6=9B=B4=E6=96=B0=E9=94=99=E8=AF=AF=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E4=BF=A1=E6=81=AF=E5=90=8E=E8=BF=98=E6=98=AF=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=88=90=E5=8A=9F=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/util/aliyun/aliyun.go | 10 ++++++++++ pkg/util/aliyun/provider/provider.go | 7 ++++++- 2 files changed, 16 insertions(+), 1 deletion(-) 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 {