osxml: Ensure kernel/initrd/dtb are absolute paths

This commit is contained in:
Cole Robinson 2014-09-23 14:25:14 -04:00
parent 4c4bdbb8b8
commit 86417d42ca
13 changed files with 31 additions and 26 deletions

View File

@ -6,8 +6,8 @@
<vcpu>1</vcpu> <vcpu>1</vcpu>
<os> <os>
<type arch="x86_64">hvm</type> <type arch="x86_64">hvm</type>
<kernel>./virtinst-vmlinuz.</kernel> <kernel>/tmp/virtinst-vmlinuz.</kernel>
<initrd>./virtinst-initrd.img.</initrd> <initrd>/tmp/virtinst-initrd.img.</initrd>
<cmdline>method=tests/cli-test-xml/faketree console=ttyS0</cmdline> <cmdline>method=tests/cli-test-xml/faketree console=ttyS0</cmdline>
</os> </os>
<features> <features>

View File

@ -6,8 +6,8 @@
<vcpu>1</vcpu> <vcpu>1</vcpu>
<os> <os>
<type arch="x86_64">hvm</type> <type arch="x86_64">hvm</type>
<kernel>./virtinst-vmlinuz.</kernel> <kernel>/tmp/virtinst-vmlinuz.</kernel>
<initrd>./virtinst-initrd.img.</initrd> <initrd>/tmp/virtinst-initrd.img.</initrd>
</os> </os>
<features> <features>
<acpi/> <acpi/>

View File

@ -7,8 +7,8 @@
<os> <os>
<type arch="ia64">hvm</type> <type arch="ia64">hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader> <loader>/usr/lib/xen/boot/hvmloader</loader>
<kernel>./virtinst-vmlinuz.</kernel> <kernel>/tmp/virtinst-vmlinuz.</kernel>
<initrd>./virtinst-initrd.img.</initrd> <initrd>/tmp/virtinst-initrd.img.</initrd>
<cmdline>method=tests/cli-test-xml/faketree</cmdline> <cmdline>method=tests/cli-test-xml/faketree</cmdline>
</os> </os>
<features> <features>

View File

@ -6,8 +6,8 @@
<vcpu>1</vcpu> <vcpu>1</vcpu>
<os> <os>
<type arch="ia64">linux</type> <type arch="ia64">linux</type>
<kernel>./virtinst-vmlinuz.</kernel> <kernel>/tmp/virtinst-vmlinuz.</kernel>
<initrd>./virtinst-initrd.img.</initrd> <initrd>/tmp/virtinst-initrd.img.</initrd>
<cmdline>method=tests/cli-test-xml/faketree</cmdline> <cmdline>method=tests/cli-test-xml/faketree</cmdline>
</os> </os>
<on_poweroff>destroy</on_poweroff> <on_poweroff>destroy</on_poweroff>

View File

@ -6,8 +6,8 @@
<vcpu>1</vcpu> <vcpu>1</vcpu>
<os> <os>
<type arch="x86_64">linux</type> <type arch="x86_64">linux</type>
<kernel>./virtinst-vmlinuz.</kernel> <kernel>/tmp/virtinst-vmlinuz.</kernel>
<initrd>./virtinst-initrd.img.</initrd> <initrd>/tmp/virtinst-initrd.img.</initrd>
<cmdline>method=tests/cli-test-xml/faketree</cmdline> <cmdline>method=tests/cli-test-xml/faketree</cmdline>
</os> </os>
<on_poweroff>destroy</on_poweroff> <on_poweroff>destroy</on_poweroff>

View File

@ -7,8 +7,8 @@
<os> <os>
<type arch="i686">hvm</type> <type arch="i686">hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader> <loader>/usr/lib/xen/boot/hvmloader</loader>
<kernel>kernel</kernel> <kernel>/kernel</kernel>
<initrd>initrd</initrd> <initrd>/initrd</initrd>
<cmdline>my kernel args</cmdline> <cmdline>my kernel args</cmdline>
</os> </os>
<features> <features>

View File

@ -6,8 +6,8 @@
<vcpu>5</vcpu> <vcpu>5</vcpu>
<os> <os>
<type arch="i686">hvm</type> <type arch="i686">hvm</type>
<kernel>./virtinst-vmlinuz.</kernel> <kernel>/tmp/virtinst-vmlinuz.</kernel>
<initrd>./virtinst-initrd.img.</initrd> <initrd>/tmp/virtinst-initrd.img.</initrd>
<cmdline>method=tests/cli-test-xml/fakerhel6tree</cmdline> <cmdline>method=tests/cli-test-xml/fakerhel6tree</cmdline>
</os> </os>
<features> <features>

View File

