mirror of
https://github.com/virt-manager/virt-manager.git
synced 2026-08-04 02:13:21 -05:00
virt-install: Add --boot initargs=
Expects a shell escaped string which we split into individual initarg bits
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user