From 3b2b4d59e013babf5035d0ebc6c6bb09e68ac765 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Mon, 26 Nov 2018 01:42:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=9A1.=20host=20request?= =?UTF-8?q?=20double=20token=202.=20cloud=20provider=20lost=20access=20url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/cloudproviders.go | 15 ++++++++++++++- pkg/mcclient/mcclient.go | 4 +++- pkg/mcclient/session.go | 3 ++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index e5b63489b1..cbf25ac56c 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -133,7 +133,19 @@ func (self *SCloudproviderManager) ValidateCreateData(ctx context.Context, userC return nil, httperrors.NewUnsupportOperationError("Directly creating cloudprovider is not supported, create cloudaccount instead") } +func (self *SCloudprovider) getAccessUrl() string { + if len(self.AccessUrl) > 0 { + return self.AccessUrl + } + account := self.GetCloudaccount() + return account.AccessUrl +} + func (self *SCloudprovider) getPassword() (string, error) { + if len(self.Secret) == 0 { + account := self.GetCloudaccount() + return account.getPassword() + } return utils.DescryptAESBase64(self.Id, self.Secret) } @@ -378,11 +390,12 @@ func (self *SCloudprovider) GetDriver() (cloudprovider.ICloudProvider, error) { return nil, fmt.Errorf("Cloud provider is not enabled") } + accessUrl := self.getAccessUrl() passwd, err := self.getPassword() if err != nil { return nil, err } - return cloudprovider.GetProvider(self.Id, self.Name, self.AccessUrl, self.Account, passwd, self.Provider) + return cloudprovider.GetProvider(self.Id, self.Name, accessUrl, self.Account, passwd, self.Provider) } func (self *SCloudprovider) savePassword(secret string) error { diff --git a/pkg/mcclient/mcclient.go b/pkg/mcclient/mcclient.go index 96b81240c7..28adaafbd4 100644 --- a/pkg/mcclient/mcclient.go +++ b/pkg/mcclient/mcclient.go @@ -76,7 +76,9 @@ func getDefaultHeader(header http.Header, token string) http.Header { if header == nil { header = http.Header{} } - header.Add("X-Auth-Token", token) + if len(header.Get(AUTH_TOKEN)) == 0 { + header.Add(AUTH_TOKEN, token) + } } return header } diff --git a/pkg/mcclient/session.go b/pkg/mcclient/session.go index fdf29f278d..6d9d3cc019 100644 --- a/pkg/mcclient/session.go +++ b/pkg/mcclient/session.go @@ -42,7 +42,8 @@ type ClientSession struct { func populateHeader(self *http.Header, update http.Header) { for k, v := range update { for _, vv := range v { - self.Add(k, vv) + // self.Add(k, vv) + self.Set(k, vv) } } }