Display slice tags
authorAndy Bavier <acb@acb-imac.cs.princeton.edu>
Thu, 17 Feb 2011 16:32:08 +0000 (11:32 -0500)
committerAndy Bavier <acb@acb-imac.cs.princeton.edu>
Thu, 17 Feb 2011 16:32:08 +0000 (11:32 -0500)
Added a slice tag column to the display.  For each testbed, the column shows the tags for the entire slice at the top by
the testbed's HRN.  Tags associated with particular nodes are shown next to that node.

sface/screens/mainscreen.py

index 6ffd7e0..5811617 100644 (file)
@@ -4,7 +4,6 @@ from PyQt4.QtCore import *
 from PyQt4.QtGui import *
 
 from sfa.util.rspecHelper import RSpec
-from sface.sfahelper import *
 from sface.config import config
 from sface.sfiprocess import SfiProcess
 from sface.screens.sfascreen import SfaScreen
@@ -192,7 +191,7 @@ class NodeModel(QAbstractItemModel):
         self.__initRoot()
 
     def __initRoot(self):
-        self.rootItem = TreeItem([QString("Testbed"), QString("Hostname"), QString("Status")])
+        self.rootItem = TreeItem([QString("Testbed"), QString("Hostname"), QString("Status"), QString("Tags")])
 
     def getItem(self, index):
         if index.isValid():
@@ -339,7 +338,7 @@ class SliceWidget(QWidget):
         rspec_file = config.getSliceRSpecFile()
         if os.path.exists(rspec_file):
             xml = open(rspec_file).read()
-            return xml
+            return RSpec(xml)
         return None
 
     def setStatus(self, msg, timeout=None):
@@ -364,7 +363,7 @@ class SliceWidget(QWidget):
         if self.checkRunningProcess():
             return
 
-        rspec = RSpec(self.readSliceRSpec())
+        rspec = self.readSliceRSpec()
         
         no_change = True
         all_child = self.nodeModel.rootItem.allChildItems()
@@ -412,27 +411,33 @@ class SliceWidget(QWidget):
         self.network_names = []
         self.nodeModel.clear()
         
-        rspec_string = self.readSliceRSpec()
-        if not rspec_string:
+        rspec = self.readSliceRSpec()
+        if not rspec:
             return None
 
-        networks = rspec_get_networks(rspec_string)
+        networks = rspec.get_network_list()
         for network in networks:
             self.network_names.append(network)
-            networkItem = TreeItem([QString(network), QString(""), QString("")], self.nodeModel.rootItem)
+            attrs = ""
+            for (name, value) in rspec.get_default_sliver_attributes(network):
+                attrs += "%s/%s " % (name, value)
+            networkItem = TreeItem([QString(network), QString(""), QString(""), QString(attrs)], self.nodeModel.rootItem)
 
-            all_nodes = rspec_get_nodes_from_network(rspec_string, network)
-            sliver_nodes = rspec_get_sliver_nodes_from_network(rspec_string, network)
+            all_nodes = rspec.get_node_list(network)
+            sliver_nodes = rspec.get_sliver_list(network)
             available_nodes = filter(lambda x:x not in sliver_nodes, all_nodes)
 
             already_in_nodes += sliver_nodes
 
             for node in sliver_nodes:
-                nodeItem = TreeItem([QString(""), QString("%s" % node), QString(node_status['in'])], networkItem)
+                attrs = ""
+                for (name, value) in rspec.get_sliver_attributes(node, network):
+                    attrs += "%s/%s " % (name, value)
+                nodeItem = TreeItem([QString(""), QString("%s" % node), QString(node_status['in']), QString(attrs)], networkItem)
                 networkItem.appendChild(nodeItem)
 
             for node in available_nodes:
-                nodeItem = TreeItem([QString(""), QString(node), QString(node_status['out'])], networkItem)
+                nodeItem = TreeItem([QString(""), QString(node), QString(node_status['out']), QString("")], networkItem)
                 networkItem.appendChild(nodeItem)
 
             self.nodeModel.rootItem.appendChild(networkItem)