Fix GetVersion()
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Thu, 18 Oct 2012 21:02:06 +0000 (17:02 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Thu, 18 Oct 2012 21:02:06 +0000 (17:02 -0400)
sfa/managers/aggregate_manager.py
sfa/planetlab/plaggregate.py
sfa/server/sfaapi.py

index af7f18f..bd26a45 100644 (file)
@@ -1,4 +1,4 @@
-import soctet
+import socket
 from sfa.rspecs.version_manager import VersionManager
 from sfa.util.version import version_core
 from sfa.util.xrn import Xrn
@@ -12,7 +12,7 @@ class AggregateManager:
     # essentially a union of the core version, the generic version (this code) and
     # whatever the driver needs to expose
 
-    def _rspec_versions(self):
+    def rspec_versions(self):
         version_manager = VersionManager()
         ad_rspec_versions = []
         request_rspec_versions = []
@@ -22,7 +22,6 @@ class AggregateManager:
             if rspec_version.content_type in ['*', 'request']:
                 request_rspec_versions.append(rspec_version.to_dict())
         return {
-            'testbed':self.testbed_name(),
             'geni_request_rspec_versions': request_rspec_versions,
             'geni_ad_rspec_versions': ad_rspec_versions,
             }
@@ -63,6 +62,7 @@ class AggregateManager:
             }],
         }
         version.update(version_generic)
+        version.update(self.rspec_versions())
         testbed_version = self.driver.aggregate_version()
         version.update(testbed_version)
         return version
index 38183b7..5da1693 100644 (file)
@@ -121,7 +121,7 @@ class PlAggregate:
         slices = self.driver.shell.GetSlices(names)
         # filter on id
         if ids:
-            slices = [slice in slices if slice['slice_id'] in ids]
+            slices = [slice for slice in slices if slice['slice_id'] in ids]
 
         tags_dict = self.get_slice_tags(slices)
         nodes_dict = self.get_slice_nodes(slices, options)
@@ -158,26 +158,23 @@ class PlAggregate:
         rspec_node['interfaces'] = []
         if_count=0
         for if_id in node['interface_ids']:
-                interface = Interface(interfaces[if_id])
-                interface['ipv4'] = interface['ip']
-                interface['component_id'] = PlXrn(auth=self.driver.hrn,
-                                                  interface='node%s:eth%s' % (node['node_id'], if_count)).get_urn()
-                # interfaces in the manifest need a client id
-                if slice:
-                    interface['client_id'] = "%s:%s" % (node['node_id'], if_id)
-                rspec_node['interfaces'].append(interface)
-                if_count+=1
-
-            tags = [PLTag(node_tags[tag_id]) for tag_id in node['node_tag_ids']]
-            rspec_node['tags'] = tags
+            interface = Interface(interfaces[if_id])
+            interface['ipv4'] = interface['ip']
+            interface['component_id'] = PlXrn(auth=self.driver.hrn,
+                                              interface='node%s:eth%s' % (node['node_id'], if_count)).get_urn()
+            # interfaces in the manifest need a client id
+            if slice:
+                interface['client_id'] = "%s:%s" % (node['node_id'], if_id)
+            rspec_node['interfaces'].append(interface)
+            if_count+=1
+        tags = [PLTag(node_tags[tag_id]) for tag_id in node['node_tag_ids']]
+        rspec_node['tags'] = tags
         return rspec_node
 
-    def sliver_to_rspec_node(self, sliver):
+    def sliver_to_rspec_node(self, sliver, sites, interfaces, node_tags, pl_initscripts):
         # get the granularity in second for the reservation system
         grain = self.driver.shell.GetLeaseGranularity()
-        if sliver['slice_ids_whitelist'] and sliver['slice_id'] not in sliver['slice_ids_whitelist']:
-            continue
-        rspec_node = self.get_rspec_node(node, sites_dict, interfaces, node_tags, pl_initscripts, grain)
+        rspec_node = self.get_rspec_node(node, sites, interfaces, node_tags, pl_initscripts, grain)
         # xxx how to retrieve site['login_base']
         rspec_node['expires'] = datetime_to_string(utcparse(slice[0]['expires']))
         # remove interfaces from manifest
@@ -198,7 +195,6 @@ class PlAggregate:
         login = Login({'authentication': 'ssh-keys', 'hostname': node['hostname'], 'port':'22', 'username': sliver['name']})
         service = Services({'login': login})
         rspec_node['services'] = [service]    
-        rspec_nodes.append(rspec_node)
         return rspec_node      
 
     def get_slice_tags(self, slices):
@@ -354,29 +350,29 @@ class PlAggregate:
             for sliver in slivers:
                 if sliver['slice_ids_whitelist'] and sliver['slice_id'] not in sliver['slice_ids_whitelist']:
                     continue
-                rspec_node = self.sliver_to_rspec_node(sites, interfaces, node_tags)
+                rspec_node = self.sliver_to_rspec_node(sliver, sites, interfaces, node_tags, pl_initscripts)
                 geni_sliver = self.rspec_node_to_geni_sliver(rspec_node)
                 rspec_nodes.append(rspec_node) 
                 geni_slivers.append(geni_sliver)
-           rspec.version.add_nodes(rspec_nodes)
+            rspec.version.add_nodes(rspec_nodes)
 
-           # add sliver defaults
-           default_sliver = slivers.get(None, [])
-           if default_sliver:
-              default_sliver_attribs = default_sliver.get('tags', [])
-              for attrib in default_sliver_attribs:
-                  rspec.version.add_default_sliver_attribute(attrib['tagname'], attrib['value'])
+            # add sliver defaults
+            default_sliver = slivers.get(None, [])
+            if default_sliver:
+                default_sliver_attribs = default_sliver.get('tags', [])
+                for attrib in default_sliver_attribs:
+                    rspec.version.add_default_sliver_attribute(attrib['tagname'], attrib['value'])
 
             # add links 
             links = self.get_links(sites_dict, nodes_dict, interfaces)        
             rspec.version.add_links(links)
 
         if not options.get('list_leases') or options['list_leases'] != 'resources':
-           leases = self.get_leases(slivers[0])
-           rspec.version.add_leases(leases)
+            leases = self.get_leases(slivers[0])
+            rspec.version.add_leases(leases)
 
                
-        return {'geni_urn': urns[0], 
-                  'geni_rspec': rspec.toxml(),
-                  'geni_slivers': geni_slivers}
+        return {'geni_urn': urns[0], 
+                'geni_rspec': rspec.toxml(),
+                'geni_slivers': geni_slivers}
 
index 80bb7cd..ae54741 100644 (file)
@@ -234,7 +234,7 @@ class SfaApi (XmlrpcApi):
     def prepare_response_am(self, result):
         version = version_core() 
         response = {
-            'geni_api': version['geni_api'],             
+            'geni_api': 3,              
             'code': self.get_geni_code(result),
             'value': self.get_geni_value(result),
             'output': self.get_geni_output(result),