From f74e345b0268c87e5d47d7faed2797ae31b54fe4 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Wed, 21 Oct 2020 21:24:50 +0800 Subject: [PATCH] fix: add rds quota check --- pkg/compute/models/dbinstances.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/compute/models/dbinstances.go b/pkg/compute/models/dbinstances.go index d312ca7d50..3988c52ac6 100644 --- a/pkg/compute/models/dbinstances.go +++ b/pkg/compute/models/dbinstances.go @@ -453,10 +453,23 @@ func (man *SDBInstanceManager) ValidateCreateData(ctx context.Context, userCred return nil, err } + quotaKeys := fetchRegionalQuotaKeys(rbacutils.ScopeProject, ownerId, region, cloudprovider) + pendingUsage := SRegionQuota{Rds: 1} + pendingUsage.SetKeys(quotaKeys) + if err := quotas.CheckSetPendingQuota(ctx, userCred, &pendingUsage); err != nil { + return nil, httperrors.NewOutOfQuotaError("%s", err) + } + return input.JSON(input), nil } func (self *SDBInstance) PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) { + pendingUsage := SRegionQuota{Loadbalancer: 1} + pendingUsage.SetKeys(self.GetQuotaKeys()) + err := quotas.CancelPendingUsage(ctx, userCred, &pendingUsage, &pendingUsage, true) + if err != nil { + log.Errorf("CancelPendingUsage error %s", err) + } self.SetStatus(userCred, api.DBINSTANCE_DEPLOYING, "") params := data.(*jsonutils.JSONDict) task, err := taskman.TaskManager.NewTask(ctx, "DBInstanceCreateTask", self, userCred, params, "", "", nil)