qemuAgentGetTimezone: expose 'report_unsupported' argument

Use qemuAgentCommandFull so that callers of qemuAgentGetTimezone can
suppress error reports if the function is not supported by the guest
agent.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2020-03-16 08:37:13 +01:00
parent d8ac171718
commit b126477685
4 changed files with 13 additions and 11 deletions

View File

@ -2458,29 +2458,30 @@ qemuAgentGetOSInfo(qemuAgentPtr agent,
}
/* Returns: 0 on success
* -2 when agent command is not supported by the agent
* -1 otherwise
* -2 when agent command is not supported by the agent and
* 'report_unsupported' is false (libvirt error is not reported)
* -1 otherwise (libvirt error is reported)
*/
int
qemuAgentGetTimezone(qemuAgentPtr agent,
virTypedParameterPtr *params,
int *nparams,
int *maxparams)
int *maxparams,
bool report_unsupported)
{
g_autoptr(virJSONValue) cmd = NULL;
g_autoptr(virJSONValue) reply = NULL;
virJSONValuePtr data = NULL;
const char *name;
int offset;
int rc;
if (!(cmd = qemuAgentMakeCommand("guest-get-timezone", NULL)))
return -1;
if (qemuAgentCommand(agent, cmd, &reply, agent->timeout) < 0) {
if (qemuAgentErrorCommandUnsupported(reply))
return -2;
return -1;
}
if ((rc = qemuAgentCommandFull(agent, cmd, &reply, agent->timeout,
report_unsupported)) < 0)
return rc;
if (!(data = virJSONValueObjectGetObject(reply, "return"))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",

View File

@ -163,7 +163,8 @@ int qemuAgentGetOSInfo(qemuAgentPtr mon,
int qemuAgentGetTimezone(qemuAgentPtr mon,
virTypedParameterPtr *params,
int *nparams,
int *maxparams);
int *maxparams,
bool report_unsupported);
void qemuAgentSetResponseTimeout(qemuAgentPtr mon,
int timeout);

View File

@ -23026,7 +23026,7 @@ qemuDomainGetGuestInfo(virDomainPtr dom,
goto exitagent;
}
if (supportedTypes & VIR_DOMAIN_GUEST_INFO_TIMEZONE) {
rc = qemuAgentGetTimezone(agent, params, nparams, &maxparams);
rc = qemuAgentGetTimezone(agent, params, nparams, &maxparams, true);
if (rc < 0 && !(rc == -2 && types == 0))
goto exitagent;
}

View File

@ -1244,7 +1244,7 @@ testQemuAgentTimezone(const void *data)
response_) < 0) \
goto cleanup; \
if (qemuAgentGetTimezone(qemuMonitorTestGetAgent(test), \
&params_, &nparams_, &maxparams_) < 0) \
&params_, &nparams_, &maxparams_, true) < 0) \
goto cleanup; \
if (nparams_ != 2) { \
virReportError(VIR_ERR_INTERNAL_ERROR, \