Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1334857 Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> --- ui/details.ui | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ virtManager/details.py | 36 ++++++++++++++++++++++++++++++++++- virtManager/domain.py | 8 +++++++- 3 files changed, 93 insertions(+), 2 deletions(-) diff --git a/ui/details.ui b/ui/details.ui index 4159f1d..953bd00 100644 --- a/ui/details.ui +++ b/ui/details.ui @@ -1200,6 +1200,57 @@ if you know what you are doing.</small></property> <property name="top_attach">3</property> </packing> </child> + <child> + <object class="GtkLabel" id="overview-gic-title"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="valign">start</property> + <property name="label" translatable="yes">_GIC version:</property> + <property name="use_underline">True</property> + <property name="ellipsize">middle</property> + <property name="angle">0.089999999999999997</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">6</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box19"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkComboBox" id="gic-version"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <signal name="changed" handler="on_gic_version_changed" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="gic-version-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label">label</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">6</property> + </packing> + </child> </object> </child> </object> diff --git a/virtManager/details.py b/virtManager/details.py index 0c369a4..d655a09 100644 --- a/virtManager/details.py +++ b/virtManager/details.py @@ -51,6 +51,7 @@ EDIT_MACHTYPE, EDIT_FIRMWARE, EDIT_DESC, EDIT_IDMAP, +EDIT_GIC, EDIT_VCPUS, EDIT_MAXVCPUS, @@ -104,7 +105,7 @@ EDIT_FS, EDIT_HOSTDEV_ROMBAR, -) = range(1, 45) +) = range(1, 46) # Columns in hw list model @@ -461,6 +462,7 @@ class vmmDetails(vmmGObjectUI): "on_machine_type_changed": lambda *x: self.enable_apply(x, EDIT_MACHTYPE), "on_overview_firmware_changed": lambda *x: self.enable_apply(x, EDIT_FIRMWARE), "on_overview_chipset_changed": lambda *x: self.enable_apply(x, EDIT_MACHTYPE), + "on_gic_version_changed" : lambda *x: self.enable_apply(x, EDIT_GIC), "on_idmap_uid_target_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP), "on_idmap_uid_count_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP), "on_idmap_gid_target_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP), @@ -875,6 +877,26 @@ class vmmDetails(vmmGObjectUI): uiutil.set_grid_row_visible( self.widget("overview-chipset-title"), show_chipset) + # GIC version + combo = self.widget("gic-version") + model = Gtk.ListStore(str, str) + combo.set_model(model) + model.append([None, _("Hypervisor default")]) + model.append(["host", "host"]) + uiutil.init_combo_text_column(combo, 1) + combo.set_active(0) + + show_gic = domcaps.supports_gic(self.vm.get_xmlobj()) + + if show_gic: + for ver in domcaps.get_gic_versions(): + model.append([ver, ver]) + + self.widget("gic-version").set_visible(self.is_customize_dialog) + self.widget("gic-version-label").set_visible(not self.is_customize_dialog) + uiutil.set_grid_row_visible( + self.widget("overview-gic-title"), show_gic) + # Inspection page apps_list = self.widget("inspection-apps") apps_model = Gtk.ListStore(str, str, str) @@ -1906,6 +1928,10 @@ class vmmDetails(vmmGObjectUI): kwargs["machine"] = uiutil.get_list_selection( self.widget("machine-type")) + if self.edited(EDIT_GIC): + kwargs['gic'] = uiutil.get_list_selection( + self.widget("gic-version")) + if self.edited(EDIT_DESC): desc_widget = self.widget("overview-description") kwargs["description"] = ( @@ -2342,6 +2368,14 @@ class vmmDetails(vmmGObjectUI): elif self.widget("overview-chipset-label").is_visible(): self.widget("overview-chipset-label").set_text(chipset) + # GIC version + gic_version = self.vm.get_gic_version() + if self.widget("gic-version").is_visible(): + uiutil.set_list_selection( + self.widget("gic-version"), gic_version) + elif self.widget("gic-version-label").is_visible(): + self.widget("gic-version-label").set_text(gic_version) + # User namespace idmap setting is_container = self.vm.is_container() self.widget("idmap-expander").set_visible(is_container) diff --git a/virtManager/domain.py b/virtManager/domain.py index 3185cf8..b0db5b4 100644 --- a/virtManager/domain.py +++ b/virtManager/domain.py @@ -621,7 +621,8 @@ class vmmDomain(vmmLibvirtObject): self._redefine_xmlobj(guest) def define_overview(self, machine=_SENTINEL, description=_SENTINEL, - title=_SENTINEL, idmap_list=_SENTINEL, loader=_SENTINEL): + title=_SENTINEL, idmap_list=_SENTINEL, loader=_SENTINEL, + gic=_SENTINEL): guest = self._make_xmlobj_to_define() if machine != _SENTINEL: guest.os.machine = machine @@ -657,6 +658,9 @@ class vmmDomain(vmmLibvirtObject): else: guest.idmap.clear() + if gic != _SENTINEL: + guest.features.gic_version = gic + self._redefine_xmlobj(guest) def define_boot(self, boot_order=_SENTINEL, boot_menu=_SENTINEL, @@ -1181,6 +1185,8 @@ class vmmDomain(vmmLibvirtObject): return self.get_xmlobj().os.machine def get_idmap(self): return self.get_xmlobj().idmap + def get_gic_version(self): + return self.get_xmlobj().features.gic_version def get_name_or_title(self): title = self.get_title() -- 2.8.4 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list