]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: sanitize virDomainObjFormat & virDomainDefFormat* APIs
authorDaniel P. Berrangé <berrange@redhat.com>
Tue, 26 Nov 2019 19:40:46 +0000 (19:40 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Mon, 9 Dec 2019 10:15:16 +0000 (10:15 +0000)
Moving their instance parameter to be the first one, and give consistent
ordering of other parameters across all functions. Ensure that the xml
options are passed into both functions in prep for future work.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
31 files changed:
src/bhyve/bhyve_driver.c
src/conf/checkpoint_conf.c
src/conf/domain_conf.c
src/conf/domain_conf.h
src/conf/snapshot_conf.c
src/esx/esx_driver.c
src/hyperv/hyperv_driver.c
src/libxl/libxl_domain.c
src/libxl/libxl_driver.c
src/libxl/libxl_migration.c
src/lxc/lxc_driver.c
src/lxc/lxc_process.c
src/openvz/openvz_conf.c
src/openvz/openvz_conf.h
src/openvz/openvz_driver.c
src/phyp/phyp_driver.c
src/qemu/qemu_domain.c
src/security/security_apparmor.c
src/test/test_driver.c
src/vbox/vbox_common.c
src/vmware/vmware_driver.c
src/vz/vz_driver.c
tests/Makefile.am
tests/lxcconf2xmltest.c
tests/openvzutilstest.c
tests/qemuhotplugtest.c
tests/qemuxml2xmltest.c
tests/testutils.c
tests/vmx2xmltest.c
tests/xlconfigtest.c
tests/xmconfigtest.c

index b8a206bb1e110dee526dc5ee12434d3f91546dc4..18b5d1e950a12adfd0792e26be8dab519eae51c4 100644 (file)
@@ -495,7 +495,7 @@ bhyveDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
     if (!caps)
         goto cleanup;
 
-    ret = virDomainDefFormat(vm->def, caps,
+    ret = virDomainDefFormat(vm->def, privconn->xmlopt, caps,
                              virDomainDefFormatConvertXMLFlags(flags));
 
     virObjectUnref(caps);
@@ -1583,7 +1583,7 @@ bhyveConnectDomainXMLFromNative(virConnectPtr conn,
     if (def == NULL)
         goto cleanup;
 
-    xml = virDomainDefFormat(def, capabilities, 0);
+    xml = virDomainDefFormat(def, privconn->xmlopt, capabilities, 0);
 
  cleanup:
     virObjectUnref(capabilities);
index 36076c13df67684d675bfc4f90a53019309b22fe..cb2d83796c48bfee21466e20528d805f78d4aec5 100644 (file)
@@ -489,8 +489,8 @@ virDomainCheckpointDefFormatInternal(virBufferPtr buf,
     }
 
     if (!(flags & VIR_DOMAIN_CHECKPOINT_FORMAT_NO_DOMAIN) &&
-        virDomainDefFormatInternal(def->parent.dom, caps, domainflags, buf,
-                                   xmlopt) < 0)
+        virDomainDefFormatInternal(def->parent.dom, xmlopt,
+                                   caps, buf, domainflags) < 0)
         goto error;
 
     virBufferAdjustIndent(buf, -2);
index f992f95906fb077b394afe5e22e4bda4dae8c227..a7a89b61b93ed5bad21485c84f8dcbbccc78a57a 100644 (file)
@@ -23648,8 +23648,8 @@ virDomainDefCheckABIStabilityFlags(virDomainDefPtr src,
  error:
     virErrorPreserveLast(&err);
 
-    strSrc = virDomainDefFormat(src, NULL, 0);
-    strDst = virDomainDefFormat(dst, NULL, 0);
+    strSrc = virDomainDefFormat(src, xmlopt, NULL, 0);
+    strDst = virDomainDefFormat(dst, xmlopt, NULL, 0);
     VIR_DEBUG("XMLs that failed stability check were: src=\"%s\", dst=\"%s\"",
               NULLSTR(strSrc), NULLSTR(strDst));
 
@@ -28334,13 +28334,13 @@ virDomainDefFormatFeatures(virBufferPtr buf,
 
 int
 virDomainDefFormatInternal(virDomainDefPtr def,
+                           virDomainXMLOptionPtr xmlopt,
                            virCapsPtr caps,
-                           unsigned int flags,
                            virBufferPtr buf,
-                           virDomainXMLOptionPtr xmlopt)
+                           unsigned int flags)
 {
-    return virDomainDefFormatInternalSetRootName(def, caps, flags, buf,
-                                                 xmlopt, "domain");
+    return virDomainDefFormatInternalSetRootName(def, xmlopt, caps, buf,
+                                                 "domain", flags);
 }
 
 
@@ -28350,11 +28350,11 @@ virDomainDefFormatInternal(virDomainDefPtr def,
  * Return -1 on failure.  */
 int
 virDomainDefFormatInternalSetRootName(virDomainDefPtr def,
+                                      virDomainXMLOptionPtr xmlopt,
                                       virCapsPtr caps,
-                                      unsigned int flags,
                                       virBufferPtr buf,
-                                      virDomainXMLOptionPtr xmlopt,
-                                      const char *rootname)
+                                      const char *rootname,
+                                      unsigned int flags)
 {
     unsigned char *uuid;
     char uuidstr[VIR_UUID_STRING_BUFLEN];
@@ -28891,12 +28891,15 @@ unsigned int virDomainDefFormatConvertXMLFlags(unsigned int flags)
 
 
 char *
-virDomainDefFormat(virDomainDefPtr def, virCapsPtr caps, unsigned int flags)
+virDomainDefFormat(virDomainDefPtr def,
+                   virDomainXMLOptionPtr xmlopt,
+                   virCapsPtr caps,
+                   unsigned int flags)
 {
     virBuffer buf = VIR_BUFFER_INITIALIZER;
 
     virCheckFlags(VIR_DOMAIN_DEF_FORMAT_COMMON_FLAGS, NULL);
-    if (virDomainDefFormatInternal(def, caps, flags, &buf, NULL) < 0)
+    if (virDomainDefFormatInternal(def, xmlopt, caps, &buf, flags) < 0)
         return NULL;
 
     return virBufferContentAndReset(&buf);
@@ -28904,8 +28907,8 @@ virDomainDefFormat(virDomainDefPtr def, virCapsPtr caps, unsigned int flags)
 
 
 char *
-virDomainObjFormat(virDomainXMLOptionPtr xmlopt,
-                   virDomainObjPtr obj,
+virDomainObjFormat(virDomainObjPtr obj,
+                   virDomainXMLOptionPtr xmlopt,
                    virCapsPtr caps,
                    unsigned int flags)
 {
@@ -28931,7 +28934,7 @@ virDomainObjFormat(virDomainXMLOptionPtr xmlopt,
         xmlopt->privateData.format(&buf, obj) < 0)
         goto error;
 
-    if (virDomainDefFormatInternal(obj->def, caps, flags, &buf, xmlopt) < 0)
+    if (virDomainDefFormatInternal(obj->def, xmlopt, caps, &buf, flags) < 0)
         goto error;
 
     virBufferAdjustIndent(&buf, -2);
@@ -29091,13 +29094,13 @@ virDomainDefSaveXML(virDomainDefPtr def,
 
 int
 virDomainDefSave(virDomainDefPtr def,
-                 virDomainXMLOptionPtr xmlopt G_GNUC_UNUSED,
+                 virDomainXMLOptionPtr xmlopt,
                  virCapsPtr caps,
                  const char *configDir)
 {
     g_autofree char *xml = NULL;
 
-    if (!(xml = virDomainDefFormat(def, caps, VIR_DOMAIN_DEF_FORMAT_SECURE)))
+    if (!(xml = virDomainDefFormat(def, xmlopt, caps, VIR_DOMAIN_DEF_FORMAT_SECURE)))
         return -1;
 
     return virDomainDefSaveXML(def, configDir, xml);
@@ -29117,7 +29120,7 @@ virDomainObjSave(virDomainObjPtr obj,
 
     g_autofree char *xml = NULL;
 
-    if (!(xml = virDomainObjFormat(xmlopt, obj, caps, flags)))
+    if (!(xml = virDomainObjFormat(obj, xmlopt, caps, flags)))
         return -1;
 
     return virDomainDefSaveXML(obj->def, statusDir, xml);
@@ -29421,7 +29424,7 @@ virDomainDefCopy(virDomainDefPtr src,
         format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE | VIR_DOMAIN_DEF_FORMAT_MIGRATABLE;
 
     /* Easiest to clone via a round-trip through XML.  */
-    if (!(xml = virDomainDefFormat(src, caps, format_flags)))
+    if (!(xml = virDomainDefFormat(src, xmlopt, caps, format_flags)))
         return NULL;
 
     return virDomainDefParseString(xml, caps, xmlopt, parseOpaque, parse_flags);
index 4a0c7b10782eddcf6651666b981f18a504ed1c87..6b70eda14e05976a0a1d838cb75e87bce0b5cb05 100644 (file)
@@ -3104,23 +3104,33 @@ void virDomainIOThreadIDDel(virDomainDefPtr def, unsigned int iothread_id);
 unsigned int virDomainDefFormatConvertXMLFlags(unsigned int flags);
 
 char *virDomainDefFormat(virDomainDefPtr def,
+                         virDomainXMLOptionPtr xmlopt,
                          virCapsPtr caps,
-                         unsigned int flags);
-char *virDomainObjFormat(virDomainXMLOptionPtr xmlopt,
-                         virDomainObjPtr obj,
+                         unsigned int flags)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
+    ATTRIBUTE_NONNULL(3);
+char *virDomainObjFormat(virDomainObjPtr obj,
+                         virDomainXMLOptionPtr xmlopt,
                          virCapsPtr caps,
-                         unsigned int flags);
+                         unsigned int flags)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
+    ATTRIBUTE_NONNULL(3);
 int virDomainDefFormatInternal(virDomainDefPtr def,
+                               virDomainXMLOptionPtr xmlopt,
                                virCapsPtr caps,
-                               unsigned int flags,
                                virBufferPtr buf,
-                               virDomainXMLOptionPtr xmlopt);
+                               unsigned int flags)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
+    ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);
 int virDomainDefFormatInternalSetRootName(virDomainDefPtr def,
+                                          virDomainXMLOptionPtr xmlopt,
                                           virCapsPtr caps,
-                                          unsigned int flags,
                                           virBufferPtr buf,
-                                          virDomainXMLOptionPtr xmlopt,
-                                          const char *rootname);
+                                          const char *rootname,
+                                          unsigned int flags)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
+    ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4)
+    ATTRIBUTE_NONNULL(5);
 
 int virDomainDiskSourceFormat(virBufferPtr buf,
                               virStorageSourcePtr src,
index a0509041be16de340dfddbcd51862b0c46243847..0bf7d497e49b07641a4214de4f6a7c6f7e5258aa 100644 (file)
@@ -891,8 +891,8 @@ virDomainSnapshotDefFormatInternal(virBufferPtr buf,
     }
 
     if (def->parent.dom) {
-        if (virDomainDefFormatInternal(def->parent.dom, caps, domainflags, buf,
-                                       xmlopt) < 0)
+        if (virDomainDefFormatInternal(def->parent.dom, xmlopt,
+                                       caps, buf, domainflags) < 0)
             goto error;
     } else if (uuidstr) {
         virBufferAddLit(buf, "<domain>\n");
@@ -903,9 +903,9 @@ virDomainSnapshotDefFormatInternal(virBufferPtr buf,
     }
 
     if (def->parent.inactiveDom) {
-        if (virDomainDefFormatInternalSetRootName(def->parent.inactiveDom, caps,
-                                                  domainflags, buf, xmlopt,
-                                                  "inactiveDomain") < 0)
+        if (virDomainDefFormatInternalSetRootName(def->parent.inactiveDom, xmlopt,
+                                                  caps, buf, "inactiveDomain",
+                                                  domainflags) < 0)
             goto error;
     }
 
index f8ee6db75f6dd46a096134d91e08509890c0898f..81ff502769dd32ebee4091aa44f3cfb96a1c02f7 100644 (file)
@@ -2648,7 +2648,7 @@ esxDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
         if (powerState != esxVI_VirtualMachinePowerState_PoweredOff)
             def->id = id;
 
-        xml = virDomainDefFormat(def, priv->caps,
+        xml = virDomainDefFormat(def, priv->xmlopt, priv->caps,
                                  virDomainDefFormatConvertXMLFlags(flags));
     }
 
@@ -2706,7 +2706,7 @@ esxConnectDomainXMLFromNative(virConnectPtr conn, const char *nativeFormat,
     def = virVMXParseConfig(&ctx, priv->xmlopt, priv->caps, nativeConfig);
 
     if (def)
-        xml = virDomainDefFormat(def, priv->caps,
+        xml = virDomainDefFormat(def, priv->xmlopt, priv->caps,
                                  VIR_DOMAIN_DEF_FORMAT_INACTIVE);
 
     virDomainDefFree(def);
index 3a2f6602bc82215c95d2c8d3611c81b133f25350..ff9370d728511427ed0ff023b403c7729142ce47 100644 (file)
@@ -886,7 +886,8 @@ hypervDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
 
     /* FIXME: devices section is totally missing */
 
-    xml = virDomainDefFormat(def, NULL,
+    /* XXX xmlopts must be non-NULL */
+    xml = virDomainDefFormat(def, NULL, NULL,
                              virDomainDefFormatConvertXMLFlags(flags));
 
  cleanup:
index 9b9b17b17334a5c861c4dd99b02f5d09f28ed81b..19905442c18af5499cb33f71dc2e8953e47d0c81 100644 (file)
@@ -844,7 +844,7 @@ libxlDomainCleanup(libxlDriverPrivatePtr driver,
 
     /* now that we know it's stopped call the hook if present */
     if (virHookPresent(VIR_HOOK_DRIVER_LIBXL)) {
-        char *xml = virDomainDefFormat(vm->def, cfg->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, cfg->caps, 0);
 
         /* we can't stop the operation even if the script raised an error */
         ignore_value(virHookCall(VIR_HOOK_DRIVER_LIBXL, vm->def->name,
@@ -913,7 +913,7 @@ libxlDomainCleanup(libxlDriverPrivatePtr driver,
 
     /* The "release" hook cleans up additional resources */
     if (virHookPresent(VIR_HOOK_DRIVER_LIBXL)) {
-        char *xml = virDomainDefFormat(vm->def, cfg->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, cfg->caps, 0);
 
         /* we can't stop the operation even if the script raised an error */
         ignore_value(virHookCall(VIR_HOOK_DRIVER_LIBXL, vm->def->name,
@@ -1320,7 +1320,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
 
     /* Run an early hook to set-up missing devices */
     if (virHookPresent(VIR_HOOK_DRIVER_LIBXL)) {
-        char *xml = virDomainDefFormat(vm->def, cfg->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, cfg->caps, 0);
         int hookret;
 
         hookret = virHookCall(VIR_HOOK_DRIVER_LIBXL, vm->def->name,
@@ -1358,7 +1358,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
 
     /* now that we know it is about to start call the hook if present */
     if (virHookPresent(VIR_HOOK_DRIVER_LIBXL)) {
-        char *xml = virDomainDefFormat(vm->def, cfg->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, cfg->caps, 0);
         int hookret;
 
         hookret = virHookCall(VIR_HOOK_DRIVER_LIBXL, vm->def->name,
@@ -1443,7 +1443,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
         libxlDomainCreateChannelPTY(vm->def, cfg->ctx);
 #endif
 
-    if ((dom_xml = virDomainDefFormat(vm->def, cfg->caps, 0)) == NULL)
+    if ((dom_xml = virDomainDefFormat(vm->def, driver->xmlopt, cfg->caps, 0)) == NULL)
         goto destroy_dom;
 
     if (libxl_userdata_store(cfg->ctx, domid, "libvirt-xml",
@@ -1471,7 +1471,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
 
     /* finally we can call the 'started' hook script if any */
     if (virHookPresent(VIR_HOOK_DRIVER_LIBXL)) {
-        char *xml = virDomainDefFormat(vm->def, cfg->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, cfg->caps, 0);
         int hookret;
 
         hookret = virHookCall(VIR_HOOK_DRIVER_LIBXL, vm->def->name,
index b885cf0d006141e655a850ef4c64f153bb8d5d0f..dc0d9b58f32e35d36a5c70293f68b5f521d3243a 100644 (file)
@@ -459,7 +459,7 @@ libxlReconnectDomain(virDomainObjPtr vm,
     /* now that we know it's reconnected call the hook if present */
     if (virHookPresent(VIR_HOOK_DRIVER_LIBXL) &&
         STRNEQ("Domain-0", vm->def->name)) {
-        char *xml = virDomainDefFormat(vm->def, cfg->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, cfg->caps, 0);
         int hookret;
 
         /* we can't stop the operation even if the script raised an error */
@@ -1828,7 +1828,7 @@ libxlDoDomainSave(libxlDriverPrivatePtr driver,
         goto cleanup;
     }
 
-    if ((xml = virDomainDefFormat(vm->def, cfg->caps, 0)) == NULL)
+    if ((xml = virDomainDefFormat(vm->def, driver->xmlopt, cfg->caps, 0)) == NULL)
         goto cleanup;
     xml_len = strlen(xml) + 1;
 
@@ -2652,7 +2652,7 @@ libxlDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
     else
         def = vm->def;
 
-    ret = virDomainDefFormat(def, cfg->caps,
+    ret = virDomainDefFormat(def, driver->xmlopt, cfg->caps,
                              virDomainDefFormatConvertXMLFlags(flags));
 
  cleanup:
@@ -2703,7 +2703,7 @@ libxlConnectDomainXMLFromNative(virConnectPtr conn,
         goto cleanup;
     }
 
-    xml = virDomainDefFormat(def, cfg->caps, VIR_DOMAIN_DEF_FORMAT_INACTIVE);
+    xml = virDomainDefFormat(def, driver->xmlopt, cfg->caps, VIR_DOMAIN_DEF_FORMAT_INACTIVE);
 
  cleanup:
     virDomainDefFree(def);
index 65ff8271a7499489a80ae39e266d60a4710a00de..25a58f8018d0c46d23494031d8a80c8599ba4897 100644 (file)
@@ -420,7 +420,7 @@ libxlDomainMigrationSrcBegin(virConnectPtr conn,
     if (!libxlDomainMigrationIsAllowed(def))
         goto endjob;
 
-    xml = virDomainDefFormat(def, cfg->caps, VIR_DOMAIN_DEF_FORMAT_SECURE);
+    xml = virDomainDefFormat(def, driver->xmlopt, cfg->caps, VIR_DOMAIN_DEF_FORMAT_SECURE);
     /* Valid xml means success! EndJob in the confirm phase */
     if (xml)
         goto cleanup;
@@ -494,7 +494,7 @@ libxlDomainMigrationPrepareAny(virConnectPtr dconn,
         char *xml;
         int hookret;
 
-        if (!(xml = virDomainDefFormat(*def, cfg->caps,
+        if (!(xml = virDomainDefFormat(*def, driver->xmlopt, cfg->caps,
                                        VIR_DOMAIN_XML_SECURE |
                                        VIR_DOMAIN_XML_MIGRATABLE)))
             return -1;
index cb0ab6e0d5c6a40ea2592ae7c380c55a22152cd2..6c125432743bb75af47ffb2a548326b7b081bc7b 100644 (file)
@@ -987,7 +987,7 @@ static char *lxcDomainGetXMLDesc(virDomainPtr dom,
 
     ret = virDomainDefFormat((flags & VIR_DOMAIN_XML_INACTIVE) &&
                              vm->newDef ? vm->newDef : vm->def,
-                             driver->caps,
+                             driver->xmlopt, driver->caps,
                              virDomainDefFormatConvertXMLFlags(flags));
 
  cleanup:
@@ -1019,7 +1019,7 @@ static char *lxcConnectDomainXMLFromNative(virConnectPtr conn,
     if (!(def = lxcParseConfigString(nativeConfig, caps, driver->xmlopt)))
         goto cleanup;
 
-    xml = virDomainDefFormat(def, caps, 0);
+    xml = virDomainDefFormat(def, driver->xmlopt, caps, 0);
 
  cleanup:
     virObjectUnref(caps);
index cae8bbacb5e7331244180589e14a5e9431794b0c..c1b8b6aa09ead5f31084571eaf787c095e4f8979 100644 (file)
@@ -171,7 +171,7 @@ static void virLXCProcessCleanup(virLXCDriverPtr driver,
 
     /* now that we know it's stopped call the hook if present */
     if (virHookPresent(VIR_HOOK_DRIVER_LXC)) {
-        char *xml = virDomainDefFormat(vm->def, driver->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps, 0);
 
         /* we can't stop the operation even if the script raised an error */
         virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name,
@@ -248,7 +248,7 @@ static void virLXCProcessCleanup(virLXCDriverPtr driver,
 
     /* The "release" hook cleans up additional resources */
     if (virHookPresent(VIR_HOOK_DRIVER_LXC)) {
-        char *xml = virDomainDefFormat(vm->def, driver->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps, 0);
 
         /* we can't stop the operation even if the script raised an error */
         virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name,
@@ -1271,7 +1271,7 @@ int virLXCProcessStart(virConnectPtr conn,
 
     /* Run an early hook to set-up missing devices */
     if (virHookPresent(VIR_HOOK_DRIVER_LXC)) {
-        char *xml = virDomainDefFormat(vm->def, driver->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps, 0);
         int hookret;
 
         hookret = virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name,
@@ -1379,7 +1379,7 @@ int virLXCProcessStart(virConnectPtr conn,
 
     /* now that we know it is about to start call the hook if present */
     if (virHookPresent(VIR_HOOK_DRIVER_LXC)) {
-        char *xml = virDomainDefFormat(vm->def, driver->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps, 0);
         int hookret;
 
         hookret = virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name,
@@ -1521,7 +1521,7 @@ int virLXCProcessStart(virConnectPtr conn,
 
     /* finally we can call the 'started' hook script if any */
     if (virHookPresent(VIR_HOOK_DRIVER_LXC)) {
-        char *xml = virDomainDefFormat(vm->def, driver->caps, 0);
+        char *xml = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps, 0);
         int hookret;
 
         hookret = virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name,
@@ -1701,7 +1701,7 @@ virLXCProcessReconnectDomain(virDomainObjPtr vm,
 
         /* now that we know it's reconnected call the hook if present */
         if (virHookPresent(VIR_HOOK_DRIVER_LXC)) {
-            char *xml = virDomainDefFormat(vm->def, driver->caps, 0);
+            char *xml = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps, 0);
             int hookret;
 
             /* we can't stop the operation even if the script raised an error */
index 7676656af13b3da34dabf544f9c79b614e46aa72..8a05aa05044dc5b2887ac9a461a9bf8ba5fe3255 100644 (file)
@@ -1078,3 +1078,58 @@ int openvzGetVEID(const char *name)
                    _("Failed to parse vzlist output"));
     return -1;
 }
+
+
+static int
+openvzDomainDefPostParse(virDomainDefPtr def,
+                         virCapsPtr caps G_GNUC_UNUSED,
+                         unsigned int parseFlags G_GNUC_UNUSED,
+                         void *opaque G_GNUC_UNUSED,
+                         void *parseOpaque G_GNUC_UNUSED)
+{
+    /* fill the init path */
+    if (def->os.type == VIR_DOMAIN_OSTYPE_EXE && !def->os.init)
+        def->os.init = g_strdup("/sbin/init");
+
+    return 0;
+}
+
+
+static int
+openvzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
+                               const virDomainDef *def G_GNUC_UNUSED,
+                               virCapsPtr caps G_GNUC_UNUSED,
+                               unsigned int parseFlags G_GNUC_UNUSED,
+                               void *opaque G_GNUC_UNUSED,
+                               void *parseOpaque G_GNUC_UNUSED)
+{
+    if (dev->type == VIR_DOMAIN_DEVICE_CHR &&
+        dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE &&
+        dev->data.chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE)
+        dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_OPENVZ;
+
+    /* forbid capabilities mode hostdev in this kind of hypervisor */
+    if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV &&
+        dev->data.hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("hostdev mode 'capabilities' is not "
+                         "supported in %s"),
+                       virDomainVirtTypeToString(def->virtType));
+        return -1;
+    }
+
+    return 0;
+}
+
+
+virDomainDefParserConfig openvzDomainDefParserConfig = {
+    .domainPostParseCallback = openvzDomainDefPostParse,
+    .devicesPostParseCallback = openvzDomainDeviceDefPostParse,
+    .features = VIR_DOMAIN_DEF_FEATURE_NAME_SLASH,
+};
+
+virDomainXMLOptionPtr openvzXMLOption(void)
+{
+    return virDomainXMLOptionNew(&openvzDomainDefParserConfig,
+                                 NULL, NULL, NULL, NULL);
+}
index cd42d697ce9e35dd0bc037f8ecf24f89851dae25..6463c1704a2dd4a9d6e5c3d1ea13991764911ea8 100644 (file)
@@ -63,3 +63,4 @@ int strtoI(const char *str);
 int openvzSetDefinedUUID(int vpsid, unsigned char *uuid);
 int openvzGetVEID(const char *name);
 int openvzReadNetworkConf(virDomainDefPtr def, int veid);
+virDomainXMLOptionPtr openvzXMLOption(void);
index e07b3b302da3497c2611bf82b98b59c073194adf..e479ebf58dbbc83720905e1a1746314592f7b253 100644 (file)
@@ -110,55 +110,6 @@ openvzDomObjFromDomain(struct openvz_driver *driver,
 }
 
 
-static int
-openvzDomainDefPostParse(virDomainDefPtr def,
-                         virCapsPtr caps G_GNUC_UNUSED,
-                         unsigned int parseFlags G_GNUC_UNUSED,
-                         void *opaque G_GNUC_UNUSED,
-                         void *parseOpaque G_GNUC_UNUSED)
-{
-    /* fill the init path */
-    if (def->os.type == VIR_DOMAIN_OSTYPE_EXE && !def->os.init)
-        def->os.init = g_strdup("/sbin/init");
-
-    return 0;
-}
-
-
-static int
-openvzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
-                               const virDomainDef *def G_GNUC_UNUSED,
-                               virCapsPtr caps G_GNUC_UNUSED,
-                               unsigned int parseFlags G_GNUC_UNUSED,
-                               void *opaque G_GNUC_UNUSED,
-                               void *parseOpaque G_GNUC_UNUSED)
-{
-    if (dev->type == VIR_DOMAIN_DEVICE_CHR &&
-        dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE &&
-        dev->data.chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE)
-        dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_OPENVZ;
-
-    /* forbid capabilities mode hostdev in this kind of hypervisor */
-    if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV &&
-        dev->data.hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("hostdev mode 'capabilities' is not "
-                         "supported in %s"),
-                       virDomainVirtTypeToString(def->virtType));
-        return -1;
-    }
-
-    return 0;
-}
-
-
-virDomainDefParserConfig openvzDomainDefParserConfig = {
-    .domainPostParseCallback = openvzDomainDefPostParse,
-    .devicesPostParseCallback = openvzDomainDeviceDefPostParse,
-    .features = VIR_DOMAIN_DEF_FEATURE_NAME_SLASH,
-};
-
-
 /* generate arguments to create OpenVZ container
    return -1 - error
            0 - OK
@@ -522,7 +473,7 @@ static char *openvzDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) {
     if (!(vm = openvzDomObjFromDomain(driver, dom->uuid)))
         return NULL;
 
-    ret = virDomainDefFormat(vm->def, driver->caps,
+    ret = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps,
                              virDomainDefFormatConvertXMLFlags(flags));
 
     virDomainObjEndAPI(&vm);
@@ -1360,8 +1311,7 @@ static virDrvOpenStatus openvzConnectOpen(virConnectPtr conn,
     if (!(driver->caps = openvzCapsInit()))
         goto cleanup;
 
-    if (!(driver->xmlopt = virDomainXMLOptionNew(&openvzDomainDefParserConfig,
-                                                 NULL, NULL, NULL, NULL)))
+    if (!(driver->xmlopt = openvzXMLOption()))
         goto cleanup;
 
     if (openvzLoadDomains(driver) < 0)
@@ -2117,7 +2067,7 @@ openvzDomainMigrateBegin3Params(virDomainPtr domain,
         goto cleanup;
     }
 
-    xml = virDomainDefFormat(vm->def, driver->caps,
+    xml = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps,
                              VIR_DOMAIN_DEF_FORMAT_SECURE);
 
  cleanup:
index bdfe78e035590e295ecf210185540e700aeb3d98..5e00ef6448701d4961f24d47fd1f112c7714ca39 100644 (file)
@@ -3247,7 +3247,7 @@ phypDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
     if (virDomainDefSetVcpus(&def, vcpus) < 0)
         goto err;
 
-    return virDomainDefFormat(&def, phyp_driver->caps,
+    return virDomainDefFormat(&def, phyp_driver->xmlopt, phyp_driver->caps,
                               virDomainDefFormatConvertXMLFlags(flags));
 
  err:
index 789a979e8cae176f39808a52162816b78cb756ae..c6f34dbc4eaa03608d3260aa83854e19aa7a2bab 100644 (file)
@@ -9197,9 +9197,8 @@ qemuDomainDefFormatBufInternal(virQEMUDriverPtr driver,
     }
 
  format:
-    ret = virDomainDefFormatInternal(def, caps,
-                                     virDomainDefFormatConvertXMLFlags(flags),
-                                     buf, driver->xmlopt);
+    ret = virDomainDefFormatInternal(def, driver->xmlopt, caps, buf,
+                                     virDomainDefFormatConvertXMLFlags(flags));
 
  cleanup:
     virDomainDefFree(copy);
index 21560b2330da57cd2fd9a3596adc146f54fc0f60..6da79203d76a8ce7189f2c99fc64130d08eb1a70 100644 (file)
@@ -168,7 +168,7 @@ load_profile(virSecurityManagerPtr mgr G_GNUC_UNUSED,
     char *xml = NULL;
     virCommandPtr cmd = NULL;
 
-    xml = virDomainDefFormat(def, NULL, VIR_DOMAIN_DEF_FORMAT_SECURE);
+    xml = virDomainDefFormat(def, NULL, NULL, VIR_DOMAIN_DEF_FORMAT_SECURE);
     if (!xml)
         goto cleanup;
 
index 5883722d604cb80718aa5472fe6a738a00def750..e7ec537bb0f65ba486a17c9193f755c2ceabd551 100644 (file)
@@ -2177,7 +2177,8 @@ testDomainSaveImageWrite(testDriverPtr driver,
     int fd = -1;
     g_autofree char *xml = NULL;
 
-    xml = virDomainDefFormat(def, driver->caps, VIR_DOMAIN_DEF_FORMAT_SECURE);
+    xml = virDomainDefFormat(def, driver->xmlopt, driver->caps,
+                             VIR_DOMAIN_DEF_FORMAT_SECURE);
 
     if (xml == NULL) {
         virReportSystemError(errno,
@@ -2466,7 +2467,8 @@ testDomainSaveImageGetXMLDesc(virConnectPtr conn,
     if ((fd = testDomainSaveImageOpen(privconn, path, &def)) < 0)
         goto cleanup;
 
-    ret = virDomainDefFormat(def, privconn->caps, VIR_DOMAIN_DEF_FORMAT_SECURE);
+    ret = virDomainDefFormat(def, privconn->xmlopt, privconn->caps,
+                             VIR_DOMAIN_DEF_FORMAT_SECURE);
 
  cleanup:
     virDomainDefFree(def);
@@ -3177,7 +3179,7 @@ static char *testDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
     def = (flags & VIR_DOMAIN_XML_INACTIVE) &&
         privdom->newDef ? privdom->newDef : privdom->def;
 
-    ret = virDomainDefFormat(def, privconn->caps,
+    ret = virDomainDefFormat(def, privconn->xmlopt, privconn->caps,
                              virDomainDefFormatConvertXMLFlags(flags));
 
     virDomainObjEndAPI(&privdom);
index de98dc5c84c3895912eaf2e52b9f14d3b8a3edab..0d22c94e06d6e5954f471f86754baa8ddeb04275 100644 (file)
@@ -4126,7 +4126,7 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
     /* dump USB devices/filters if active */
     vboxHostDeviceGetXMLDesc(data, def, machine);
 
-    ret = virDomainDefFormat(def, data->caps,
+    ret = virDomainDefFormat(def, data->xmlopt, data->caps,
                              virDomainDefFormatConvertXMLFlags(flags));
 
  cleanup:
index 83974531d5a1c648fa1a54bfecd36c50a1f8c0e8..c0071fc18c77d323962bd6201b570877d6e856f1 100644 (file)
@@ -935,7 +935,7 @@ vmwareDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
     if (!(vm = vmwareDomObjFromDomain(driver, dom->uuid)))
         return NULL;
 
-    ret = virDomainDefFormat(vm->def, driver->caps,
+    ret = virDomainDefFormat(vm->def, driver->xmlopt, driver->caps,
                              virDomainDefFormatConvertXMLFlags(flags));
 
     virDomainObjEndAPI(&vm);
@@ -968,7 +968,7 @@ vmwareConnectDomainXMLFromNative(virConnectPtr conn, const char *nativeFormat,
     def = virVMXParseConfig(&ctx, driver->xmlopt, driver->caps, nativeConfig);
 
     if (def != NULL)
-        xml = virDomainDefFormat(def, driver->caps,
+        xml = virDomainDefFormat(def, driver->xmlopt, driver->caps,
                                  VIR_DOMAIN_DEF_FORMAT_INACTIVE);
 
     virDomainDefFree(def);
index 6b925653d503066bdd720eb312865c340a54f82e..1166b77b2ce4cc41733ef1e9f83379a223d85c54 100644 (file)
@@ -728,7 +728,7 @@ vzDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
     def = (flags & VIR_DOMAIN_XML_INACTIVE) &&
         dom->newDef ? dom->newDef : dom->def;
 
-    ret = virDomainDefFormat(def, privconn->driver->caps, flags);
+    ret = virDomainDefFormat(def, driver->xmlopt, privconn->driver->caps, flags);
 
  cleanup:
     virDomainObjEndAPI(&dom);
@@ -2872,7 +2872,7 @@ vzDomainMigrateBeginStep(virDomainObjPtr dom,
                      | VZ_MIGRATION_COOKIE_DOMAIN_NAME) < 0)
         return NULL;
 
-    return virDomainDefFormat(dom->def, driver->caps,
+    return virDomainDefFormat(dom->def, driver->xmlopt, driver->caps,
                               VIR_DOMAIN_XML_MIGRATABLE);
 }
 
index 4c2856bf972fa9485e70d864929b3c76bc6ce2fb..2362b770b5bd6a4a300a6ea739ec614c10cad9c4 100644 (file)
@@ -749,7 +749,8 @@ if WITH_OPENVZ
 openvzutilstest_SOURCES = \
        openvzutilstest.c \
        testutils.c testutils.h
-openvzutilstest_LDADD = $(LDADDS)
+openvzutilstest_LDADD = $(LDADDS) \
+       ../src/libvirt_driver_openvz.la
 else ! WITH_OPENVZ
 EXTRA_DIST += openvzutilstest.c
 endif ! WITH_OPENVZ
index c52c6e7fd7f13ff886a447b6cf9081878f83c09f..7adc23be9f3b984edc407ad40cab1226b1500fc5 100644 (file)
@@ -42,7 +42,7 @@ testCompareXMLToConfigFiles(const char *xmlfile,
         if (testSanitizeDef(vmdef) < 0)
             goto fail;
 
-        if (!(actualxml = virDomainDefFormat(vmdef, caps, 0)))
+        if (!(actualxml = virDomainDefFormat(vmdef, xmlopt, caps, 0)))
             goto fail;
 
         if (virTestCompareToFile(actualxml, xmlfile) < 0)
index 83969197c6bc8dd02a763a215efd41d3437778b7..f43867ddc9ebfaf91237354bf0b8bfd43ed56b00 100644 (file)
@@ -98,6 +98,7 @@ testReadNetworkConf(const void *data G_GNUC_UNUSED)
         "    </interface>\n"
         "  </devices>\n"
         "</domain>\n";
+    virDomainXMLOptionPtr xmlopt = openvzXMLOption();
 
     if (!(def = virDomainDefNew()))
         goto cleanup;
@@ -112,7 +113,7 @@ testReadNetworkConf(const void *data G_GNUC_UNUSED)
         goto cleanup;
     }
 
-    actual = virDomainDefFormat(def, NULL, VIR_DOMAIN_DEF_FORMAT_INACTIVE);
+    actual = virDomainDefFormat(def, xmlopt, NULL, VIR_DOMAIN_DEF_FORMAT_INACTIVE);
 
     if (actual == NULL) {
         fprintf(stderr, "ERROR: %s\n", virGetLastErrorMessage());
@@ -127,6 +128,7 @@ testReadNetworkConf(const void *data G_GNUC_UNUSED)
     result = 0;
 
  cleanup:
+    virObjectUnref(xmlopt);
     VIR_FREE(actual);
     virDomainDefFree(def);
 
index 7278a6a6baa967f68765bba9427486f5cb1c996e..9fbc1e1a64112675d248b56051ceba63099df144 100644 (file)
@@ -200,7 +200,7 @@ testQemuHotplugCheckResult(virDomainObjPtr vm,
     char *actual;
     int ret;
 
-    actual = virDomainDefFormat(vm->def, driver.caps,
+    actual = virDomainDefFormat(vm->def, driver.xmlopt, driver.caps,
                                 VIR_DOMAIN_DEF_FORMAT_SECURE);
     if (!actual)
         return -1;
@@ -466,7 +466,7 @@ testQemuHotplugCpuFinalize(struct testQemuHotplugCpuData *data)
     char *configXML = NULL;
 
     if (data->file_xml_res_live) {
-        if (!(activeXML = virDomainDefFormat(data->vm->def, driver.caps,
+        if (!(activeXML = virDomainDefFormat(data->vm->def, driver.xmlopt, driver.caps,
                                              VIR_DOMAIN_DEF_FORMAT_SECURE)))
             goto cleanup;
 
@@ -475,7 +475,7 @@ testQemuHotplugCpuFinalize(struct testQemuHotplugCpuData *data)
     }
 
     if (data->file_xml_res_conf) {
-        if (!(configXML = virDomainDefFormat(data->vm->newDef, driver.caps,
+        if (!(configXML = virDomainDefFormat(data->vm->newDef, driver.xmlopt, driver.caps,
                                              VIR_DOMAIN_DEF_FORMAT_SECURE |
                                              VIR_DOMAIN_DEF_FORMAT_INACTIVE)))
             goto cleanup;
index 8b43f35f06927cc838787646b324776980863840..a8f7dd4e1b334b35b26f30f4b502c1004906d709 100644 (file)
@@ -68,7 +68,7 @@ testCompareStatusXMLToXMLFiles(const void *opaque)
         goto cleanup;
     }
 
-    if (!(actual = virDomainObjFormat(driver.xmlopt, obj, NULL,
+    if (!(actual = virDomainObjFormat(obj, driver.xmlopt, NULL,
                                       VIR_DOMAIN_DEF_FORMAT_SECURE |
                                       VIR_DOMAIN_DEF_FORMAT_STATUS |
                                       VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET |
index 3ff582d70f481df7981fd9e775ead2c21c22335c..0a9f2c5d2b471a0613af5c5fe20c42be01799781 100644 (file)
@@ -1140,7 +1140,7 @@ testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt,
         goto out;
     }
 
-    if (!(actual = virDomainDefFormat(def, caps, format_flags))) {
+    if (!(actual = virDomainDefFormat(def, xmlopt, caps, format_flags))) {
         result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_FORMAT;
         goto out;
     }
index ad7b3360c3a1a4456f4a50c9ce3aaa0280ecdafd..72ee2a38c8cf6888021e6f98e0115f89d65554dd 100644 (file)
@@ -84,7 +84,7 @@ testCompareFiles(const char *vmx, const char *xml)
         goto cleanup;
     }
 
-    if (!(formatted = virDomainDefFormat(def, caps,
+    if (!(formatted = virDomainDefFormat(def, xmlopt, caps,
                                          VIR_DOMAIN_DEF_FORMAT_SECURE)))
         goto cleanup;
 
index 5a094e3b0e983a4d9e34c8065ac6b2e1655e7044..890d8bf2b47197b23f8e6fd9eaa142b0e9490f6e 100644 (file)
@@ -146,7 +146,8 @@ testCompareFormatXML(const char *xlcfg, const char *xml, bool replaceVars)
     if (!(def = xenParseXL(conf, caps, xmlopt)))
         goto fail;
 
-    if (!(gotxml = virDomainDefFormat(def, caps, VIR_DOMAIN_XML_INACTIVE |
+    if (!(gotxml = virDomainDefFormat(def, xmlopt, caps,
+                                      VIR_DOMAIN_XML_INACTIVE |
                                       VIR_DOMAIN_XML_SECURE)))
         goto fail;
 
index 82f4908a6318d4373a7c5cd64ce7480fa693c36d..4a4d4192db0e138de7638eecec6a4b638759a1e5 100644 (file)
@@ -100,7 +100,7 @@ testCompareFormatXML(const char *xmcfg, const char *xml)
     if (!(def = xenParseXM(conf, caps, xmlopt)))
         goto fail;
 
-    if (!(gotxml = virDomainDefFormat(def, caps, VIR_DOMAIN_DEF_FORMAT_SECURE)))
+    if (!(gotxml = virDomainDefFormat(def, xmlopt, caps, VIR_DOMAIN_DEF_FORMAT_SECURE)))
         goto fail;
 
     if (virTestCompareToFile(gotxml, xml) < 0)