[fedora-virt-maint] rpms/virt-manager/devel state_paused.png, NONE, 1.1 state_running.png, NONE, 1.1 state_shutoff.png, NONE, 1.1 virt-manager-0.8.0-conn-close-exception.patch, NONE, 1.1 virt-manager-0.8.0-manager-ui-tweaks.patch, NONE, 1.1 virt-manager-0.8.0-stats-logging.patch, NONE, 1.1 virt-manager.spec, 1.57, 1.58

Cole Robinson crobinso at fedoraproject.org
Thu Sep 17 18:42:27 UTC 2009


Author: crobinso

Update of /cvs/pkgs/rpms/virt-manager/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv5881

Modified Files:
	virt-manager.spec 
Added Files:
	state_paused.png state_running.png state_shutoff.png 
	virt-manager-0.8.0-conn-close-exception.patch 
	virt-manager-0.8.0-manager-ui-tweaks.patch 
	virt-manager-0.8.0-stats-logging.patch 
Log Message:
Don't close libvirt connection for non-fatal errors (bz 522168)
Manager UI tweaks
Generate better errors if disk/net stats polling fails


virt-manager-0.8.0-conn-close-exception.patch:
 connection.py |   10 +++++++++-
 engine.py     |   12 ++++++++----
 2 files changed, 17 insertions(+), 5 deletions(-)

--- NEW FILE virt-manager-0.8.0-conn-close-exception.patch ---
# HG changeset patch
# User Cole Robinson <crobinso at redhat.com>
# Date 1253131339 14400
# Node ID 1c886d1863f72e7ddd5fb99050362296be6a9deb
# Parent  9242a7fe76b16c6505bdd3d3d328ae8f0c56da10
Don't close connection on all libvirt errors: only if libvirtd goes away.

diff -r 9242a7fe76b1 -r 1c886d1863f7 src/virtManager/connection.py
--- a/src/virtManager/connection.py	Wed Sep 16 16:01:54 2009 -0400
+++ b/src/virtManager/connection.py	Wed Sep 16 16:02:19 2009 -0400
@@ -941,7 +941,15 @@
             updateVMs = newVMs
 
         for uuid in updateVMs:
-            self.vms[uuid].tick(now)
+            vm = self.vms[uuid]
+            try:
+                vm.tick(now)
+            except libvirt.libvirtError, e:
+                if e.get_error_code() == libvirt.VIR_ERR_SYSTEM_ERROR:
+                    raise
+                logging.exception("Tick for VM '%s' failed" % vm.get_name())
+            except Exception, e:
+                logging.exception("Tick for VM '%s' failed" % vm.get_name())
 
         if not noStatsUpdate:
             self._recalculate_stats(now)
diff -r 9242a7fe76b1 -r 1c886d1863f7 src/virtManager/engine.py
--- a/src/virtManager/engine.py	Wed Sep 16 16:01:54 2009 -0400
+++ b/src/virtManager/engine.py	Wed Sep 16 16:02:19 2009 -0400
@@ -199,10 +199,14 @@
                 self.connections[uri]["connection"].tick()
             except KeyboardInterrupt:
                 raise
-            except:
-                logging.exception("Could not refresh connection %s." % uri)
-                logging.debug("Closing connection since refresh failed.")
-                self.connections[uri]["connection"].close()
+            except libvirt.libvirtError, e:
+                if e.get_error_code() == libvirt.VIR_ERR_SYSTEM_ERROR:
+                    logging.exception("Could not refresh connection %s." % uri)
+                    logging.debug("Closing connection since libvirtd "
+                                  "appears to have stopped.")
+                    self.connections[uri]["connection"].close()
+                else:
+                    raise
         return 1
 
     def change_timer_interval(self,ignore1,ignore2,ignore3,ignore4):

virt-manager-0.8.0-manager-ui-tweaks.patch:
 config.py  |   14 +++++++++++++-
 domain.py  |    2 ++
 manager.py |   51 ++++++++++++++++++++++++---------------------------
 3 files changed, 39 insertions(+), 28 deletions(-)

--- NEW FILE virt-manager-0.8.0-manager-ui-tweaks.patch ---
# HG changeset patch
# User Cole Robinson <crobinso at redhat.com>
# Date 1253201058 14400
# Node ID a6f055361d165bea5fbb3c62ec54a820987a7dde
# Parent  1c886d1863f72e7ddd5fb99050362296be6a9deb
Update new VM status icons.

