On Mon, Mar 11, 2013 at 04:06:37PM +0100, Peter Krempa wrote:
This patch removes the emulatorRequired field and associated
infrastructure from the virCaps object. Instead the driver specific
callbacks are used as this field isn't enforced by all drivers.
This patch implements the appropriate callbacks in the qemu and lxc
driver and moves to check to that location.
---
src/conf/capabilities.c | 10 ----------
src/conf/capabilities.h | 7 -------
src/conf/domain_conf.c | 16 ++++++----------
src/conf/domain_conf.h | 2 ++
src/libvirt_private.syms | 3 +--
src/lxc/lxc_conf.c | 7 +++----
src/lxc/lxc_domain.c | 17 +++++++++++++++++
src/lxc/lxc_domain.h | 1 +
src/qemu/qemu_capabilities.c | 3 ---
src/qemu/qemu_domain.c | 15 +++++++++++++++
tests/lxcxml2xmldata/lxc-hostdev.xml | 1 +
tests/lxcxml2xmldata/lxc-systemd.xml | 1 +
12 files changed, 47 insertions(+), 36 deletions(-)
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index d53d5a3..1d29ce6 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -935,13 +935,3 @@ virCapabilitiesGenerateMac(virCapsPtr caps,
{
virMacAddrGenerate(caps->macPrefix, mac);
}
-
-extern void
-virCapabilitiesSetEmulatorRequired(virCapsPtr caps) {
- caps->emulatorRequired = 1;
-}
-
-extern unsigned int
-virCapabilitiesIsEmulatorRequired(virCapsPtr caps) {
- return caps->emulatorRequired;
-}
diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
index 5fd1bb5..dcf38a8 100644
--- a/src/conf/capabilities.h
+++ b/src/conf/capabilities.h
@@ -163,7 +163,6 @@ struct _virCaps {
/* Move to virDomainXMLConf later */
unsigned char macPrefix[VIR_MAC_PREFIX_BUFLEN];
- unsigned int emulatorRequired : 1;
int defaultDiskDriverType; /* enum virStorageFileFormat */
int (*defaultConsoleTargetType)(const char *ostype, virArch guestarch);
bool hasWideScsiBus;
@@ -186,12 +185,6 @@ extern void
virCapabilitiesGenerateMac(virCapsPtr caps,
virMacAddrPtr mac);
-extern void
-virCapabilitiesSetEmulatorRequired(virCapsPtr caps);
-
-extern unsigned int
-virCapabilitiesIsEmulatorRequired(virCapsPtr caps);
-
extern int
virCapabilitiesAddHostFeature(virCapsPtr caps,
const char *name);
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 1cdd9e5..fbdab9a 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -9079,8 +9079,9 @@ virDomainLeaseRemove(virDomainDefPtr def,
}
-static char *virDomainDefDefaultEmulator(virDomainDefPtr def,
- virCapsPtr caps) {
+char *
+virDomainDefDefaultEmulator(virDomainDefPtr def,
+ virCapsPtr caps) {
const char *type;
const char *emulator;
char *retemu;
@@ -9099,13 +9100,13 @@ static char *virDomainDefDefaultEmulator(virDomainDefPtr def,
if (!emulator) {
virReportError(VIR_ERR_INTERNAL_ERROR,
- _("no emulator for domain %s os type %s on architecture
%s"),
+ _("no emulator for domain %s os type %s "
+ "on architecture %s"),
type, def->os.type, virArchToString(def->os.arch));
return NULL;
}
- retemu = strdup(emulator);
- if (!retemu)
+ if (!(retemu = strdup(emulator)))
virReportOOMError();
return retemu;
@@ -10263,11 +10264,6 @@ virDomainDefParseXML(virCapsPtr caps,
}
def->emulator = virXPathString("string(./devices/emulator[1])", ctxt);
- if (!def->emulator && virCapabilitiesIsEmulatorRequired(caps)) {
- def->emulator = virDomainDefDefaultEmulator(def, caps);
- if (!def->emulator)
- goto error;
- }
/* analysis of the disk devices */
if ((n = virXPathNodeSet("./devices/disk", ctxt, &nodes)) < 0)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index ab66707..0dac95e 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2471,4 +2471,6 @@ int virDomainObjListExport(virDomainObjListPtr doms,
virDomainVcpuPinDefPtr virDomainLookupVcpuPin(virDomainDefPtr def,
int vcpuid);
+char *virDomainDefDefaultEmulator(virDomainDefPtr def, virCapsPtr caps);
s/virDomainDefDefaultEmulator/virDomainDefSetDefaultEmulator) to make it
clear that this is a setter function.
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|