virt-manager: Allow to change SGIO with LUN disk devices

It is added only in the details window, and intentionally not added to
the addhardware UI to keep it simpler.  Users can edit this after a
new device is added.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2015-03-13 14:39:47 +01:00
parent 31836e2b5d
commit 61e06856a3
3 changed files with 74 additions and 18 deletions

View File

@ -3708,22 +3708,6 @@ if you know what you are doing.&lt;/small&gt;</property>
<property name="can_focus">False</property>
<property name="row_spacing">3</property>
<property name="column_spacing">8</property>
<child>
<object class="GtkLabel" id="label30">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
<property name="ypad">4</property>
<property name="label" translatable="yes">Storage forma_t:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">storage-format-combobox-entry</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label32">
<property name="visible">True</property>
@ -3846,6 +3830,53 @@ if you know what you are doing.&lt;/small&gt;</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label30">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
<property name="ypad">4</property>
<property name="label" translatable="yes">Storage forma_t:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">storage-format-combobox-entry</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label66">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_SGIO:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">disk-sgio-entry</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="disk-sgio">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_entry">True</property>
<child internal-child="entry">
<object class="GtkEntry" id="disk-sgio-entry">
<property name="can_focus">True</property>
<signal name="changed" handler="on_disk_sgio_entry_changed" swapped="no"/>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>

View File

@ -75,6 +75,7 @@ EDIT_DISK_BUS,
EDIT_DISK_SERIAL,
EDIT_DISK_FORMAT,
EDIT_DISK_IOTUNE,
EDIT_DISK_SGIO,
EDIT_SOUND_MODEL,
@ -104,7 +105,7 @@ EDIT_FS,
EDIT_HOSTDEV_ROMBAR,
) = range(1, 45)
) = range(1, 46)
# Columns in hw list model
@ -499,6 +500,7 @@ class vmmDetails(vmmGObjectUI):
"on_disk_format_changed": self.disk_format_changed,
"on_disk_serial_changed": lambda *x: self.enable_apply(x, EDIT_DISK_SERIAL),
"on_disk_iotune_changed": self.iotune_changed,
"on_disk_sgio_entry_changed": lambda *x: self.enable_apply(x, EDIT_DISK_SGIO),
"on_network_model_combo_changed": lambda *x: self.enable_apply(x, EDIT_NET_MODEL),
@ -2124,6 +2126,10 @@ class vmmDetails(vmmGObjectUI):
if self.edited(EDIT_DISK_SERIAL):
kwargs["serial"] = self.get_text("disk-serial")
if self.edited(EDIT_DISK_SGIO):
sgio = uiutil.get_combo_entry(self.widget("disk-sgio"))
kwargs["sgio"] = sgio
if self.edited(EDIT_DISK_IOTUNE):
kwargs["iotune_rbs"] = int(
self.widget("disk-iotune-rbs").get_value() * 1024)
@ -2597,6 +2603,15 @@ class vmmDetails(vmmGObjectUI):
ignore, upper = maxmem.get_range()
maxmem.set_range(curmem.get_value(), upper)
@staticmethod
def build_disk_sgio(vm, combo):
ignore = vm
model = Gtk.ListStore(str, str)
combo.set_model(model)
uiutil.set_combo_text_column(combo, 1)
model.append([None, "default"])
model.append(["filtered", "filtered"])
model.append(["unfiltered", "unfiltered"])
def refresh_disk_page(self):
disk = self.get_hw_selection(HW_LIST_COL_DEVICE)
@ -2675,6 +2690,13 @@ class vmmDetails(vmmGObjectUI):
self.widget("disk-removable").set_active(removable)
uiutil.set_grid_row_visible(self.widget("disk-removable"),
can_set_removable)
is_lun = disk.device == virtinst.VirtualDisk.DEVICE_LUN
uiutil.set_grid_row_visible(self.widget("disk-sgio"), is_lun)
if is_lun:
self.build_disk_sgio(self.vm, self.widget("disk-sgio"))
uiutil.set_combo_entry(self.widget("disk-sgio"), disk.sgio)
self.widget("disk-size").set_text(size)
uiutil.set_combo_entry(self.widget("disk-cache"), cache)
uiutil.set_combo_entry(self.widget("disk-io"), io)

View File

@ -715,7 +715,8 @@ class vmmDomain(vmmLibvirtObject):
shareable=_SENTINEL, removable=_SENTINEL, cache=_SENTINEL,
io=_SENTINEL, driver_type=_SENTINEL, bus=_SENTINEL, addrstr=_SENTINEL,
iotune_rbs=_SENTINEL, iotune_ris=_SENTINEL, iotune_tbs=_SENTINEL,
iotune_tis=_SENTINEL, iotune_wbs=_SENTINEL, iotune_wis=_SENTINEL):
iotune_tis=_SENTINEL, iotune_wbs=_SENTINEL, iotune_wis=_SENTINEL,
sgio=_SENTINEL):
def _change_bus(editdev):
oldprefix = editdev.get_target_prefix()[0]
oldbus = editdev.bus
@ -776,6 +777,8 @@ class vmmDomain(vmmLibvirtObject):
editdev.iotune_wbs = iotune_wbs
if iotune_wis != _SENTINEL:
editdev.iotune_wis = iotune_wis
if sgio != _SENTINEL:
editdev.sgio = sgio or None
if bus != _SENTINEL:
_change_bus(editdev)