From 188662cd5156a609d56aa8edb0b64ac297970b34 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Sun, 8 Mar 2020 15:50:06 +0800 Subject: [PATCH] fix: cloudprovider performEnable should also enable its cloudaccount --- pkg/compute/models/cloudaccounts.go | 4 ++++ pkg/compute/models/cloudproviders.go | 15 ++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pkg/compute/models/cloudaccounts.go b/pkg/compute/models/cloudaccounts.go index 621085f011..0ee6661460 100644 --- a/pkg/compute/models/cloudaccounts.go +++ b/pkg/compute/models/cloudaccounts.go @@ -227,6 +227,10 @@ func (self *SCloudaccount) ValidateDeleteCondition(ctx context.Context) error { return self.SEnabledStatusStandaloneResourceBase.ValidateDeleteCondition(ctx) } +func (self *SCloudaccount) enableAccountOnly(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { + return self.SEnabledStatusStandaloneResourceBase.PerformEnable(ctx, userCred, query, data) +} + func (self *SCloudaccount) PerformEnable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { if strings.Index(self.Status, "delet") >= 0 { return nil, httperrors.NewInvalidStatusError("Cannot enable deleting account") diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index 78681a343b..9f407c695a 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -18,6 +18,7 @@ import ( "context" "database/sql" "fmt" + "strings" "sync" "time" @@ -1239,21 +1240,17 @@ func (self *SCloudprovider) ClearSchedDescCache() error { } func (self *SCloudprovider) PerformEnable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { + if strings.Index(self.Status, "delet") >= 0 { + return nil, httperrors.NewInvalidStatusError("Cannot enable deleting account") + } _, err := self.SEnabledStatusStandaloneResourceBase.PerformEnable(ctx, userCred, query, data) if err != nil { return nil, err } account := self.GetCloudaccount() if account != nil { - allEnabled := true - providers := account.GetCloudproviders() - for i := range providers { - if !providers[i].Enabled { - allEnabled = false - } - } - if allEnabled && !account.Enabled { - return account.PerformEnable(ctx, userCred, nil, nil) + if !account.Enabled { + return account.enableAccountOnly(ctx, userCred, nil, nil) } } return nil, nil