From 3f63c44d12315ce50b15bd014fece8a0dca5fdc0 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Tue, 16 Jun 2009 15:27:33 +0000 Subject: [PATCH] Add virCapabilities*EmulatorRequired. Certain drivers always need an 'emulator' specified in the XML (qemu and lxc at least). Store this info in capabilities. We will eventually use this to move default emulator handling out of drivers and into domain_conf.* --- ChangeLog | 5 +++++ src/capabilities.c | 10 ++++++++++ src/capabilities.h | 7 +++++++ src/libvirt_private.syms | 2 ++ src/lxc_conf.c | 4 ++++ src/qemu_conf.c | 3 +++ 6 files changed, 31 insertions(+) diff --git a/ChangeLog b/ChangeLog index c3f8c836df..53b2ead529 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Jun 16 11:18:00 EDT 2009 Cole Robinson + + * src/capabilities.c src/capabilities.h src/libvirt_private.syms + src/lxc_conf.c src/qemu_conf.c: Add virCapabilities*EmulatorRequired. + Tue Jun 16 11:16:17 EDT 2009 Cole Robinson * src/qemu_conf.c src/qemu_conf.h tests/qemuhelptest.c diff --git a/src/capabilities.c b/src/capabilities.c index d6e3478f93..00a4407552 100644 --- a/src/capabilities.c +++ b/src/capabilities.c @@ -707,3 +707,13 @@ virCapabilitiesGenerateMac(virCapsPtr caps, { virGenerateMacAddr(caps->macPrefix, mac); } + +extern void +virCapabilitiesSetEmulatorRequired(virCapsPtr caps) { + caps->emulatorRequired = 1; +} + +extern unsigned int +virCapabilitiesIsEmulatorRequired(virCapsPtr caps) { + return caps->emulatorRequired; +} diff --git a/src/capabilities.h b/src/capabilities.h index 5b0bbabbbf..0d476d1073 100644 --- a/src/capabilities.h +++ b/src/capabilities.h @@ -106,6 +106,7 @@ struct _virCaps { int nguests; virCapsGuestPtr *guests; unsigned char macPrefix[VIR_MAC_PREFIX_BUFLEN]; + unsigned int emulatorRequired : 1; }; @@ -125,6 +126,12 @@ extern void virCapabilitiesGenerateMac(virCapsPtr caps, unsigned char *mac); +extern void +virCapabilitiesSetEmulatorRequired(virCapsPtr caps); + +extern unsigned int +virCapabilitiesIsEmulatorRequired(virCapsPtr caps); + extern int virCapabilitiesAddHostFeature(virCapsPtr caps, const char *name); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6af8432372..5ac904f5fc 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -27,6 +27,8 @@ virCapabilitiesFree; virCapabilitiesNew; virCapabilitiesSetMacPrefix; virCapabilitiesGenerateMac; +virCapabilitiesSetEmulatorRequired; +virCapabilitiesIsEmulatorRequired; # conf.h diff --git a/src/lxc_conf.c b/src/lxc_conf.c index 8a29c256c9..d06a02441a 100644 --- a/src/lxc_conf.c +++ b/src/lxc_conf.c @@ -69,6 +69,10 @@ virCapsPtr lxcCapsInit(void) 0, NULL) == NULL) goto no_memory; + + /* LXC Requires an emulator in the XML */ + virCapabilitiesSetEmulatorRequired(caps); + return caps; no_memory: diff --git a/src/qemu_conf.c b/src/qemu_conf.c index 0c6221dcbd..8c657be28f 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -405,6 +405,9 @@ virCapsPtr qemudCapsInit(void) { } } + /* QEMU Requires an emulator in the XML */ + virCapabilitiesSetEmulatorRequired(caps); + return caps; no_memory: