split list_resources and describe into separate methods
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Thu, 16 Aug 2012 20:25:47 +0000 (16:25 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Thu, 16 Aug 2012 20:25:47 +0000 (16:25 -0400)
sfa/openstack/nova_driver.py
sfa/openstack/osaggregate.py
sfa/planetlab/plaggregate.py
sfa/planetlab/pldriver.py

index d110194..6786fd7 100644 (file)
@@ -331,7 +331,7 @@ class NovaDriver(Driver):
     # first 2 args are None in case of resource discovery
     def list_resources (self, creds, version, options):
         aggregate = OSAggregate(self)
-        rspec =  aggregate.get_rspec(version=version, options=options)
+        rspec =  aggregate.list_resources(version=version, options=options)
         return rspec
 
     def describe(self, creds, urns, version, options):
@@ -402,7 +402,7 @@ class NovaDriver(Driver):
         tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name()
         aggregate.run_instances(instance_name, tenant_name, rspec_string, key_name, pubkeys)    
    
-        return aggregate.get_rspec(slice_xrn=slice_urn, version=rspec.version)
+        return aggregate.describe(slice_xrn=slice_urn, version=rspec.version)
 
     def delete_sliver (self, slice_urn, slice_hrn, creds, options):
         aggregate = OSAggregate(self)
index 045a456..047d142 100644 (file)
@@ -73,29 +73,27 @@ class OSAggregate:
          
         return {}
 
-    def get_rspec(self, slice_xrn=None, version=None, options={}):
+    def list_resources(self, version=None, options={}):
         version_manager = VersionManager()
         version = version_manager.get_version(version)
-        if not slice_xrn:
-            rspec_version = version_manager._get_version(version.type, version.version, 'ad')
-            rspec = self.get_aggregate_rspec(rspec_version, options)
-        else:
-            rspec_version = version_manager._get_version(version.type, version.version, 'manifest')
-            rspec = self.get_slice_rsepc(slice_xrn, rspec_version, options)
-
-        return rspec
-
-    def get_aggregate_rspec(self, version, options={}):
+        rspec_version = version_manager._get_version(version.type, version.version, 'ad')
         rspec = RSpec(version=version, user_options=options)
         nodes = self.get_aggregate_nodes()
         rspec.version.add_nodes(nodes)
         return rspec.toxml()
 
-    def get_slice_rspec(self, xrn, version, options={}):
+    def describe(self, urns, version=None, options={}):
+        version_manager = VersionManager()
+        version = version_manager.get_version(version)
+        rspec_version = version_manager._get_version(version.type, version.version, 'manifest')
         rspec = RSpec(version=version, user_options=options)
         nodes = self.get_slice_nodes(slice_xrn)
         rspec.version.add_nodes(nodes)
-        return rspec.toxml() 
+        result = {'geni_urn': '',
+                  'geni_rspec': rspec.toxml(), 
+                  'geni_slivers': []}
+        
+        return result
 
     def get_slice_nodes(self, slice_xrn):
         # update nova connection
index 46154e6..5ce948e 100644 (file)
@@ -283,22 +283,30 @@ class PlAggregate:
         return rspec_leases
 
     
-    def get_rspec(self, slice_xrn=None, version = None, options={}):
+    def list_resources(self, version = None, options={}):
 
         version_manager = VersionManager()
         version = version_manager.get_version(version)
-        if not slice_xrn:
-            rspec_version = version_manager._get_version(version.type, version.version, 'ad')
-        else:
-            rspec_version = version_manager._get_version(version.type, version.version, 'manifest')
-
-        slice, slivers = self.get_slice_and_slivers(slice_xrn)
+        rspec_version = version_manager._get_version(version.type, version.version, 'ad')
         rspec = RSpec(version=rspec_version, user_options=options)
+        
+        if not options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'leases':
+           nodes, links = self.get_nodes_and_links(options=options)
+           rspec.version.add_nodes(nodes)
+           rspec.version.add_links(links)
+        return rspec.toxml()
+
+    def describe(self, urns, version=None, options={}):
+        version_manager = VersionManager()
+        version = version_manager.get_version(version)
+        rspec_version = version_manager._get_version(version.type, version.version, 'manifest')
+        rspec = RSpec(version=version, user_options=options)
+        slice, slivers = self.get_slice_and_slivers(urns)
         if slice and 'expires' in slice:
             rspec.xml.set('expires',  datetime_to_string(utcparse(slice['expires'])))
-
+       
         if not options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'leases':
-           nodes, links = self.get_nodes_and_links(slice_xrn, slice, slivers, options)
+           nodes, links = self.get_nodes_and_links(urns, slice, slivers, options)
            rspec.version.add_nodes(nodes)
            rspec.version.add_links(links)
            # add sliver defaults
@@ -306,13 +314,15 @@ class PlAggregate:
            if default_sliver:
               default_sliver_attribs = default_sliver.get('tags', [])
               for attrib in default_sliver_attribs:
-                  logger.info(attrib)
                   rspec.version.add_default_sliver_attribute(attrib['tagname'], attrib['value'])
         
+
         if not options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'resources':
            leases = self.get_leases(slice)
            rspec.version.add_leases(leases)
+        
+        result = {'geni_urn': '',
+                  'geni_rspec': rspec.toxml(),
+                  'geni_slivers': []}
 
-        return rspec.toxml()
-
-
+        return result  
index 623c30e..cfbb697 100644 (file)
@@ -573,7 +573,7 @@ class PlDriver (Driver):
     # first 2 args are None in case of resource discovery
     def list_resources (self, creds, options):
         aggregate = PlAggregate(self)
-        rspec =  aggregate.get_rspec(version=rspec_version, options=options)
+        rspec =  aggregate.list_resources(version=rspec_version, options=options)
         return rspec
 
     def describe(self, creds, urns, options):
@@ -700,7 +700,7 @@ class PlDriver (Driver):
         # only used by plc and ple.
         slices.handle_peer(site, slice, persons, peer)
         
-        return aggregate.get_rspec(slice_xrn=slice_urn, version=rspec.version)
+        return aggregate.describe_rspec(slice_xrn=slice_urn, version=rspec.version)
 
     def delete_sliver (self, slice_urn, slice_hrn, creds, options):
         slicename = hrn_to_pl_slicename(slice_hrn)