diff options
author | Thorsten Behrens <tbehrens@suse.com> | 2013-12-18 14:42:42 +0100 |
---|---|---|
committer | Cole Robinson <crobinso@redhat.com> | 2014-01-06 12:08:55 -0500 |
commit | 77b11439656a25840980f98ebfef1bce4bde8c9e (patch) | |
tree | 34dbe76de3cd64c7a7e7d81a09a8f8db2a5f0bad /virtManager | |
parent | 0724f1cdaa6c66aed5c32c94dc3c8ae1d8eb68e3 (diff) | |
download | virt-manager-77b11439656a25840980f98ebfef1bce4bde8c9e.tar.gz |
Add memory stats widget also to manager tree view.
(crobinso: Fix an initialization issue)
Diffstat (limited to 'virtManager')
-rw-r--r-- | virtManager/config.py | 6 | ||||
-rw-r--r-- | virtManager/domain.py | 3 | ||||
-rw-r--r-- | virtManager/manager.py | 40 |
3 files changed, 46 insertions, 3 deletions
diff --git a/virtManager/config.py b/virtManager/config.py index 5daa884c..c72429de 100644 --- a/virtManager/config.py +++ b/virtManager/config.py @@ -241,6 +241,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): @@ -250,6 +252,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): @@ -259,6 +263,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): diff --git a/virtManager/domain.py b/virtManager/domain.py index b0acd938..c94ac570 100644 --- a/virtManager/domain.py +++ b/virtManager/domain.py @@ -1525,6 +1525,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) diff --git a/virtManager/manager.py b/virtManager/manager.py index 114904b4..f12cbc8a 100644 --- a/virtManager/manager.py +++ b/virtManager/manager.py @@ -56,8 +56,9 @@ ROW_INSPECTION_OS_ICON) = range(11) (COL_NAME, COL_GUEST_CPU, COL_HOST_CPU, +COL_MEM, COL_DISK, -COL_NETWORK) = range(5) +COL_NETWORK) = range(6) def _style_get_prop(widget, propname): @@ -133,6 +134,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": @@ -165,6 +168,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 self.spacer_txt = None @@ -229,6 +233,7 @@ class vmmManager(vmmGObjectUI): self.diskcol = None self.guestcpucol = None + self.memcol = None self.hostcpucol = None self.netcol = None @@ -257,6 +262,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( @@ -274,6 +282,7 @@ class vmmManager(vmmGObjectUI): self.toggle_guest_cpu_usage_visible_widget() self.toggle_host_cpu_usage_visible_widget() + self.toggle_memory_usage_visible_widget() self.toggle_disk_io_visible_widget() self.toggle_network_traffic_visible_widget() @@ -391,12 +400,14 @@ class vmmManager(vmmGObjectUI): self.guestcpucol = make_stats_column(_("CPU usage"), COL_GUEST_CPU) self.hostcpucol = make_stats_column(_("Host CPU usage"), COL_HOST_CPU) + self.memcol = make_stats_column(_("Memory usage"), COL_MEM) self.diskcol = make_stats_column(_("Disk I/O"), COL_DISK) self.netcol = make_stats_column(_("Network I/O"), COL_NETWORK) 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) @@ -954,6 +965,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) @@ -1004,8 +1022,9 @@ class vmmManager(vmmGObjectUI): col.set_visible(do_show) self.widget(menu).set_active(do_show) - any_visible = any([col.get_visible() for col in - [self.netcol, self.diskcol, self.guestcpucol, self.hostcpucol]]) + any_visible = any([c.get_visible() for c in + [self.netcol, self.diskcol, self.memcol, + self.guestcpucol, self.hostcpucol]]) self.spacer_txt.set_property("visible", not any_visible) def toggle_network_traffic_visible_widget(self): @@ -1016,6 +1035,10 @@ class vmmManager(vmmGObjectUI): self._toggle_graph_helper( self.config.is_vmlist_disk_io_visible(), self.diskcol, self.disk_io_img, "menu_view_stats_disk") + def toggle_memory_usage_visible_widget(self): + self._toggle_graph_helper( + self.config.is_vmlist_memory_usage_visible(), self.memcol, + self.memory_usage_img, "menu_view_stats_memory") def toggle_guest_cpu_usage_visible_widget(self): self._toggle_graph_helper( self.config.is_vmlist_guest_cpu_usage_visible(), self.guestcpucol, @@ -1030,6 +1053,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, } @@ -1039,6 +1063,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): @@ -1060,6 +1086,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[_iter][ROW_HANDLE] if obj is None or not hasattr(obj, "conn"): |