Previous round didn't convey state very well, and looked too much like
buttons.

diff -r 1c886d1863f7 -r a6f055361d16 pixmaps/state_paused.png
Binary file pixmaps/state_paused.png has changed
diff -r 1c886d1863f7 -r a6f055361d16 pixmaps/state_running.png
Binary file pixmaps/state_running.png has changed
diff -r 1c886d1863f7 -r a6f055361d16 pixmaps/state_shutoff.png
Binary file pixmaps/state_shutoff.png has changed
diff -r 1c886d1863f7 -r a6f055361d16 src/virtManager/config.py
--- a/src/virtManager/config.py	Wed Sep 16 16:02:19 2009 -0400
+++ b/src/virtManager/config.py	Thu Sep 17 11:24:18 2009 -0400
@@ -90,7 +90,16 @@
             libvirt.VIR_DOMAIN_SHUTOFF: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_shutoff.png", 18, 18),
             libvirt.VIR_DOMAIN_NOSTATE: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 18, 18),
             }
-        #initialize the help stuff
+        self.status_icons_large = {
+            libvirt.VIR_DOMAIN_BLOCKED: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 32, 32),
+            libvirt.VIR_DOMAIN_CRASHED: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_crashed.png", 32, 32),
+            libvirt.VIR_DOMAIN_PAUSED: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_paused.png", 32, 32),
+            libvirt.VIR_DOMAIN_RUNNING: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 32, 32),
+            libvirt.VIR_DOMAIN_SHUTDOWN: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_shutoff.png", 32, 32),
+            libvirt.VIR_DOMAIN_SHUTOFF: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_shutoff.png", 32, 32),
+            libvirt.VIR_DOMAIN_NOSTATE: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 32, 32),
+            }
+
         props = { gnome.PARAM_APP_DATADIR : self.get_data_dir()}
         gnome.program_init(self.get_appname(), self.get_appversion(), \
                                properties=props)
@@ -100,6 +109,9 @@
     def get_vm_status_icon(self, state):
         return self.status_icons[state]
 
+    def get_vm_status_icon_large(self, state):
+        return self.status_icons_large[state]
+
     def get_shutdown_icon_name(self):
         theme = gtk.icon_theme_get_default()
         if theme.has_icon("system-shutdown"):
diff -r 1c886d1863f7 -r a6f055361d16 src/virtManager/domain.py
--- a/src/virtManager/domain.py	Wed Sep 16 16:02:19 2009 -0400
+++ b/src/virtManager/domain.py	Thu Sep 17 11:24:18 2009 -0400
@@ -728,6 +728,8 @@
 
     def run_status_icon(self):
         return self.config.get_vm_status_icon(self.status())
+    def run_status_icon_large(self):
+        return self.config.get_vm_status_icon_large(self.status())
 
     def _is_serial_console_tty_accessible(self, path):
         # pty serial scheme doesn't work over remote
diff -r 1c886d1863f7 -r a6f055361d16 src/virtManager/manager.py
--- a/src/virtManager/manager.py	Wed Sep 16 16:02:19 2009 -0400
+++ b/src/virtManager/manager.py	Thu Sep 17 11:24:18 2009 -0400
@@ -493,7 +493,7 @@
         row.insert(ROW_NAME, vm.get_name())
         row.insert(ROW_MARKUP, row[ROW_NAME])
         row.insert(ROW_STATUS, vm.run_status())
-        row.insert(ROW_STATUS_ICON, vm.run_status_icon())
+        row.insert(ROW_STATUS_ICON, vm.run_status_icon_large())
         row.insert(ROW_KEY, vm.get_uuid())
         row.insert(ROW_HINT, None)
         row.insert(ROW_IS_CONN, False)
@@ -575,7 +575,7 @@
 
         row = self.rows[self.vm_row_key(vm)]
         row[ROW_STATUS] = vm.run_status()
-        row[ROW_STATUS_ICON] = vm.run_status_icon()
+        row[ROW_STATUS_ICON] = vm.run_status_icon_large()
         row[ROW_IS_VM_RUNNING] = vm.is_active()
         model.row_changed(row.path, row.iter)
 
@@ -850,7 +850,6 @@
         statusCol.add_attribute(status_icon, 'cell-background', ROW_COLOR)
         statusCol.add_attribute(status_icon, 'pixbuf', ROW_STATUS_ICON)
         statusCol.add_attribute(status_icon, 'visible', ROW_IS_VM)
