Daniel Veillard wrote:

On Thu, Apr 20, 2006 at 04:24:28PM -0600, Jim Fehlig wrote:
FYI,

I have managed to get one of the LTC providers (Xen_ComputerSystem) working on SLES using openwbem cimom, the xm shim, and libvirt. The following changes were made:

libvirt
- changed xend_parse_sexp_desc() to not fail if kernel not found. sexp from xend does not contain kernel for domain 0.

 Makes sense, could you send that patch ?

  thanks,

Daniel

Attached.

Jim

Index: xend_internal.c
===================================================================
RCS file: /data/cvs/libvirt/src/xend_internal.c,v
retrieving revision 1.24
diff -u -r1.24 xend_internal.c
--- xend_internal.c	20 Apr 2006 14:28:01 -0000	1.24
+++ xend_internal.c	21 Apr 2006 18:02:22 -0000
@@ -1350,28 +1350,30 @@
     tmp = sexpr_node(root, "domain/bootloader");
     if (tmp != NULL)
 	virBufferVSprintf(&buf, "  <bootloader>%s</bootloader>\n", tmp);
-    tmp = sexpr_node(root, "domain/image/linux/kernel");
-    if (tmp == NULL) {
-        /*
-         * TODO: we will need some fallback here for other guest OSes
-         */
-        virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
-                     "domain informations incomplete, missing kernel");
-        goto error;
+    if (sexpr_lookup(root, "domain/image")) {
+        tmp = sexpr_node(root, "domain/image/linux/kernel");
+        if (tmp == NULL) {
+           /*
+            * TODO: we will need some fallback here for other guest OSes
+            */
+           virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
+                        "domain informations incomplete, missing kernel");
+           goto error;
+        }
+        virBufferAdd(&buf, "  <os>\n", 7);
+        virBufferVSprintf(&buf, "    <type>linux</type>\n");
+        virBufferVSprintf(&buf, "    <kernel>%s</kernel>\n", tmp);
+        tmp = sexpr_node(root, "domain/image/linux/ramdisk");
+        if ((tmp != NULL) && (tmp[0] != 0))
+           virBufferVSprintf(&buf, "    <initrd>%s</initrd>\n", tmp);
+        tmp = sexpr_node(root, "domain/image/linux/root");
+        if ((tmp != NULL) && (tmp[0] != 0))
+           virBufferVSprintf(&buf, "    <root>%s</root>\n", tmp);
+        tmp = sexpr_node(root, "domain/image/linux/args");
+        if ((tmp != NULL) && (tmp[0] != 0))
+           virBufferVSprintf(&buf, "    <cmdline>%s</cmdline>\n", tmp);
+        virBufferAdd(&buf, "  </os>\n", 8);
     }
-    virBufferAdd(&buf, "  <os>\n", 7);
-    virBufferVSprintf(&buf, "    <type>linux</type>\n");
-    virBufferVSprintf(&buf, "    <kernel>%s</kernel>\n", tmp);
-    tmp = sexpr_node(root, "domain/image/linux/ramdisk");
-    if ((tmp != NULL) && (tmp[0] != 0))
-        virBufferVSprintf(&buf, "    <initrd>%s</initrd>\n", tmp);
-    tmp = sexpr_node(root, "domain/image/linux/root");
-    if ((tmp != NULL) && (tmp[0] != 0))
-        virBufferVSprintf(&buf, "    <root>%s</root>\n", tmp);
-    tmp = sexpr_node(root, "domain/image/linux/args");
-    if ((tmp != NULL) && (tmp[0] != 0))
-        virBufferVSprintf(&buf, "    <cmdline>%s</cmdline>\n", tmp);
-    virBufferAdd(&buf, "  </os>\n", 8);
     virBufferVSprintf(&buf, "  <memory>%d</memory>\n",
                       (int) (sexpr_u64(root, "domain/maxmem") << 10));
     virBufferVSprintf(&buf, "  <vcpu>%d</vcpu>\n",
--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to