finish verify_slice_links()
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Sun, 30 Oct 2011 15:19:20 +0000 (11:19 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Sun, 30 Oct 2011 15:19:20 +0000 (11:19 -0400)
sfa/plc/slices.py

index 5edce64..342873c 100644 (file)
@@ -6,6 +6,7 @@ from sfa.util.plxrn import hrn_to_pl_slicename
 from sfa.util.policy import Policy
 from sfa.rspecs.rspec import RSpec
 from sfa.plc.vlink import VLink
+from sfa.util.xrn import Xrn
 
 MAXINT =  2L**31-1
 
@@ -183,12 +184,22 @@ class Slices:
         except: 
             self.api.logger.log_exc('Failed to add/remove slice from nodes')
 
-    def verify_slice_links(self, slice, links, aggregate):
+    def verify_slice_links(self, links, aggregate):
         # nodes is undefined here
-        if not links or not aggregate.nodes:
+        if not links:
             return 
+        
         for link in links:
-            topo_rspec = VLink.get_topo_rspec(link)            
+            # get the ip address of the first node in the link
+            ifname1 = Xrn(link['interface1']).get_leaf()
+            (node, device) = ifname1.split(':')
+            node_id = int(node.replace('node', ''))
+            node = aggregate.nodes[node_id]
+            if1 = aggregate.interfaces[node['interface_ids'][0]]
+            ipaddr = if1['ip']
+            topo_rspec = VLink.get_topo_rspec(link, ipaddr)
+            self.api.plshell.AddSliceTag(self.api.plauth, slice['name'], 'topo_rspec', topo_rspec, node_id) 
+                        
         
 
     def handle_peer(self, site, slice, persons, peer):