]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
* src/xend_internal.c src/xml.c: add an extra element currentMemory
authorDaniel Veillard <veillard@redhat.com>
Fri, 10 Nov 2006 11:13:01 +0000 (11:13 +0000)
committerDaniel Veillard <veillard@redhat.com>
Fri, 10 Nov 2006 11:13:01 +0000 (11:13 +0000)
  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

ChangeLog
po/en_GB.po
po/libvirt.pot
src/xend_internal.c
src/xml.c
tests/sexpr2xmldata/sexpr2xml-curmem.sexpr [new file with mode: 0644]
tests/sexpr2xmldata/sexpr2xml-curmem.xml [new file with mode: 0644]
tests/sexpr2xmltest.c
tests/xml2sexprdata/xml2sexpr-curmem.sexpr [new file with mode: 0644]
tests/xml2sexprdata/xml2sexpr-curmem.xml [new file with mode: 0644]
tests/xml2sexprtest.c

index 2ddeac6392975ce604b2289d1dd50e9d27ae976a..f6c5230b9ccf503613c05120e95d2cfd12a4a55d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index 17d8dcb5e271fc1efd8322aa344e4ad771aa66be..f8dddba937c2287bc22eebef4d7b73307af3f4ff 100644 (file)
@@ -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 ""
index e7c9ffc55562e47e51a1315320c3b6268097c785..4cf4af4a31176e404e24cf4ca3b738bc79d20e8e 100644 (file)
@@ -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 ""
index 28f2ca121cfe30339c90ad180bb3d1ef29c3ed33..54a9f9e22e6e23421cf7e635d306fcea67f09035 100644 (file)
@@ -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");
index 21cc4fe2ced0ad2c87ac07978de9a9f3afc67820..245066a53e2aee0d5e1afcb7afdfc0dede3767b9 100644 (file)
--- 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 (file)
index 0000000..486ebf3
--- /dev/null
@@ -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 (file)
index 0000000..55d49d3
--- /dev/null
@@ -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>
index e4925ebcb8cd59bee2b7036cd023fdd0761f4997..a7b2b5ca686d06a606b9e03ef3d86b0888a456dc 100644 (file)
@@ -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 (file)
index 0000000..1ad4a78
--- /dev/null
@@ -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 (file)
index 0000000..55d49d3
--- /dev/null
@@ -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>
index 6174a56ca1333f73c477bd69b4f85597bbe3e361..9ca42b973c6d40ac58c3385d2eee52a5a7c28cd8 100644 (file)
@@ -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);
 }