From 7c6d4fddf3b5a5ac8a0d7b8a470bd5de08ed597c Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Sat, 12 Dec 2020 18:49:35 +0800 Subject: [PATCH] fix(region): optimized server stop code --- pkg/compute/guestdrivers/managedvirtual.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pkg/compute/guestdrivers/managedvirtual.go b/pkg/compute/guestdrivers/managedvirtual.go index 26cc55825e..f2a25d288f 100644 --- a/pkg/compute/guestdrivers/managedvirtual.go +++ b/pkg/compute/guestdrivers/managedvirtual.go @@ -742,19 +742,21 @@ func (self *SManagedVirtualizedGuestDriver) RequestUndeployGuestOnHost(ctx conte func (self *SManagedVirtualizedGuestDriver) RequestStopOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error { taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) { - ihost, err := host.GetIHost() + ivm, err := guest.GetIVM() if err != nil { - return nil, errors.Wrapf(err, "host.GetIHost") - } - ivm, err := ihost.GetIVMById(guest.ExternalId) - if err != nil { - return nil, errors.Wrapf(err, "ihost.GetIVMById") + return nil, errors.Wrapf(err, "guest.GetIVM") } opts := &cloudprovider.ServerStopOptions{} - task.GetParams().Unmarshal(&opts) - + task.GetParams().Unmarshal(opts) err = ivm.StopVM(ctx, opts) - return nil, err + if err != nil { + return nil, errors.Wrapf(err, "ivm.StopVM") + } + err = cloudprovider.WaitStatus(ivm, api.VM_READY, time.Second*3, time.Minute*5) + if err != nil { + return nil, errors.Wrapf(err, "wait server stop after 5 miniutes") + } + return nil, nil }) return nil }