--- ui/addhardware.ui | 24 ++++++++++++++++++++++++ ui/details.ui | 31 +++++++++++++++++++++++++++++++ virtManager/addhardware.py | 8 ++++++++ virtManager/details.py | 14 +++++++++++++- virtManager/domain.py | 5 ++++- 5 files changed, 80 insertions(+), 2 deletions(-) diff --git a/ui/addhardware.ui b/ui/addhardware.ui index 4c266826..92cbbeaa 100644 --- a/ui/addhardware.ui +++ b/ui/addhardware.ui @@ -255,6 +255,30 @@ <property name="top_attach">0</property> </packing> </child> + <child> + <object class="GtkLabel" id="label-storage-discard"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="label" translatable="yes">Discard mode:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">storage-discard</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="storage-discard"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + </packing> + </child> </object> </child> <child type="label"> diff --git a/ui/details.ui b/ui/details.ui index 5a35a156..d4b23b8e 100644 --- a/ui/details.ui +++ b/ui/details.ui @@ -3788,6 +3788,37 @@ <property name="top_attach">1</property> </packing> </child> + <child> + <object class="GtkLabel" id="label-disk-discard"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">end</property> + <property name="label" translatable="yes">Discard mode:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">discardmode-entry-box</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="disk-discard"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="has_entry">True</property> + <signal name="changed" handler="on_disk_discard_combo_changed" swapped="no"/> + <child internal-child="entry"> + <object class="GtkEntry" id="discardmode-entry-box"> + <property name="can_focus">True</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + </packing> + </child> </object> </child> <child type="label"> diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py index e6619d66..0196ea18 100644 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -193,6 +193,7 @@ class vmmAddHardware(vmmGObjectUI): self.build_disk_bus_combo(self.vm, self.widget("storage-bustype")) self._build_disk_device_combo() self.build_disk_cache_combo(self.vm, self.widget("storage-cache")) + self.build_disk_discard_combo(self.vm, self.widget("storage-discard")) self.build_network_model_combo(self.vm, self.widget("net-model")) self._build_input_combo() self.build_sound_combo(self.vm, self.widget("sound-model")) @@ -450,6 +451,13 @@ class vmmAddHardware(vmmGObjectUI): values.append([m, m]) _build_combo(combo, values, sort=False) + @staticmethod + def build_disk_discard_combo(_vm, combo): + values = [[None, _("Hypervisor default")]] + for m in DeviceDisk.discard_types: + values.append([m, m]) + _build_combo(combo, values, sort=False) + @staticmethod def build_disk_bus_combo(_vm, combo): _build_combo(combo, []) diff --git a/virtManager/details.py b/virtManager/details.py index e670d21f..d355ccd3 100644 --- a/virtManager/details.py +++ b/virtManager/details.py @@ -56,6 +56,7 @@ from .graphwidgets import Sparkline EDIT_DISK_REMOVABLE, EDIT_DISK_CACHE, EDIT_DISK_IO, + EDIT_DISK_DISCARD, EDIT_DISK_BUS, EDIT_DISK_SERIAL, EDIT_DISK_FORMAT, @@ -94,7 +95,7 @@ from .graphwidgets import Sparkline EDIT_FS, - EDIT_HOSTDEV_ROMBAR) = range(1, 51) + EDIT_HOSTDEV_ROMBAR) = range(1, 52) # Columns in hw list model @@ -538,6 +539,7 @@ class vmmDetails(vmmGObjectUI): "on_disk_removable_changed": lambda *x: self.enable_apply(x, EDIT_DISK_REMOVABLE), "on_disk_cache_combo_changed": lambda *x: self.enable_apply(x, EDIT_DISK_CACHE), "on_disk_io_combo_changed": lambda *x: self.enable_apply(x, EDIT_DISK_IO), + "on_disk_discard_combo_changed": lambda *x: self.enable_apply(x, EDIT_DISK_DISCARD), "on_disk_bus_combo_changed": lambda *x: self.enable_apply(x, EDIT_DISK_BUS), "on_disk_format_changed": self.disk_format_changed, "on_disk_serial_changed": lambda *x: self.enable_apply(x, EDIT_DISK_SERIAL), @@ -1016,6 +1018,10 @@ class vmmDetails(vmmGObjectUI): model.append([m, m]) combo.set_active(0) + # Discard combo + combo = self.widget("disk-discard") + vmmAddHardware.build_disk_discard_combo(self.vm, combo) + # Disk bus combo disk_bus = self.widget("disk-bus") vmmAddHardware.build_disk_bus_combo(self.vm, disk_bus) @@ -2113,6 +2119,10 @@ class vmmDetails(vmmGObjectUI): if self.edited(EDIT_DISK_IO): kwargs["io"] = uiutil.get_list_selection(self.widget("disk-io")) + if self.edited(EDIT_DISK_DISCARD): + kwargs["discard"] = uiutil.get_list_selection( + self.widget("disk-discard")) + if self.edited(EDIT_DISK_FORMAT): kwargs["driver_type"] = self.widget("disk-format").get_text() @@ -2647,6 +2657,7 @@ class vmmDetails(vmmGObjectUI): removable = disk.removable cache = disk.driver_cache io = disk.driver_io + discard = disk.driver_discard driver_type = disk.driver_type or "" serial = disk.serial @@ -2689,6 +2700,7 @@ class vmmDetails(vmmGObjectUI): self.widget("disk-size").set_text(size) uiutil.set_list_selection(self.widget("disk-cache"), cache) uiutil.set_list_selection(self.widget("disk-io"), io) + uiutil.set_list_selection(self.widget("disk-discard"), discard) self.widget("disk-format").set_text(driver_type) self.widget("disk-format-warn").hide() diff --git a/virtManager/domain.py b/virtManager/domain.py index 5af6ee01..16266b2c 100644 --- a/virtManager/domain.py +++ b/virtManager/domain.py @@ -687,7 +687,8 @@ class vmmDomain(vmmLibvirtObject): def define_disk(self, devobj, do_hotplug, path=_SENTINEL, readonly=_SENTINEL, serial=_SENTINEL, shareable=_SENTINEL, removable=_SENTINEL, cache=_SENTINEL, - io=_SENTINEL, driver_type=_SENTINEL, bus=_SENTINEL, addrstr=_SENTINEL, + io=_SENTINEL, discard=_SENTINEL, + driver_type=_SENTINEL, bus=_SENTINEL, addrstr=_SENTINEL, sgio=_SENTINEL): xmlobj = self._make_xmlobj_to_define() editdev = self._lookup_device_to_define(xmlobj, devobj, do_hotplug) @@ -736,6 +737,8 @@ class vmmDomain(vmmLibvirtObject): editdev.driver_cache = cache or None if io != _SENTINEL: editdev.driver_io = io or None + if discard != _SENTINEL: + editdev.driver_discard = discard or None if driver_type != _SENTINEL: editdev.driver_type = driver_type or None if serial != _SENTINEL: -- 2.17.1 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list