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)