From: Tony Mack Date: Thu, 16 Aug 2012 20:25:47 +0000 (-0400) Subject: split list_resources and describe into separate methods X-Git-Tag: sfa-3.0-0~144^2 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=ffa69a49ba4e8a122241c5b4843baf758e7c0c93;p=sfa.git split list_resources and describe into separate methods --- diff --git a/sfa/openstack/nova_driver.py b/sfa/openstack/nova_driver.py index d110194f..6786fd78 100644 --- a/sfa/openstack/nova_driver.py +++ b/sfa/openstack/nova_driver.py @@ -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) diff --git a/sfa/openstack/osaggregate.py b/sfa/openstack/osaggregate.py index 045a456b..047d1424 100644 --- a/sfa/openstack/osaggregate.py +++ b/sfa/openstack/osaggregate.py @@ -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 diff --git a/sfa/planetlab/plaggregate.py b/sfa/planetlab/plaggregate.py index 46154e6f..5ce948e1 100644 --- a/sfa/planetlab/plaggregate.py +++ b/sfa/planetlab/plaggregate.py @@ -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 diff --git a/sfa/planetlab/pldriver.py b/sfa/planetlab/pldriver.py index 623c30e9..cfbb6975 100644 --- a/sfa/planetlab/pldriver.py +++ b/sfa/planetlab/pldriver.py @@ -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)