From d9b9586539fe5acfaaa9a5521df415e9b407316e Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Tue, 3 Sep 2019 16:16:44 +0800 Subject: [PATCH] fix vnc connect, filter qmp event --- pkg/compute/guestdrivers/kvm.go | 2 +- pkg/compute/guestdrivers/virtualization.go | 1 + pkg/compute/tasks/guest_save_image_task.go | 16 ++++------------ pkg/hostman/monitor/qmp.go | 7 ++++++- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/pkg/compute/guestdrivers/kvm.go b/pkg/compute/guestdrivers/kvm.go index 7f2760b3b1..98be11b7f1 100644 --- a/pkg/compute/guestdrivers/kvm.go +++ b/pkg/compute/guestdrivers/kvm.go @@ -124,7 +124,7 @@ func findVNCPort2(results string) int { vncInfo := strings.Split(results, "\n") for i := 0; i < len(vncInfo); i++ { if strings.HasSuffix(vncInfo[i], "(ipv4)") { - addrParts := strings.Split(vncInfo[3], ":") + addrParts := strings.Split(vncInfo[i], ":") v := addrParts[len(addrParts)-1] port, _ := strconv.Atoi(v[0 : len(v)-7]) return port diff --git a/pkg/compute/guestdrivers/virtualization.go b/pkg/compute/guestdrivers/virtualization.go index 235e02647f..8d9a7168f9 100644 --- a/pkg/compute/guestdrivers/virtualization.go +++ b/pkg/compute/guestdrivers/virtualization.go @@ -289,6 +289,7 @@ func (self *SVirtualizedGuestDriver) StartSuspendTask(ctx context.Context, userC } func (self *SVirtualizedGuestDriver) StartGuestSaveImage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, params *jsonutils.JSONDict, parentTaskId string) error { + guest.SetStatus(userCred, api.VM_START_SAVE_DISK, "") if task, err := taskman.TaskManager.NewTask(ctx, "GuestSaveImageTask", guest, userCred, params, parentTaskId, "", nil); err != nil { return err } else { diff --git a/pkg/compute/tasks/guest_save_image_task.go b/pkg/compute/tasks/guest_save_image_task.go index 1302ed24db..d495e310f8 100644 --- a/pkg/compute/tasks/guest_save_image_task.go +++ b/pkg/compute/tasks/guest_save_image_task.go @@ -16,7 +16,6 @@ package tasks import ( "context" - "fmt" "yunion.io/x/jsonutils" "yunion.io/x/log" @@ -47,17 +46,10 @@ func (self *GuestSaveImageTask) OnInit(ctx context.Context, obj db.IStandaloneMo } func (self *GuestSaveImageTask) OnStopServerComplete(ctx context.Context, guest *models.SGuest, body jsonutils.JSONObject) { - if guest.Status != api.VM_READY { - reason := fmt.Sprintf("Server %s not in ready status", guest.Name) - log.Errorf(reason) - self.SetStageFailed(ctx, reason) - } else { - self.SetStage("on_save_root_image_complete", nil) - guest.SetStatus(self.GetUserCred(), api.VM_START_SAVE_DISK, "") - disks := guest.CategorizeDisks() - if err := disks.Root.StartDiskSaveTask(ctx, self.GetUserCred(), self.GetParams(), self.GetTaskId()); err != nil { - self.SetStageFailed(ctx, err.Error()) - } + self.SetStage("on_save_root_image_complete", nil) + disks := guest.CategorizeDisks() + if err := disks.Root.StartDiskSaveTask(ctx, self.GetUserCred(), self.GetParams(), self.GetTaskId()); err != nil { + self.SetStageFailed(ctx, err.Error()) } } diff --git a/pkg/hostman/monitor/qmp.go b/pkg/hostman/monitor/qmp.go index 790bd44279..a58ea27ec5 100644 --- a/pkg/hostman/monitor/qmp.go +++ b/pkg/hostman/monitor/qmp.go @@ -26,6 +26,7 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" + "yunion.io/x/pkg/utils" ) // https://github.com/qemu/qemu/blob/master/docs/interop/qmp-spec.txt @@ -44,6 +45,8 @@ Not support oob yet "package": "v3.0.0"}, "capabilities": [] } } */ +var ignoreEvents = []string{`"RTC_CHANGE"`} + type qmpMonitorCallBack func(*Response) type qmpEventCallback func(*Event) @@ -222,7 +225,9 @@ func (m *QmpMonitor) read(r io.Reader) { } func (m *QmpMonitor) watchEvent(event *Event) { - log.Infof(event.String()) + if !utils.IsInStringArray(event.Event, ignoreEvents) { + log.Infof(event.String()) + } if m.qmpEventFunc != nil { go m.qmpEventFunc(event) }