virt-install: Add --boot initargs=

Expects a shell escaped string which we split into individual initarg bits
This commit is contained in:
Cole Robinson
2014-05-31 17:15:03 -04:00
parent eca6cd9471
commit da73e4980b
4 changed files with 30 additions and 0 deletions
+3
View File
@@ -10,6 +10,9 @@
<init>/sbin/init</init>
<bootmenu enable="no"/>
<bios useserial="yes"/>
<initarg>foo</initarg>
<initarg>bar baz</initarg>
<initarg>frib</initarg>
</os>
<features><apic eoi="on"/>
<hyperv>
+4
View File
@@ -155,6 +155,10 @@ class XMLParseTest(unittest.TestCase):
check("initrd", None)
check("kernel_args", None)
guest.os.set_initargs_string("foo 'bar baz' frib")
self.assertEqual([i.val for i in guest.os.initargs],
["foo", "bar baz", "frib"])
check = self._make_checker(guest.features)
check("acpi", True, False)
check("apic", True, True)
+6
View File
@@ -1425,6 +1425,12 @@ class ParserBoot(VirtCLIParser):
self.set_param("os.os_type", "os_type")
self.set_param("emulator", "emulator")
def set_initargs_cb(opts, inst, cliname, val):
ignore = opts
ignore = cliname
inst.os.set_initargs_string(val)
self.set_param("os.initargs", "initargs", setter_cb=set_initargs_cb)
# Order matters for boot devices, we handle it specially in parse
def noset_cb(val):
ignore = val
+17
View File
@@ -20,6 +20,11 @@
from virtinst.xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
class _InitArg(XMLBuilder):
_XML_ROOT_NAME = "initarg"
val = XMLProperty(".")
class _BootDevice(XMLBuilder):
_XML_ROOT_NAME = "boot"
dev = XMLProperty("./@dev")
@@ -72,6 +77,18 @@ class OSXML(XMLBuilder):
_bootdevs = XMLChildProperty(_BootDevice)
bootorder = property(_get_bootorder, _set_bootorder)
initargs = XMLChildProperty(_InitArg)
def add_initarg(self, val):
obj = _InitArg(self.conn)
obj.val = val
self._add_child(obj)
def set_initargs_string(self, argstring):
import shlex
for obj in self.initargs:
self._remove_child(obj)
for val in shlex.split(argstring):
self.add_initarg(val)
enable_bootmenu = XMLProperty("./bootmenu/@enable", is_yesno=True)
useserial = XMLProperty("./bios/@useserial", is_yesno=True)