'geni_ad_rspec_versions': ad_rspec_versions,
}
+ def get_rspec_version_string(self, rspec_version, options={}):
+ version_string = "rspec_%s" % (rspec_version)
+
+ #panos adding the info option to the caching key (can be improved)
+ if options.get('info'):
+ version_string = version_string + "_"+options.get('info', 'default')
+
+ # Adding the list_leases option to the caching key
+ if options.get('list_leases'):
+ version_string = version_string + "_"+options.get('list_leases', 'default')
+
+ # Adding geni_available to caching key
+ if options.get('geni_available'):
+ version_string = version_string + "_" + str(options.get('geni_available'))
+
+ return version_string
+
def GetVersion(self, api, options):
xrn=Xrn(api.hrn)
version = version_core()
call_id = options.get('call_id')
if Callids().already_handled(call_id): return ""
- version_manager = VersionManager()
# get the rspec's return format from options
+ version_manager = VersionManager()
rspec_version = version_manager.get_version(options.get('geni_rspec_version'))
- version_string = "rspec_%s" % (rspec_version)
-
- #panos adding the info option to the caching key (can be improved)
- if options.get('info'):
- version_string = version_string + "_"+options.get('info', 'default')
-
- # Adding the list_leases option to the caching key
- if options.get('list_leases'):
- version_string = version_string + "_"+options.get('list_leases', 'default')
-
- # Adding geni_available to caching key
- if options.get('geni_available'):
- version_string = version_string + "_" + str(options.get('geni_available'))
+ version_string = self.get_rspec_version_string(rspec_version, options)
# look in cache first
cached_requested = options.get('cached', True)
logger.debug("%s.ListResources returning cached advertisement" % (self.driver.__module__))
return rspec
- rspec = self.driver.list_resources (creds, options)
+ rspec = self.driver.list_resources (creds, version, options)
if self.driver.cache:
logger.debug("%s.ListResources stores advertisement in cache" % (self.driver.__module__))
self.driver.cache.add(version_string, rspec)
- return self.driver.list_resources (creds, options)
+ return rspec
def Describe(self, api, creds, urns, options):
call_id = options.get('call_id')
if Callids().already_handled(call_id): return ""
- return self.driver.describe (creds, urns, options)
+ # get the rspec's return format from options
+ version_manager = VersionManager()
+ rspec_version = version_manager.get_version(options.get('geni_rspec_version'))
+ return self.driver.describe(creds, urns, rspec, options)
def SliverStatus (self, api, xrn, creds, options):
return instance_urns
# first 2 args are None in case of resource discovery
- def list_resources (self, creds, options):
+ def list_resources (self, creds, version, options):
aggregate = OSAggregate(self)
- rspec = aggregate.get_rspec(version=rspec_version, options=options)
+ rspec = aggregate.get_rspec(version=version, options=options)
return rspec
- def describe(self, creds, urns, options):
- return {}
+ def describe(self, creds, urns, version, options):
+ aggregate = OSAggregate(self)
+ return aggregate.describe(urns, version=version, options=options)
def sliver_status (self, slice_urn, slice_hrn):
# update nova connection
def __init__(self, driver):
self.driver = driver
+ def get_availability_zones(self):
+ zones = self.driver.shell.nova_manager.dns_domains.domains()
+ if not zones:
+ zones = ['cloud']
+ else:
+ zones = [zone.name for zone in zones]
+ return zones
+
+
+ def describe(self, urns, version=None, options={}):
+
+ return {}
+
def get_rspec(self, slice_xrn=None, 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')
- nodes = self.get_aggregate_nodes()
+ rspec = self.get_aggregate_rspec(rspec_version, options)
else:
rspec_version = version_manager._get_version(version.type, version.version, 'manifest')
- nodes = self.get_slice_nodes(slice_xrn)
- rspec = RSpec(version=rspec_version, user_options=options)
+ rspec = self.get_slice_rsepc(slice_xrn, rspec_version, options)
+
+ return rspec
+
+ def get_aggregate_rspec(self, version, options={}):
+ rspec = RSpec(version=version, user_options=options)
+ nodes = self.get_aggregate_nodes()
rspec.version.add_nodes(nodes)
return rspec.toxml()
- def get_availability_zones(self):
- # essex release
- zones = self.driver.shell.nova_manager.dns_domains.domains()
-
- if not zones:
- zones = ['cloud']
- else:
- zones = [zone.name for zone in zones]
- return zones
+ def get_slice_rspec(self, xrn, version, options={}):
+ rspec = RSpec(version=version, user_options=options)
+ nodes = self.get_slice_nodes(slice_xrn)
+ rspec.version.add_nodes(nodes)
+ return rspec.toxml()
def get_slice_nodes(self, slice_xrn):
# update nova connection
rspec_nodes = []
for instance in instances:
rspec_node = Node()
-
#TODO: find a way to look up an instances availability zone in essex
#if instance.availability_zone:
# node_xrn = OSXrn(instance.availability_zone, 'node')