From: Kiarie Kahurani <davidkiarie4(a)gmail.com>
introduce function
xenParseXMEmulatedHardware(virConfPtr conf,.........);
which parses emulated devices config instead
signed-off-by: David Kiarie<davidkiarie4(a)gmail.com>
---
src/xenxs/xen_xm.c | 82 ++++++++++++++++++++++++++++++++----------------------
1 file changed, 48 insertions(+), 34 deletions(-)
diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c
index 73efa5f..9eabfa4 100644
--- a/src/xenxs/xen_xm.c
+++ b/src/xenxs/xen_xm.c
@@ -1085,6 +1085,52 @@ xenParseXMVif(virConfPtr conf, virDomainDefPtr def)
VIR_FREE(script);
return -1;
}
+
+
+static int
+xenParseXMEmulatedDevices(virConfPtr conf, virDomainDefPtr def)
+{
+ const char *str;
+
+ if (STREQ(def->os.type, "hvm")) {
+ if (xenXMConfigGetString(conf, "soundhw", &str, NULL) < 0)
+ return -1;
+
+ if (str &&
+ xenParseSxprSound(def, str) < 0)
+ return -1;
+
+ if (xenXMConfigGetString(conf, "usbdevice", &str, NULL) < 0)
+ return -1;
+
+ if (str &&
+ (STREQ(str, "tablet") ||
+ STREQ(str, "mouse") ||
+ STREQ(str, "keyboard"))) {
+ virDomainInputDefPtr input;
+ if (VIR_ALLOC(input) < 0)
+ return -1;
+
+ input->bus = VIR_DOMAIN_INPUT_BUS_USB;
+ if (STREQ(str, "mouse"))
+ input->type = VIR_DOMAIN_INPUT_TYPE_MOUSE;
+ else if (STREQ(str, "tablet"))
+ input->type = VIR_DOMAIN_INPUT_TYPE_TABLET;
+ else if (STREQ(str, "keyboard"))
+ input->type = VIR_DOMAIN_INPUT_TYPE_KBD;
+ if (VIR_ALLOC_N(def->inputs, 1) < 0) {
+ virDomainInputDefFree(input);
+ return -1;
+
+ }
+ def->inputs[0] = input;
+ def->ninputs = 1;
+ }
+ }
+
+ return 0;
+}
+
/*
* Turn a config record into a lump of XML describing the
* domain, suitable for later feeding for virDomainCreateXML
@@ -1214,31 +1260,8 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
if (xenParseXMPCI(conf, def) < 0)
goto cleanup;
- if (hvm) {
- if (xenXMConfigGetString(conf, "usbdevice", &str, NULL) < 0)
- goto cleanup;
- if (str &&
- (STREQ(str, "tablet") ||
- STREQ(str, "mouse") ||
- STREQ(str, "keyboard"))) {
- virDomainInputDefPtr input;
- if (VIR_ALLOC(input) < 0)
- goto cleanup;
- input->bus = VIR_DOMAIN_INPUT_BUS_USB;
- if (STREQ(str, "mouse"))
- input->type = VIR_DOMAIN_INPUT_TYPE_MOUSE;
- else if (STREQ(str, "tablet"))
- input->type = VIR_DOMAIN_INPUT_TYPE_TABLET;
- else if (STREQ(str, "keyboard"))
- input->type = VIR_DOMAIN_INPUT_TYPE_KBD;
- if (VIR_ALLOC_N(def->inputs, 1) < 0) {
- virDomainInputDefFree(input);
- goto cleanup;
- }
- def->inputs[0] = input;
- def->ninputs = 1;
- }
- }
+ if (xenParseXMEmulatedDevices(conf, def) < 0)
+ goto cleanup;
if (xenParseXMVfb(conf, def, xendConfigVersion) < 0)
goto cleanup;
@@ -1246,15 +1269,6 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
if (xenParseXMCharDev(conf, def) < 0)
goto cleanup;
- if (hvm) {
- if (xenXMConfigGetString(conf, "soundhw", &str, NULL) < 0)
- goto cleanup;
-
- if (str &&
- xenParseSxprSound(def, str) < 0)
- goto cleanup;
- }
-
return def;
cleanup:
--
1.8.4.5