Merge pull request #4535 from wanyaoqi/bugfix/wyq/misc-fix-20200104

bugfix: disk list filter guest,  add recover on guest shotdown
This commit is contained in:
yunion-ci-robot
2020-01-04 18:19:36 +08:00
committed by GitHub
3 changed files with 13 additions and 10 deletions
+5 -8
View File
@@ -216,14 +216,11 @@ func (manager *SDiskManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
return nil, err
}
guest := iGuest.(*SGuest)
hoststorages := HoststorageManager.Query().SubQuery()
q = q.Join(hoststorages, sqlchemy.AND(
sqlchemy.Equals(hoststorages.Field("host_id"), guest.HostId),
sqlchemy.IsFalse(hoststorages.Field("deleted")))).
Join(storages, sqlchemy.AND(
sqlchemy.Equals(storages.Field("id"), hoststorages.Field("storage_id")),
sqlchemy.IsFalse(storages.Field("deleted")))).
Filter(sqlchemy.Equals(storages.Field("id"), q.Field("storage_id")))
guestDisks := GuestdiskManager.Query().SubQuery()
q = q.Join(guestDisks, sqlchemy.AND(
sqlchemy.Equals(guestDisks.Field("disk_id"), q.Field("id")),
sqlchemy.Equals(guestDisks.Field("guest_id"), guest.Id),
))
}
storageStr := jsonutils.GetAnyString(queryDict, []string{"storage", "storage_id"})
@@ -63,7 +63,7 @@ func (self *InstanceSnapshotCreateTask) taskFail(
guest.SetStatus(self.UserCred, compute.VM_INSTANCE_SNAPSHOT_FAILED, reason)
db.OpsLog.LogEvent(isp, db.ACT_ALLOCATE_FAIL, reason, self.UserCred)
logclient.AddActionLogWithStartable(self, isp, logclient.ACT_CREATE, false, self.UserCred, false)
logclient.AddActionLogWithStartable(self, isp, logclient.ACT_CREATE, reason, self.UserCred, false)
notifyclient.NotifySystemError(isp.GetId(), isp.Name, compute.INSTANCE_SNAPSHOT_FAILED, reason)
self.SetStageFailed(ctx, reason)
}
@@ -79,7 +79,7 @@ func (self *InstanceSnapshotCreateTask) taskComplete(
guest.StartSyncstatus(ctx, self.UserCred, "")
db.OpsLog.LogEvent(isp, db.ACT_ALLOCATE, "instance snapshot create success", self.UserCred)
logclient.AddActionLogWithStartable(self, isp, logclient.ACT_CREATE, false, self.UserCred, true)
logclient.AddActionLogWithStartable(self, isp, logclient.ACT_CREATE, "", self.UserCred, true)
self.SetStageComplete(ctx, nil)
}
+6
View File
@@ -767,6 +767,12 @@ func (m *SGuestManager) CancelBlockJobs(ctx context.Context, params interface{})
if !ok {
return nil, hostutils.ParamsError
}
defer func() {
if r := recover(); r != nil {
log.Errorf("STACK: %v \n %s", r, debug.Stack())
hostutils.TaskFailed(ctx, fmt.Sprintf("recover: %v", r))
}
}()
guest, _ := m.GetServer(sid)
NewCancelBlockJobsTask(ctx, guest).Start()
return nil, nil