diff --git a/ChangeLog b/ChangeLog index 2ddeac6392..f6c5230b9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Fri Nov 10 11:19:32 CET 2006 Daniel Veillard + + * 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 * 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 \n" "Language-Team: English \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 \n" "Language-Team: LANGUAGE \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, " %d\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, " %d\n", max_mem); + if ((cur_mem > 63) && (cur_mem != max_mem)) + virBufferVSprintf(&buf, " %d\n", + cur_mem); virBufferVSprintf(&buf, " %d\n", sexpr_int(root, "domain/vcpus")); tmp = sexpr_node(root, "domain/on_poweroff"); diff --git a/src/xml.c b/src/xml.c index 21cc4fe2ce..245066a53e 100644 --- a/src/xml.c +++ b/src/xml.c @@ -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 @@ + + rhel5 + 4f77abd2301958e83bab6fbf2118f880 + /usr/bin/pygrub + + linux + /var/lib/xen/vmlinuz.blj7cs + /var/lib/xen/initrd.gULTf1 + ro root=/dev/VolGroup00/LogVol00 rhgb quiet + + 394240 + 179200 + 1 + destroy + restart + restart + + + + +