-        statusCol.add_attribute(status_icon, 'sensitive', ROW_IS_VM_RUNNING)
 
         name_txt = gtk.CellRendererText()
         nameCol.pack_start(name_txt, True)
# HG changeset patch
# User Cole Robinson <crobinso at redhat.com>
# Date 1253205341 14400
# Node ID cdbe1da3ce75a5ad06b8e07e891ac35d1b246685
# Parent  a6f055361d165bea5fbb3c62ec54a820987a7dde
Change VM name text arrangement in manager view.

Shrink text size, add a second row that shows the VM status. Fills the
display up a bit so it doesn't look so sparse.

diff -r a6f055361d16 -r cdbe1da3ce75 src/virtManager/manager.py
--- a/src/virtManager/manager.py	Thu Sep 17 11:24:18 2009 -0400
+++ b/src/virtManager/manager.py	Thu Sep 17 12:35:41 2009 -0400
@@ -486,12 +486,26 @@
         else:
             self.emit("action-refresh-console", uri, vmuuid)
 
+    def _build_conn_markup(self, conn, row):
+        if conn.state == conn.STATE_DISCONNECTED:
+            markup = ("<span font='9' color='#5b5b5b'>%s - "
+                      "Not Connected</span>" % row[ROW_NAME])
+        else:
+            markup = ("<span font='9'>%s</span>" % row[ROW_NAME])
+        return markup
+
+    def _build_vm_markup(self, vm, row):
+        markup = ("<span font='10'>%s</span>\n"
+                  "<span font='9' color='#989898'>%s</span>" %
+                  (row[ROW_NAME], row[ROW_STATUS]))
+        return markup
+
     def _append_vm(self, model, vm, conn):
         parent = self.rows[conn.get_uri()].iter
         row = []
         row.insert(ROW_HANDLE, vm)
         row.insert(ROW_NAME, vm.get_name())
-        row.insert(ROW_MARKUP, row[ROW_NAME])
+        row.insert(ROW_MARKUP, "")
         row.insert(ROW_STATUS, vm.run_status())
         row.insert(ROW_STATUS_ICON, vm.run_status_icon_large())
         row.insert(ROW_KEY, vm.get_uuid())
@@ -502,6 +516,8 @@
         row.insert(ROW_IS_VM_RUNNING, vm.is_active())
         row.insert(ROW_COLOR, "white")
 
+        row[ROW_MARKUP] = self._build_vm_markup(vm, row)
+
         _iter = model.append(parent, row)
         path = model.get_path(_iter)
         self.rows[self.vm_row_key(vm)] = model[path]
@@ -512,12 +528,7 @@
         row = []
         row.insert(ROW_HANDLE, conn)
         row.insert(ROW_NAME, conn.get_pretty_desc_inactive(False))
-        if conn.state == conn.STATE_DISCONNECTED:
-            markup = ("<span font='9.5' color='#5b5b5b'>%s - "
-                      "Not Connected</span>" % row[ROW_NAME])
-        else:
-            markup = ("<span font='9.5'>%s</span>" % row[ROW_NAME])
-        row.insert(ROW_MARKUP, markup)
+        row.insert(ROW_MARKUP, self._build_conn_markup(conn, row))
         row.insert(ROW_STATUS, ("<span font='9'>%s</span>" %
                                 conn.get_state_text()))
         row.insert(ROW_STATUS_ICON, None)
@@ -589,12 +600,7 @@
         model = vmlist.get_model()
         row = self.rows[conn.get_uri()]
 
-        if conn.state == conn.STATE_DISCONNECTED:
-            markup = ("<span font='9.5' color='#5b5b5b'>%s - "
-                      "Not Connected</span>" % row[ROW_NAME])
-        else:
-            markup = ("<span font='9.5'>%s</span>" % row[ROW_NAME])
-        row[ROW_MARKUP] = markup
+        row[ROW_MARKUP] = self._build_conn_markup(conn, row)
         row[ROW_STATUS] = "<span font='9'>%s</span>" % conn.get_state_text()
         row[ROW_IS_CONN_CONNECTED] = conn.state != conn.STATE_DISCONNECTED
 
# HG changeset patch
# User Cole Robinson <crobinso at redhat.com>
# Date 1253201111 14400
# Node ID 739a6876af4692d6f86d8813f6dd3aa046bf6a8b
# Parent  cdbe1da3ce75a5ad06b8e07e891ac35d1b246685
Drop row coloring for managed connection rows.

Looks kind of funky with lots of dark colored rows for a user with multiple
connections.

