mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-15 18:03:41 -06:00
qemu: agent availability cleanup
Eliminate all the code re-use which checks for priv->agentError or priv->agent. Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
24b3fcf98b
commit
ef8f4761f2
@ -2465,3 +2465,25 @@ cleanup:
|
|||||||
virDomainDefFree(migratableDefDst);
|
virDomainDefFree(migratableDefDst);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
qemuDomainAgentAvailable(qemuDomainObjPrivatePtr priv,
|
||||||
|
bool reportError)
|
||||||
|
{
|
||||||
|
if (priv->agentError) {
|
||||||
|
if (reportError) {
|
||||||
|
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
||||||
|
_("QEMU guest agent is not "
|
||||||
|
"available due to an error"));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!priv->agent) {
|
||||||
|
if (reportError) {
|
||||||
|
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
||||||
|
_("QEMU guest agent is not configured"));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@ -376,4 +376,8 @@ int qemuDomainUpdateDeviceList(virQEMUDriverPtr driver,
|
|||||||
bool qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
|
bool qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
|
||||||
virDomainDefPtr src,
|
virDomainDefPtr src,
|
||||||
virDomainDefPtr dst);
|
virDomainDefPtr dst);
|
||||||
|
|
||||||
|
bool qemuDomainAgentAvailable(qemuDomainObjPrivatePtr priv,
|
||||||
|
bool reportError);
|
||||||
|
|
||||||
#endif /* __QEMU_DOMAIN_H__ */
|
#endif /* __QEMU_DOMAIN_H__ */
|
||||||
|
@ -1798,6 +1798,7 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags) {
|
|||||||
qemuDomainObjPrivatePtr priv;
|
qemuDomainObjPrivatePtr priv;
|
||||||
bool useAgent = false, agentRequested, acpiRequested;
|
bool useAgent = false, agentRequested, acpiRequested;
|
||||||
bool isReboot = false;
|
bool isReboot = false;
|
||||||
|
bool agentForced;
|
||||||
int agentFlag = QEMU_AGENT_SHUTDOWN_POWERDOWN;
|
int agentFlag = QEMU_AGENT_SHUTDOWN_POWERDOWN;
|
||||||
|
|
||||||
virCheckFlags(VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN |
|
virCheckFlags(VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN |
|
||||||
@ -1824,26 +1825,12 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags) {
|
|||||||
if (virDomainShutdownFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
|
if (virDomainShutdownFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (priv->agentError) {
|
agentForced = agentRequested && !acpiRequested;
|
||||||
if (agentRequested && !acpiRequested) {
|
if (!qemuDomainAgentAvailable(priv, agentForced)) {
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
if (agentForced)
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
} else {
|
|
||||||
useAgent = false;
|
useAgent = false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!priv->agent) {
|
|
||||||
if (agentRequested && !acpiRequested) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
goto cleanup;
|
|
||||||
} else {
|
|
||||||
useAgent = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -1930,18 +1917,8 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags)
|
|||||||
priv->agent))
|
priv->agent))
|
||||||
useAgent = true;
|
useAgent = true;
|
||||||
|
|
||||||
if (useAgent) {
|
if (useAgent && !qemuDomainAgentAvailable(priv, true)) {
|
||||||
if (priv->agentError) {
|
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
if (!priv->agent) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
#if WITH_YAJL
|
#if WITH_YAJL
|
||||||
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MONITOR_JSON)) {
|
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MONITOR_JSON)) {
|
||||||
@ -4187,18 +4164,8 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
|
|||||||
goto endjob;
|
goto endjob;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->agentError) {
|
if (!qemuDomainAgentAvailable(priv, true))
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
goto endjob;
|
goto endjob;
|
||||||
}
|
|
||||||
|
|
||||||
if (!priv->agent) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
goto endjob;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nvcpus > vm->def->vcpus) {
|
if (nvcpus > vm->def->vcpus) {
|
||||||
virReportError(VIR_ERR_INVALID_ARG,
|
virReportError(VIR_ERR_INVALID_ARG,
|
||||||
@ -4925,18 +4892,8 @@ qemuDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags)
|
|||||||
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0)
|
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (priv->agentError) {
|
if (!qemuDomainAgentAvailable(priv, true))
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
goto endjob;
|
goto endjob;
|
||||||
}
|
|
||||||
|
|
||||||
if (!priv->agent) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
goto endjob;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!virDomainObjIsActive(vm)) {
|
if (!virDomainObjIsActive(vm)) {
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||||
@ -12044,17 +12001,8 @@ qemuDomainSnapshotFSFreeze(virDomainObjPtr vm) {
|
|||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
int freezed;
|
int freezed;
|
||||||
|
|
||||||
if (priv->agentError) {
|
if (!qemuDomainAgentAvailable(priv, true))
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
if (!priv->agent) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
qemuDomainObjEnterAgent(vm);
|
qemuDomainObjEnterAgent(vm);
|
||||||
freezed = qemuAgentFSFreeze(priv->agent);
|
freezed = qemuAgentFSFreeze(priv->agent);
|
||||||
@ -12070,19 +12018,8 @@ qemuDomainSnapshotFSThaw(virDomainObjPtr vm, bool report)
|
|||||||
int thawed;
|
int thawed;
|
||||||
virErrorPtr err = NULL;
|
virErrorPtr err = NULL;
|
||||||
|
|
||||||
if (priv->agentError) {
|
if (!qemuDomainAgentAvailable(priv, report))
|
||||||
if (report)
|
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
if (!priv->agent) {
|
|
||||||
if (report)
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
qemuDomainObjEnterAgent(vm);
|
qemuDomainObjEnterAgent(vm);
|
||||||
if (!report)
|
if (!report)
|
||||||
@ -16227,18 +16164,8 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->agentError) {
|
if (!qemuDomainAgentAvailable(priv, true))
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
|
|
||||||
if (!priv->agent) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -16360,18 +16287,8 @@ qemuDomainQemuAgentCommand(virDomainPtr domain,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->agentError) {
|
if (!qemuDomainAgentAvailable(priv, true))
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
|
|
||||||
if (!priv->agent) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -16432,18 +16349,8 @@ qemuDomainFSTrim(virDomainPtr dom,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!priv->agent) {
|
if (!qemuDomainAgentAvailable(priv, true))
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("QEMU guest agent is not configured"));
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
|
|
||||||
if (priv->agentError) {
|
|
||||||
virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
|
|
||||||
_("QEMU guest agent is not "
|
|
||||||
"available due to an error"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
Loading…
Reference in New Issue
Block a user