[libvirt] [PATCH v3 1/2] qemu: formatting XML from domain def choosing the root name

Daniel Henrique Barboza danielhb413 at gmail.com
Mon Aug 19 18:50:03 UTC 2019



On 8/14/19 11:47 AM, Maxiwell S. Garcia wrote:
> The function virDomainDefFormatInternal() has the predefined root name
> "domain" to format the XML. But to save both active and inactive domain
> in the snapshot XML, the new root name "inactiveDomain" was created.
> So, this function was modified to be driven by the new flag
> VIR_DOMAIN_DEF_FORMAT_INACTIVE_NODE to choose the correct root name.
>
> Signed-off-by: Maxiwell S. Garcia <maxiwell at linux.ibm.com>
> ---

Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413 at gmail.com>

>   src/conf/domain_conf.c | 13 ++++++++++---
>   src/conf/domain_conf.h |  1 +
>   2 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 03312afaaf..7d6393b9ac 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -28230,6 +28230,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>       unsigned char *uuid;
>       char uuidstr[VIR_UUID_STRING_BUFLEN];
>       const char *type = NULL;
> +    const char *rootname = NULL;
>       int n;
>       size_t i;
>       char *netprefix = NULL;
> @@ -28238,7 +28239,8 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>                     VIR_DOMAIN_DEF_FORMAT_STATUS |
>                     VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET |
>                     VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES |
> -                  VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST,
> +                  VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST |
> +                  VIR_DOMAIN_DEF_FORMAT_INACTIVE_NODE,
>                     -1);
>   
>       if (!(type = virDomainVirtTypeToString(def->virtType))) {
> @@ -28250,7 +28252,12 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>       if (def->id == -1)
>           flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE;
>   
> -    virBufferAsprintf(buf, "<domain type='%s'", type);
> +    if (flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE_NODE)
> +        rootname = "inactiveDomain";
> +    else
> +        rootname = "domain";
> +
> +    virBufferAsprintf(buf, "<%s type='%s'", rootname, type);
>       if (!(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE))
>           virBufferAsprintf(buf, " id='%d'", def->id);
>       if (def->namespaceData && def->ns.href)
> @@ -28732,7 +28739,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>       virDomainSEVDefFormat(buf, def->sev);
>   
>       virBufferAdjustIndent(buf, -2);
> -    virBufferAddLit(buf, "</domain>\n");
> +    virBufferAsprintf(buf, "</%s>\n", rootname);
>   
>       if (virBufferCheckError(buf) < 0)
>           goto error;
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index bce47443c8..63791a8002 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -2984,6 +2984,7 @@ typedef enum {
>       VIR_DOMAIN_DEF_FORMAT_ALLOW_ROM       = 1 << 6,
>       VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT      = 1 << 7,
>       VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST    = 1 << 8,
> +    VIR_DOMAIN_DEF_FORMAT_INACTIVE_NODE   = 1 << 9,
>   } virDomainDefFormatFlags;
>   
>   /* Use these flags to skip specific domain ABI consistency checks done

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190819/0fcdd6fe/attachment-0001.htm>


More information about the libvir-list mailing list