[et-mgmt-tools] [PATCH 9/9]: virt-manager: add sparcline to vm/connection overview

Guido Günther agx at sigxcpu.org
Sat Oct 4 20:30:46 UTC 2008


Finally display a combined sparcline for rx & tx (network) and input &
output (disk) in the Network I/O and Disk I/O columns in the vm machine
overview.
 -- Guido

diff -r 134368ad3def src/virtManager/connection.py
--- a/src/virtManager/connection.py	Sat Oct 04 17:04:56 2008 +0200
+++ b/src/virtManager/connection.py	Sat Oct 04 17:27:01 2008 +0200
@@ -1056,6 +1056,14 @@
 
     def disk_io_rate(self):
         return self.disk_read_rate() + self.disk_write_rate()
+       
+    def disk_io_vector_limit(self, dummy):
+        """No point to accumulate unnormalized I/O for a conenction"""
+        return [ 0.0 ]
+
+    def network_traffic_vector_limit(self, dummy):
+        """No point to accumulate unnormalized Rx/Tx for a conenction"""
+        return [ 0.0 ]
 
     def uuidstr(self, rawuuid):
         hex = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']
diff -r 134368ad3def src/virtManager/domain.py
--- a/src/virtManager/domain.py	Sat Oct 04 17:04:56 2008 +0200
+++ b/src/virtManager/domain.py	Sat Oct 04 17:27:01 2008 +0200
@@ -422,6 +422,14 @@
                 vector.append(0)
         return vector
 
+    def in_out_vector_limit(self, data, limit):
+        l = len(data)/2
+        end = [l, limit][l > limit]
+        if l > limit:
+            data = data[0:end] + data[l:l+end]
+        d = map(lambda x,y: (x + y)/2, data[0:end], data[l:l+end]) 
+        return d
+
     def network_traffic_vector(self):
         vector = []
         stats = self.record
@@ -434,6 +442,9 @@
                     vector.append(0.0)
         return vector
 
+    def network_traffic_vector_limit(self, limit):
+        return self.in_out_vector_limit(self.network_traffic_vector(), limit)
+
     def disk_io_vector(self):
         vector = []
         stats = self.record
@@ -445,6 +456,9 @@
                 else:
                     vector.append(0.0)
         return vector
+
+    def disk_io_vector_limit(self, limit):
+        return self.in_out_vector_limit(self.disk_io_vector(), limit)
 
     def shutdown(self):
         self.vm.shutdown()
diff -r 134368ad3def src/virtManager/manager.py
--- a/src/virtManager/manager.py	Sat Oct 04 17:04:56 2008 +0200
+++ b/src/virtManager/manager.py	Sat Oct 04 17:27:01 2008 +0200
@@ -863,6 +863,7 @@
 
         cpuUsage_txt = gtk.CellRendererText()
         cpuUsage_img = sparkline.CellRendererSparkline()
+        cpuUsage_img.set_property("reversed", True)
         cpuUsageCol.pack_start(cpuUsage_txt, False)
         cpuUsageCol.pack_start(cpuUsage_img, False)
         cpuUsageCol.add_attribute(cpuUsage_txt, 'text', ROW_CPU)
@@ -886,19 +887,27 @@
 
         diskIOIn_txt = gtk.CellRendererText()
         diskIOOut_txt = gtk.CellRendererText()
+        diskIO_img = sparkline.CellRendererSparkline()
+        diskIO_img.set_property("reversed", True)
         diskIOCol.pack_start(diskIOIn_txt, False)
         diskIOCol.pack_start(diskIOOut_txt, False)
+        diskIOCol.pack_start(diskIO_img, False)
         diskIOCol.add_attribute(diskIOIn_txt, 'text', ROW_DISK_RD)
         diskIOCol.add_attribute(diskIOOut_txt, 'text', ROW_DISK_WR)
+        diskIOCol.set_cell_data_func(diskIO_img, self.disk_io_img, None)
         diskIOCol.set_visible(self.config.is_vmlist_disk_io_visible())
         diskIOCol.set_sort_column_id(VMLIST_SORT_DISK_IO)
 
         networkTrafficIn_txt = gtk.CellRendererText()
         networkTrafficOut_txt = gtk.CellRendererText()
+        networkTraffic_img = sparkline.CellRendererSparkline()
+        networkTraffic_img.set_property("reversed", True)
         networkTrafficCol.pack_start(networkTrafficIn_txt, False)
         networkTrafficCol.pack_start(networkTrafficOut_txt, False)
+        networkTrafficCol.pack_start(networkTraffic_img, False)
         networkTrafficCol.add_attribute(networkTrafficIn_txt, 'text', ROW_NET_RX)
         networkTrafficCol.add_attribute(networkTrafficOut_txt, 'text', ROW_NET_TX)
+        networkTrafficCol.set_cell_data_func(networkTraffic_img, self.network_traffic_img, None)
         networkTrafficCol.set_visible(self.config.is_vmlist_network_traffic_visible())
         networkTrafficCol.set_sort_column_id(VMLIST_SORT_NETWORK_USAGE)
 
@@ -997,7 +1006,18 @@
         if model.get_value(iter, ROW_HANDLE) is None:
             return
         data = model.get_value(iter, ROW_HANDLE).cpu_time_vector_limit(40)
-        data.reverse()
+        cell.set_property('data_array', data)
+
+    def disk_io_img(self,  column, cell, model, iter, data):
+        if model.get_value(iter, ROW_HANDLE) is None:
+            return
+        data = model.get_value(iter, ROW_HANDLE).disk_io_vector_limit(40)
+        cell.set_property('data_array', data)
+
+    def network_traffic_img(self,  column, cell, model, iter, data):
+        if model.get_value(iter, ROW_HANDLE) is None:
+            return
+        data = model.get_value(iter, ROW_HANDLE).network_traffic_vector_limit(40)
         cell.set_property('data_array', data)
 
     def start_vm(self, ignore):
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 09_block_and_net_cellsparcline.patch
Type: text/x-diff
Size: 4984 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/et-mgmt-tools/attachments/20081004/6dfe7b59/attachment.bin>


More information about the et-mgmt-tools mailing list