From 984790c18f3839f7c6a22b33e9fb66e584d35dba Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Mon, 24 May 2021 16:46:00 +0800 Subject: [PATCH] fix(region): restrict account project mapping --- pkg/apis/compute/cloudaccount.go | 1 + pkg/compute/models/cloudaccounts.go | 3 +++ 2 files changed, 4 insertions(+) diff --git a/pkg/apis/compute/cloudaccount.go b/pkg/apis/compute/cloudaccount.go index 011a92de85..ed98317929 100644 --- a/pkg/apis/compute/cloudaccount.go +++ b/pkg/apis/compute/cloudaccount.go @@ -480,5 +480,6 @@ type CloudaccountEnableAutoSyncInput struct { type CloudaccountProjectMappingInput struct { // 同步策略Id, 若不传此参数则解绑 + // 绑定同步策略要求当前云账号此刻未绑定其他同步策略 ProjectMappingId string `json:"project_mapping_id"` } diff --git a/pkg/compute/models/cloudaccounts.go b/pkg/compute/models/cloudaccounts.go index 8949807bcb..2c8c095348 100644 --- a/pkg/compute/models/cloudaccounts.go +++ b/pkg/compute/models/cloudaccounts.go @@ -2870,6 +2870,9 @@ func (self *SCloudaccount) PerformProjectMapping(ctx context.Context, userCred m if err != nil { return nil, err } + if len(self.ProjectMappingId) > 0 && self.ProjectMappingId != input.ProjectMappingId { + return nil, httperrors.NewInputParameterError("account %s has aleady bind project mapping %s", self.Name, self.ProjectMappingId) + } } // no changes if self.ProjectMappingId == input.ProjectMappingId {