qemu: guest agent: introduce new error code VIR_ERR_AGENT_UNSYNCED

A separate error code will help recognize real failures from
necessity to try again

Signed-off-by: Maxim Nestratov <mnestratov@virtuozzo.com>
This commit is contained in:
Yuri Pudgorodskiy 2016-01-28 11:55:09 +03:00 committed by Maxim Nestratov
parent f3f15cc240
commit 914d5e1cbf
3 changed files with 11 additions and 3 deletions

View File

@ -315,6 +315,8 @@ typedef enum {
VIR_ERR_AUTH_UNAVAILABLE = 94, /* authentication unavailable */ VIR_ERR_AUTH_UNAVAILABLE = 94, /* authentication unavailable */
VIR_ERR_NO_SERVER = 95, /* Server was not found */ VIR_ERR_NO_SERVER = 95, /* Server was not found */
VIR_ERR_NO_CLIENT = 96, /* Client was not found */ VIR_ERR_NO_CLIENT = 96, /* Client was not found */
VIR_ERR_AGENT_UNSYNCED = 97, /* guest agent replies with wrong id
to guest-sync command */
} virErrorNumber; } virErrorNumber;
/** /**

View File

@ -966,21 +966,21 @@ qemuAgentGuestSync(qemuAgentPtr mon)
goto cleanup; goto cleanup;
if (!sync_msg.rxObject) { if (!sync_msg.rxObject) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_AGENT_UNSYNCED, "%s",
_("Missing monitor reply object")); _("Missing monitor reply object"));
goto cleanup; goto cleanup;
} }
if (virJSONValueObjectGetNumberUlong(sync_msg.rxObject, if (virJSONValueObjectGetNumberUlong(sync_msg.rxObject,
"return", &id_ret) < 0) { "return", &id_ret) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_AGENT_UNSYNCED, "%s",
_("Malformed return value")); _("Malformed return value"));
goto cleanup; goto cleanup;
} }
VIR_DEBUG("Guest returned ID: %llu", id_ret); VIR_DEBUG("Guest returned ID: %llu", id_ret);
if (id_ret != id) { if (id_ret != id) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_AGENT_UNSYNCED,
_("Guest agent returned ID: %llu instead of %llu"), _("Guest agent returned ID: %llu instead of %llu"),
id_ret, id); id_ret, id);
goto cleanup; goto cleanup;

View File

@ -1394,6 +1394,12 @@ virErrorMsg(virErrorNumber error, const char *info)
else else
errmsg = _("Client not found: %s"); errmsg = _("Client not found: %s");
break; break;
case VIR_ERR_AGENT_UNSYNCED:
if (info == NULL)
errmsg = _("guest agent replied with wrong id to guest-sync command");
else
errmsg = _("guest agent replied with wrong id to guest-sync command: %s");
break;
} }
return errmsg; return errmsg;
} }