diff --git a/ChangeLog b/ChangeLog index ae8fe2b4af..9b99299742 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Mon Dec 6 17:46:03 EST 2006 Daniel Berrange + + * src/xend_internal.c: Support parsing of new paravirt framebuffer + graphics configuration from xen 3.0.4 tree. + * test/sexpr2xmltest.c: Added test cases for new & old framebuffer + config parsing in paravirt & fullyvirt. + * test/sexpr2xmldata/sexpr2xml-pv-vfb-*: New test data files + Mon Dec 6 17:40:03 EST 2006 Daniel Berrange * test/xml2sexprdata/xml2sexpr-curmem.xml, test/xml2sexprdata/xml2sexpr-curmem.sexpr: diff --git a/src/xend_internal.c b/src/xend_internal.c index 2f1fb5bf49..3e73ef3493 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -1736,6 +1736,19 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi tmp2); virBufferAdd(&buf, " \n", 17); + } else if (!hvm && + sexpr_lookup(node, "device/vfb")) { + /* New style graphics config for PV guests only in 3.0.4 */ + tmp = sexpr_node(node, "device/vfb/type"); + + if (tmp && !strcmp(tmp, "sdl")) { + virBufferAdd(&buf, " \n", 27); + } else if (tmp && !strcmp(tmp, "vnc")) { + int port = xenStoreDomainGetVNCPort(conn, domid); + if (port == -1) + port = 5900 + domid; + virBufferVSprintf(&buf, " \n", port); + } } } @@ -1769,7 +1782,7 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi } } - /* Graphics device */ + /* Graphics device (HVM, or old (pre-3.0.4) style PV vnc config) */ tmp = sexpr_fmt_node(root, "domain/image/%s/vnc", hvm ? "hvm" : "linux"); if (tmp != NULL) { if (tmp[0] == '1') { @@ -1780,6 +1793,7 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi } } + /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */ tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ? "hvm" : "linux"); if (tmp != NULL) { if (tmp[0] == '1') diff --git a/tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.sexpr b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.sexpr new file mode 100644 index 0000000000..d45d6a41dd --- /dev/null +++ b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.sexpr @@ -0,0 +1,2 @@ +(domain (domid 6)(name 'pvtest')(memory 420)(maxmem 420)(vcpus 2)(uuid '596a5d2171f48fb2e068e2386a5c413e')(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')(image (linux (kernel '/var/lib/xen/vmlinuz.2Dn2YT')(ramdisk '/var/lib/xen/initrd.img.0u-Vhq')(args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w')))(device (vfb (type vnc)(vncunused 1)(vnclisten 0.0.0.0)(vncpasswd 123456))))) + diff --git a/tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.xml b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.xml new file mode 100644 index 0000000000..ee3926f18e --- /dev/null +++ b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.xml @@ -0,0 +1,23 @@ + + pvtest + 596a5d2171f48fb2e068e2386a5c413e + + linux + /var/lib/xen/vmlinuz.2Dn2YT + /var/lib/xen/initrd.img.0u-Vhq + method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os + + 430080 + 2 + destroy + destroy + destroy + + + + + + + + + diff --git a/tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.sexpr b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.sexpr new file mode 100644 index 0000000000..edceadb284 --- /dev/null +++ b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.sexpr @@ -0,0 +1,2 @@ +(domain (domid 6)(name 'pvtest')(memory 420)(maxmem 420)(vcpus 2)(uuid '596a5d2171f48fb2e068e2386a5c413e')(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')(image (linux (kernel '/var/lib/xen/vmlinuz.2Dn2YT')(ramdisk '/var/lib/xen/initrd.img.0u-Vhq')(args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os ')(vnc 1)(vncunused 1)(vnclisten 0.0.0.0)(vncpasswd 123456)))(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w')))) + diff --git a/tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml new file mode 100644 index 0000000000..ee3926f18e --- /dev/null +++ b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml @@ -0,0 +1,23 @@ + + pvtest + 596a5d2171f48fb2e068e2386a5c413e + + linux + /var/lib/xen/vmlinuz.2Dn2YT + /var/lib/xen/initrd.img.0u-Vhq + method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os + + 430080 + 2 + destroy + destroy + destroy + + + + + + + + + diff --git a/tests/sexpr2xmltest.c b/tests/sexpr2xmltest.c index 3c968112c4..d8ab63233d 100644 --- a/tests/sexpr2xmltest.c +++ b/tests/sexpr2xmltest.c @@ -60,6 +60,20 @@ static int testComparePVversion2(void *data ATTRIBUTE_UNUSED) { 2); } +static int testComparePVOrigVFB(void *data ATTRIBUTE_UNUSED) { + return testCompareFiles("sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml", + "sexpr2xmldata/sexpr2xml-pv-vfb-orig.sexpr", + 2); +} + + +static int testComparePVNewVFB(void *data ATTRIBUTE_UNUSED) { + return testCompareFiles("sexpr2xmldata/sexpr2xml-pv-vfb-new.xml", + "sexpr2xmldata/sexpr2xml-pv-vfb-new.sexpr", + 3); +} + + static int testCompareFVversion2(void *data ATTRIBUTE_UNUSED) { return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-v2.xml", "sexpr2xmldata/sexpr2xml-fv-v2.sexpr", @@ -133,8 +147,15 @@ main(int argc, char **argv) if (virtTestRun("SEXPR-2-XML PV config (version 2)", 1, testComparePVversion2, NULL) != 0) ret = -1; + if (virtTestRun("SEXPR-2-XML PV config (Orig VFB)", + 1, testComparePVOrigVFB, NULL) != 0) + ret = -1; - if (virtTestRun("SEXPR-2-XML FV config (version 2)", + if (virtTestRun("SEXPR-2-XML PV config (New VFB)", + 1, testComparePVNewVFB, NULL) != 0) + ret = -1; + + if (virtTestRun("SEXPR-2-XML FV config (version 2)", 1, testCompareFVversion2, NULL) != 0) ret = -1;