* src/xend_internal.c: applied patch from Jim Fehlig when parsing

domain S-Expr the kernel may not be provided (Dom0)
Daniel
This commit is contained in:
Daniel Veillard 2006-04-25 13:33:44 +00:00
parent 91b0ae89dd
commit be54328be3
2 changed files with 28 additions and 21 deletions

View File

@ -1,3 +1,8 @@
Tue Apr 25 13:37:22 EDT 2006 Daniel Veillard <veillard@redhat.com>
* src/xend_internal.c: applied patch from Jim Fehlig when parsing
domain S-Expr the kernel may not be provided (Dom0)
Mon Apr 24 18:23:29 EDT 2006 Daniel Veillard <veillard@redhat.com>
* src/hash.c src/internal.h: add virGetDomainByID() to speed up

View File

@ -1350,28 +1350,30 @@ xend_parse_sexp_desc(struct sexpr *root)
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",