[libvirt] [PATCH 4/8] Fix up the error message if we can't parse the snapshot XML.
Matthias Bolte
matthias.bolte at googlemail.com
Tue Apr 27 18:08:37 UTC 2010
2010/4/27 Chris Lalancette <clalance at redhat.com>:
> On 04/23/2010 02:06 PM, Matthias Bolte wrote:
>> 2010/4/23 Chris Lalancette <clalance at redhat.com>:
>>> Signed-off-by: Chris Lalancette <clalance at redhat.com>
>>> ---
>>> src/conf/domain_conf.c | 3 +--
>>> 1 files changed, 1 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>>> index 6dc26c3..139712a 100644
>>> --- a/src/conf/domain_conf.c
>>> +++ b/src/conf/domain_conf.c
>>> @@ -6614,8 +6614,7 @@ virDomainSnapshotDefPtr virDomainSnapshotDefParseString(const char *xmlStr,
>>> }
>>>
>>> if (!xmlStrEqual(root->name, BAD_CAST "domainsnapshot")) {
>>> - virDomainReportError(VIR_ERR_INTERNAL_ERROR,
>>> - "%s", _("incorrect root element"));
>>> + virDomainReportError(VIR_ERR_XML_ERROR, "%s", _("domainsnapshot"));
>>> goto cleanup;
>>> }
>>>
>>
>> Could we have a bit more verbose error message here, like "unknown
>> root element for domain snapshot"?
>
> Well, we could go one of two ways. The text that automatically
> comes out from VIR_ERR_XML_ERROR is:
>
> XML description for %s is not well formed or invalid
>
Ah, sorry. I missed the fact that VIR_ERR_XML_ERROR results in this
format string. I'm fine with the original patch then.
ACK.
If you grep the codebase for VIR_ERR_XML_ERROR then you'll find that
in most cases VIR_ERR_XML_ERROR is used in the wrong way, resulting in
a broken error message:
virInterfaceReportError(VIR_ERR_XML_ERROR,
"%s", _("bridge interface
misses the bridge element"));
Just reporting that the XML in not well formed (the string for
VIR_ERR_XML_ERROR implies this usage) is not that helpful. So we
include the relevant details in the error message, ignoring that the
string associated with VIR_ERR_XML_ERROR indicates a different usage.
Maybe we should unify the structure of the error code strings to a
format that expects the additional error message as a more detailed
description of the error. For example VIR_ERR_NO_DOMAIN or
VIR_ERR_INVALID_MAC or VIR_ERR_AUTH_FAILED already have this format.
Matthias
More information about the libvir-list
mailing list