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
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):
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