From 9c26c040835b7e7ac59f817c0f7d20d1abf32683 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Thu, 14 May 2020 01:14:40 +0800 Subject: [PATCH] fix: status-base resource's action log missing owner project/domain --- pkg/cloudcommon/db/interface.go | 15 +++++++++++++++ pkg/cloudcommon/db/statusbase.go | 10 +++++++--- pkg/cloudcommon/db/statusdomainresource.go | 8 ++++++-- pkg/cloudcommon/db/statusinfrasresource.go | 8 ++++++-- pkg/cloudcommon/db/statusstandalone.go | 8 ++++++-- 5 files changed, 40 insertions(+), 9 deletions(-) diff --git a/pkg/cloudcommon/db/interface.go b/pkg/cloudcommon/db/interface.go index e94b2b980f..6624ddbdae 100644 --- a/pkg/cloudcommon/db/interface.go +++ b/pkg/cloudcommon/db/interface.go @@ -367,3 +367,18 @@ type IAdminSharableVirtualModel interface { GetIAdminSharableVirtualModel() IAdminSharableVirtualModel } + +type IStatusStandaloneModel interface { + IStandaloneModel + IStatusBase +} + +type IStatusDomainLevelModel interface { + IDomainLevelModel + IStatusBase +} + +type IStatusInfrasModel interface { + IInfrasModel + IStatusBase +} diff --git a/pkg/cloudcommon/db/statusbase.go b/pkg/cloudcommon/db/statusbase.go index 319f70532b..aa6d05bac0 100644 --- a/pkg/cloudcommon/db/statusbase.go +++ b/pkg/cloudcommon/db/statusbase.go @@ -37,11 +37,15 @@ type SStatusResourceBase struct { } type IStatusBase interface { - IModel SetStatusValue(status string) GetStatus() string } +type IStatusBaseModel interface { + IModel + IStatusBase +} + func (model *SStatusResourceBase) SetStatusValue(status string) { model.Status = status } @@ -50,7 +54,7 @@ func (model SStatusResourceBase) GetStatus() string { return model.Status } -func statusBaseSetStatus(model IStatusBase, userCred mcclient.TokenCredential, status string, reason string) error { +func statusBaseSetStatus(model IStatusBaseModel, userCred mcclient.TokenCredential, status string, reason string) error { if model.GetStatus() == status { return nil } @@ -73,7 +77,7 @@ func statusBaseSetStatus(model IStatusBase, userCred mcclient.TokenCredential, s return nil } -func StatusBasePerformStatus(model IStatusBase, userCred mcclient.TokenCredential, input apis.PerformStatusInput) error { +func StatusBasePerformStatus(model IStatusBaseModel, userCred mcclient.TokenCredential, input apis.PerformStatusInput) error { if len(input.Status) == 0 { return httperrors.NewMissingParameterError("status") } diff --git a/pkg/cloudcommon/db/statusdomainresource.go b/pkg/cloudcommon/db/statusdomainresource.go index 5dd831bcc4..a7bc76922d 100644 --- a/pkg/cloudcommon/db/statusdomainresource.go +++ b/pkg/cloudcommon/db/statusdomainresource.go @@ -51,9 +51,13 @@ func (self *SStatusDomainLevelResourceBase) AllowPerformStatus(ctx context.Conte return IsDomainAllowPerform(userCred, self, "status") } +func (self *SStatusDomainLevelResourceBase) GetIStatusDomainLevelModel() IStatusDomainLevelModel { + return self.GetVirtualObject().(IStatusDomainLevelModel) +} + // 更新资源状态 func (self *SStatusDomainLevelResourceBase) PerformStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformStatusInput) (jsonutils.JSONObject, error) { - err := StatusBasePerformStatus(self, userCred, input) + err := StatusBasePerformStatus(self.GetIStatusDomainLevelModel(), userCred, input) if err != nil { return nil, errors.Wrap(err, "StatusBasePerformStatus") } @@ -61,7 +65,7 @@ func (self *SStatusDomainLevelResourceBase) PerformStatus(ctx context.Context, u } func (model *SStatusDomainLevelResourceBase) SetStatus(userCred mcclient.TokenCredential, status string, reason string) error { - return statusBaseSetStatus(model, userCred, status, reason) + return statusBaseSetStatus(model.GetIStatusDomainLevelModel(), userCred, status, reason) } func (manager *SStatusDomainLevelResourceBaseManager) ValidateCreateData( diff --git a/pkg/cloudcommon/db/statusinfrasresource.go b/pkg/cloudcommon/db/statusinfrasresource.go index fa44c4af29..7df93ff687 100644 --- a/pkg/cloudcommon/db/statusinfrasresource.go +++ b/pkg/cloudcommon/db/statusinfrasresource.go @@ -51,9 +51,13 @@ func (self *SStatusInfrasResourceBase) AllowPerformStatus(ctx context.Context, u return IsDomainAllowPerform(userCred, self, "status") } +func (self *SStatusInfrasResourceBase) GetIStatusInfrasModel() IStatusInfrasModel { + return self.GetVirtualObject().(IStatusInfrasModel) +} + // 更新资源状态 func (self *SStatusInfrasResourceBase) PerformStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformStatusInput) (jsonutils.JSONObject, error) { - err := StatusBasePerformStatus(self, userCred, input) + err := StatusBasePerformStatus(self.GetIStatusInfrasModel(), userCred, input) if err != nil { return nil, errors.Wrap(err, "StatusBasePerformStatus") } @@ -61,7 +65,7 @@ func (self *SStatusInfrasResourceBase) PerformStatus(ctx context.Context, userCr } func (model *SStatusInfrasResourceBase) SetStatus(userCred mcclient.TokenCredential, status string, reason string) error { - return statusBaseSetStatus(model, userCred, status, reason) + return statusBaseSetStatus(model.GetIStatusInfrasModel(), userCred, status, reason) } func (manager *SStatusInfrasResourceBaseManager) ValidateCreateData( diff --git a/pkg/cloudcommon/db/statusstandalone.go b/pkg/cloudcommon/db/statusstandalone.go index ccde6b0159..03d170a1cd 100644 --- a/pkg/cloudcommon/db/statusstandalone.go +++ b/pkg/cloudcommon/db/statusstandalone.go @@ -51,9 +51,13 @@ func (self *SStatusStandaloneResourceBase) AllowPerformStatus(ctx context.Contex return IsAdminAllowPerform(userCred, self, "status") } +func (self *SStatusStandaloneResourceBase) GetIStatusStandaloneModel() IStatusStandaloneModel { + return self.GetVirtualObject().(IStatusStandaloneModel) +} + // 更新资源状态 func (self *SStatusStandaloneResourceBase) PerformStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformStatusInput) (jsonutils.JSONObject, error) { - err := StatusBasePerformStatus(self, userCred, input) + err := StatusBasePerformStatus(self.GetIStatusStandaloneModel(), userCred, input) if err != nil { return nil, errors.Wrap(err, "StatusBasePerformStatus") } @@ -61,7 +65,7 @@ func (self *SStatusStandaloneResourceBase) PerformStatus(ctx context.Context, us } func (model *SStatusStandaloneResourceBase) SetStatus(userCred mcclient.TokenCredential, status string, reason string) error { - return statusBaseSetStatus(model, userCred, status, reason) + return statusBaseSetStatus(model.GetIStatusStandaloneModel(), userCred, status, reason) } func (manager *SStatusStandaloneResourceBaseManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input apis.StatusStandaloneResourceCreateInput) (apis.StatusStandaloneResourceCreateInput, error) {