mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
Merge pull request #2758 from wanyaoqi/bugfix/wyq/misc-fix-0903
bugfix: fix vnc connect, filter qmp event, save image status
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user