From 86417d42cae716900f3f2545ed82f094624ddf0b Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Tue, 23 Sep 2014 14:25:14 -0400 Subject: [PATCH] osxml: Ensure kernel/initrd/dtb are absolute paths --- tests/cli-test-xml/compare/virt-install-kvm-f14-url.xml | 4 ++-- tests/cli-test-xml/compare/virt-install-location-iso.xml | 4 ++-- tests/cli-test-xml/compare/virt-install-xen-ia64-hvm.xml | 4 ++-- tests/cli-test-xml/compare/virt-install-xen-ia64-pv.xml | 4 ++-- tests/cli-test-xml/compare/virt-install-xen-pv.xml | 4 ++-- tests/xmlconfig-xml/install-fullyvirt-import-kernel.xml | 4 ++-- tests/xmlconfig-xml/rhel6-kvm-stage1.xml | 4 ++-- tests/xmlconfig.py | 6 +++--- tests/xmlparse-xml/change-boot-multi-out.xml | 4 ++-- tests/xmlparse.py | 4 ++-- virtinst/osxml.py | 6 +++--- virtinst/urlfetcher.py | 2 +- virtinst/xmlbuilder.py | 7 ++++++- 13 files changed, 31 insertions(+), 26 deletions(-) diff --git a/tests/cli-test-xml/compare/virt-install-kvm-f14-url.xml b/tests/cli-test-xml/compare/virt-install-kvm-f14-url.xml index 330d1e78e..d996fd597 100644 --- a/tests/cli-test-xml/compare/virt-install-kvm-f14-url.xml +++ b/tests/cli-test-xml/compare/virt-install-kvm-f14-url.xml @@ -6,8 +6,8 @@ 1 hvm - ./virtinst-vmlinuz. - ./virtinst-initrd.img. + /tmp/virtinst-vmlinuz. + /tmp/virtinst-initrd.img. method=tests/cli-test-xml/faketree console=ttyS0 diff --git a/tests/cli-test-xml/compare/virt-install-location-iso.xml b/tests/cli-test-xml/compare/virt-install-location-iso.xml index 85da01af7..985c86659 100644 --- a/tests/cli-test-xml/compare/virt-install-location-iso.xml +++ b/tests/cli-test-xml/compare/virt-install-location-iso.xml @@ -6,8 +6,8 @@ 1 hvm - ./virtinst-vmlinuz. - ./virtinst-initrd.img. + /tmp/virtinst-vmlinuz. + /tmp/virtinst-initrd.img. diff --git a/tests/cli-test-xml/compare/virt-install-xen-ia64-hvm.xml b/tests/cli-test-xml/compare/virt-install-xen-ia64-hvm.xml index a1328f01a..f066b7c0a 100644 --- a/tests/cli-test-xml/compare/virt-install-xen-ia64-hvm.xml +++ b/tests/cli-test-xml/compare/virt-install-xen-ia64-hvm.xml @@ -7,8 +7,8 @@ hvm /usr/lib/xen/boot/hvmloader - ./virtinst-vmlinuz. - ./virtinst-initrd.img. + /tmp/virtinst-vmlinuz. + /tmp/virtinst-initrd.img. method=tests/cli-test-xml/faketree diff --git a/tests/cli-test-xml/compare/virt-install-xen-ia64-pv.xml b/tests/cli-test-xml/compare/virt-install-xen-ia64-pv.xml index c5615c526..999a3343a 100644 --- a/tests/cli-test-xml/compare/virt-install-xen-ia64-pv.xml +++ b/tests/cli-test-xml/compare/virt-install-xen-ia64-pv.xml @@ -6,8 +6,8 @@ 1 linux - ./virtinst-vmlinuz. - ./virtinst-initrd.img. + /tmp/virtinst-vmlinuz. + /tmp/virtinst-initrd.img. method=tests/cli-test-xml/faketree destroy diff --git a/tests/cli-test-xml/compare/virt-install-xen-pv.xml b/tests/cli-test-xml/compare/virt-install-xen-pv.xml index 3b4ccbc68..822e51976 100644 --- a/tests/cli-test-xml/compare/virt-install-xen-pv.xml +++ b/tests/cli-test-xml/compare/virt-install-xen-pv.xml @@ -6,8 +6,8 @@ 1 linux - ./virtinst-vmlinuz. - ./virtinst-initrd.img. + /tmp/virtinst-vmlinuz. + /tmp/virtinst-initrd.img. method=tests/cli-test-xml/faketree destroy diff --git a/tests/xmlconfig-xml/install-fullyvirt-import-kernel.xml b/tests/xmlconfig-xml/install-fullyvirt-import-kernel.xml index e3cb4efab..dfdf8e052 100644 --- a/tests/xmlconfig-xml/install-fullyvirt-import-kernel.xml +++ b/tests/xmlconfig-xml/install-fullyvirt-import-kernel.xml @@ -7,8 +7,8 @@ hvm /usr/lib/xen/boot/hvmloader - kernel - initrd + /kernel + /initrd my kernel args diff --git a/tests/xmlconfig-xml/rhel6-kvm-stage1.xml b/tests/xmlconfig-xml/rhel6-kvm-stage1.xml index 08b85f47a..54e9d1c6e 100644 --- a/tests/xmlconfig-xml/rhel6-kvm-stage1.xml +++ b/tests/xmlconfig-xml/rhel6-kvm-stage1.xml @@ -6,8 +6,8 @@ 5 hvm - ./virtinst-vmlinuz. - ./virtinst-initrd.img. + /tmp/virtinst-vmlinuz. + /tmp/virtinst-initrd.img. method=tests/cli-test-xml/fakerhel6tree diff --git a/tests/xmlconfig.py b/tests/xmlconfig.py index 96476c50c..663e9b11b 100644 --- a/tests/xmlconfig.py +++ b/tests/xmlconfig.py @@ -354,8 +354,8 @@ class TestXMLConfig(unittest.TestCase): g = utils.get_basic_fullyvirt_guest(installer=i) g.add_device(utils.get_filedisk()) - g.os.kernel = "kernel" - g.os.initrd = "initrd" + g.os.kernel = "/kernel" + g.os.initrd = "/initrd" g.os.kernel_args = "my kernel args" self._compare(g, "install-fullyvirt-import-kernel", False) @@ -940,7 +940,7 @@ class TestXMLConfig(unittest.TestCase): def testFullKVMRHEL6(self): utils.set_conn(_plainkvm) i = utils.make_distro_installer( - location="tests/cli-test-xml/fakerhel6tree") + location="tests/cli-test-xml/fakerhel6tree") g = utils.get_basic_fullyvirt_guest("kvm", installer=i) g.add_device(utils.get_floppy()) g.add_device(utils.get_filedisk("/dev/default-pool/rhel6.img", fake=False)) diff --git a/tests/xmlparse-xml/change-boot-multi-out.xml b/tests/xmlparse-xml/change-boot-multi-out.xml index da28a9184..09bf5d6c0 100644 --- a/tests/xmlparse-xml/change-boot-multi-out.xml +++ b/tests/xmlparse-xml/change-boot-multi-out.xml @@ -7,8 +7,8 @@ hvm /usr/lib/xen/boot/hvmloader - foo.img - bar.img + /foo.img + /bar.img ks=foo.ks /baz.dtb diff --git a/tests/xmlparse.py b/tests/xmlparse.py index a9a4063af..870bf36a9 100644 --- a/tests/xmlparse.py +++ b/tests/xmlparse.py @@ -266,8 +266,8 @@ class XMLParseTest(unittest.TestCase): check = self._make_checker(guest.os) check("bootorder", ['hd', 'fd', 'cdrom', 'network'], ["cdrom"]) check("enable_bootmenu", False, True) - check("kernel", None, "foo.img") - check("initrd", None, "bar.img") + check("kernel", None, "/foo.img") + check("initrd", None, "/bar.img") check("dtb", None, "/baz.dtb") check("kernel_args", None, "ks=foo.ks") diff --git a/virtinst/osxml.py b/virtinst/osxml.py index 4cd788850..7ccc06169 100644 --- a/virtinst/osxml.py +++ b/virtinst/osxml.py @@ -92,10 +92,10 @@ class OSXML(XMLBuilder): enable_bootmenu = XMLProperty("./bootmenu/@enable", is_yesno=True) useserial = XMLProperty("./bios/@useserial", is_yesno=True) - kernel = XMLProperty("./kernel") - initrd = XMLProperty("./initrd") + kernel = XMLProperty("./kernel", do_abspath=True) + initrd = XMLProperty("./initrd", do_abspath=True) + dtb = XMLProperty("./dtb", do_abspath=True) kernel_args = XMLProperty("./cmdline") - dtb = XMLProperty("./dtb") init = XMLProperty("./init") loader = XMLProperty("./loader") diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py index 25baf050a..104255020 100644 --- a/virtinst/urlfetcher.py +++ b/virtinst/urlfetcher.py @@ -68,7 +68,7 @@ class _ImageFetcher(object): prefix = "virtinst-" + prefix if "VIRTINST_TEST_SUITE" in os.environ: - fn = os.path.join(".", prefix) + fn = os.path.join("/tmp", prefix) fd = os.open(fn, os.O_RDWR | os.O_CREAT, 0640) else: (fd, fn) = tempfile.mkstemp(prefix=prefix, diff --git a/virtinst/xmlbuilder.py b/virtinst/xmlbuilder.py index c906337e5..ff64c164e 100644 --- a/virtinst/xmlbuilder.py +++ b/virtinst/xmlbuilder.py @@ -334,7 +334,8 @@ class XMLProperty(property): def __init__(self, xpath=None, name=None, doc=None, set_converter=None, validate_cb=None, make_xpath_cb=None, is_bool=False, is_int=False, is_yesno=False, is_onoff=False, - clear_first=None, default_cb=None, default_name=None): + clear_first=None, default_cb=None, default_name=None, + do_abspath=False): """ Set a XMLBuilder class property that represents a value in the XML. For example @@ -374,6 +375,7 @@ class XMLProperty(property): first explicit 'set'. @param default_name: If the user does a set and passes in this value, instead use the value of default_cb() + @param do_abspath: If True, run os.path.abspath on the passed value """ self._xpath = xpath @@ -386,6 +388,7 @@ class XMLProperty(property): self._is_int = is_int self._is_yesno = is_yesno self._is_onoff = is_onoff + self._do_abspath = do_abspath self._make_xpath_cb = make_xpath_cb self._validate_cb = validate_cb @@ -487,6 +490,8 @@ class XMLProperty(property): def _convert_set_value(self, xmlbuilder, val): if self._default_name and val == self._default_name: val = self._default_cb(xmlbuilder) + elif self._do_abspath and val is not None: + val = os.path.abspath(val) elif self._is_onoff and val is not None: val = bool(val) and "on" or "off" elif self._is_yesno and val is not None: