diff options
author | Hugues Fafard <fafardh@posteo.de> | 2021-07-28 15:49:38 +0200 |
---|---|---|
committer | Cole Robinson <crobinso@redhat.com> | 2021-07-29 11:44:57 -0400 |
commit | edf6c3ff2ef1b5ee13b95cad8c9407ea3f2947a0 (patch) | |
tree | 560a835f44e5c56ac580c16339440d1917835d2f | |
parent | 7bc4ba81fff7e4e9c532a6a993b164c4afb647da (diff) | |
download | virt-manager-edf6c3ff2ef1b5ee13b95cad8c9407ea3f2947a0.tar.gz |
cli: --boot: Completed options for container boot
Adds support for `initenv[0-9]*.name` and `initenv[0-9]*` suboptions.
-rw-r--r-- | tests/data/cli/compare/virt-install-boot-container.xml | 36 | ||||
-rw-r--r-- | tests/test_cli.py | 1 | ||||
-rw-r--r-- | virtinst/cli.py | 10 | ||||
-rw-r--r-- | virtinst/domain/os.py | 16 |
4 files changed, 59 insertions, 4 deletions
diff --git a/tests/data/cli/compare/virt-install-boot-container.xml b/tests/data/cli/compare/virt-install-boot-container.xml new file mode 100644 index 00000000..bc810716 --- /dev/null +++ b/tests/data/cli/compare/virt-install-boot-container.xml @@ -0,0 +1,36 @@ +<domain type="test"> + <name>vm1</name> + <uuid>00000000-1111-2222-3333-444444444444</uuid> + <memory>65536</memory> + <currentMemory>65536</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch="i686">hvm</type> + <initdir>/my/custom/cwd</initdir> + <inituser>tester</inituser> + <initgroup>1000</initgroup> + <boot dev="hd"/> + <init>/bin/systemd</init> + <initarg>--unit</initarg> + <initarg>emergency.service</initarg> + <initenv name="MYENV">some value</initenv> + <initenv name="FOO">bar</initenv> + </os> + <features> + <pae/> + </features> + <clock offset="utc"/> + <pm> + <suspend-to-mem enabled="no"/> + <suspend-to-disk enabled="no"/> + </pm> + <devices> + <emulator>/usr/bin/test-hv</emulator> + <controller type="usb" model="none"/> + <interface type="user"> + <mac address="00:11:22:33:44:55"/> + <model type="e1000"/> + </interface> + <console type="pty"/> + </devices> +</domain> diff --git a/tests/test_cli.py b/tests/test_cli.py index 1ded9adf..82e9ba5e 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -760,6 +760,7 @@ c.add_compare("--boot firmware=bios,loader=/path/to/loader,loader.readonly=yes,l c.add_compare("--boot firmware=efi,loader=/path/to/loader,loader.readonly=yes,loader.secure=yes,loader.type=pflash,bios.useserial=yes,nvram=/path/to/nvram", "boot-guest-loader-efi") c.add_compare("--boot bootloader=/usr/bin/pygrub,bootloader_args='--append single'", "boot-host-loader") c.add_compare("--boot kernel=/path/to/kernel,initrd=/path/to/initrd,cmdline='console=ttyS0',dtb=/path/to/dtb,acpi.table=/path/to/slic.dat,acpi.table.type=slic", "boot-direct-kernel") +c.add_compare("--boot init=/bin/systemd,initargs='--unit emergency.service',initenv0.name=MYENV,initenv0='some value',initenv1.name=FOO,initenv1=bar,initdir=/my/custom/cwd,inituser=tester,initgroup=1000", "boot-container") diff --git a/virtinst/cli.py b/virtinst/cli.py index 2f6493a4..fe22ee8d 100644 --- a/virtinst/cli.py +++ b/virtinst/cli.py @@ -2635,6 +2635,12 @@ class ParserBoot(VirtCLIParser): cb = self._make_find_inst_cb(cliarg, list_propname) return cb(*args, **kwargs) + def initenv_find_inst_cb(self, *args, **kwargs): + cliarg = "initenv" # initenv[0-9]* + list_propname = "initenvs" # os.initenvs + cb = self._make_find_inst_cb(cliarg, list_propname) + return cb(*args, **kwargs) + def feature_find_inst_cb(self, *args, **kwargs): cliarg = "feature" # firmware.feature[0-9]* list_propname = "firmware_features" # os.firmware_features @@ -2689,6 +2695,10 @@ class ParserBoot(VirtCLIParser): cls.add_arg("initargs", "initargs", cb=cls.set_initargs_cb) cls.add_arg("initarg[0-9]*", "val", find_inst_cb=cls.initarg_find_inst_cb) + cls.add_arg("initenv[0-9]*", "value", + find_inst_cb=cls.initenv_find_inst_cb) + cls.add_arg("initenv[0-9]*.name", "name", + find_inst_cb=cls.initenv_find_inst_cb) cls.add_arg("initdir", "initdir") cls.add_arg("inituser", "inituser") cls.add_arg("initgroup", "initgroup") diff --git a/virtinst/domain/os.py b/virtinst/domain/os.py index a3f5c55d..2e65a523 100644 --- a/virtinst/domain/os.py +++ b/virtinst/domain/os.py @@ -12,6 +12,12 @@ class _InitArg(XMLBuilder): val = XMLProperty(".") +class _InitEnv(XMLBuilder): + XML_NAME = "initenv" + name = XMLProperty("./@name") + value = XMLProperty(".") + + class _BootDevice(XMLBuilder): XML_NAME = "boot" dev = XMLProperty("./@dev") @@ -109,7 +115,13 @@ class DomainOs(XMLBuilder): acpi_tb = XMLProperty("./acpi/table", do_abspath=True) acpi_tb_type = XMLProperty("./acpi/table/@type") + # Container boot + init = XMLProperty("./init") initargs = XMLChildProperty(_InitArg) + initenvs = XMLChildProperty(_InitEnv) + initdir = XMLProperty("./initdir") + inituser = XMLProperty("./inituser") + initgroup = XMLProperty("./initgroup") def set_initargs_string(self, argstring): import shlex for obj in self.initargs: @@ -118,10 +130,6 @@ class DomainOs(XMLBuilder): obj = self.initargs.add_new() obj.val = val - init = XMLProperty("./init") - initdir = XMLProperty("./initdir") - inituser = XMLProperty("./inituser") - initgroup = XMLProperty("./initgroup") loader = XMLProperty("./loader") loader_ro = XMLProperty("./loader/@readonly", is_yesno=True) loader_type = XMLProperty("./loader/@type") |