|
|
e4cbec |
From b62d337031b89d9c3cfdb3ee35a618f9fdcd013d Mon Sep 17 00:00:00 2001
|
|
|
e4cbec |
Message-Id: <b62d337031b89d9c3cfdb3ee35a618f9fdcd013d@dist-git>
|
|
|
e4cbec |
From: Pavel Hrdina <phrdina@redhat.com>
|
|
|
e4cbec |
Date: Tue, 13 Mar 2018 13:00:59 -0400
|
|
|
e4cbec |
Subject: [PATCH] prefs: Add a setting to enable/disable libguestfs inspection
|
|
|
e4cbec |
|
|
|
e4cbec |
From: Cole Robinson <crobinso@redhat.com>
|
|
|
e4cbec |
|
|
|
e4cbec |
Rather than key it on the library being available. Makes it much
|
|
|
e4cbec |
easier to test both modes of behavior.
|
|
|
e4cbec |
|
|
|
e4cbec |
Fix up a few inspection bugs while I'm in the area, and convert
|
|
|
e4cbec |
it to be more singleton like.
|
|
|
e4cbec |
|
|
|
e4cbec |
(cherry picked from commit 6b1278ccda1bf52fd51c619858dfeaffb12a4029)
|
|
|
e4cbec |
|
|
|
e4cbec |
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1566187
|
|
|
e4cbec |
|
|
|
e4cbec |
Conflicts:
|
|
|
e4cbec |
- The codebase is completely different so this patch backports only
|
|
|
e4cbec |
the bare minimum to add setting to enable/disable inspection
|
|
|
e4cbec |
|
|
|
e4cbec |
Reviewed-by: Cole Robinson <crobinso@redhat.com>
|
|
|
e4cbec |
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
|
e4cbec |
---
|
|
|
e4cbec |
.../org.virt-manager.virt-manager.gschema.xml | 6 ++
|
|
|
e4cbec |
ui/preferences.ui | 65 ++++++++++++++++++-
|
|
|
e4cbec |
virtManager/config.py | 11 ++++
|
|
|
e4cbec |
virtManager/details.py | 4 +-
|
|
|
e4cbec |
virtManager/engine.py | 4 +-
|
|
|
e4cbec |
virtManager/preferences.py | 23 +++++++
|
|
|
e4cbec |
6 files changed, 108 insertions(+), 5 deletions(-)
|
|
|
e4cbec |
|
|
|
e4cbec |
diff --git a/data/org.virt-manager.virt-manager.gschema.xml b/data/org.virt-manager.virt-manager.gschema.xml
|
|
|
e4cbec |
index d88450f5..f6db721b 100644
|
|
|
e4cbec |
--- a/data/org.virt-manager.virt-manager.gschema.xml
|
|
|
e4cbec |
+++ b/data/org.virt-manager.virt-manager.gschema.xml
|
|
|
e4cbec |
@@ -47,6 +47,12 @@
|
|
|
e4cbec |
<description>Show system tray icon while app is running</description>
|
|
|
e4cbec |
</key>
|
|
|
e4cbec |
|
|
|
e4cbec |
+ <key name="enable-libguestfs-vm-inspection" type="b">
|
|
|
e4cbec |
+ <default>true</default>
|
|
|
e4cbec |
+ <summary>Enable libguestfs VM inspection</summary>
|
|
|
e4cbec |
+ <description>Enable libguestfs VM inspection for things like OS icons, installed applications, etc. This only works if python libguestfs bindings are installed.</description>
|
|
|
e4cbec |
+ </key>
|
|
|
e4cbec |
+
|
|
|
e4cbec |
<key name="manager-window-height" type="i">
|
|
|
e4cbec |
<default>0</default>
|
|
|
e4cbec |
<summary>Default manager window height</summary>
|
|
|
e4cbec |
diff --git a/ui/preferences.ui b/ui/preferences.ui
|
|
|
e4cbec |
index 81802a28..01b54602 100644
|
|
|
e4cbec |
--- a/ui/preferences.ui
|
|
|
e4cbec |
+++ b/ui/preferences.ui
|
|
|
e4cbec |
@@ -1,5 +1,5 @@
|
|
|
e4cbec |
|
|
|
e4cbec |
-
|
|
|
e4cbec |
+
|
|
|
e4cbec |
<interface>
|
|
|
e4cbec |
<requires lib="gtk+" version="3.14"/>
|
|
|
e4cbec |
<object class="GtkAdjustment" id="adjustment1">
|
|
|
e4cbec |
@@ -49,6 +49,7 @@
|
|
|
e4cbec |
<property name="visible">True</property>
|
|
|
e4cbec |
<property name="can_focus">True</property>
|
|
|
e4cbec |
<property name="receives_default">False</property>
|
|
|
e4cbec |
+ <property name="halign">start</property>
|
|
|
e4cbec |
<property name="use_underline">True</property>
|
|
|
e4cbec |
<property name="draw_indicator">True</property>
|
|
|
e4cbec |
<signal name="toggled" handler="on_prefs_system_tray_toggled" swapped="no"/>
|
|
|
e4cbec |
@@ -58,6 +59,68 @@
|
|
|
e4cbec |
<property name="top_attach">0</property>
|
|
|
e4cbec |
</packing>
|
|
|
e4cbec |
</child>
|
|
|
e4cbec |
+ <child>
|
|
|
e4cbec |
+ <object class="GtkGrid">
|
|
|
e4cbec |
+ <property name="visible">True</property>
|
|
|
e4cbec |
+ <property name="can_focus">False</property>
|
|
|
e4cbec |
+ <property name="row_spacing">3</property>
|
|
|
e4cbec |
+ <child>
|
|
|
e4cbec |
+ <object class="GtkCheckButton" id="prefs-libguestfs">
|
|
|
e4cbec |
+ <property name="label" translatable="yes">Enable libgues_tfs VM introspection</property>
|
|
|
e4cbec |
+ <property name="visible">True</property>
|
|
|
e4cbec |
+ <property name="can_focus">True</property>
|
|
|
e4cbec |
+ <property name="receives_default">False</property>
|
|
|
e4cbec |
+ <property name="halign">start</property>
|
|
|
e4cbec |
+ <property name="use_underline">True</property>
|
|
|
e4cbec |
+ <property name="draw_indicator">True</property>
|
|
|
e4cbec |
+ <signal name="toggled" handler="on_prefs_libguestfs_toggled" swapped="no"/>
|
|
|
e4cbec |
+ </object>
|
|
|
e4cbec |
+ <packing>
|
|
|
e4cbec |
+ <property name="left_attach">0</property>
|
|
|
e4cbec |
+ <property name="top_attach">0</property>
|
|
|
e4cbec |
+ </packing>
|
|
|
e4cbec |
+ </child>
|
|
|
e4cbec |
+ <child>
|
|
|
e4cbec |
+ <object class="GtkBox" id="prefs-libguestfs-warn-box">
|
|
|
e4cbec |
+ <property name="can_focus">False</property>
|
|
|
e4cbec |
+ <property name="spacing">3</property>
|
|
|
e4cbec |
+ <child>
|
|
|
e4cbec |
+ <object class="GtkImage">
|
|
|
e4cbec |
+ <property name="visible">True</property>
|
|
|
e4cbec |
+ <property name="can_focus">False</property>
|
|
|
e4cbec |
+ <property name="stock">gtk-dialog-warning</property>
|
|
|
e4cbec |
+ </object>
|
|
|
e4cbec |
+ <packing>
|
|
|
e4cbec |
+ <property name="expand">False</property>
|
|
|
e4cbec |
+ <property name="fill">True</property>
|
|
|
e4cbec |
+ <property name="position">0</property>
|
|
|
e4cbec |
+ </packing>
|
|
|
e4cbec |
+ </child>
|
|
|
e4cbec |
+ <child>
|
|
|
e4cbec |
+ <object class="GtkLabel" id="prefs-libguestfs-warn-label">
|
|
|
e4cbec |
+ <property name="visible">True</property>
|
|
|
e4cbec |
+ <property name="can_focus">False</property>
|
|
|
e4cbec |
+ <property name="label"><small>You must restart the application for this change to take effect</small></property>
|
|
|
e4cbec |
+ <property name="use_markup">True</property>
|
|
|
e4cbec |
+ </object>
|
|
|
e4cbec |
+ <packing>
|
|
|
e4cbec |
+ <property name="expand">False</property>
|
|
|
e4cbec |
+ <property name="fill">True</property>
|
|
|
e4cbec |
+ <property name="position">1</property>
|
|
|
e4cbec |
+ </packing>
|
|
|
e4cbec |
+ </child>
|
|
|
e4cbec |
+ </object>
|
|
|
e4cbec |
+ <packing>
|
|
|
e4cbec |
+ <property name="left_attach">0</property>
|
|
|
e4cbec |
+ <property name="top_attach">1</property>
|
|
|
e4cbec |
+ </packing>
|
|
|
e4cbec |
+ </child>
|
|
|
e4cbec |
+ </object>
|
|
|
e4cbec |
+ <packing>
|
|
|
e4cbec |
+ <property name="left_attach">0</property>
|
|
|
e4cbec |
+ <property name="top_attach">1</property>
|
|
|
e4cbec |
+ </packing>
|
|
|
e4cbec |
+ </child>
|
|
|
e4cbec |
</object>
|
|
|
e4cbec |
</child>
|
|
|
e4cbec |
</object>
|
|
|
e4cbec |
diff --git a/virtManager/config.py b/virtManager/config.py
|
|
|
e4cbec |
index a3daf341..b7bee29b 100644
|
|
|
e4cbec |
--- a/virtManager/config.py
|
|
|
e4cbec |
+++ b/virtManager/config.py
|
|
|
e4cbec |
@@ -233,6 +233,9 @@ class vmmConfig(object):
|
|
|
e4cbec |
ret = ["vnc", "spice"]
|
|
|
e4cbec |
return ret
|
|
|
e4cbec |
|
|
|
e4cbec |
+ def inspection_supported(self):
|
|
|
e4cbec |
+ return self.support_inspection and self.get_libguestfs_inspect_vms()
|
|
|
e4cbec |
+
|
|
|
e4cbec |
def remove_notifier(self, h):
|
|
|
e4cbec |
self.conf.notify_remove(h)
|
|
|
e4cbec |
|
|
|
e4cbec |
@@ -395,6 +398,14 @@ class vmmConfig(object):
|
|
|
e4cbec |
def set_view_system_tray(self, val):
|
|
|
e4cbec |
self.conf.set("/system-tray", val)
|
|
|
e4cbec |
|
|
|
e4cbec |
+ # Libguestfs VM inspection
|
|
|
e4cbec |
+ def on_libguestfs_inspect_vms_changed(self, cb):
|
|
|
e4cbec |
+ return self.conf.notify_add("/enable-libguestfs-vm-inspection", cb)
|
|
|
e4cbec |
+ def get_libguestfs_inspect_vms(self):
|
|
|
e4cbec |
+ return self.conf.get("/enable-libguestfs-vm-inspection")
|
|
|
e4cbec |
+ def set_libguestfs_inspect_vms(self, val):
|
|
|
e4cbec |
+ self.conf.set("/enable-libguestfs-vm-inspection", val)
|
|
|
e4cbec |
+
|
|
|
e4cbec |
|
|
|
e4cbec |
# Stats history and interval length
|
|
|
e4cbec |
def get_stats_history_length(self):
|
|
|
e4cbec |
diff --git a/virtManager/details.py b/virtManager/details.py
|
|
|
e4cbec |
index be0f25c9..65fea500 100644
|
|
|
e4cbec |
--- a/virtManager/details.py
|
|
|
e4cbec |
+++ b/virtManager/details.py
|
|
|
e4cbec |
@@ -2420,7 +2420,7 @@ class vmmDetails(vmmGObjectUI):
|
|
|
e4cbec |
self.widget(name).set_value(int(IdMap_proper))
|
|
|
e4cbec |
|
|
|
e4cbec |
def refresh_inspection_page(self):
|
|
|
e4cbec |
- inspection_supported = self.config.support_inspection
|
|
|
e4cbec |
+ inspection_supported = self.config.inspection_supported()
|
|
|
e4cbec |
uiutil.set_grid_row_visible(self.widget("details-overview-error"),
|
|
|
e4cbec |
self.vm.inspection.error)
|
|
|
e4cbec |
if self.vm.inspection.error:
|
|
|
e4cbec |
@@ -3120,7 +3120,7 @@ class vmmDetails(vmmGObjectUI):
|
|
|
e4cbec |
|
|
|
e4cbec |
add_hw_list_option(_("Overview"), HW_LIST_TYPE_GENERAL, "computer")
|
|
|
e4cbec |
if not self.is_customize_dialog:
|
|
|
e4cbec |
- if self.config.support_inspection:
|
|
|
e4cbec |
+ if self.config.inspection_supported():
|
|
|
e4cbec |
add_hw_list_option(_("OS information"),
|
|
|
e4cbec |
HW_LIST_TYPE_INSPECTION, "computer")
|
|
|
e4cbec |
add_hw_list_option(_("Performance"), HW_LIST_TYPE_STATS,
|
|
|
e4cbec |
diff --git a/virtManager/engine.py b/virtManager/engine.py
|
|
|
e4cbec |
index 90ff97e9..10e04e03 100644
|
|
|
e4cbec |
--- a/virtManager/engine.py
|
|
|
e4cbec |
+++ b/virtManager/engine.py
|
|
|
e4cbec |
@@ -497,8 +497,8 @@ class vmmEngine(vmmGObject):
|
|
|
e4cbec |
|
|
|
e4cbec |
def _create_inspection_thread(self):
|
|
|
e4cbec |
logging.debug("libguestfs inspection support: %s",
|
|
|
e4cbec |
- self.config.support_inspection)
|
|
|
e4cbec |
- if not self.config.support_inspection:
|
|
|
e4cbec |
+ self.config.inspection_supported())
|
|
|
e4cbec |
+ if not self.config.inspection_supported():
|
|
|
e4cbec |
return
|
|
|
e4cbec |
|
|
|
e4cbec |
from .inspection import vmmInspection
|
|
|
e4cbec |
diff --git a/virtManager/preferences.py b/virtManager/preferences.py
|
|
|
e4cbec |
index 5739af29..fbffa1b5 100644
|
|
|
e4cbec |
--- a/virtManager/preferences.py
|
|
|
e4cbec |
+++ b/virtManager/preferences.py
|
|
|
e4cbec |
@@ -35,7 +35,10 @@ class vmmPreferences(vmmGObjectUI):
|
|
|
e4cbec |
|
|
|
e4cbec |
self._init_ui()
|
|
|
e4cbec |
|
|
|
e4cbec |
+ self._orig_libguestfs_val = None
|
|
|
e4cbec |
+
|
|
|
e4cbec |
self.refresh_view_system_tray()
|
|
|
e4cbec |
+ self.refresh_libguestfs()
|
|
|
e4cbec |
self.refresh_update_interval()
|
|
|
e4cbec |
self.refresh_console_accels()
|
|
|
e4cbec |
self.refresh_console_scaling()
|
|
|
e4cbec |
@@ -63,6 +66,7 @@ class vmmPreferences(vmmGObjectUI):
|
|
|
e4cbec |
"on_prefs_close_clicked": self.close,
|
|
|
e4cbec |
|
|
|
e4cbec |
"on_prefs_system_tray_toggled": self.change_view_system_tray,
|
|
|
e4cbec |
+ "on_prefs_libguestfs_toggled": self.change_libguestfs,
|
|
|
e4cbec |
"on_prefs_stats_update_interval_changed": self.change_update_interval,
|
|
|
e4cbec |
"on_prefs_console_accels_toggled": self.change_console_accels,
|
|
|
e4cbec |
"on_prefs_console_scaling_changed": self.change_console_scaling,
|
|
|
e4cbec |
@@ -173,6 +177,11 @@ class vmmPreferences(vmmGObjectUI):
|
|
|
e4cbec |
combo.set_model(model)
|
|
|
e4cbec |
uiutil.init_combo_text_column(combo, 1)
|
|
|
e4cbec |
|
|
|
e4cbec |
+ if not self.config.support_inspection:
|
|
|
e4cbec |
+ self.widget("prefs-libguestfs").set_sensitive(False)
|
|
|
e4cbec |
+ self.widget("prefs-libguestfs").set_tooltip_text(
|
|
|
e4cbec |
+ _("python libguestfs support is not installed"))
|
|
|
e4cbec |
+
|
|
|
e4cbec |
|
|
|
e4cbec |
#########################
|
|
|
e4cbec |
# Config Change Options #
|
|
|
e4cbec |
@@ -182,6 +191,12 @@ class vmmPreferences(vmmGObjectUI):
|
|
|
e4cbec |
val = self.config.get_view_system_tray()
|
|
|
e4cbec |
self.widget("prefs-system-tray").set_active(bool(val))
|
|
|
e4cbec |
|
|
|
e4cbec |
+ def refresh_libguestfs(self):
|
|
|
e4cbec |
+ val = self.config.get_libguestfs_inspect_vms()
|
|
|
e4cbec |
+ if self._orig_libguestfs_val is None:
|
|
|
e4cbec |
+ self._orig_libguestfs_val = val
|
|
|
e4cbec |
+ self.widget("prefs-libguestfs").set_active(bool(val))
|
|
|
e4cbec |
+
|
|
|
e4cbec |
def refresh_update_interval(self):
|
|
|
e4cbec |
self.widget("prefs-stats-update-interval").set_value(
|
|
|
e4cbec |
self.config.get_stats_update_interval())
|
|
|
e4cbec |
@@ -333,6 +348,14 @@ class vmmPreferences(vmmGObjectUI):
|
|
|
e4cbec |
|
|
|
e4cbec |
def change_view_system_tray(self, src):
|
|
|
e4cbec |
self.config.set_view_system_tray(src.get_active())
|
|
|
e4cbec |
+ def change_libguestfs(self, src):
|
|
|
e4cbec |
+ val = src.get_active()
|
|
|
e4cbec |
+ self.config.set_libguestfs_inspect_vms(val)
|
|
|
e4cbec |
+
|
|
|
e4cbec |
+ vis = (val != self._orig_libguestfs_val and
|
|
|
e4cbec |
+ self.widget("prefs-libguestfs").get_sensitive())
|
|
|
e4cbec |
+ uiutil.set_grid_row_visible(
|
|
|
e4cbec |
+ self.widget("prefs-libguestfs-warn-box"), vis)
|
|
|
e4cbec |
|
|
|
e4cbec |
def change_update_interval(self, src):
|
|
|
e4cbec |
self.config.set_stats_update_interval(src.get_value_as_int())
|
|
|
e4cbec |
--
|
|
|
e4cbec |
2.20.1
|
|
|
e4cbec |
|