Add 'manual' topology mode for manually specifying rspecs
authorAndy Bavier <acb@cs.princeton.edu>
Thu, 25 Jun 2009 21:01:20 +0000 (21:01 +0000)
committerAndy Bavier <acb@cs.princeton.edu>
Thu, 25 Jun 2009 21:01:20 +0000 (21:01 +0000)
create-topo-attributes.py

index 925b721..f0c95e2 100755 (executable)
@@ -116,6 +116,8 @@ class Slice:
         record = {'slice_tag_id':None, 'slice_id':self.id, 'tagname':tagname, 'value':value}
         if node:
             record['node_id'] = node.id
+        else:
+            record['node_id'] = None
         tag = Slicetag(record)
         slicetags[id] = tag
         self.slice_tag_ids.append(id)
@@ -331,7 +333,14 @@ for i in slices:
     else:
         topo_type = None
     
-    if topo_type == 'vsys' or topo_type == 'iias':
+    """
+    Valid values of topo_type: 
+    'vsys':   Use vsys topology scripts to set up virtual links
+    'iias':   Automatically create a virtual topology mirroring the physical one
+    'manual': Don't modify the topo_rspec tags if present
+    None:     No virtual topology
+    """
+    if topo_type in ['vsys', 'iias', 'manual']:
         slice.assign_egre_key(slicetags)
         slice.turn_on_netns(slicetags)
         slice.add_cap_net_admin(slicetags)
@@ -368,6 +377,11 @@ for i in slices:
         if dryrun:
             print "Slice %s not using IIAS" % slice.name
 
+    if topo_type == 'manual' and slice.get_tag('egre_key', slicetags):
+        topo_tag = slice.get_tag('topo_rspec', slicetags)
+        if topo_tag:
+            topo_tag.updated = True
+            
 # Update the tag values in the database
 for i in slicetags:
     tag = slicetags[i]