conf: sanitize virDomainObjFormat & virDomainDefFormat* APIs

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>
This commit is contained in:
Daniel P. Berrangé 2019-11-26 19:40:46 +00:00
parent 908701c64a
commit 92d412149c
31 changed files with 163 additions and 138 deletions

View 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);

View 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);

View 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,
virCapsPtr caps,
unsigned int flags,
virBufferPtr buf,
virDomainXMLOptionPtr xmlopt,
const char *rootname)
virCapsPtr caps,
virBufferPtr buf,
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);

View File

@ -3104,23 +3104,33 @@ void virDomainIOThreadIDDel(virDomainDefPtr def, unsigned int iothread_id);
unsigned int virDomainDefFormatConvertXMLFlags(unsigned int flags);
char *virDomainDefFormat(virDomainDefPtr def,
virCapsPtr caps,
unsigned int flags);
char *virDomainObjFormat(virDomainXMLOptionPtr xmlopt,
virDomainObjPtr obj,
virCapsPtr caps,
unsigned int flags);
int virDomainDefFormatInternal(virDomainDefPtr def,
virCapsPtr caps,
unsigned int flags,
virBufferPtr buf,
virDomainXMLOptionPtr xmlopt);
int virDomainDefFormatInternalSetRootName(virDomainDefPtr def,
virCapsPtr caps,
unsigned int flags,
virBufferPtr buf,
virDomainXMLOptionPtr xmlopt,
const char *rootname);
virCapsPtr caps,
unsigned int flags)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_NONNULL(3);
char *virDomainObjFormat(virDomainObjPtr obj,
virDomainXMLOptionPtr xmlopt,
virCapsPtr caps,
unsigned int flags)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_NONNULL(3);
int virDomainDefFormatInternal(virDomainDefPtr def,
virDomainXMLOptionPtr xmlopt,
virCapsPtr caps,
virBufferPtr buf,
unsigned int flags)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);
int virDomainDefFormatInternalSetRootName(virDomainDefPtr def,
virDomainXMLOptionPtr xmlopt,
virCapsPtr caps,
virBufferPtr buf,
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,

View 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;
}

View 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);

View 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:

View 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,

View 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);

View 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;

View 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);

View 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 */

View 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);
}

View 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);

View 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:

View 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:

View 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);

View 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;

View 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);

View 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:

View 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);

View 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);
}

View 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

View 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)

View 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);

View 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;

View 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 |

View 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;
}

View 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;

View 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;

View 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)