Check for qemu guest agent availability after getting the job

This way checks requiring the job can be done in qemuDomainAgentAvailable.

(cherry picked from commit c8b80b49f6)
This commit is contained in:
Ján Tomko 2015-02-26 13:47:58 +01:00 committed by Cole Robinson
parent 5939f52a95
commit 99680243f6

View File

@ -1988,16 +1988,16 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags)
if (virDomainShutdownFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
goto cleanup;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
agentForced = agentRequested && !acpiRequested;
if (!qemuDomainAgentAvailable(priv, agentForced)) {
if (agentForced)
goto cleanup;
goto endjob;
useAgent = false;
}
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("domain is not running"));
@ -2086,9 +2086,7 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags)
priv->agent))
useAgent = true;
if (useAgent && !qemuDomainAgentAvailable(priv, true)) {
goto cleanup;
} else {
if (!useAgent) {
#if WITH_YAJL
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MONITOR_JSON)) {
if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NO_SHUTDOWN)) {
@ -2109,6 +2107,9 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags)
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
if (useAgent && !qemuDomainAgentAvailable(priv, true))
goto endjob;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("domain is not running"));
@ -17659,12 +17660,12 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom,
}
}
if (!qemuDomainAgentAvailable(priv, true))
goto cleanup;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
if (!qemuDomainAgentAvailable(priv, true))
goto endjob;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("domain is not running"));
@ -17779,12 +17780,12 @@ qemuDomainQemuAgentCommand(virDomainPtr domain,
goto cleanup;
}
if (!qemuDomainAgentAvailable(priv, true))
goto cleanup;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
if (!qemuDomainAgentAvailable(priv, true))
goto endjob;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("domain is not running"));
@ -17888,12 +17889,12 @@ qemuDomainFSTrim(virDomainPtr dom,
goto cleanup;
}
if (!qemuDomainAgentAvailable(priv, true))
goto cleanup;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
if (!qemuDomainAgentAvailable(priv, true))
goto endjob;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("domain is not running"));