From 5f3d45201715f2a34b58e86836f67edd202e489a Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Wed, 12 Dec 2018 20:51:18 +0800 Subject: [PATCH] =?UTF-8?q?region:=20server=20deploy=20=E5=92=8C=20save-im?= =?UTF-8?q?age=20=E6=93=8D=E4=BD=9C=E5=90=8E=E8=87=AA=E5=8A=A8=E9=87=8D?= =?UTF-8?q?=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/guestdrivers/kvm.go | 2 +- pkg/compute/models/guest_actions.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/compute/guestdrivers/kvm.go b/pkg/compute/guestdrivers/kvm.go index 1cb9d0d586..7e94be6da8 100644 --- a/pkg/compute/guestdrivers/kvm.go +++ b/pkg/compute/guestdrivers/kvm.go @@ -273,7 +273,7 @@ func (self *SKVMGuestDriver) GetChangeConfigStatus() ([]string, error) { } func (self *SKVMGuestDriver) GetDeployStatus() ([]string, error) { - return []string{models.VM_READY}, nil + return []string{models.VM_READY, models.VM_RUNNING, models.VM_ADMIN}, nil } func (self *SKVMGuestDriver) ValidateResizeDisk(guest *models.SGuest, disk *models.SDisk, storage *models.SStorage) error { diff --git a/pkg/compute/models/guest_actions.go b/pkg/compute/models/guest_actions.go index 820658c7e0..fbf09a6f4c 100644 --- a/pkg/compute/models/guest_actions.go +++ b/pkg/compute/models/guest_actions.go @@ -91,7 +91,7 @@ func (self *SGuest) PerformSaveImage(ctx context.Context, userCred mcclient.Toke return nil, httperrors.NewInputParameterError("No root image") } else { kwargs := data.(*jsonutils.JSONDict) - restart := self.Status == VM_RUNNING + restart := (self.Status == VM_RUNNING) || jsonutils.QueryBoolean(data, "auto_start", false) properties := jsonutils.NewDict() if notes, err := data.GetString("notes"); err != nil && len(notes) > 0 { properties.Add(jsonutils.NewString(notes), "notes") @@ -334,7 +334,8 @@ func (self *SGuest) PerformDeploy(ctx context.Context, userCred mcclient.TokenCr } if utils.IsInStringArray(self.Status, deployStatus) { - if doRestart && self.Status == VM_RUNNING { + if (doRestart && self.Status == VM_RUNNING) || + jsonutils.QueryBoolean(kwargs, "auto_start", false) { kwargs.Set("restart", jsonutils.JSONTrue) } err := self.StartGuestDeployTask(ctx, userCred, kwargs, "deploy", "")