diff --git a/nova/tests/unit/virt/libvirt/test_config.py b/nova/tests/unit/virt/libvirt/test_config.py index 7e124b279098..84f1491c829e 100644 --- a/nova/tests/unit/virt/libvirt/test_config.py +++ b/nova/tests/unit/virt/libvirt/test_config.py @@ -2284,6 +2284,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest): obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147" obj.os_type = "exe" obj.os_init_path = "/sbin/init" + obj.os_init_env["foo"] = "bar" fs = config.LibvirtConfigGuestFilesys() fs.source_dir = "/root/lxc" @@ -2301,6 +2302,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest): exe /sbin/init + bar @@ -2765,6 +2767,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest): + bar """ @@ -2781,6 +2784,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest): self.assertEqual('console=xvc0', obj.os_cmdline) self.assertEqual('root=xvda', obj.os_root) self.assertEqual('/sbin/init', obj.os_init_path) + self.assertEqual('bar', obj.os_init_env['foo']) self.assertEqual(['hd', 'cdrom', 'fd'], obj.os_boot_dev) self.assertTrue(obj.os_bootmenu) self.assertIsNone(obj.os_smbios) diff --git a/nova/virt/libvirt/config.py b/nova/virt/libvirt/config.py index 29f8bc5785b0..af3b27729729 100644 --- a/nova/virt/libvirt/config.py +++ b/nova/virt/libvirt/config.py @@ -2502,6 +2502,7 @@ class LibvirtConfigGuest(LibvirtConfigObject): self.os_kernel = None self.os_initrd = None self.os_cmdline = None + self.os_init_env = {} self.os_root = None self.os_init_path = None self.os_boot_dev = [] @@ -2561,6 +2562,10 @@ class LibvirtConfigGuest(LibvirtConfigObject): os.append(self._text_node("root", self.os_root)) if self.os_init_path is not None: os.append(self._text_node("init", self.os_init_path)) + for name, value in self.os_init_env.items(): + initenv = self._text_node("initenv", value) + initenv.set("name", name) + os.append(initenv) for boot_dev in self.os_boot_dev: os.append(etree.Element("boot", dev=boot_dev)) @@ -2674,6 +2679,8 @@ class LibvirtConfigGuest(LibvirtConfigObject): elif c.tag == 'bootmenu': if c.get('enable') == 'yes': self.os_bootmenu = True + elif c.tag == 'initenv': + self.os_init_env[c.get('name')] = c.text def parse_dom(self, xmldoc): self.virt_type = xmldoc.get('type')