Make unirom the return of get_leases in Nitos rspecs
[sfa.git] / sfa / rspecs / elements / versions / nitosv1Lease.py
index ec3cd7e..adfefe3 100644 (file)
@@ -15,8 +15,9 @@ from sfa.rspecs.elements.versions.nitosv1Sliver import NITOSv1Sliver
 from sfa.rspecs.elements.versions.nitosv1PLTag import NITOSv1PLTag
 from sfa.rspecs.elements.versions.pgv2Services import PGv2Services
 from sfa.rspecs.elements.lease import Lease
+from sfa.rspecs.elements.channel import Channel
+
 
-from sfa.nitos.nitosxrn import xrn_to_hostname
 
 class NITOSv1Lease:
 
@@ -52,7 +53,7 @@ class NITOSv1Lease:
          
         lease_elems = []       
         for lease in grouped_leases:
-            #lease_fields = ['lease_id', 'component_id', 'slice_id', 'start_time', 'duration']
+
             lease_fields = ['slice_id', 'start_time', 'duration']
             lease_elem = network_elem.add_instance('lease', lease[0], lease_fields)
             lease_elems.append(lease_elem)
@@ -65,7 +66,7 @@ class NITOSv1Lease:
             #channels = [{'channel_id': 1}, {'channel_id': 2}]
             for channel in channels:
                  if channel['slice_id'] == lease[0]['slice_id'] and channel['start_time'] == lease[0]['start_time'] and channel['duration'] == lease[0]['duration']:
-                     lease_elem.add_instance('channel', channel, ['channel_num'])
+                     lease_elem.add_instance('channel', channel, ['component_id'])
             
 
     @staticmethod
@@ -77,15 +78,28 @@ class NITOSv1Lease:
     @staticmethod
     def get_lease_objs(lease_elems):
         leases = []    
+        channels = []
         for lease_elem in lease_elems:
-            lease = Lease(lease_elem.attrib, lease_elem)
-            if lease.get('lease_id'):
-               lease['lease_id'] = lease_elem.attrib['lease_id']
-            lease['component_id'] = lease_elem.attrib['component_id']
-            lease['slice_id'] = lease_elem.attrib['slice_id']
-            lease['start_time'] = lease_elem.attrib['start_time']
-            lease['duration'] = lease_elem.attrib['duration']
+            #get nodes
+            node_elems = lease_elem.xpath('./default:node | ./node')
+            for node_elem in node_elems:
+                 lease = Lease(lease_elem.attrib, lease_elem)
+                 lease['slice_id'] = lease_elem.attrib['slice_id']
+                 lease['start_time'] = lease_elem.attrib['start_time']
+                 lease['duration'] = lease_elem.attrib['duration']
+                 lease['component_id'] = node_elem.attrib['component_id']
+                 lease['type'] = 'node'
+                 leases.append(lease)
+            #get channels
+            channel_elems = lease_elem.xpath('./default:channel | ./channel')
+            for channel_elem in channel_elems:
+                 channel = Channel(channel_elem.attrib, channel_elem)
+                 channel['slice_id'] = lease_elem.attrib['slice_id']
+                 channel['start_time'] = lease_elem.attrib['start_time']
+                 channel['duration'] = lease_elem.attrib['duration']
+                 channel['component_id'] = channel_elem.attrib['component_id']
+                 channel['type'] = 'channel'
+                 channels.append(channel)
 
-            leases.append(lease)
-        return leases            
+        return leases + channels