Tunnel between 2 ns-3s in remote PL hosts
[nepi.git] / src / nepi / util / sfarspec_proc.py
index 40c8480..7e266fa 100644 (file)
@@ -133,7 +133,7 @@ class SfaRSpecProcessing(object):
 #               }
 
  
-    def build_sfa_rspec(self, slice_id, resources, leases):
+    def build_sfa_rspec(self, slice_id, resources, properties, leases):
         """
         Build the XML RSpec from list of resources' urns.
         eg. resources = ["urn:publicid:IDN+ple:modenaple+node+planetlab-1.ing.unimo.it"]
@@ -156,12 +156,14 @@ class SfaRSpecProcessing(object):
         nodes = []
         channels = []
         links = []
-        self._log.info("Building RSpec for resources %s" % resources)
+        self._log.debug("Building RSpec for resources %s" % resources)
+        cardinal = 0
+        wilab = False
         for urn in resources:
             # XXX TO BE CORRECTED, this handles None values
             if not urn:
                 continue
-            self._log.info(urn)
+            self._log.debug(urn)
             resource = dict()
             # TODO: take into account the case where we send a dict of URNs without keys
             #resource['component_id'] = resource.pop('urn')
@@ -174,10 +176,22 @@ class SfaRSpecProcessing(object):
 
             if resource_type == 'node':
                 # XXX dirty hack WiLab !!!
-                if self.config:
-                    if 'wilab2' in self.config['sm']:
-                        resource['client_id'] = "PC"
-                        resource['sliver_type'] = "raw-pc"
+#                Commented Lucia, doesn't work for wilabt  
+#                if self.config:
+#                    if 'wilab2' in self.config['sm']:
+#                        resource['client_id'] = "PC"
+#                        resource['sliver_type'] = "raw-pc"
+                if 'wilab2' in urn:
+                    wilab = True
+                    resource['client_id'] = "node%s" % cardinal
+                    resource['sliver_type'] = "raw-pc"
+                    resource['disk_image'] = "hola"
+                    top_auth = resource_hrn.replace("\\", "").split('.')
+                    top_auth.pop()
+                    top_auth = '.'.join(top_auth)
+                    cm = urn.split("+")
+                    resource['component_manager_id'] = "%s+%s+authority+cm" % (cm[0],top_auth)
+                    cardinal += 1
                 nodes.append(resource)
             elif resource_type == 'link':
                 links.append(resource)
@@ -190,8 +204,20 @@ class SfaRSpecProcessing(object):
         #rspec.version.add_leases(leases)
         #rspec.version.add_links(links)
         #rspec.version.add_channels(channels)
-   
-        self._log.info("request rspec: %s"%rspec.toxml())
-        return rspec.toxml()
+
+        #self._log.debug("request rspec: %s"%rspec.toxml())
+        string = rspec.toxml()
+        if wilab and properties is not None:
+            ## dirty hack for the f4f demo
+            b = string.split('\n')
+            for i, n in enumerate(b):
+                if 'sliver_type name="raw-pc"' in n:
+                    b[i] = '<sliver_type name="raw-pc">'
+                    b.insert(i+1, '<disk_image name="urn:publicid:IDN+wall2.ilabt.iminds.be+image+emulab-ops//%s"/>' % properties['disk_image'])
+                    #b.insert(i+1, '<disk_image name="urn:publicid:IDN+wilab2.ilabt.iminds.be+image+nepi:%s"/>' % properties['disk_image'])
+                    b.insert(i+2, '</sliver_type>')
+            string = ''.join(b)
+        self._log.debug("request rspec : %s" % string)
+        return string