ListResources uses the 'rspec_version' field specified in the 'options' struct to...
[sfa.git] / sfa / managers / aggregate_manager_pl.py
index 887d2f3..437dd15 100644 (file)
@@ -19,8 +19,10 @@ from sfa.trust.credential import Credential
 import sfa.plc.peers as peers
 from sfa.plc.network import *
 from sfa.plc.api import SfaAPI
+from sfa.plc.aggregate import Aggregate
 from sfa.plc.slices import *
 from sfa.util.version import version_core
+from sfa.rspecs.rspec_version import RSpecVersion 
 from sfa.util.sfatime import utcparse
 from sfa.util.callids import Callids
 
@@ -29,6 +31,9 @@ def GetVersion(api):
     return version_core({'interface':'aggregate',
                          'testbed':'myplc',
                          'hrn':xrn.get_hrn(),
+                         'input_rspec' : ['PG 2', 'SFA 1'],
+                         'output_rspec' : ["SFA 1"],
+                         'ad_rspec' : ["PG 2", "SFA 1"],
                          })
 
 def __get_registry_objects(slice_xrn, creds, users):
@@ -301,23 +306,28 @@ def ListResources(api, creds, options,call_id):
     xrn = options.get('geni_slice_urn', '')
     (hrn, type) = urn_to_hrn(xrn)
 
+    # get the rspec's return format from options
+    rspec_version = RSpecVersion(options.get('rspec_version', 'SFA 1'))
+    version_string = "rspec_%s_%s" % (rspec_version.format, rspec_version.version)
+    
     # look in cache first
     if caching and api.cache and not xrn:
-        rspec = api.cache.get('nodes')
+        rspec = api.cache.get(version_string)
         if rspec:
             api.logger.info("aggregate.ListResources: returning cached value for hrn %s"%hrn)
             return rspec 
 
-    network = Network(api)
-    if (hrn):
-        if network.get_slice(api, hrn):
-            network.addSlice()
-
-    rspec = network.toxml()
+    aggregate = Aggregate(api)
 
+    if xrn:
+        # get this rspec for the specified slice 
+        rspec =  aggregate.get_rspec(slice_xrn=hrn, version=rspec_version)
+    else:
+        # generate rspec in both pg and sfa formats
+        rspec = aggregate.get_rspec(version=rspec_version)
     # cache the result
-    if caching and api.cache and not xrn:
-        api.cache.add('nodes', rspec)
+    if caching and api.cache:
+        api.cache.add(version_string, rspec)
 
     return rspec