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 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
 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.__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():
 
     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()
         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):
         return None
 
     def setStatus(self, msg, timeout=None):
@@ -364,7 +363,7 @@ class SliceWidget(QWidget):
         if self.checkRunningProcess():
             return
 
         if self.checkRunningProcess():
             return
 
-        rspec = RSpec(self.readSliceRSpec())
+        rspec = self.readSliceRSpec()
         
         no_change = True
         all_child = self.nodeModel.rootItem.allChildItems()
         
         no_change = True
         all_child = self.nodeModel.rootItem.allChildItems()
@@ -412,27 +411,33 @@ class SliceWidget(QWidget):
         self.network_names = []
         self.nodeModel.clear()
         
         self.network_names = []
         self.nodeModel.clear()
         
-        rspec_string = self.readSliceRSpec()
-        if not rspec_string:
+        rspec = self.readSliceRSpec()
+        if not rspec:
             return None
 
             return None
 
-        networks = rspec_get_networks(rspec_string)
+        networks = rspec.get_network_list()
         for network in networks:
             self.network_names.append(network)
         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:
             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:
                 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)
                 networkItem.appendChild(nodeItem)
 
             self.nodeModel.rootItem.appendChild(networkItem)