xenUnifiedDomainDefineXML(virConnectPtr conn, const char *xml)
{
xenUnifiedPrivatePtr priv = conn->privateData;
- int i;
- virDomainPtr ret;
-
- for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
- if (priv->opened[i] && drivers[i]->xenDomainDefineXML) {
- ret = drivers[i]->xenDomainDefineXML(conn, xml);
- if (ret) return ret;
- }
- return NULL;
+ if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
+ return xenXMDomainDefineXML(conn, xml);
+ else
+ return xenDaemonDomainDefineXML(conn, xml);
}
static int
xenUnifiedDomainUndefineFlags(virDomainPtr dom, unsigned int flags)
{
xenUnifiedPrivatePtr priv = dom->conn->privateData;
- int i;
virCheckFlags(0, -1);
- for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
- if (priv->opened[i] && drivers[i]->xenDomainUndefine &&
- drivers[i]->xenDomainUndefine(dom) == 0)
- return 0;
-
- return -1;
+ if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
+ return xenXMDomainUndefine(dom);
+ else
+ return xenDaemonDomainUndefine(dom);
}
static int
* structure with direct calls in xen_unified.c.
*/
struct xenUnifiedDriver {
- virDrvDomainDefineXML xenDomainDefineXML;
- virDrvDomainUndefine xenDomainUndefine;
virDrvDomainAttachDeviceFlags xenDomainAttachDeviceFlags;
virDrvDomainDetachDeviceFlags xenDomainDetachDeviceFlags;
virDrvDomainGetSchedulerType xenDomainGetSchedulerType;
xenUnifiedPrivatePtr priv = conn->privateData;
virDomainDefPtr def;
- if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
- return NULL;
-
if (!(def = virDomainDefParseString(xmlDesc, priv->caps, priv->xmlopt,
1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE))) {
int
xenDaemonDomainUndefine(virDomainPtr domain)
{
- xenUnifiedPrivatePtr priv = domain->conn->privateData;
-
- if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
- return -1;
-
return xend_op(domain->conn, domain->name, "op", "delete", NULL);
}
}
struct xenUnifiedDriver xenDaemonDriver = {
- .xenDomainDefineXML = xenDaemonDomainDefineXML,
- .xenDomainUndefine = xenDaemonDomainUndefine,
.xenDomainAttachDeviceFlags = xenDaemonAttachDeviceFlags,
.xenDomainDetachDeviceFlags = xenDaemonDetachDeviceFlags,
.xenDomainGetSchedulerType = xenDaemonGetSchedulerType,
#define XM_XML_ERROR "Invalid xml"
struct xenUnifiedDriver xenXMDriver = {
- .xenDomainDefineXML = xenXMDomainDefineXML,
- .xenDomainUndefine = xenXMDomainUndefine,
.xenDomainAttachDeviceFlags = xenXMDomainAttachDeviceFlags,
.xenDomainDetachDeviceFlags = xenXMDomainDetachDeviceFlags,
};
xenXMConfCachePtr entry;
int ret = -1;
- if (domain->id != -1)
- return -1;
-
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))