+ if not data.getSlice():
+ print 'slice not set yet'
+ return
+ if not data.SFACE_DEBUG:
+ rspec_string = data.getRSpecFromSM()
+ else:
+ print 'SFACE_DEBUG : using local file'
+ import os
+ rspec_string = open(os.path.expanduser("~/.sfi/%s.rspec"%data.getSlice())).read()
+
+ networks = self.rspec_get_networks(rspec_string)
+ networks.reverse()
+
+ for network in networks:
+# nodes = self.rspec_get_sliver_nodes_from_network(rspec_string, network)
+# for node in nodes: self.addNode(network, node, True)
+# nodes = self.rspec_get_other_nodes_from_network(rspec_string, network)
+# for node in nodes: self.addNode(network, node, False)
+ # hacky - i'm just gettin used to this xml navigation stuff
+ xml_nodes = self.rspec_get_xml_nodes_from_network(rspec_string, network)
+ from lxml import etree
+ # addNode inserts before, so let's start with the ones that are not in
+ for xml_node in xml_nodes:
+ if not xml_node.xpath('sliver'):
+ self.addNode(network,xml_node.xpath('hostname/text()')[0],False)
+ for xml_node in xml_nodes:
+ if xml_node.xpath('sliver'):
+ self.addNode(network,xml_node.xpath('hostname/text()')[0],True)
+