diff --git a/pkg/compute/models/guest_actions.go b/pkg/compute/models/guest_actions.go index 20b27e3802..7bb999fb49 100644 --- a/pkg/compute/models/guest_actions.go +++ b/pkg/compute/models/guest_actions.go @@ -2159,6 +2159,9 @@ func (self *SGuest) PerformChangeIpaddr(ctx context.Context, userCred mcclient.T if self.Hypervisor == api.HYPERVISOR_KVM && restartNetwork && (self.Status == api.VM_RUNNING || self.Status == api.VM_BLOCK_STREAM) { taskData.Set("restart_network", jsonutils.JSONTrue) taskData.Set("prev_ip", jsonutils.NewString(gn.IpAddr)) + if self.Status == api.VM_BLOCK_STREAM { + taskData.Set("in_block_stream", jsonutils.JSONTrue) + } self.SetStatus(userCred, api.VM_RESTART_NETWORK, "restart network") } return nil, self.startSyncTask(ctx, userCred, true, "", taskData) diff --git a/pkg/compute/tasks/guest_sync_task.go b/pkg/compute/tasks/guest_sync_task.go index 9a3507340b..dd6688bb1b 100644 --- a/pkg/compute/tasks/guest_sync_task.go +++ b/pkg/compute/tasks/guest_sync_task.go @@ -64,7 +64,7 @@ func (self *GuestSyncConfTask) OnSyncComplete(ctx context.Context, obj db.IStand self.SetStageComplete(ctx, nil) return } - if guest.Status == api.VM_BLOCK_STREAM { + if inBlockStream := jsonutils.QueryBoolean(self.Params, "in_block_stream", false); inBlockStream { guest.StartRestartNetworkTask(ctx, self.UserCred, "", prevIp, true) } else { guest.StartRestartNetworkTask(ctx, self.UserCred, "", prevIp, false)