diff -r cdbe1da3ce75 -r 739a6876af46 src/virtManager/manager.py
--- a/src/virtManager/manager.py	Thu Sep 17 12:35:41 2009 -0400
+++ b/src/virtManager/manager.py	Thu Sep 17 11:25:11 2009 -0400
@@ -49,8 +49,6 @@
 ROW_IS_CONN_CONNECTED = 8
 ROW_IS_VM = 9
 ROW_IS_VM_RUNNING = 10
-ROW_COLOR = 11
-ROW_HEIGHT = 12
 
 # Columns in the tree view
 COL_NAME = 0
@@ -514,7 +512,6 @@
         row.insert(ROW_IS_CONN_CONNECTED, True)
         row.insert(ROW_IS_VM, True)
         row.insert(ROW_IS_VM_RUNNING, vm.is_active())
-        row.insert(ROW_COLOR, "white")
 
         row[ROW_MARKUP] = self._build_vm_markup(vm, row)
 
@@ -539,7 +536,6 @@
                    conn.state != conn.STATE_DISCONNECTED)
         row.insert(ROW_IS_VM, False)
         row.insert(ROW_IS_VM_RUNNING, False)
-        row.insert(ROW_COLOR, "#d4d2d2")
 
         _iter = model.append(None, row)
         path = model.get_path(_iter)
@@ -823,9 +819,9 @@
         vmlist = self.window.get_widget("vm-list")
 
         # Handle, name, markup, status, status icon, key/uuid, hint, is conn,
-        # is conn connected, is vm, is vm running, color
+        # is conn connected, is vm, is vm running
         model = gtk.TreeStore(object, str, str, str, gtk.gdk.Pixbuf, str, str,
-                              bool, bool, bool, bool, str)
+                              bool, bool, bool, bool)
         vmlist.set_model(model)
         util.tooltip_wrapper(vmlist, ROW_HINT, "set_tooltip_column")
 
@@ -834,7 +830,7 @@
 
         nameCol = gtk.TreeViewColumn(_("Name"))
         nameCol.set_expand(True)
-        nameCol.set_spacing(12)
+        nameCol.set_spacing(6)
         cpuUsageCol = gtk.TreeViewColumn(_("CPU usage"))
         cpuUsageCol.set_min_width(150)
 
@@ -853,13 +849,11 @@
 
         status_icon = gtk.CellRendererPixbuf()
         statusCol.pack_start(status_icon, False)
-        statusCol.add_attribute(status_icon, 'cell-background', ROW_COLOR)
         statusCol.add_attribute(status_icon, 'pixbuf', ROW_STATUS_ICON)
         statusCol.add_attribute(status_icon, 'visible', ROW_IS_VM)
 
         name_txt = gtk.CellRendererText()
         nameCol.pack_start(name_txt, True)
-        nameCol.add_attribute(name_txt, 'cell-background', ROW_COLOR)
         nameCol.add_attribute(name_txt, 'markup', ROW_MARKUP)
         nameCol.set_sort_column_id(VMLIST_SORT_NAME)
 
@@ -870,9 +864,7 @@
         cpuUsage_img.set_property("reversed", True)
         cpuUsageCol.pack_start(cpuUsage_img, True)
         cpuUsageCol.pack_start(cpuUsage_txt, False)
-        cpuUsageCol.add_attribute(cpuUsage_img, 'cell-background', ROW_COLOR)
         cpuUsageCol.add_attribute(cpuUsage_img, 'visible', ROW_IS_VM)
-        cpuUsageCol.add_attribute(cpuUsage_txt, 'cell-background', ROW_COLOR)
         cpuUsageCol.add_attribute(cpuUsage_txt, 'visible', ROW_IS_CONN)
         cpuUsageCol.set_sort_column_id(VMLIST_SORT_STATS)
         self.stats_sparkline = cpuUsage_img

virt-manager-0.8.0-stats-logging.patch:
 domain.py |   20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

--- NEW FILE virt-manager-0.8.0-stats-logging.patch ---
# HG changeset patch
# User Cole Robinson <crobinso at redhat.com>
# Date 1253131314 14400
# Node ID 9242a7fe76b16c6505bdd3d3d328ae8f0c56da10
# Parent  6aa2dc9ada0c43e19680af5b922cd643e35602d0
Better logging and error avoidance with net/disk stats routines.

