Hello community, here is the log from the commit of package virt-manager for openSUSE:Factory checked in at 2014-01-28 12:03:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/virt-manager (Old) and /work/SRC/openSUSE:Factory/.virt-manager.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "virt-manager" Changes: -------- --- /work/SRC/openSUSE:Factory/virt-manager/virt-manager.changes 2014-01-15 16:27:23.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.virt-manager.new/virt-manager.changes 2014-01-28 12:03:54.000000000 +0100 @@ -1,0 +2,14 @@ +Wed Jan 23 18:00:00 CET 2014 - tbehr...@suse.com + +- Fate#313213: pending upstream patches added + * added Add-memory-stats-widget-also-to-manager-tree-view.patch + * added Base-mem-statistics-on-virDomainMemoryStats-if-avail.patch + * added Attempt-empty-path-on-virDomainBlockStats.patch + +------------------------------------------------------------------- +Wed Jan 22 11:03:50 MST 2014 - carn...@suse.com + +- Add Requires on virt-manager for virt-install +- Add sles12/sled12 as supported distros + +------------------------------------------------------------------- New: ---- Add-memory-stats-widget-also-to-manager-tree-view.patch Attempt-empty-path-on-virDomainBlockStats.patch Base-mem-statistics-on-virDomainMemoryStats-if-avail.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ virt-manager.spec ++++++ --- /var/tmp/diff_new_pack.pduQiz/_old 2014-01-28 12:03:55.000000000 +0100 +++ /var/tmp/diff_new_pack.pduQiz/_new 2014-01-28 12:03:55.000000000 +0100 @@ -62,13 +62,18 @@ Patch158: virtinst-allow-ide-hdb.patch Patch159: virtinst-xen-drive-type.patch Patch160: virtinst-clone-disks.patch +# Pending upstream +Patch200: Add-memory-stats-widget-also-to-manager-tree-view.patch +Patch201: Base-mem-statistics-on-virDomainMemoryStats-if-avail.patch +Patch202: Attempt-empty-path-on-virDomainBlockStats.patch + BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build %define verrel %{version}-%{release} +Requires: virt-manager-common = %{verrel} Requires: gtk3 Requires: python-gconf -Requires: virt-manager-common = %{verrel} Requires: vm-install >= 0.5.6 # Libvirt-glib @@ -83,13 +88,15 @@ Requires: gtk-vnc2 Requires: libspice-client-glib-2_0-8 Requires: libspice-client-gtk-3_0-4 -Requires: typelib-1_0-GVnc-1_0 -Requires: typelib-1_0-Gtk-3_0 -Requires: typelib-1_0-GtkVnc-2_0 Requires: typelib-1_0-SpiceClientGlib-2_0 Requires: typelib-1_0-SpiceClientGtk-3_0 +Requires: typelib-1_0-Gtk-3_0 +Requires: typelib-1_0-GVnc-1_0 +Requires: typelib-1_0-GtkVnc-2_0 Recommends: python-SpiceClientGtk +Requires: virt-install + %if %{with_guestfs} Requires: python-libguestfs %endif @@ -114,8 +121,8 @@ # This version not strictly required: virt-manager should work with older, # however varying amounts of functionality will not be enabled. Requires: libvirt-python >= 0.7.0 -Requires: python-ipaddr Requires: python-urlgrabber +Requires: python-ipaddr %description common Common files used by the different virt-manager interfaces, as well as @@ -128,10 +135,10 @@ Requires: virt-manager-common = %{verrel} -Provides: python-virtinst Provides: virt-clone -Provides: virt-convert Provides: virt-image +Provides: virt-convert +Provides: python-virtinst Obsoletes: python-virtinst <= 0.600.4 %description -n virt-install @@ -169,6 +176,9 @@ %patch158 -p1 %patch159 -p1 %patch160 -p1 +%patch200 -p1 +%patch201 -p1 +%patch202 -p1 %build %if %{qemu_user} ++++++ Add-memory-stats-widget-also-to-manager-tree-view.patch ++++++ >From 43f0549e2f4e1479cf3e9fe9201a8224eb5b56a1 Mon Sep 17 00:00:00 2001 From: Thorsten Behrens <tbehr...@suse.com> Date: Wed, 18 Dec 2013 14:42:42 +0100 Subject: [PATCH 1/3] Add memory stats widget also to manager tree view. (crobinso: Fix an initialization issue) Conflicts: virtManager/manager.py --- data/org.virt-manager.virt-manager.gschema.xml | 6 ++++ ui/vmm-manager.ui | 9 ++++++ virtManager/config.py | 6 ++++ virtManager/domain.py | 3 ++ virtManager/manager.py | 41 ++++++++++++++++++++++++-- 5 files changed, 62 insertions(+), 3 deletions(-) Index: virt-manager-0.10.0/data/org.virt-manager.virt-manager.gschema.xml =================================================================== --- virt-manager-0.10.0.orig/data/org.virt-manager.virt-manager.gschema.xml +++ virt-manager-0.10.0/data/org.virt-manager.virt-manager.gschema.xml @@ -94,6 +94,12 @@ <description>Show the host cpu usage field in the domain list summary view</description> </key> + <key name="memory-usage" type="b"> + <default>false</default> + <summary>Show memory usage in summary</summary> + <description>Show memory usage field in the domain list summary view</description> + </key> + </schema> <schema id="org.virt-manager.virt-manager.stats" path="/org/virt-manager/virt-manager/stats/"> Index: virt-manager-0.10.0/ui/vmm-manager.ui =================================================================== --- virt-manager-0.10.0.orig/ui/vmm-manager.ui +++ virt-manager-0.10.0/ui/vmm-manager.ui @@ -190,6 +190,15 @@ </object> </child> <child> + <object class="GtkCheckMenuItem" id="menu_view_stats_memory"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Memory Usage</property> + <property name="use_underline">True</property> + <signal name="activate" handler="on_menu_view_memory_usage_activate" swapped="no"/> + </object> + </child> + <child> <object class="GtkCheckMenuItem" id="menu_view_stats_disk"> <property name="visible">True</property> <property name="can_focus">False</property> Index: virt-manager-0.10.0/virtManager/config.py =================================================================== --- virt-manager-0.10.0.orig/virtManager/config.py +++ virt-manager-0.10.0/virtManager/config.py @@ -251,6 +251,8 @@ class vmmConfig(object): return self.conf.get("/vmlist-fields/cpu-usage") def is_vmlist_host_cpu_usage_visible(self): return self.conf.get("/vmlist-fields/host-cpu-usage") + def is_vmlist_memory_usage_visible(self): + return self.conf.get("/vmlist-fields/memory-usage") def is_vmlist_disk_io_visible(self): return self.conf.get("/vmlist-fields/disk-usage") def is_vmlist_network_traffic_visible(self): @@ -260,6 +262,8 @@ class vmmConfig(object): self.conf.set("/vmlist-fields/cpu-usage", state) def set_vmlist_host_cpu_usage_visible(self, state): self.conf.set("/vmlist-fields/host-cpu-usage", state) + def set_vmlist_memory_usage_visible(self, state): + self.conf.set("/vmlist-fields/memory-usage", state) def set_vmlist_disk_io_visible(self, state): self.conf.set("/vmlist-fields/disk-usage", state) def set_vmlist_network_traffic_visible(self, state): @@ -269,6 +273,8 @@ class vmmConfig(object): return self.conf.notify_add("/vmlist-fields/cpu-usage", cb) def on_vmlist_host_cpu_usage_visible_changed(self, cb): return self.conf.notify_add("/vmlist-fields/host-cpu-usage", cb) + def on_vmlist_memory_usage_visible_changed(self, cb): + return self.conf.notify_add("/vmlist-fields/memory-usage", cb) def on_vmlist_disk_io_visible_changed(self, cb): return self.conf.notify_add("/vmlist-fields/disk-usage", cb) def on_vmlist_network_traffic_visible_changed(self, cb): Index: virt-manager-0.10.0/virtManager/domain.py =================================================================== --- virt-manager-0.10.0.orig/virtManager/domain.py +++ virt-manager-0.10.0/virtManager/domain.py @@ -1475,6 +1475,9 @@ class vmmDomain(vmmLibvirtObject): if len(cpudata) > limit: cpudata = cpudata[0:limit] return cpudata + def memory_usage_vector_limit(self, limit): + return self.in_out_vector_limit(self.stats_memory_vector(), + limit) def network_traffic_vector_limit(self, limit, ceil=None): return self.in_out_vector_limit(self.network_traffic_vector(ceil), limit) Index: virt-manager-0.10.0/virtManager/manager.py =================================================================== --- virt-manager-0.10.0.orig/virtManager/manager.py +++ virt-manager-0.10.0/virtManager/manager.py @@ -58,8 +58,9 @@ ROW_INSPECTION_OS_ICON) = range(13) COL_NAME = 0 COL_GUEST_CPU = 1 COL_HOST_CPU = 2 -COL_DISK = 3 -COL_NETWORK = 4 +COL_MEM = 3 +COL_DISK = 4 +COL_NETWORK = 5 try: @@ -128,6 +129,7 @@ class vmmManager(vmmGObjectUI): # list.get_column, so avoid it self.diskcol = None self.netcol = None + self.memcol = None self.guestcpucol = None self.hostcpucol = None @@ -136,6 +138,8 @@ class vmmManager(vmmGObjectUI): self.toggle_stats_visible_guest_cpu, "on_menu_view_host_cpu_usage_activate": self.toggle_stats_visible_host_cpu, + "on_menu_view_memory_usage_activate": + self.toggle_stats_visible_memory_usage, "on_menu_view_disk_io_activate" : self.toggle_stats_visible_disk, "on_menu_view_network_traffic_activate": @@ -224,6 +228,7 @@ class vmmManager(vmmGObjectUI): self.diskcol = None self.guestcpucol = None + self.memcol = None self.hostcpucol = None self.netcol = None @@ -256,6 +261,9 @@ class vmmManager(vmmGObjectUI): self.config.on_vmlist_host_cpu_usage_visible_changed( self.toggle_host_cpu_usage_visible_widget)) self.add_gconf_handle( + self.config.on_vmlist_memory_usage_visible_changed( + self.toggle_memory_usage_visible_widget)) + self.add_gconf_handle( self.config.on_vmlist_disk_io_visible_changed( self.toggle_disk_io_visible_widget)) self.add_gconf_handle( @@ -271,7 +279,6 @@ class vmmManager(vmmGObjectUI): self.config.on_stats_enable_net_poll_changed(self.enable_polling, COL_NETWORK)) - self.widget("menu_view_stats_guest_cpu").set_active( self.config.is_vmlist_guest_cpu_usage_visible()) self.widget("menu_view_stats_host_cpu").set_active( @@ -460,6 +467,10 @@ class vmmManager(vmmGObjectUI): self.host_cpu_usage_img, self.config.is_vmlist_host_cpu_usage_visible(), COL_HOST_CPU) + self.memcol = make_stats_column(_("Memory usage"), + self.memory_usage_img, + self.config.is_vmlist_memory_usage_visible(), + COL_MEM) self.diskcol = make_stats_column(_("Disk I/O"), self.disk_io_img, self.config.is_vmlist_disk_io_visible(), @@ -472,6 +483,7 @@ class vmmManager(vmmGObjectUI): model.set_sort_func(COL_NAME, self.vmlist_name_sorter) model.set_sort_func(COL_GUEST_CPU, self.vmlist_guest_cpu_usage_sorter) model.set_sort_func(COL_HOST_CPU, self.vmlist_host_cpu_usage_sorter) + model.set_sort_func(COL_MEM, self.vmlist_memory_usage_sorter) model.set_sort_func(COL_DISK, self.vmlist_disk_io_sorter) model.set_sort_func(COL_NETWORK, self.vmlist_network_usage_sorter) model.set_sort_column_id(COL_NAME, Gtk.SortType.ASCENDING) @@ -1162,6 +1174,13 @@ class vmmManager(vmmGObjectUI): return cmp(obj1.host_cpu_time_percentage(), obj2.host_cpu_time_percentage()) + def vmlist_memory_usage_sorter(self, model, iter1, iter2, ignore): + obj1 = model.get_value(iter1, ROW_HANDLE) + obj2 = model.get_value(iter2, ROW_HANDLE) + + return cmp(obj1.stats_memory(), + obj2.stats_memory()) + def vmlist_disk_io_sorter(self, model, iter1, iter2, ignore): obj1 = model.get_value(iter1, ROW_HANDLE) obj2 = model.get_value(iter2, ROW_HANDLE) @@ -1211,6 +1230,11 @@ class vmmManager(vmmGObjectUI): self.diskcol.set_visible(val) self.widget("menu_view_stats_disk").set_active(val) + def toggle_memory_usage_visible_widget(self): + val = self.config.is_vmlist_memory_usage_visible() + self.memcol.set_visible(val) + self.widget("menu_view_stats_memory").set_active(val) + def toggle_guest_cpu_usage_visible_widget(self): val = self.config.is_vmlist_guest_cpu_usage_visible() self.guestcpucol.set_visible(val) @@ -1226,6 +1250,7 @@ class vmmManager(vmmGObjectUI): set_stats = { COL_GUEST_CPU: self.config.set_vmlist_guest_cpu_usage_visible, COL_HOST_CPU: self.config.set_vmlist_host_cpu_usage_visible, + COL_MEM: self.config.set_vmlist_memory_usage_visible, COL_DISK: self.config.set_vmlist_disk_io_visible, COL_NETWORK: self.config.set_vmlist_network_traffic_visible, } @@ -1235,6 +1260,8 @@ class vmmManager(vmmGObjectUI): self.toggle_stats_visible(src, COL_GUEST_CPU) def toggle_stats_visible_host_cpu(self, src): self.toggle_stats_visible(src, COL_HOST_CPU) + def toggle_stats_visible_memory_usage(self, src): + self.toggle_stats_visible(src, COL_MEM) def toggle_stats_visible_disk(self, src): self.toggle_stats_visible(src, COL_DISK) def toggle_stats_visible_network(self, src): @@ -1256,6 +1283,14 @@ class vmmManager(vmmGObjectUI): data = obj.host_cpu_time_vector_limit(GRAPH_LEN) cell.set_property('data_array', data) + def memory_usage_img(self, column_ignore, cell, model, _iter, data): + obj = model[_iter][ROW_HANDLE] + if obj is None or not hasattr(obj, "conn"): + return + + data = obj.memory_usage_vector_limit(GRAPH_LEN) + cell.set_property('data_array', data) + def disk_io_img(self, column_ignore, cell, model, _iter, data): obj = model.get_value(_iter, ROW_HANDLE) if obj is None or not hasattr(obj, "conn"): ++++++ Attempt-empty-path-on-virDomainBlockStats.patch ++++++ >From 561e7318d19adaba9ea79f6f3010bc1fe9d37d10 Mon Sep 17 00:00:00 2001 From: Thorsten Behrens <tbehr...@suse.com> Date: Sun, 12 Jan 2014 03:13:54 +0100 Subject: [PATCH 3/3] Attempt empty path on virDomainBlockStats libvirt for some backends yields summary domain stats for empty disk path. Conflicts: virtManager/domain.py --- virtManager/domain.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) Index: virt-manager-0.10.0/virtManager/domain.py =================================================================== --- virt-manager-0.10.0.orig/virtManager/domain.py +++ virt-manager-0.10.0/virtManager/domain.py @@ -196,6 +196,7 @@ class vmmDomain(vmmLibvirtObject): self._enable_disk_poll = False self._stats_disk_supported = True self._stats_disk_skip = [] + self._summary_disk_stats_skip = False self.inspection = vmmInspectionData() @@ -1705,6 +1706,18 @@ class vmmDomain(vmmLibvirtObject): not self.is_active()): return rd, wr + # attempt to retrieve summary stats for domain + if not self._summary_disk_stats_skip: + try: + io = self._backend.blockStats('') + if io: + rd = io[1] + wr = io[3] + return rd, wr + except libvirt.libvirtError: + self._summary_disk_stats_skip = True + + # did not work, iterate over all disks for disk in self.get_disk_devices(refresh_if_necc=False): dev = disk.target if not dev: ++++++ Base-mem-statistics-on-virDomainMemoryStats-if-avail.patch ++++++ >From 229c3b692e6b340951af371e0f68484bc6a8868a Mon Sep 17 00:00:00 2001 From: Thorsten Behrens <tbehr...@suse.com> Date: Wed, 18 Dec 2013 14:42:43 +0100 Subject: [PATCH 2/3] Base mem statistics on virDomainMemoryStats if available. Attempt to query domain memory stats via virDomainMemoryStats. (crobinso: remove the broken fallback, since it's confusing) --- virtManager/domain.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) Index: virt-manager-0.10.0/virtManager/domain.py =================================================================== --- virt-manager-0.10.0.orig/virtManager/domain.py +++ virt-manager-0.10.0/virtManager/domain.py @@ -187,6 +187,8 @@ class vmmDomain(vmmLibvirtObject): self._guest = None self._guest_to_define = None + self._mem_stats_supported = True + self._enable_net_poll = False self._stats_net_supported = True self._stats_net_skip = [] @@ -1303,12 +1305,26 @@ class vmmDomain(vmmLibvirtObject): # Stats helpers ### ################### - def _sample_mem_stats(self, info): - curmem = info[2] - if not self.is_active(): - curmem = 0 + def _sample_mem_stats(self): + curmem = 0 + totalmem = 1 + + if self._mem_stats_supported and self.is_active(): + try: + stats = self._backend.memoryStats() + # did we get both required stat items back? + if set(['actual', 'rss']).issubset( + set(stats.keys())): + curmem = stats['rss'] + totalmem = stats['actual'] + except libvirt.libvirtError, err: + if util.is_error_nosupport(err): + logging.debug("Mem stats not supported: %s", err) + self._mem_stats_supported = False + else: + logging.error("Error reading mem stats: %s", err) - pcentCurrMem = curmem * 100.0 / self.maximum_memory() + pcentCurrMem = curmem * 100.0 / totalmem pcentCurrMem = max(0.0, min(pcentCurrMem, 100.0)) return pcentCurrMem, curmem @@ -1751,7 +1767,7 @@ class vmmDomain(vmmLibvirtObject): (cpuTime, cpuTimeAbs, pcentHostCpu, pcentGuestCpu) = self._sample_cpu_stats(info, now) - pcentCurrMem, curmem = self._sample_mem_stats(info) + pcentCurrMem, curmem = self._sample_mem_stats() rdBytes, wrBytes = self._sample_disk_io() rxBytes, txBytes = self._sample_network_traffic() ++++++ virtinst-support-suse-distros.patch ++++++ --- /var/tmp/diff_new_pack.pduQiz/_old 2014-01-28 12:03:55.000000000 +0100 +++ /var/tmp/diff_new_pack.pduQiz/_new 2014-01-28 12:03:55.000000000 +0100 @@ -2,7 +2,7 @@ =================================================================== --- virt-manager-0.10.0.orig/virtinst/osdict.py +++ virt-manager-0.10.0/virtinst/osdict.py -@@ -408,33 +408,93 @@ OS_TYPES = { +@@ -408,33 +408,113 @@ OS_TYPES = { }, "opensuse11": { @@ -81,6 +81,16 @@ + NET : VIRTIO_NET, + }, + }, ++ "sles12": { ++ "label": "Suse Linux Enterprise Server 12", ++ "distro": "suse", ++ "supported": True, ++ "pv_cdrom_install": True, ++ "devices" : { ++ DISK : VIRTIO_DISK, ++ NET : VIRTIO_NET, ++ }, ++ }, + + "sled10": { + "label": "Suse Linux Enterprise Desktop 10", @@ -96,10 +106,20 @@ + "distro": "suse", + "supported": True, + "pv_cdrom_install": True, ++ "devices" : { ++ DISK : VIRTIO_DISK, ++ NET : VIRTIO_NET, ++ }, ++ }, ++ "sled12": { ++ "label": "Suse Linux Enterprise Desktop 12", ++ "distro": "suse", ++ "supported": True, ++ "pv_cdrom_install": True, "devices" : { DISK : VIRTIO_DISK, NET : VIRTIO_NET, -@@ -619,6 +679,12 @@ OS_TYPES = { +@@ -619,6 +699,12 @@ OS_TYPES = { VIDEO : VMVGA_VIDEO, }, }, @@ -112,7 +132,7 @@ "generic24": { "label": "Generic 2.4.x kernel" -@@ -682,6 +748,12 @@ OS_TYPES = { +@@ -682,6 +768,12 @@ OS_TYPES = { "sortby": "mswinserv2008", "distro": "winserv", }, @@ -125,7 +145,7 @@ "vista": { "label": "Microsoft Windows Vista", "supported": True, -@@ -694,6 +766,12 @@ OS_TYPES = { +@@ -694,6 +786,12 @@ OS_TYPES = { "sortby": "mswin7", "distro": "win", }, @@ -138,7 +158,7 @@ }, }, -@@ -770,6 +848,13 @@ OS_TYPES = { +@@ -770,6 +868,13 @@ OS_TYPES = { "apic": False, }, @@ -152,7 +172,7 @@ "netware4": { "label": "Novell Netware 4", }, -@@ -778,6 +863,7 @@ OS_TYPES = { +@@ -778,6 +883,7 @@ OS_TYPES = { }, "netware6": { "label": "Novell Netware 6", -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org