From bf3546109ca6ed849c0f715daa94fa66b57663e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Mon, 11 Mar 2019 16:09:49 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E4=B8=BB=E6=9C=BA=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E7=9A=84=E7=A3=81=E7=9B=98=E9=BB=98=E8=AE=A4=E9=83=BD?= =?UTF-8?q?=E6=98=AFauto=20delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/guest_actions.go | 4 ++-- pkg/compute/models/guests.go | 12 ++++++------ pkg/compute/tasks/guest_batch_create_task.go | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkg/compute/models/guest_actions.go b/pkg/compute/models/guest_actions.go index 570d1c3040..3b8a005e95 100644 --- a/pkg/compute/models/guest_actions.go +++ b/pkg/compute/models/guest_actions.go @@ -1139,7 +1139,7 @@ func (self *SGuest) PerformCreatedisk(ctx context.Context, userCred mcclient.Tok lockman.LockObject(ctx, host) defer lockman.ReleaseObject(ctx, host) - err = self.CreateDisksOnHost(ctx, userCred, host, disksConf, pendingUsage, false) + err = self.CreateDisksOnHost(ctx, userCred, host, disksConf, pendingUsage, false, false) if err != nil { QuotaManager.CancelPendingUsage(ctx, userCred, self.ProjectId, nil, pendingUsage) logclient.AddActionLog(self, logclient.ACT_CREATE, err.Error(), userCred, false) @@ -1581,7 +1581,7 @@ func (self *SGuest) PerformChangeConfig(ctx context.Context, userCred mcclient.T } } if newDisks.Length() > 0 { - err := self.CreateDisksOnHost(ctx, userCred, host, newDisks, pendingUsage, false) + err := self.CreateDisksOnHost(ctx, userCred, host, newDisks, pendingUsage, false, false) if err != nil { QuotaManager.CancelPendingUsage(ctx, userCred, self.ProjectId, nil, pendingUsage) return nil, httperrors.NewBadRequestError("Create disk on host error: %s", err) diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 8097e19c79..0e242b7f6f 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -2409,14 +2409,14 @@ func (self *SGuest) attach2RandomNetwork(ctx context.Context, userCred mcclient. } func (self *SGuest) CreateDisksOnHost(ctx context.Context, userCred mcclient.TokenCredential, host *SHost, - data *jsonutils.JSONDict, pendingUsage quotas.IQuota, inheritBilling bool) error { + data *jsonutils.JSONDict, pendingUsage quotas.IQuota, inheritBilling bool, isWithServerCreate bool) error { diskJsonArray := jsonutils.GetArrayOfPrefix(data, "disk") for idx := 0; idx < len(diskJsonArray); idx += 1 { // .Contains(fmt.Sprintf("disk.%d", idx)); idx += 1 { diskConfig, err := parseDiskInfo(ctx, userCred, diskJsonArray[idx]) if err != nil { return err } - disk, err := self.createDiskOnHost(ctx, userCred, host, diskConfig, pendingUsage, inheritBilling) + disk, err := self.createDiskOnHost(ctx, userCred, host, diskConfig, pendingUsage, inheritBilling, isWithServerCreate) if err != nil { return err } @@ -2429,7 +2429,7 @@ func (self *SGuest) CreateDisksOnHost(ctx context.Context, userCred mcclient.Tok } func (self *SGuest) createDiskOnStorage(ctx context.Context, userCred mcclient.TokenCredential, storage *SStorage, - diskConfig *SDiskConfig, pendingUsage quotas.IQuota, inheritBilling bool) (*SDisk, error) { + diskConfig *SDiskConfig, pendingUsage quotas.IQuota, inheritBilling bool, isWithServerCreate bool) (*SDisk, error) { lockman.LockObject(ctx, storage) defer lockman.ReleaseObject(ctx, storage) @@ -2446,7 +2446,7 @@ func (self *SGuest) createDiskOnStorage(ctx context.Context, userCred mcclient.T } autoDelete := false - if storage.IsLocal() || billingType == BILLING_TYPE_PREPAID { + if storage.IsLocal() || billingType == BILLING_TYPE_PREPAID || isWithServerCreate { autoDelete = true } disk, err := storage.createDisk(diskName, diskConfig, userCred, self.ProjectId, autoDelete, self.IsSystem, @@ -2464,12 +2464,12 @@ func (self *SGuest) createDiskOnStorage(ctx context.Context, userCred mcclient.T } func (self *SGuest) createDiskOnHost(ctx context.Context, userCred mcclient.TokenCredential, host *SHost, - diskConfig *SDiskConfig, pendingUsage quotas.IQuota, inheritBilling bool) (*SDisk, error) { + diskConfig *SDiskConfig, pendingUsage quotas.IQuota, inheritBilling bool, isWithServerCreate bool) (*SDisk, error) { storage := self.GetDriver().ChooseHostStorage(host, diskConfig.Backend) if storage == nil { return nil, fmt.Errorf("No storage on %s to create disk for %s", host.GetName(), diskConfig.Backend) } - disk, err := self.createDiskOnStorage(ctx, userCred, storage, diskConfig, pendingUsage, inheritBilling) + disk, err := self.createDiskOnStorage(ctx, userCred, storage, diskConfig, pendingUsage, inheritBilling, isWithServerCreate) if err != nil { return nil, err } diff --git a/pkg/compute/tasks/guest_batch_create_task.go b/pkg/compute/tasks/guest_batch_create_task.go index b67e9f7456..4935085eec 100644 --- a/pkg/compute/tasks/guest_batch_create_task.go +++ b/pkg/compute/tasks/guest_batch_create_task.go @@ -83,7 +83,7 @@ func (self *GuestBatchCreateTask) SaveScheduleResult(ctx context.Context, obj IS } guest.GetDriver().PrepareDiskRaidConfig(host, self.Params) - err = guest.CreateDisksOnHost(ctx, self.UserCred, host, self.Params, &pendingUsage, true) + err = guest.CreateDisksOnHost(ctx, self.UserCred, host, self.Params, &pendingUsage, true, true) self.SetPendingUsage(&pendingUsage) if err != nil {