Provide parse flags to PostParse functions

This way both Domain and Device PostParse functions can act based on the
flags.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
Martin Kletzander 2016-01-08 14:00:56 +01:00
parent fde937bda0
commit 93103da84b
15 changed files with 38 additions and 5 deletions

View File

@ -60,6 +60,7 @@ virDomainXMLPrivateDataCallbacks virBhyveDriverPrivateDataCallbacks = {
static int static int
bhyveDomainDefPostParse(virDomainDefPtr def, bhyveDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* Add an implicit PCI root controller */ /* Add an implicit PCI root controller */
@ -78,6 +79,7 @@ static int
bhyveDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, bhyveDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def ATTRIBUTE_UNUSED, const virDomainDef *def ATTRIBUTE_UNUSED,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
if (virDomainDeviceDefCheckUnsupportedMemoryDevice(dev) < 0) if (virDomainDeviceDefCheckUnsupportedMemoryDevice(dev) < 0)

View File

@ -4022,6 +4022,7 @@ static int
virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev, virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev,
const virDomainDef *def, const virDomainDef *def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
virDomainXMLOptionPtr xmlopt) virDomainXMLOptionPtr xmlopt)
{ {
if (dev->type == VIR_DOMAIN_DEVICE_CHR) { if (dev->type == VIR_DOMAIN_DEVICE_CHR) {
@ -4155,18 +4156,19 @@ static int
virDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, virDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def, const virDomainDef *def,
virCapsPtr caps, virCapsPtr caps,
unsigned int flags,
virDomainXMLOptionPtr xmlopt) virDomainXMLOptionPtr xmlopt)
{ {
int ret; int ret;
if (xmlopt->config.devicesPostParseCallback) { if (xmlopt->config.devicesPostParseCallback) {
ret = xmlopt->config.devicesPostParseCallback(dev, def, caps, ret = xmlopt->config.devicesPostParseCallback(dev, def, caps, flags,
xmlopt->config.priv); xmlopt->config.priv);
if (ret < 0) if (ret < 0)
return ret; return ret;
} }
if ((ret = virDomainDeviceDefPostParseInternal(dev, def, caps, xmlopt)) < 0) if ((ret = virDomainDeviceDefPostParseInternal(dev, def, caps, flags, xmlopt)) < 0)
return ret; return ret;
return 0; return 0;
@ -4177,6 +4179,7 @@ struct virDomainDefPostParseDeviceIteratorData {
virDomainDefPtr def; virDomainDefPtr def;
virCapsPtr caps; virCapsPtr caps;
virDomainXMLOptionPtr xmlopt; virDomainXMLOptionPtr xmlopt;
unsigned int parseFlags;
}; };
@ -4187,7 +4190,8 @@ virDomainDefPostParseDeviceIterator(virDomainDefPtr def ATTRIBUTE_UNUSED,
void *opaque) void *opaque)
{ {
struct virDomainDefPostParseDeviceIteratorData *data = opaque; struct virDomainDefPostParseDeviceIteratorData *data = opaque;
return virDomainDeviceDefPostParse(dev, data->def, data->caps, data->xmlopt); return virDomainDeviceDefPostParse(dev, data->def, data->caps,
data->parseFlags, data->xmlopt);
} }
@ -4202,11 +4206,12 @@ virDomainDefPostParse(virDomainDefPtr def,
.def = def, .def = def,
.caps = caps, .caps = caps,
.xmlopt = xmlopt, .xmlopt = xmlopt,
.parseFlags = parseFlags,
}; };
/* call the domain config callback */ /* call the domain config callback */
if (xmlopt->config.domainPostParseCallback) { if (xmlopt->config.domainPostParseCallback) {
ret = xmlopt->config.domainPostParseCallback(def, caps, ret = xmlopt->config.domainPostParseCallback(def, caps, parseFlags,
xmlopt->config.priv); xmlopt->config.priv);
if (ret < 0) if (ret < 0)
return ret; return ret;
@ -12644,7 +12649,7 @@ virDomainDeviceDefParse(const char *xmlStr,
} }
/* callback to fill driver specific device aspects */ /* callback to fill driver specific device aspects */
if (virDomainDeviceDefPostParse(dev, def, caps, xmlopt) < 0) if (virDomainDeviceDefPostParse(dev, def, caps, flags, xmlopt) < 0)
goto error; goto error;
cleanup: cleanup:

View File

@ -2439,12 +2439,14 @@ typedef virDomainXMLOption *virDomainXMLOptionPtr;
* overall domain defaults. */ * overall domain defaults. */
typedef int (*virDomainDefPostParseCallback)(virDomainDefPtr def, typedef int (*virDomainDefPostParseCallback)(virDomainDefPtr def,
virCapsPtr caps, virCapsPtr caps,
unsigned int parseFlags,
void *opaque); void *opaque);
/* Called once per device, for adjusting per-device settings while /* Called once per device, for adjusting per-device settings while
* leaving the overall domain otherwise unchanged. */ * leaving the overall domain otherwise unchanged. */
typedef int (*virDomainDeviceDefPostParseCallback)(virDomainDeviceDefPtr dev, typedef int (*virDomainDeviceDefPostParseCallback)(virDomainDeviceDefPtr dev,
const virDomainDef *def, const virDomainDef *def,
virCapsPtr caps, virCapsPtr caps,
unsigned int parseFlags,
void *opaque); void *opaque);
typedef struct _virDomainDefParserConfig virDomainDefParserConfig; typedef struct _virDomainDefParserConfig virDomainDefParserConfig;

View File

@ -285,6 +285,7 @@ static int
libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def, const virDomainDef *def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
if (dev->type == VIR_DOMAIN_DEVICE_CHR && if (dev->type == VIR_DOMAIN_DEVICE_CHR &&
@ -370,6 +371,7 @@ libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
static int static int
libxlDomainDefPostParse(virDomainDefPtr def, libxlDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* Xen PV domains always have a PV console, so add one to the domain config /* Xen PV domains always have a PV console, so add one to the domain config

View File

@ -241,6 +241,7 @@ virDomainXMLPrivateDataCallbacks virLXCDriverPrivateDataCallbacks = {
static int static int
virLXCDomainDefPostParse(virDomainDefPtr def, virLXCDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps, virCapsPtr caps,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* check for emulator and create a default one if needed */ /* check for emulator and create a default one if needed */
@ -260,6 +261,7 @@ static int
virLXCDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, virLXCDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def ATTRIBUTE_UNUSED, const virDomainDef *def ATTRIBUTE_UNUSED,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
if (dev->type == VIR_DOMAIN_DEVICE_CHR && if (dev->type == VIR_DOMAIN_DEVICE_CHR &&

View File

@ -89,6 +89,7 @@ struct openvz_driver ovz_driver;
static int static int
openvzDomainDefPostParse(virDomainDefPtr def, openvzDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* fill the init path */ /* fill the init path */
@ -109,6 +110,7 @@ static int
openvzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, openvzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def ATTRIBUTE_UNUSED, const virDomainDef *def ATTRIBUTE_UNUSED,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
if (dev->type == VIR_DOMAIN_DEVICE_CHR && if (dev->type == VIR_DOMAIN_DEVICE_CHR &&

View File

@ -1096,6 +1096,7 @@ openSSHSession(virConnectPtr conn, virConnectAuthPtr auth,
static int static int
phypDomainDefPostParse(virDomainDefPtr def, phypDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* memory hotplug tunables are not supported by this driver */ /* memory hotplug tunables are not supported by this driver */
@ -1110,6 +1111,7 @@ static int
phypDomainDeviceDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED, phypDomainDeviceDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED,
const virDomainDef *def ATTRIBUTE_UNUSED, const virDomainDef *def ATTRIBUTE_UNUSED,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
return 0; return 0;

View File

@ -1230,6 +1230,7 @@ qemuCanonicalizeMachine(virDomainDefPtr def, virQEMUCapsPtr qemuCaps)
static int static int
qemuDomainDefPostParse(virDomainDefPtr def, qemuDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps, virCapsPtr caps,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque) void *opaque)
{ {
virQEMUDriverPtr driver = opaque; virQEMUDriverPtr driver = opaque;
@ -1305,6 +1306,7 @@ static int
qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def, const virDomainDef *def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque) void *opaque)
{ {
virQEMUDriverPtr driver = opaque; virQEMUDriverPtr driver = opaque;

View File

@ -409,6 +409,7 @@ static int
umlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, umlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def ATTRIBUTE_UNUSED, const virDomainDef *def ATTRIBUTE_UNUSED,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
if (dev->type == VIR_DOMAIN_DEVICE_CHR && if (dev->type == VIR_DOMAIN_DEVICE_CHR &&
@ -436,6 +437,7 @@ umlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
static int static int
umlDomainDefPostParse(virDomainDefPtr def, umlDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* memory hotplug tunables are not supported by this driver */ /* memory hotplug tunables are not supported by this driver */

View File

@ -252,6 +252,7 @@ static char *vboxGenerateMediumName(PRUint32 storageBus,
static int static int
vboxDomainDefPostParse(virDomainDefPtr def, vboxDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* memory hotplug tunables are not supported by this driver */ /* memory hotplug tunables are not supported by this driver */
@ -265,6 +266,7 @@ static int
vboxDomainDeviceDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED, vboxDomainDeviceDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED,
const virDomainDef *def ATTRIBUTE_UNUSED, const virDomainDef *def ATTRIBUTE_UNUSED,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
return 0; return 0;

View File

@ -85,6 +85,7 @@ vmwareDataFreeFunc(void *data)
static int static int
vmwareDomainDefPostParse(virDomainDefPtr def, vmwareDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* memory hotplug tunables are not supported by this driver */ /* memory hotplug tunables are not supported by this driver */
@ -98,6 +99,7 @@ static int
vmwareDomainDeviceDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED, vmwareDomainDeviceDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED,
const virDomainDef *def ATTRIBUTE_UNUSED, const virDomainDef *def ATTRIBUTE_UNUSED,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
return 0; return 0;

View File

@ -527,6 +527,7 @@ VIR_ENUM_IMPL(virVMXControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
static int static int
virVMXDomainDefPostParse(virDomainDefPtr def, virVMXDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* memory hotplug tunables are not supported by this driver */ /* memory hotplug tunables are not supported by this driver */
@ -540,6 +541,7 @@ static int
virVMXDomainDevicesDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED, virVMXDomainDevicesDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED,
const virDomainDef *def ATTRIBUTE_UNUSED, const virDomainDef *def ATTRIBUTE_UNUSED,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
return 0; return 0;

View File

@ -175,6 +175,7 @@ vzConnectGetCapabilities(virConnectPtr conn)
static int static int
vzDomainDefPostParse(virDomainDefPtr def, vzDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* memory hotplug tunables are not supported by this driver */ /* memory hotplug tunables are not supported by this driver */
@ -188,6 +189,7 @@ static int
vzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, vzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def, const virDomainDef *def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
int ret = -1; int ret = -1;

View File

@ -322,6 +322,7 @@ static int
xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def, const virDomainDef *def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
if (dev->type == VIR_DOMAIN_DEVICE_CHR && if (dev->type == VIR_DOMAIN_DEVICE_CHR &&
@ -369,6 +370,7 @@ xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
static int static int
xenDomainDefPostParse(virDomainDefPtr def, xenDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
if (!def->memballoon) { if (!def->memballoon) {

View File

@ -47,6 +47,7 @@ static int
xenapiDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, xenapiDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
const virDomainDef *def, const virDomainDef *def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
if (dev->type == VIR_DOMAIN_DEVICE_CHR && if (dev->type == VIR_DOMAIN_DEVICE_CHR &&
@ -75,6 +76,7 @@ xenapiDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
static int static int
xenapiDomainDefPostParse(virDomainDefPtr def, xenapiDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED,
unsigned int parseFlags ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) void *opaque ATTRIBUTE_UNUSED)
{ {
/* memory hotplug tunables are not supported by this driver */ /* memory hotplug tunables are not supported by this driver */