diff --git a/pkg/compute/models/guest_actions.go b/pkg/compute/models/guest_actions.go index e4043c3659..6dcd3fda1f 100644 --- a/pkg/compute/models/guest_actions.go +++ b/pkg/compute/models/guest_actions.go @@ -394,12 +394,12 @@ func (self *SGuest) validateMigrate( if !self.GetDriver().IsSupportMigrate() { return httperrors.NewNotAcceptableError("Not allow for hypervisor %s", self.GetHypervisor()) } + if !migrateInput.IsRescueMode && self.Status != api.VM_READY { + return httperrors.NewServerStatusError("Cannot normal migrate guest in status %s, try rescue mode or server-live-migrate?", self.Status) + } if err := self.GetDriver().CheckMigrate(self, userCred, *migrateInput); err != nil { return err } - if self.Status != api.VM_READY { - return httperrors.NewServerStatusError("Cannot normal migrate guest in status %s, try rescue mode or server-live-migrate?", self.Status) - } if len(migrateInput.PreferHost) > 0 { iHost, _ := HostManager.FetchByIdOrName(userCred, migrateInput.PreferHost) if iHost == nil {