diff options
author | Daniel Veillard <veillard@redhat.com> | 2006-11-10 11:13:01 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@redhat.com> | 2006-11-10 11:13:01 +0000 |
commit | 28a60cbcdb12c9c21ed6b486db18078bc28a2559 (patch) | |
tree | a0e930d5ad001b26812480991f332f0406f289d4 | |
parent | 3869766df987fae741cecf6359a9802a26a6cc87 (diff) | |
download | libvirt-28a60cbcdb12c9c21ed6b486db18078bc28a2559.tar.gz |
* src/xend_internal.c src/xml.c: add an extra element currentMemory
to the XML description and handle its serialization back and
forth between XML and S-Expr
* tests/sexpr2xmltest.c tests/xml2sexprtest.c
tests/sexpr2xmldata/sexpr2xml-curmem.*
tests/xml2sexprdata/xml2sexpr-curmem.*: added specific regression
tests for this, this didn't disturb any of the other tests.
Daniel
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | po/en_GB.po | 26 | ||||
-rw-r--r-- | po/libvirt.pot | 26 | ||||
-rw-r--r-- | src/xend_internal.c | 11 | ||||
-rw-r--r-- | src/xml.c | 19 | ||||
-rw-r--r-- | tests/sexpr2xmldata/sexpr2xml-curmem.sexpr | 50 | ||||
-rw-r--r-- | tests/sexpr2xmldata/sexpr2xml-curmem.xml | 30 | ||||
-rw-r--r-- | tests/sexpr2xmltest.c | 10 | ||||
-rw-r--r-- | tests/xml2sexprdata/xml2sexpr-curmem.sexpr | 1 | ||||
-rw-r--r-- | tests/xml2sexprdata/xml2sexpr-curmem.xml | 30 | ||||
-rw-r--r-- | tests/xml2sexprtest.c | 11 |
11 files changed, 192 insertions, 32 deletions
@@ -1,3 +1,13 @@ +Fri Nov 10 11:19:32 CET 2006 Daniel Veillard <veillard@redhat.com> + + * src/xend_internal.c src/xml.c: add an extra element currentMemory + to the XML description and handle its serialization back and + forth between XML and S-Expr + * tests/sexpr2xmltest.c tests/xml2sexprtest.c + tests/sexpr2xmldata/sexpr2xml-curmem.* + tests/xml2sexprdata/xml2sexpr-curmem.*: added specific regression + tests for this, this didn't disturb any of the other tests. + Thu Nov 9 15:39:19 CET 2006 Daniel Veillard <veillard@redhat.com> * python/generator.py: changed the generator to generate a reference diff --git a/po/en_GB.po b/po/en_GB.po index 17d8dcb5e2..f8dddba937 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: libvirt\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-11-09 14:26+0100\n" +"POT-Creation-Date: 2006-11-10 11:04+0100\n" "PO-Revision-Date: 2006-09-20 10:20-0400\n" "Last-Translator: Daniel Berrange <berrange@redhat.com>\n" "Language-Team: English <en@li.org>\n" @@ -373,8 +373,8 @@ msgid "allocate new context" msgstr "" #: src/hash.c:628 src/hash.c:634 src/test.c:725 src/test.c:750 src/test.c:773 -#: src/test.c:797 src/xend_internal.c:1920 src/xend_internal.c:2616 -#: src/xend_internal.c:2827 src/xs_internal.c:594 src/proxy_internal.c:791 +#: src/test.c:797 src/xend_internal.c:1927 src/xend_internal.c:2623 +#: src/xend_internal.c:2834 src/xs_internal.c:594 src/proxy_internal.c:791 #: src/proxy_internal.c:838 src/proxy_internal.c:889 msgid "allocating domain" msgstr "" @@ -495,7 +495,7 @@ msgstr "" msgid "growing buffer" msgstr "" -#: src/xml.c:116 src/xend_internal.c:1611 src/xend_internal.c:1630 +#: src/xml.c:116 src/xend_internal.c:1618 src/xend_internal.c:1637 msgid "allocate new buffer" msgstr "" @@ -531,7 +531,7 @@ msgstr "" msgid "domain information incomplete, missing uuid" msgstr "" -#: src/xend_internal.c:1158 src/xend_internal.c:1500 +#: src/xend_internal.c:1158 src/xend_internal.c:1501 msgid "domain information incomplete, missing name" msgstr "" @@ -539,37 +539,37 @@ msgstr "" msgid "domain information incomplete, missing kernel" msgstr "" -#: src/xend_internal.c:1590 +#: src/xend_internal.c:1597 msgid "domain information incomplete, vbd has no src" msgstr "" -#: src/xend_internal.c:1596 +#: src/xend_internal.c:1603 msgid "domain information incomplete, vbd has no dev" msgstr "" -#: src/xend_internal.c:1604 +#: src/xend_internal.c:1611 msgid "cannot parse vbd filename, missing driver name" msgstr "" -#: src/xend_internal.c:1623 +#: src/xend_internal.c:1630 msgid "cannot parse vbd filename, missing driver type" msgstr "" -#: src/xend_internal.c:1931 +#: src/xend_internal.c:1938 msgid "failed to parse Xend domain information" msgstr "" -#: src/xend_internal.c:2892 +#: src/xend_internal.c:2899 #, c-format msgid "Failed to create domain %s\n" msgstr "" -#: src/xend_internal.c:2898 +#: src/xend_internal.c:2905 #, c-format msgid "Failed to get devices for domain %s\n" msgstr "" -#: src/xend_internal.c:2909 +#: src/xend_internal.c:2916 #, c-format msgid "Failed to resume new domain %s\n" msgstr "" diff --git a/po/libvirt.pot b/po/libvirt.pot index e7c9ffc555..4cf4af4a31 100644 --- a/po/libvirt.pot +++ b/po/libvirt.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-11-09 14:26+0100\n" +"POT-Creation-Date: 2006-11-10 11:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -373,8 +373,8 @@ msgid "allocate new context" msgstr "" #: src/hash.c:628 src/hash.c:634 src/test.c:725 src/test.c:750 src/test.c:773 -#: src/test.c:797 src/xend_internal.c:1920 src/xend_internal.c:2616 -#: src/xend_internal.c:2827 src/xs_internal.c:594 src/proxy_internal.c:791 +#: src/test.c:797 src/xend_internal.c:1927 src/xend_internal.c:2623 +#: src/xend_internal.c:2834 src/xs_internal.c:594 src/proxy_internal.c:791 #: src/proxy_internal.c:838 src/proxy_internal.c:889 msgid "allocating domain" msgstr "" @@ -495,7 +495,7 @@ msgstr "" msgid "growing buffer" msgstr "" -#: src/xml.c:116 src/xend_internal.c:1611 src/xend_internal.c:1630 +#: src/xml.c:116 src/xend_internal.c:1618 src/xend_internal.c:1637 msgid "allocate new buffer" msgstr "" @@ -531,7 +531,7 @@ msgstr "" msgid "domain information incomplete, missing uuid" msgstr "" -#: src/xend_internal.c:1158 src/xend_internal.c:1500 +#: src/xend_internal.c:1158 src/xend_internal.c:1501 msgid "domain information incomplete, missing name" msgstr "" @@ -539,37 +539,37 @@ msgstr "" msgid "domain information incomplete, missing kernel" msgstr "" -#: src/xend_internal.c:1590 +#: src/xend_internal.c:1597 msgid "domain information incomplete, vbd has no src" msgstr "" -#: src/xend_internal.c:1596 +#: src/xend_internal.c:1603 msgid "domain information incomplete, vbd has no dev" msgstr "" -#: src/xend_internal.c:1604 +#: src/xend_internal.c:1611 msgid "cannot parse vbd filename, missing driver name" msgstr "" -#: src/xend_internal.c:1623 +#: src/xend_internal.c:1630 msgid "cannot parse vbd filename, missing driver type" msgstr "" -#: src/xend_internal.c:1931 +#: src/xend_internal.c:1938 msgid "failed to parse Xend domain information" msgstr "" -#: src/xend_internal.c:2892 +#: src/xend_internal.c:2899 #, c-format msgid "Failed to create domain %s\n" msgstr "" -#: src/xend_internal.c:2898 +#: src/xend_internal.c:2905 #, c-format msgid "Failed to get devices for domain %s\n" msgstr "" -#: src/xend_internal.c:2909 +#: src/xend_internal.c:2916 #, c-format msgid "Failed to resume new domain %s\n" msgstr "" diff --git a/src/xend_internal.c b/src/xend_internal.c index 28f2ca121c..54a9f9e22e 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -1479,6 +1479,7 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi virBuffer buf; int hvm = 0; int domid = -1; + int max_mem, cur_mem; if (root == NULL) { /* ERROR */ @@ -1526,8 +1527,14 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi xend_parse_sexp_desc_os(conn, root, &buf, hvm); } - virBufferVSprintf(&buf, " <memory>%d</memory>\n", - (int) (sexpr_u64(root, "domain/maxmem") << 10)); + max_mem = (int) (sexpr_u64(root, "domain/maxmem") << 10); + cur_mem = (int) (sexpr_u64(root, "domain/memory") << 10); + if (cur_mem > max_mem) + max_mem = cur_mem; + virBufferVSprintf(&buf, " <memory>%d</memory>\n", max_mem); + if ((cur_mem > 63) && (cur_mem != max_mem)) + virBufferVSprintf(&buf, " <currentMemory>%d</currentMemory>\n", + cur_mem); virBufferVSprintf(&buf, " <vcpu>%d</vcpu>\n", sexpr_int(root, "domain/vcpus")); tmp = sexpr_node(root, "domain/on_poweroff"); @@ -1196,6 +1196,7 @@ virDomainParseXMLDesc(const char *xmldesc, char **name, int xendConfigVersion) int i, res; int bootloader = 0; int hvm = 0; + unsigned long mem = 0, max_mem = 0; if (name != NULL) *name = NULL; @@ -1256,13 +1257,23 @@ virDomainParseXMLDesc(const char *xmldesc, char **name, int xendConfigVersion) obj = xmlXPathEval(BAD_CAST "number(/domain/memory[1])", ctxt); if ((obj == NULL) || (obj->type != XPATH_NUMBER) || (isnan(obj->floatval)) || (obj->floatval < 64000)) { - virBufferVSprintf(&buf, "(memory 128)(maxmem 128)"); + max_mem = 128; } else { - unsigned long mem = (obj->floatval / 1024); - - virBufferVSprintf(&buf, "(memory %lu)(maxmem %lu)", mem, mem); + max_mem = (obj->floatval / 1024); + } + xmlXPathFreeObject(obj); + obj = xmlXPathEval(BAD_CAST "number(/domain/currentMemory[1])", ctxt); + if ((obj == NULL) || (obj->type != XPATH_NUMBER) || + (isnan(obj->floatval)) || (obj->floatval < 64000)) { + mem = max_mem; + } else { + mem = (obj->floatval / 1024); + if (mem > max_mem) { + max_mem = mem; + } } xmlXPathFreeObject(obj); + virBufferVSprintf(&buf, "(memory %lu)(maxmem %lu)", mem, max_mem); obj = xmlXPathEval(BAD_CAST "number(/domain/vcpu[1])", ctxt); if ((obj == NULL) || (obj->type != XPATH_NUMBER) || diff --git a/tests/sexpr2xmldata/sexpr2xml-curmem.sexpr b/tests/sexpr2xmldata/sexpr2xml-curmem.sexpr new file mode 100644 index 0000000000..486ebf3295 --- /dev/null +++ b/tests/sexpr2xmldata/sexpr2xml-curmem.sexpr @@ -0,0 +1,50 @@ +(domain + (domid 5) + (uuid 4f77abd2-3019-58e8-3bab-6fbf2118f880) + (vcpus 1) + (cpu_weight 1.0) + (memory 175) + (shadow_memory 0) + (maxmem 385) + (bootloader /usr/bin/pygrub) + (features ) + (name rhel5) + (on_poweroff destroy) + (on_reboot restart) + (on_crash restart) + (image + (linux + (ramdisk /var/lib/xen/initrd.gULTf1) + (kernel /var/lib/xen/vmlinuz.blj7cs) + (args 'ro root=/dev/VolGroup00/LogVol00 rhgb quiet') + (vncunused 1) + (vnc 1) + (display localhost:10.0) + (xauthority /root/.Xauthority) + ) + ) + (device + (vif + (backend 0) + (script vif-bridge) + (bridge xenbr0) + (mac 00:16:3e:1d:06:15) + ) + ) + (device + (tap + (backend 0) + (dev xvda:disk) + (uname tap:aio:/xen/rhel5.img) + (mode w) + ) + ) + (state -b----) + (shutdown_reason poweroff) + (cpu_time 137.189121425) + (online_vcpus 1) + (up_time 66492.0194759) + (start_time 1163083021.65) + (store_mfn 74407) + (console_mfn 198038) +) diff --git a/tests/sexpr2xmldata/sexpr2xml-curmem.xml b/tests/sexpr2xmldata/sexpr2xml-curmem.xml new file mode 100644 index 0000000000..55d49d32eb --- /dev/null +++ b/tests/sexpr2xmldata/sexpr2xml-curmem.xml @@ -0,0 +1,30 @@ +<domain type='xen' id='5'> + <name>rhel5</name> + <uuid>4f77abd2301958e83bab6fbf2118f880</uuid> + <bootloader>/usr/bin/pygrub</bootloader> + <os> + <type>linux</type> + <kernel>/var/lib/xen/vmlinuz.blj7cs</kernel> + <initrd>/var/lib/xen/initrd.gULTf1</initrd> + <cmdline>ro root=/dev/VolGroup00/LogVol00 rhgb quiet</cmdline> + </os> + <memory>394240</memory> + <currentMemory>179200</currentMemory> + <vcpu>1</vcpu> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <interface type='bridge'> + <source bridge='xenbr0'/> + <mac address='00:16:3e:1d:06:15'/> + <script path='vif-bridge'/> + </interface> + <disk type='file' device='disk'> + <driver name='tap' type='aio'/> + <source file='/xen/rhel5.img'/> + <target dev='xvda:disk'/> + </disk> + <graphics type='vnc' port='5905'/> + </devices> +</domain> diff --git a/tests/sexpr2xmltest.c b/tests/sexpr2xmltest.c index e4925ebcb8..a7b2b5ca68 100644 --- a/tests/sexpr2xmltest.c +++ b/tests/sexpr2xmltest.c @@ -90,6 +90,12 @@ static int testCompareDiskDrvBlktapRaw(void *data ATTRIBUTE_UNUSED) { 1); } +static int testCompareResizedMemory(void *data ATTRIBUTE_UNUSED) { + return testCompareFiles("sexpr2xmldata/sexpr2xml-curmem.xml", + "sexpr2xmldata/sexpr2xml-curmem.sexpr", + 1); +} + int main(int argc, char **argv) @@ -135,5 +141,9 @@ main(int argc, char **argv) 1, testCompareDiskDrvBlktapRaw, NULL) != 0) ret = -1; + if (virtTestRun("SEXPR-2-XML Resized memory config", + 1, testCompareResizedMemory, NULL) != 0) + ret = -1; + exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE); } diff --git a/tests/xml2sexprdata/xml2sexpr-curmem.sexpr b/tests/xml2sexprdata/xml2sexpr-curmem.sexpr new file mode 100644 index 0000000000..1ad4a784f5 --- /dev/null +++ b/tests/xml2sexprdata/xml2sexpr-curmem.sexpr @@ -0,0 +1 @@ +(vm (name 'rhel5')(memory 175)(maxmem 385)(vcpus 1)(uuid '4f77abd2301958e83bab6fbf2118f880')(bootloader '/usr/bin/pygrub')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (linux (kernel '/var/lib/xen/vmlinuz.blj7cs')(ramdisk '/var/lib/xen/initrd.gULTf1')(args 'ro root=/dev/VolGroup00/LogVol00 rhgb quiet')(vnc 1)(vncdisplay 5)))(device (tap (dev 'xvda:disk')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')))(device (vif (mac '00:16:3e:1d:06:15')(bridge 'xenbr0')(script 'vif-bridge'))))
\ No newline at end of file diff --git a/tests/xml2sexprdata/xml2sexpr-curmem.xml b/tests/xml2sexprdata/xml2sexpr-curmem.xml new file mode 100644 index 0000000000..55d49d32eb --- /dev/null +++ b/tests/xml2sexprdata/xml2sexpr-curmem.xml @@ -0,0 +1,30 @@ +<domain type='xen' id='5'> + <name>rhel5</name> + <uuid>4f77abd2301958e83bab6fbf2118f880</uuid> + <bootloader>/usr/bin/pygrub</bootloader> + <os> + <type>linux</type> + <kernel>/var/lib/xen/vmlinuz.blj7cs</kernel> + <initrd>/var/lib/xen/initrd.gULTf1</initrd> + <cmdline>ro root=/dev/VolGroup00/LogVol00 rhgb quiet</cmdline> + </os> + <memory>394240</memory> + <currentMemory>179200</currentMemory> + <vcpu>1</vcpu> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <interface type='bridge'> + <source bridge='xenbr0'/> + <mac address='00:16:3e:1d:06:15'/> + <script path='vif-bridge'/> + </interface> + <disk type='file' device='disk'> + <driver name='tap' type='aio'/> + <source file='/xen/rhel5.img'/> + <target dev='xvda:disk'/> + </disk> + <graphics type='vnc' port='5905'/> + </devices> +</domain> diff --git a/tests/xml2sexprtest.c b/tests/xml2sexprtest.c index 6174a56ca1..9ca42b973c 100644 --- a/tests/xml2sexprtest.c +++ b/tests/xml2sexprtest.c @@ -131,6 +131,13 @@ static int testCompareDiskDrvBlktapRaw(void *data ATTRIBUTE_UNUSED) { 2); } +static int testCompareMemoryResize(void *data ATTRIBUTE_UNUSED) { + return testCompareFiles("xml2sexprdata/xml2sexpr-curmem.xml", + "xml2sexprdata/xml2sexpr-curmem.sexpr", + "rhel5", + 2); +} + int main(int argc, char **argv) { @@ -191,6 +198,10 @@ main(int argc, char **argv) 1, testCompareDiskDrvBlktapRaw, NULL) != 0) ret = -1; + if (virtTestRun("XML-2-SEXPR Memory Resize", + 1, testCompareMemoryResize, NULL) != 0) + ret = -1; + exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE); } |