diff -r 6aa2dc9ada0c -r 9242a7fe76b1 src/virtManager/domain.py
--- a/src/virtManager/domain.py	Wed Sep 16 16:00:47 2009 -0400
+++ b/src/virtManager/domain.py	Wed Sep 16 16:01:54 2009 -0400
@@ -337,8 +337,12 @@
             return rx, tx
 
         for netdev in self.get_network_devices(refresh_if_necc=False):
+            dev = netdev[4]
+            if not dev:
+                continue
+
             try:
-                io = self.vm.interfaceStats(netdev[4])
+                io = self.vm.interfaceStats(dev)
                 if io:
                     rx += io[0]
                     tx += io[4]
@@ -347,7 +351,9 @@
                     logging.debug("Net stats not supported: %s" % err)
                     self._stats_net_supported = False
                 else:
-                    logging.error("Error reading net stats: %s" % err)
+                    logging.error("Error reading net stats for "
+                                  "'%s' dev '%s': %s" %
+                                  (self.get_name(), dev, err))
         return rx, tx
 
     def _sample_disk_io_dummy(self):
@@ -360,8 +366,12 @@
             return rd, wr
 
         for disk in self.get_disk_devices(refresh_if_necc=False):
+            dev = disk[2]
+            if not dev:
+                continue
+
             try:
-                io = self.vm.blockStats(disk[2])
+                io = self.vm.blockStats(dev)
                 if io:
                     rd += io[1]
                     wr += io[3]
@@ -370,7 +380,9 @@
                     logging.debug("Disk stats not supported: %s" % err)
                     self._stats_disk_supported = False
                 else:
-                    logging.error("Error reading disk stats: %s" % err)
+                    logging.error("Error reading disk stats for "
+                                  "'%s' dev '%s': %s" %
+                                  (self.get_name(), dev, err))
         return rd, wr
 
     def _get_cur_rate(self, what):


Index: virt-manager.spec
===================================================================
RCS file: /cvs/pkgs/rpms/virt-manager/devel/virt-manager.spec,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -p -r1.57 -r1.58
--- virt-manager.spec	14 Sep 2009 15:05:51 -0000	1.57
+++ virt-manager.spec	17 Sep 2009 18:42:27 -0000	1.58
@@ -8,13 +8,16 @@
 
 Name: virt-manager
 Version: 0.8.0
-Release: 3%{_extra_release}
+Release: 4%{_extra_release}
 Summary: Virtual Machine Manager
 
 Group: Applications/Emulators
 License: GPLv2+
 URL: http://virt-manager.org/
 Source0: http://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.gz
+Source1: state_paused.png
+Source2: state_running.png
+Source3: state_shutoff.png
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildArch: noarch
 # Fix disk XML mangling via connect/eject cdrom (bz 516116)
@@ -27,6 +30,12 @@ Patch3: %{name}-%{version}-newvm-storage
 Patch4: %{name}-%{version}-addhw-errmsg-typo.patch
 # Fixes for pylint script to return nicer results on F11/F12
 Patch5: %{name}-%{version}-pylint-tweak.patch
+# Don't close libvirt connection for non-fatal errors (bz 522168)
+Patch6: /home/boston/crobinso/virt-manager-0.8.0-conn-close-exception.patch
+# Manager UI tweaks
+Patch7: /home/boston/crobinso/virt-manager-0.8.0-manager-ui-tweaks.patch
+# Generate better errors is disk/net stats polling fails
+Patch8: /home/boston/crobinso/virt-manager-0.8.0-stats-logging.patch
 
 # These two are just the oldest version tested
 Requires: pygtk2 >= 1.99.12-6
@@ -91,11 +100,17 @@ management API.
 
 %prep
 %setup -q
+cp %{SOURCE1} pixmaps
+cp %{SOURCE2} pixmaps
+cp %{SOURCE3} pixmaps
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
 
 %build
 %configure
@@ -169,6 +184,11 @@ fi
 %{_datadir}/dbus-1/services/%{name}.service
 
 %changelog
+* Thu Sep 17 2009 Cole Robinson <crobinso at redhat.com> - 0.8.0-4.fc12
+- Don't close libvirt connection for non-fatal errors (bz 522168)
+- Manager UI tweaks
+- Generate better errors if disk/net stats polling fails
+
 * Mon Sep 14 2009 Cole Robinson <crobinso at redhat.com> - 0.8.0-3.fc12
 - Fix disk XML mangling via connect/eject cdrom (bz 516116)
 - Fix delete button sensitivity (bz 518536)




More information about the Fedora-virt-maint mailing list