mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
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:
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user