From 82754ddc84041ece7a8462e1b14860eda4ea022b Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Mon, 10 Feb 2014 14:24:22 -0500 Subject: [PATCH] Expose hostdev rombar in UI and cli (bz 768857) --- .../compare/virt-install-many-devices.xml | 2 + .../compare/virt-xml-edit-all.xml | 1 + .../compare/virt-xml-edit-clear-clock.xml | 2 +- .../compare/virt-xml-edit-clear-cpu.xml | 2 +- .../compare/virt-xml-edit-simple-metadata.xml | 2 +- tests/clitest.py | 2 +- tests/testdriver.xml | 1 + tests/xmlparse-xml/change-hostdevs-out.xml | 1 + tests/xmlparse.py | 1 + ui/details.ui | 51 +++++++++++++++---- virtManager/details.py | 32 ++++++++++-- virtManager/domain.py | 5 ++ virtinst/cli.py | 3 +- virtinst/devicehostdev.py | 1 + 14 files changed, 88 insertions(+), 18 deletions(-) diff --git a/tests/cli-test-xml/compare/virt-install-many-devices.xml b/tests/cli-test-xml/compare/virt-install-many-devices.xml index ce0c658f3..29398a75a 100644 --- a/tests/cli-test-xml/compare/virt-install-many-devices.xml +++ b/tests/cli-test-xml/compare/virt-install-many-devices.xml @@ -118,6 +118,7 @@
+ @@ -257,6 +258,7 @@
+ diff --git a/tests/cli-test-xml/compare/virt-xml-edit-all.xml b/tests/cli-test-xml/compare/virt-xml-edit-all.xml index abfa4984e..c8d2e2d23 100644 --- a/tests/cli-test-xml/compare/virt-xml-edit-all.xml +++ b/tests/cli-test-xml/compare/virt-xml-edit-all.xml @@ -14,6 +14,7 @@
+ + diff --git a/tests/cli-test-xml/compare/virt-xml-edit-clear-clock.xml b/tests/cli-test-xml/compare/virt-xml-edit-clear-clock.xml index 97af00382..9f6c2b371 100644 --- a/tests/cli-test-xml/compare/virt-xml-edit-clear-clock.xml +++ b/tests/cli-test-xml/compare/virt-xml-edit-clear-clock.xml @@ -9,7 +9,7 @@ destroy restart restart -@@ -331,4 +326,5 @@ +@@ -332,4 +327,5 @@
diff --git a/tests/cli-test-xml/compare/virt-xml-edit-clear-cpu.xml b/tests/cli-test-xml/compare/virt-xml-edit-clear-cpu.xml index 6b2ad8426..73ea7256e 100644 --- a/tests/cli-test-xml/compare/virt-xml-edit-clear-cpu.xml +++ b/tests/cli-test-xml/compare/virt-xml-edit-clear-cpu.xml @@ -21,7 +21,7 @@ -@@ -331,4 +314,5 @@ +@@ -332,4 +315,5 @@
diff --git a/tests/cli-test-xml/compare/virt-xml-edit-simple-metadata.xml b/tests/cli-test-xml/compare/virt-xml-edit-simple-metadata.xml index c99cb3b95..c2d020a7c 100644 --- a/tests/cli-test-xml/compare/virt-xml-edit-simple-metadata.xml +++ b/tests/cli-test-xml/compare/virt-xml-edit-simple-metadata.xml @@ -12,7 +12,7 @@ 409600 204800 -@@ -331,4 +331,5 @@ +@@ -332,4 +332,5 @@
diff --git a/tests/clitest.py b/tests/clitest.py index 473afe504..2fd01fda7 100644 --- a/tests/clitest.py +++ b/tests/clitest.py @@ -563,7 +563,7 @@ c.add_compare("""--hvm --pxe \ --blkiotune weight=200,device_path=/dev/sdc,device_weight=300 \ --idmap uid_start=0,uid_target=1000,uid_count=10,gid_start=0,gid_target=1000,gid_count=10 \ --boot loader=/foo/bar \ ---host-device net_00_1c_25_10_b1_e4,boot_order=4 \ +--host-device net_00_1c_25_10_b1_e4,boot_order=4,rom_bar=off \ --features acpi=off,eoi=on,privnet=on,hyperv_spinlocks=on,hyperv_spinlocks_retries=1234 \ --clock offset=localtime,hpet_present=no,rtc_tickpolicy=merge \ --pm suspend_to_mem=yes,suspend_to_disk=no \ diff --git a/tests/testdriver.xml b/tests/testdriver.xml index 6468f1963..4ee0d0b05 100644 --- a/tests/testdriver.xml +++ b/tests/testdriver.xml @@ -271,6 +271,7 @@
+ diff --git a/tests/xmlparse-xml/change-hostdevs-out.xml b/tests/xmlparse-xml/change-hostdevs-out.xml index 76b5331ac..203684abd 100644 --- a/tests/xmlparse-xml/change-hostdevs-out.xml +++ b/tests/xmlparse-xml/change-hostdevs-out.xml @@ -38,6 +38,7 @@
+ diff --git a/tests/xmlparse.py b/tests/xmlparse.py index 49234d690..6d6e0f38a 100644 --- a/tests/xmlparse.py +++ b/tests/xmlparse.py @@ -614,6 +614,7 @@ class XMLParseTest(unittest.TestCase): check("slot", "0x2", "0x6") check("function", "0x3", "0x7") check("driver_name", None, "vfio") + check("rom_bar", None, True) self._alter_compare(guest.get_xml_config(), outfile) diff --git a/ui/details.ui b/ui/details.ui index 66134e588..b29a88db9 100644 --- a/ui/details.ui +++ b/ui/details.ui @@ -4422,12 +4422,11 @@ 3 12 - + True False - 2 - 8 - 4 + 6 + 6 True @@ -4436,8 +4435,10 @@ Device: - GTK_FILL - + 0 + 0 + 1 + 1 @@ -4450,9 +4451,41 @@ 1 - 2 - GTK_FILL - + 0 + 1 + 1 + + + + + True + False + 0 + ROM _BAR: + True + hostdev-rombar + + + 0 + 1 + 1 + 1 + + + + + True + True + False + 0 + True + + + + 1 + 1 + 1 + 1 diff --git a/virtManager/details.py b/virtManager/details.py index c126eda33..5143ba35c 100644 --- a/virtManager/details.py +++ b/virtManager/details.py @@ -100,7 +100,10 @@ EDIT_CONTROLLER_MODEL, EDIT_TPM_TYPE, EDIT_FS, -) = range(1, 41) + +EDIT_HOSTDEV_ROMBAR, + +) = range(1, 42) # Columns in hw list model @@ -632,6 +635,9 @@ class vmmDetails(vmmGObjectUI): "on_smartcard_mode_combo_changed": lambda *x: self.enable_apply(x, EDIT_SMARTCARD_MODE), + "on_hostdev_rombar_toggled": lambda *x: self.enable_apply( + x, EDIT_HOSTDEV_ROMBAR), + "on_config_apply_clicked": self.config_apply, "on_config_cancel_clicked": self.config_cancel, @@ -1884,6 +1890,8 @@ class vmmDetails(vmmGObjectUI): ret = self.config_controller_apply(key) elif pagetype is HW_LIST_TYPE_FILESYSTEM: ret = self.config_filesystem_apply(key) + elif pagetype is HW_LIST_TYPE_HOSTDEV: + ret = self.config_hostdev_apply(key) else: ret = False except Exception, e: @@ -2243,6 +2251,16 @@ class vmmDetails(vmmGObjectUI): return self._change_config_helper(df, da, hf, ha) + def config_hostdev_apply(self, dev_id_info): + df, da, add_define, hf, ha, add_hotplug = self.make_apply_data() + ignore = add_hotplug + + if self.edited(EDIT_HOSTDEV_ROMBAR): + add_define(self.vm.define_hostdev_rombar, dev_id_info, + self.widget("hostdev-rombar").get_active()) + + return self._change_config_helper(df, da, hf, ha) + # Device removal def remove_device(self, dev_type, dev_id_info): logging.debug("Removing device: %s %s", dev_type, dev_id_info) @@ -2928,18 +2946,24 @@ class vmmDetails(vmmGObjectUI): if not hostdev: return - devtype = hostdev.type + rom_bar = hostdev.rom_bar + if rom_bar is None: + rom_bar = True + pretty_name = None nodedev = lookup_nodedev(self.vm.conn, hostdev) if nodedev: pretty_name = nodedev.pretty_name() - if not pretty_name: pretty_name = _build_hostdev_label(hostdev)[0] or "-" - devlabel = "Physical %s Device" % devtype.upper() + uiutil.set_grid_row_visible( + self.widget("hostdev-rombar"), hostdev.type == "pci") + + devlabel = "Physical %s Device" % hostdev.type.upper() self.widget("hostdev-title").set_markup(devlabel) self.widget("hostdev-source").set_text(pretty_name) + self.widget("hostdev-rombar").set_active(rom_bar) def refresh_video_page(self): vid = self.get_hw_selection(HW_LIST_COL_DEVICE) diff --git a/virtManager/domain.py b/virtManager/domain.py index c8cfdbe1d..21a8c6b95 100644 --- a/virtManager/domain.py +++ b/virtManager/domain.py @@ -879,6 +879,11 @@ class vmmDomain(vmmLibvirtObject): return self._redefine_device(change, devobj) + def define_hostdev_rombar(self, devobj, val): + def change(editdev): + editdev.rom_bar = val + return self._redefine_device(change, devobj) + #################### # Hotplug routines # diff --git a/virtinst/cli.py b/virtinst/cli.py index 81db32bf0..cd6e18290 100644 --- a/virtinst/cli.py +++ b/virtinst/cli.py @@ -2107,7 +2107,7 @@ class ParserSound(VirtCLIParser): ##################### -# --hostdev parsing # +# --host-device parsing # ##################### class ParserHostdev(VirtCLIParser): @@ -2124,6 +2124,7 @@ class ParserHostdev(VirtCLIParser): self.set_param(None, "name", setter_cb=set_name_cb) self.set_param("driver_name", "driver_name") self.set_param("boot.order", "boot_order") + self.set_param("rom_bar", "rom_bar", is_onoff=True) ########################### diff --git a/virtinst/devicehostdev.py b/virtinst/devicehostdev.py index bd44b1271..a5d1a2a05 100644 --- a/virtinst/devicehostdev.py +++ b/virtinst/devicehostdev.py @@ -87,6 +87,7 @@ class VirtualHostDevice(VirtualDevice): slot = XMLProperty("./source/address/@slot") driver_name = XMLProperty("./driver/@name") + rom_bar = XMLProperty("./rom/@bar", is_onoff=True) VirtualHostDevice.register_type()