@ -354,8 +354,8 @@ class TestXMLConfig(unittest.TestCase):
g = utils.get_basic_fullyvirt_guest(installer=i) g = utils.get_basic_fullyvirt_guest(installer=i)
g.add_device(utils.get_filedisk()) g.add_device(utils.get_filedisk())
g.os.kernel = "kernel" g.os.kernel = "/kernel"
g.os.initrd = "initrd" g.os.initrd = "/initrd"
g.os.kernel_args = "my kernel args" g.os.kernel_args = "my kernel args"
self._compare(g, "install-fullyvirt-import-kernel", False) self._compare(g, "install-fullyvirt-import-kernel", False)
@ -940,7 +940,7 @@ class TestXMLConfig(unittest.TestCase):
def testFullKVMRHEL6(self): def testFullKVMRHEL6(self):
utils.set_conn(_plainkvm) utils.set_conn(_plainkvm)
i = utils.make_distro_installer( 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 = utils.get_basic_fullyvirt_guest("kvm", installer=i)
g.add_device(utils.get_floppy()) g.add_device(utils.get_floppy())
g.add_device(utils.get_filedisk("/dev/default-pool/rhel6.img", fake=False)) g.add_device(utils.get_filedisk("/dev/default-pool/rhel6.img", fake=False))

View File

@ -7,8 +7,8 @@
<type arch="i686">hvm</type> <type arch="i686">hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader> <loader>/usr/lib/xen/boot/hvmloader</loader>
<bootmenu enable="yes"/> <bootmenu enable="yes"/>
<kernel>foo.img</kernel> <kernel>/foo.img</kernel>
<initrd>bar.img</initrd> <initrd>/bar.img</initrd>
<cmdline>ks=foo.ks</cmdline> <cmdline>ks=foo.ks</cmdline>
<dtb>/baz.dtb</dtb> <dtb>/baz.dtb</dtb>
<boot dev="cdrom"/> <boot dev="cdrom"/>

View File

@ -266,8 +266,8 @@ class XMLParseTest(unittest.TestCase):
check = self._make_checker(guest.os) check = self._make_checker(guest.os)
check("bootorder", ['hd', 'fd', 'cdrom', 'network'], ["cdrom"]) check("bootorder", ['hd', 'fd', 'cdrom', 'network'], ["cdrom"])
check("enable_bootmenu", False, True) check("enable_bootmenu", False, True)
check("kernel", None, "foo.img") check("kernel", None, "/foo.img")
check("initrd", None, "bar.img") check("initrd", None, "/bar.img")
check("dtb", None, "/baz.dtb") check("dtb", None, "/baz.dtb")
check("kernel_args", None, "ks=foo.ks") check("kernel_args", None, "ks=foo.ks")

View File

@ -92,10 +92,10 @@ class OSXML(XMLBuilder):
enable_bootmenu = XMLProperty("./bootmenu/@enable", is_yesno=True) enable_bootmenu = XMLProperty("./bootmenu/@enable", is_yesno=True)
useserial = XMLProperty("./bios/@useserial", is_yesno=True) useserial = XMLProperty("./bios/@useserial", is_yesno=True)
kernel = XMLProperty("./kernel") kernel = XMLProperty("./kernel", do_abspath=True)
initrd = XMLProperty("./initrd") initrd = XMLProperty("./initrd", do_abspath=True)
dtb = XMLProperty("./dtb", do_abspath=True)
kernel_args = XMLProperty("./cmdline") kernel_args = XMLProperty("./cmdline")
dtb = XMLProperty("./dtb")
init = XMLProperty("./init") init = XMLProperty("./init")
loader = XMLProperty("./loader") loader = XMLProperty("./loader")

View File

@ -68,7 +68,7 @@ class _ImageFetcher(object):
prefix = "virtinst-" + prefix prefix = "virtinst-" + prefix
if "VIRTINST_TEST_SUITE" in os.environ: 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) fd = os.open(fn, os.O_RDWR | os.O_CREAT, 0640)
else: else:
(fd, fn) = tempfile.mkstemp(prefix=prefix, (fd, fn) = tempfile.mkstemp(prefix=prefix,

View File

@ -334,7 +334,8 @@ class XMLProperty(property):
def __init__(self, xpath=None, name=None, doc=None, def __init__(self, xpath=None, name=None, doc=None,
set_converter=None, validate_cb=None, make_xpath_cb=None, set_converter=None, validate_cb=None, make_xpath_cb=None,
is_bool=False, is_int=False, is_yesno=False, is_onoff=False, 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 Set a XMLBuilder class property that represents a value in the
<domain> XML. For example <domain> XML. For example
@ -374,6 +375,7 @@ class XMLProperty(property):
first explicit 'set'. first explicit 'set'.
@param default_name: If the user does a set and passes in this @param default_name: If the user does a set and passes in this
value, instead use the value of default_cb() value, instead use the value of default_cb()
@param do_abspath: If True, run os.path.abspath on the passed value
""" """
self._xpath = xpath self._xpath = xpath
@ -386,6 +388,7 @@ class XMLProperty(property):
self._is_int = is_int self._is_int = is_int
self._is_yesno = is_yesno self._is_yesno = is_yesno
self._is_onoff = is_onoff self._is_onoff = is_onoff
self._do_abspath = do_abspath
self._make_xpath_cb = make_xpath_cb self._make_xpath_cb = make_xpath_cb
self._validate_cb = validate_cb self._validate_cb = validate_cb
@ -487,6 +490,8 @@ class XMLProperty(property):
def _convert_set_value(self, xmlbuilder, val): def _convert_set_value(self, xmlbuilder, val):
if self._default_name and val == self._default_name: if self._default_name and val == self._default_name:
val = self._default_cb(xmlbuilder) 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: elif self._is_onoff and val is not None:
val = bool(val) and "on" or "off" val = bool(val) and "on" or "off"
elif self._is_yesno and val is not None: elif self._is_yesno and val is not None: