Daniel P. Berrange wrote:
From: "Daniel P. Berrange" <berrange(a)redhat.com>
Make the domain define/undefine driver methods directly call
into either the XenD or XM drivers
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
src/xen/xen_driver.c | 24 ++++++++----------------
src/xen/xen_driver.h | 2 --
src/xen/xend_internal.c | 10 ----------
src/xen/xm_internal.c | 5 -----
4 files changed, 8 insertions(+), 33 deletions(-)
ACK.
Regards,
Jim
diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c
index f6c1891..6643a97 100644
--- a/src/xen/xen_driver.c
+++ b/src/xen/xen_driver.c
@@ -1369,31 +1369,23 @@ static virDomainPtr
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
diff --git a/src/xen/xen_driver.h b/src/xen/xen_driver.h
index e2c0d68..254c2f5 100644
--- a/src/xen/xen_driver.h
+++ b/src/xen/xen_driver.h
@@ -93,8 +93,6 @@ extern int xenRegister (void);
* structure with direct calls in xen_unified.c.
*/
struct xenUnifiedDriver {
- virDrvDomainDefineXML xenDomainDefineXML;
- virDrvDomainUndefine xenDomainUndefine;
virDrvDomainAttachDeviceFlags xenDomainAttachDeviceFlags;
virDrvDomainDetachDeviceFlags xenDomainDetachDeviceFlags;
virDrvDomainGetSchedulerType xenDomainGetSchedulerType;
diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
index dcd31de..f9b43b8 100644
--- a/src/xen/xend_internal.c
+++ b/src/xen/xend_internal.c
@@ -2860,9 +2860,6 @@ xenDaemonDomainDefineXML(virConnectPtr conn, const char *xmlDesc)
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))) {
@@ -2905,11 +2902,6 @@ xenDaemonDomainCreate(virDomainPtr domain)
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);
}
@@ -3361,8 +3353,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain,
}
struct xenUnifiedDriver xenDaemonDriver = {
- .xenDomainDefineXML = xenDaemonDomainDefineXML,
- .xenDomainUndefine = xenDaemonDomainUndefine,
.xenDomainAttachDeviceFlags = xenDaemonAttachDeviceFlags,
.xenDomainDetachDeviceFlags = xenDaemonDetachDeviceFlags,
.xenDomainGetSchedulerType = xenDaemonGetSchedulerType,
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index 505f959..bb79c63 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -81,8 +81,6 @@ static int xenXMDomainDetachDeviceFlags(virDomainPtr domain, const char
*xml,
#define XM_XML_ERROR "Invalid xml"
struct xenUnifiedDriver xenXMDriver = {
- .xenDomainDefineXML = xenXMDomainDefineXML,
- .xenDomainUndefine = xenXMDomainUndefine,
.xenDomainAttachDeviceFlags = xenXMDomainAttachDeviceFlags,
.xenDomainDetachDeviceFlags = xenXMDomainDetachDeviceFlags,
};
@@ -1108,9 +1106,6 @@ xenXMDomainUndefine(virDomainPtr domain)
xenXMConfCachePtr entry;
int ret = -1;
- if (domain->id != -1)
- return -1;
-
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))