From 92f89fd575103d367fa10363b70114c5a309f0fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Tue, 7 Aug 2018 20:30:49 +0800 Subject: [PATCH] =?UTF-8?q?bufix:=20=E4=BF=AE=E5=A4=8Ddisk-resize=20quota?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/disks.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index 8ee014ca78..67cdebd1b7 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -20,6 +20,7 @@ import ( "github.com/yunionio/pkg/utils" "github.com/yunionio/onecloud/pkg/cloudcommon/db" + "github.com/yunionio/onecloud/pkg/cloudcommon/db/quotas" "github.com/yunionio/onecloud/pkg/cloudcommon/db/taskman" "github.com/yunionio/onecloud/pkg/cloudprovider" "github.com/yunionio/onecloud/pkg/compute/options" @@ -336,7 +337,11 @@ func (self *SDisk) PerformResize(ctx context.Context, userCred mcclient.TokenCre if addDisk > storage.GetFreeCapacity() { return nil, httperrors.NewOutOfResourceError("Not enough free space") } - return nil, self.StartDiskResizeTask(ctx, userCred, int64(size)) + pendingUsage := SQuota{Storage: int(addDisk)} + if err := QuotaManager.CheckSetPendingQuota(ctx, userCred, userCred.GetProjectId(), &pendingUsage); err != nil { + return nil, httperrors.NewOutOfQuotaError(err.Error()) + } + return nil, self.StartDiskResizeTask(ctx, userCred, int64(size), "", &pendingUsage) } } @@ -719,15 +724,10 @@ func (self *SDisk) CustomizeDelete(ctx context.Context, userCred mcclient.TokenC return self.StartDiskDeleteTask(ctx, userCred, "", false) } -func (self *SDisk) StartDiskResizeTask(ctx context.Context, userCred mcclient.TokenCredential, size int64) error { +func (self *SDisk) StartDiskResizeTask(ctx context.Context, userCred mcclient.TokenCredential, size int64, parentTaskId string, pendingUsage quotas.IQuota) error { params := jsonutils.NewDict() params.Add(jsonutils.NewInt(size), "size") - pendingUsage := SQuota{Storage: int(size)} - if err := QuotaManager.CheckSetPendingQuota(ctx, userCred, userCred.GetProjectId(), &pendingUsage); err != nil { - return httperrors.NewOutOfQuotaError(err.Error()) - } - if task, err := taskman.TaskManager.NewTask(ctx, "DiskResizeTask", self, userCred, params, "", "", &pendingUsage); err != nil { - log.Errorf("%s", err) + if task, err := taskman.TaskManager.NewTask(ctx, "DiskResizeTask", self, userCred, params, parentTaskId, "", pendingUsage); err != nil { return err } else { task.ScheduleRun(nil)