mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #11464 from ioito/automated-cherry-pick-of-#11463-upstream-release-3.7
Automated cherry pick of #11463: fix(hostman): show server status changed reason
This commit is contained in:
@@ -593,7 +593,7 @@ func (s *SGuestResumeTask) taskFailed(reason string) {
|
||||
if s.ctx != nil && len(appctx.AppContextTaskId(s.ctx)) > 0 {
|
||||
hostutils.TaskFailed(s.ctx, reason)
|
||||
} else {
|
||||
s.SyncStatus()
|
||||
s.SyncStatus(reason)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -632,12 +632,12 @@ func (s *SGuestResumeTask) onStartRunning() {
|
||||
if len(disksIdx) > 0 {
|
||||
s.startStreamDisks(disksIdx)
|
||||
} else if options.HostOptions.AutoMergeBackingTemplate {
|
||||
s.SyncStatus()
|
||||
s.SyncStatus("")
|
||||
timeutils2.AddTimeout(
|
||||
time.Second*time.Duration(options.HostOptions.AutoMergeDelaySeconds),
|
||||
func() { s.startStreamDisks(nil) })
|
||||
} else {
|
||||
s.SyncStatus()
|
||||
s.SyncStatus("")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -663,7 +663,7 @@ func (s *SGuestResumeTask) startStreamDisks(disksIdx []int) {
|
||||
func (s *SGuestResumeTask) onStreamComplete(disksIdx []int) {
|
||||
if len(disksIdx) == 0 {
|
||||
// if disks idx length == 0 indicate merge backing template
|
||||
s.SyncStatus()
|
||||
s.SyncStatus("")
|
||||
} else {
|
||||
s.streamDisksComplete(context.Background())
|
||||
}
|
||||
@@ -747,7 +747,7 @@ func (s *SGuestStreamDisksTask) onBlockDrivesSucc(res *jsonutils.JSONArray) {
|
||||
s.taskComplete()
|
||||
} else {
|
||||
s.startDoBlockStream()
|
||||
s.SyncStatus()
|
||||
s.SyncStatus("")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -783,7 +783,7 @@ func (s *SGuestStreamDisksTask) checkStreamJobs(jobs int) {
|
||||
}
|
||||
|
||||
func (s *SGuestStreamDisksTask) taskComplete() {
|
||||
s.SyncStatus()
|
||||
s.SyncStatus("")
|
||||
|
||||
// XXX: region disk post-migrate not implement
|
||||
|
||||
|
||||
@@ -279,14 +279,13 @@ func (s *SKVMGuestInstance) asyncScriptStart(ctx context.Context, params interfa
|
||||
s.syncMeta = s.CleanImportMetadata()
|
||||
s.StartMonitor(ctx)
|
||||
return nil, nil
|
||||
} else {
|
||||
log.Infof("Async start server %s failed: %s!!!", s.GetName(), err)
|
||||
if ctx != nil && len(appctx.AppContextTaskId(ctx)) >= 0 {
|
||||
hostutils.TaskFailed(ctx, fmt.Sprintf("Async start server failed: %s", err))
|
||||
}
|
||||
s.SyncStatus()
|
||||
return nil, err
|
||||
}
|
||||
log.Infof("Async start server %s failed: %s!!!", s.GetName(), err)
|
||||
if ctx != nil && len(appctx.AppContextTaskId(ctx)) >= 0 {
|
||||
hostutils.TaskFailed(ctx, fmt.Sprintf("Async start server failed: %s", err))
|
||||
}
|
||||
s.SyncStatus("")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (s *SKVMGuestInstance) saveScripts(data *jsonutils.JSONDict) error {
|
||||
@@ -335,7 +334,7 @@ func (s *SKVMGuestInstance) ImportServer(pendingDelete bool) {
|
||||
}
|
||||
log.Infof("%s is %s, pending_delete=%t", s.GetName(), action, pendingDelete)
|
||||
if !s.IsSlave() {
|
||||
s.SyncStatus()
|
||||
s.SyncStatus("")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -374,8 +373,8 @@ func (s *SKVMGuestInstance) IsMonitorAlive() bool {
|
||||
// }
|
||||
|
||||
func (s *SKVMGuestInstance) onImportGuestMonitorDisConnect(err error) {
|
||||
log.Infof("Import Guest %s monitor disconnect", s.Id)
|
||||
s.SyncStatus()
|
||||
log.Infof("Import Guest %s monitor disconnect reason: %v", s.Id, err)
|
||||
s.SyncStatus(fmt.Sprintf("import guest monitor disconnect %v", err))
|
||||
|
||||
// clean import pid file
|
||||
if s.GetPid() == -2 {
|
||||
@@ -407,7 +406,7 @@ func (s *SKVMGuestInstance) onImportGuestMonitorConnected(ctx context.Context) {
|
||||
meta.Set("hot_remove_nic", jsonutils.NewString("disable"))
|
||||
meta.Set("__qemu_version", jsonutils.NewString(s.GetQemuVersionStr()))
|
||||
s.SyncMetadata(meta)
|
||||
s.SyncStatus()
|
||||
s.SyncStatus("")
|
||||
})
|
||||
}
|
||||
|
||||
@@ -470,7 +469,7 @@ func (s *SKVMGuestInstance) onReceiveQMPEvent(event *monitor.Event) {
|
||||
if stype == "mirror" {
|
||||
mirrorStatus := s.MirrorJobStatus()
|
||||
if mirrorStatus.IsSucc() {
|
||||
_, err := hostutils.UpdateServerStatus(context.Background(), s.GetId(), compute.VM_RUNNING)
|
||||
_, err := hostutils.UpdateServerStatus(context.Background(), s.GetId(), compute.VM_RUNNING, "BLOCK_JOB_READY")
|
||||
if err != nil {
|
||||
log.Errorf("onReceiveQMPEvent update server status error: %s", err)
|
||||
}
|
||||
@@ -549,11 +548,11 @@ func (s *SKVMGuestInstance) onGetQemuVersion(ctx context.Context, version string
|
||||
}
|
||||
|
||||
func (s *SKVMGuestInstance) onMonitorDisConnect(err error) {
|
||||
log.Infof("Guest %s on Monitor Disconnect", s.Id)
|
||||
log.Errorf("Guest %s on Monitor Disconnect reason: %v", s.Id, err)
|
||||
s.CleanStartupTask()
|
||||
s.scriptStop()
|
||||
if !jsonutils.QueryBoolean(s.Desc, "is_slave", false) {
|
||||
s.SyncStatus()
|
||||
s.SyncStatus(fmt.Sprintf("monitor disconnect %v", err))
|
||||
}
|
||||
s.clearCgroup(0)
|
||||
s.Monitor = nil
|
||||
@@ -569,7 +568,7 @@ func (s *SKVMGuestInstance) startDiskBackupMirror(ctx context.Context) {
|
||||
status = compute.VM_BLOCK_STREAM_FAIL
|
||||
s.SyncMirrorJobFailed("mirror job missing")
|
||||
}
|
||||
hostutils.UpdateServerStatus(context.Background(), s.GetId(), status)
|
||||
hostutils.UpdateServerStatus(context.Background(), s.GetId(), status, "")
|
||||
} else {
|
||||
metadata, _ := s.Desc.Get("metadata")
|
||||
if metadata == nil || !metadata.Contains("backup_nbd_server_uri") {
|
||||
@@ -748,7 +747,7 @@ func (s *SKVMGuestInstance) DoResumeTask(ctx context.Context) {
|
||||
s.startupTask.Start()
|
||||
}
|
||||
|
||||
func (s *SKVMGuestInstance) SyncStatus() {
|
||||
func (s *SKVMGuestInstance) SyncStatus(reason string) {
|
||||
if s.IsRunning() {
|
||||
s.Monitor.GetBlockJobCounts(s.CheckBlockOrRunning)
|
||||
return
|
||||
@@ -758,7 +757,7 @@ func (s *SKVMGuestInstance) SyncStatus() {
|
||||
status = "suspend"
|
||||
}
|
||||
|
||||
hostutils.UpdateServerStatus(context.Background(), s.Id, status)
|
||||
hostutils.UpdateServerStatus(context.Background(), s.Id, status, reason)
|
||||
}
|
||||
|
||||
func (s *SKVMGuestInstance) CheckBlockOrRunning(jobs int) {
|
||||
@@ -776,7 +775,7 @@ func (s *SKVMGuestInstance) CheckBlockOrRunning(jobs int) {
|
||||
status = compute.VM_BLOCK_STREAM
|
||||
}
|
||||
}
|
||||
_, err := hostutils.UpdateServerStatus(context.Background(), s.Id, status)
|
||||
_, err := hostutils.UpdateServerStatus(context.Background(), s.Id, status, "")
|
||||
if err != nil {
|
||||
log.Errorln(err)
|
||||
}
|
||||
|
||||
@@ -136,9 +136,12 @@ func RemoteStoragecacheCacheImage(ctx context.Context, storagecacheId, imageId,
|
||||
storagecacheId, imageId, query, params)
|
||||
}
|
||||
|
||||
func UpdateServerStatus(ctx context.Context, sid, status string) (jsonutils.JSONObject, error) {
|
||||
func UpdateServerStatus(ctx context.Context, sid, status, reason string) (jsonutils.JSONObject, error) {
|
||||
var stats = jsonutils.NewDict()
|
||||
stats.Set("status", jsonutils.NewString(status))
|
||||
if len(reason) > 0 {
|
||||
stats.Set("reason", jsonutils.NewString(reason))
|
||||
}
|
||||
return modules.Servers.PerformAction(GetComputeSession(ctx), sid, "status", stats)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user