mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-26 18:41:17 +00:00
* src/xend_internal.c src/xm_internal.c src/xml.c: add support
for arguments to bootloader, patch from Hugh Brock * tests/sexpr2xmltest.c tests/xml2sexprtest.c tests/sexpr2xmldata/sexpr2xml-pv-bootloader.sexpr tests/sexpr2xmldata/sexpr2xml-pv-bootloader.xml tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr tests/xml2sexprdata/xml2sexpr-pv-bootloader.xml: add specific regression tests Daniel
This commit is contained in:
parent
2a10972010
commit
a80faa4bf0
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
Thu Jun 7 15:48:30 CEST 2007 Daniel Veillard <veillard@redhat.com>
|
||||||
|
|
||||||
|
* src/xend_internal.c src/xm_internal.c src/xml.c: add support
|
||||||
|
for arguments to bootloader, patch from Hugh Brock
|
||||||
|
* tests/sexpr2xmltest.c tests/xml2sexprtest.c
|
||||||
|
tests/sexpr2xmldata/sexpr2xml-pv-bootloader.sexpr
|
||||||
|
tests/sexpr2xmldata/sexpr2xml-pv-bootloader.xml
|
||||||
|
tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr
|
||||||
|
tests/xml2sexprdata/xml2sexpr-pv-bootloader.xml: add specific
|
||||||
|
regression tests
|
||||||
|
|
||||||
Thu Jun 7 15:02:44 CEST 2007 Daniel Veillard <veillard@redhat.com>
|
Thu Jun 7 15:02:44 CEST 2007 Daniel Veillard <veillard@redhat.com>
|
||||||
|
|
||||||
* src/libvirt.c: do not die if the daemon is not running on a Xen
|
* src/libvirt.c: do not die if the daemon is not running on a Xen
|
||||||
|
@ -1414,6 +1414,13 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
|
|||||||
bootloader = 1;
|
bootloader = 1;
|
||||||
virBufferVSprintf(&buf, " <bootloader>%s</bootloader>\n", tmp);
|
virBufferVSprintf(&buf, " <bootloader>%s</bootloader>\n", tmp);
|
||||||
}
|
}
|
||||||
|
tmp = sexpr_node(root, "domain/bootloader_args");
|
||||||
|
if (tmp != NULL && bootloader) {
|
||||||
|
/*
|
||||||
|
* Only insert bootloader_args if there is also a bootloader param
|
||||||
|
*/
|
||||||
|
virBufferVSprintf(&buf, " <bootloader_args>%s</bootloader_args>\n", tmp);
|
||||||
|
}
|
||||||
|
|
||||||
if (domid != 0) {
|
if (domid != 0) {
|
||||||
if (sexpr_lookup(root, "domain/image")) {
|
if (sexpr_lookup(root, "domain/image")) {
|
||||||
|
@ -643,6 +643,8 @@ char *xenXMDomainFormatXML(virConnectPtr conn, virConfPtr conf) {
|
|||||||
|
|
||||||
if (xenXMConfigGetString(conf, "bootloader", &str) == 0)
|
if (xenXMConfigGetString(conf, "bootloader", &str) == 0)
|
||||||
virBufferVSprintf(buf, " <bootloader>%s</bootloader>\n", str);
|
virBufferVSprintf(buf, " <bootloader>%s</bootloader>\n", str);
|
||||||
|
if (xenXMConfigGetString(conf, "bootargs", &str) == 0)
|
||||||
|
virBufferVSprintf(buf, " <bootloader_args>%s</bootloader_args>\n", str);
|
||||||
if (xenXMConfigGetString(conf, "kernel", &str) == 0) {
|
if (xenXMConfigGetString(conf, "kernel", &str) == 0) {
|
||||||
virBufferAdd(buf, " <os>\n", -1);
|
virBufferAdd(buf, " <os>\n", -1);
|
||||||
virBufferAdd(buf, " <type>linux</type>\n", -1);
|
virBufferAdd(buf, " <type>linux</type>\n", -1);
|
||||||
@ -1833,6 +1835,9 @@ virConfPtr xenXMParseXMLToConfig(virConnectPtr conn, const char *xml) {
|
|||||||
if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "bootloader", "string(/domain/bootloader)", 1,
|
if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "bootloader", "string(/domain/bootloader)", 1,
|
||||||
"cannot set the bootloader parameter") < 0)
|
"cannot set the bootloader parameter") < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "bootargs", "string(/domain/bootloader_args)", 1,
|
||||||
|
"cannot set the bootloader_args parameter") < 0)
|
||||||
|
goto error;
|
||||||
if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "kernel", "string(/domain/os/kernel)", 1,
|
if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "kernel", "string(/domain/os/kernel)", 1,
|
||||||
"cannot set the kernel parameter") < 0)
|
"cannot set the kernel parameter") < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
22
src/xml.c
22
src/xml.c
@ -1270,13 +1270,19 @@ virDomainParseXMLDesc(virConnectPtr conn, const char *xmldesc, char **name, int
|
|||||||
if (str != NULL) {
|
if (str != NULL) {
|
||||||
virBufferVSprintf(&buf, "(bootloader '%s')", str);
|
virBufferVSprintf(&buf, "(bootloader '%s')", str);
|
||||||
/*
|
/*
|
||||||
* if using pygrub, the kernel and initrd strings are not
|
* if using a bootloader, the kernel and initrd strings are not
|
||||||
* significant and should be discarded
|
* significant and should be discarded
|
||||||
*/
|
*/
|
||||||
if (strstr(str, "pygrub"))
|
bootloader = 1;
|
||||||
bootloader = 2;
|
free(str);
|
||||||
else
|
}
|
||||||
bootloader = 1;
|
|
||||||
|
str = virXPathString("string(/domain/bootloader_args[1])", ctxt);
|
||||||
|
if (str != NULL && bootloader) {
|
||||||
|
/*
|
||||||
|
* ignore the bootloader_args value unless a bootloader was specified
|
||||||
|
*/
|
||||||
|
virBufferVSprintf(&buf, "(bootloader_args '%s')", str);
|
||||||
free(str);
|
free(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1298,10 +1304,10 @@ virDomainParseXMLDesc(virConnectPtr conn, const char *xmldesc, char **name, int
|
|||||||
free(str);
|
free(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bootloader != 2) {
|
if (!bootloader) {
|
||||||
if ((node = virXPathNode("/domain/os[1]", ctxt)) != NULL) {
|
if ((node = virXPathNode("/domain/os[1]", ctxt)) != NULL) {
|
||||||
/* Analyze of the os description, based on HVM or PV. */
|
/* Analyze of the os description, based on HVM or PV. */
|
||||||
str = virXPathString("string(/domain/os/type[1])", ctxt);
|
str = virXPathString("string(/domain/os/type[1])", ctxt);
|
||||||
|
|
||||||
if ((str == NULL) || (strcmp(str, "hvm"))) {
|
if ((str == NULL) || (strcmp(str, "hvm"))) {
|
||||||
res = virDomainParseXMLOSDescPV(conn, node,
|
res = virDomainParseXMLOSDescPV(conn, node,
|
||||||
@ -1316,7 +1322,7 @@ virDomainParseXMLDesc(virConnectPtr conn, const char *xmldesc, char **name, int
|
|||||||
|
|
||||||
if (res != 0)
|
if (res != 0)
|
||||||
goto error;
|
goto error;
|
||||||
} else if (bootloader == 0) {
|
} else {
|
||||||
virXMLError(conn, VIR_ERR_NO_OS, nam, 0);
|
virXMLError(conn, VIR_ERR_NO_OS, nam, 0);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
1
tests/sexpr2xmldata/sexpr2xml-pv-bootloader.sexpr
Normal file
1
tests/sexpr2xmldata/sexpr2xml-pv-bootloader.sexpr
Normal file
@ -0,0 +1 @@
|
|||||||
|
(domain (domid 6)(name 'pvtest')(memory 420)(maxmem 420)(vcpus 2)(uuid '596a5d2171f48fb2e068e2386a5c413e')(bootloader '/usr/bin/pypxeboot')(bootloader_args 'mac=AA:00:86:e2:35:72')(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w'))))
|
18
tests/sexpr2xmldata/sexpr2xml-pv-bootloader.xml
Normal file
18
tests/sexpr2xmldata/sexpr2xml-pv-bootloader.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<domain type='xen' id='6'>
|
||||||
|
<name>pvtest</name>
|
||||||
|
<uuid>596a5d2171f48fb2e068e2386a5c413e</uuid>
|
||||||
|
<bootloader>/usr/bin/pypxeboot</bootloader>
|
||||||
|
<bootloader_args>mac=AA:00:86:e2:35:72</bootloader_args>
|
||||||
|
<memory>430080</memory>
|
||||||
|
<vcpu>2</vcpu>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>destroy</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<disk type='file' device='disk'>
|
||||||
|
<driver name='file'/>
|
||||||
|
<source file='/root/some.img'/>
|
||||||
|
<target dev='xvda'/>
|
||||||
|
</disk>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -81,6 +81,12 @@ static int testCompareFVversion2(void *data ATTRIBUTE_UNUSED) {
|
|||||||
2);
|
2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int testComparePVBootloader(void *data ATTRIBUTE_UNUSED) {
|
||||||
|
return testCompareFiles("sexpr2xmldata/sexpr2xml-pv-bootloader.xml",
|
||||||
|
"sexpr2xmldata/sexpr2xml-pv-bootloader.sexpr",
|
||||||
|
2);
|
||||||
|
}
|
||||||
|
|
||||||
static int testCompareDiskFile(void *data ATTRIBUTE_UNUSED) {
|
static int testCompareDiskFile(void *data ATTRIBUTE_UNUSED) {
|
||||||
return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-file.xml",
|
return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-file.xml",
|
||||||
"sexpr2xmldata/sexpr2xml-disk-file.sexpr",
|
"sexpr2xmldata/sexpr2xml-disk-file.sexpr",
|
||||||
@ -167,6 +173,10 @@ main(int argc, char **argv)
|
|||||||
1, testCompareFVversion2, NULL) != 0)
|
1, testCompareFVversion2, NULL) != 0)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
|
||||||
|
if (virtTestRun("SEXPR-2-XML PV config bootloader",
|
||||||
|
1, testComparePVBootloader, NULL) != 0)
|
||||||
|
ret = -1;
|
||||||
|
|
||||||
if (virtTestRun("SEXPR-2-XML Disk File config",
|
if (virtTestRun("SEXPR-2-XML Disk File config",
|
||||||
1, testCompareDiskFile, NULL) != 0)
|
1, testCompareDiskFile, NULL) != 0)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
1
tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr
Normal file
1
tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr
Normal file
@ -0,0 +1 @@
|
|||||||
|
(vm (name 'pvtest')(memory 420)(maxmem 420)(vcpus 2)(uuid '596a5d2171f48fb2e068e2386a5c413e')(bootloader '/usr/bin/pypxeboot')(bootloader_args 'mac=AA:00:86:e2:35:72')(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w'))))
|
19
tests/xml2sexprdata/xml2sexpr-pv-bootloader.xml
Normal file
19
tests/xml2sexprdata/xml2sexpr-pv-bootloader.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<domain type='xen' id='15'>
|
||||||
|
<name>pvtest</name>
|
||||||
|
<uuid>596a5d2171f48fb2e068e2386a5c413e</uuid>
|
||||||
|
<bootloader>/usr/bin/pypxeboot</bootloader>
|
||||||
|
<bootloader_args>mac=AA:00:86:e2:35:72</bootloader_args>
|
||||||
|
<memory>430080</memory>
|
||||||
|
<vcpu>2</vcpu>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>destroy</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<disk type='file' device='disk'>
|
||||||
|
<source file='/root/some.img'/>
|
||||||
|
<target dev='xvda'/>
|
||||||
|
</disk>
|
||||||
|
<console tty='/dev/pts/4'/>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
||||||
|
|
@ -103,6 +103,13 @@ static int testComparePVNewVFB(void *data ATTRIBUTE_UNUSED) {
|
|||||||
3);
|
3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int testComparePVBootloader(void *data ATTRIBUTE_UNUSED) {
|
||||||
|
return testCompareFiles("xml2sexprdata/xml2sexpr-pv-bootloader.xml",
|
||||||
|
"xml2sexprdata/xml2sexpr-pv-bootloader.sexpr",
|
||||||
|
"pvtest",
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
static int testCompareDiskFile(void *data ATTRIBUTE_UNUSED) {
|
static int testCompareDiskFile(void *data ATTRIBUTE_UNUSED) {
|
||||||
return testCompareFiles("xml2sexprdata/xml2sexpr-disk-file.xml",
|
return testCompareFiles("xml2sexprdata/xml2sexpr-disk-file.xml",
|
||||||
"xml2sexprdata/xml2sexpr-disk-file.sexpr",
|
"xml2sexprdata/xml2sexpr-disk-file.sexpr",
|
||||||
@ -221,6 +228,10 @@ main(int argc, char **argv)
|
|||||||
1, testComparePVNewVFB, NULL) != 0)
|
1, testComparePVNewVFB, NULL) != 0)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
|
||||||
|
if (virtTestRun("XML-2-SEXPR PV config with bootloader",
|
||||||
|
1, testComparePVBootloader, NULL) != 0)
|
||||||
|
ret = -1;
|
||||||
|
|
||||||
if (virtTestRun("XML-2-SEXPR Disk File",
|
if (virtTestRun("XML-2-SEXPR Disk File",
|
||||||
1, testCompareDiskFile, NULL) != 0)
|
1, testCompareDiskFile, NULL) != 0)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user