X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplanetlab%2Fplaggregate.py;h=9ab8c6d58032c2496b35a4bbbd9b08be2f98a188;hb=82d0355774b73966cbe0c838c611808dfd2f1c7a;hp=399b3a2a0a17c0e7495d2d1450f9a562f7172ee6;hpb=7e1d7d63b6e65af7451c533fda704b14e327e48f;p=sfa.git diff --git a/sfa/planetlab/plaggregate.py b/sfa/planetlab/plaggregate.py index 399b3a2a..9ab8c6d5 100644 --- a/sfa/planetlab/plaggregate.py +++ b/sfa/planetlab/plaggregate.py @@ -18,7 +18,7 @@ from sfa.rspecs.elements.lease import Lease from sfa.rspecs.elements.granularity import Granularity from sfa.rspecs.version_manager import VersionManager -from sfa.planetlab.plxrn import PlXrn, hostname_to_urn, hrn_to_pl_slicename, slicename_to_hrn, top_auth, hash_loginbase +from sfa.planetlab.plxrn import PlXrn, hostname_to_urn from sfa.planetlab.vlink import get_tc_rate from sfa.planetlab.topology import Topology from sfa.storage.model import SliverAllocation @@ -31,7 +31,8 @@ class PlAggregate: def __init__(self, driver): self.driver = driver - def get_nodes(self, options={}): + def get_nodes(self, options=None): + if options is None: options={} filter = {'peer_id': None} geni_available = options.get('geni_available') if geni_available == True: @@ -40,13 +41,15 @@ class PlAggregate: return nodes - def get_sites(self, filter={}): + def get_sites(self, filter=None): + if filter is None: filter={} sites = {} for site in self.driver.shell.GetSites(filter): sites[site['site_id']] = site return sites - def get_interfaces(self, filter={}): + def get_interfaces(self, filter=None): + if filter is None: filter={} interfaces = {} for interface in self.driver.shell.GetInterfaces(filter): iface = Interface() @@ -98,23 +101,27 @@ class PlAggregate: return links - def get_node_tags(self, filter={}): + def get_node_tags(self, filter=None): + if filter is None: filter={} node_tags = {} for node_tag in self.driver.shell.GetNodeTags(filter): node_tags[node_tag['node_tag_id']] = node_tag return node_tags - def get_pl_initscripts(self, filter={}): + def get_pl_initscripts(self, filter=None): + if filter is None: filter={} pl_initscripts = {} filter.update({'enabled': True}) for initscript in self.driver.shell.GetInitScripts(filter): pl_initscripts[initscript['initscript_id']] = initscript return pl_initscripts - def get_slivers(self, urns, options={}): + def get_slivers(self, urns, options=None): + if options is None: options={} names = set() slice_ids = set() node_ids = [] + slice_hrn = None for urn in urns: xrn = PlXrn(xrn=urn) if xrn.type == 'sliver': @@ -129,24 +136,18 @@ class PlAggregate: pass else: slice_hrn = xrn.get_hrn() - top_auth_hrn = top_auth(slice_hrn) - site_hrn = '.'.join(slice_hrn.split('.')[:-1]) - slice_part = slice_hrn.split('.')[-1] - if top_auth_hrn == self.driver.hrn: - login_base = slice_hrn.split('.')[-2][:12] - else: - login_base = hash_loginbase(site_hrn) - - slice_name = '_'.join([login_base, slice_part]) - names.add(slice_name) filter = {} - if names: - filter['name'] = list(names) + filter['peer_id'] = None if slice_ids: filter['slice_id'] = list(slice_ids) - # get slices - slices = self.driver.shell.GetSlices(filter) + # get all slices + all_slices = self.driver.shell.GetSlices(filter, ['slice_id', 'name', 'hrn', 'person_ids', 'node_ids', 'slice_tag_ids', 'expires']) + if slice_hrn: + slices = [slice for slice in all_slices if slice['hrn'] == slice_hrn] + else: + slices = all_slices + if not slices: return [] slice = slices[0] @@ -198,7 +199,9 @@ class PlAggregate: slivers.append(node) return slivers - def node_to_rspec_node(self, node, sites, interfaces, node_tags, pl_initscripts=[], grain=None, options={}): + def node_to_rspec_node(self, node, sites, interfaces, node_tags, pl_initscripts=None, grain=None, options=None): + if pl_initscripts is None: pl_initscripts=[] + if options is None: options={} rspec_node = NodeElement() # xxx how to retrieve site['login_base'] site=sites[node['site_id']] @@ -291,7 +294,8 @@ class PlAggregate: tags_dict[tag['node_id']] = tag return tags_dict - def get_slice_nodes(self, slice, options={}): + def get_slice_nodes(self, slice, options=None): + if options is None: options={} nodes_dict = {} filter = {'peer_id': None} tags_filter = {} @@ -309,7 +313,8 @@ class PlAggregate: nodes_dict[node['node_id']] = node return nodes_dict - def rspec_node_to_geni_sliver(self, rspec_node, sliver_allocations = {}): + def rspec_node_to_geni_sliver(self, rspec_node, sliver_allocations=None): + if sliver_allocations is None: sliver_allocations={} if rspec_node['sliver_id'] in sliver_allocations: # set sliver allocation and operational status sliver_allocation = sliver_allocations[rspec_node['sliver_id']] @@ -338,7 +343,8 @@ class PlAggregate: } return geni_sliver - def get_leases(self, slice=None, options={}): + def get_leases(self, slice=None, options=None): + if options is None: options={} now = int(time.time()) filter={} @@ -375,7 +381,8 @@ class PlAggregate: return rspec_leases - def list_resources(self, version = None, options={}): + def list_resources(self, version = None, options=None): + if options is None: options={} version_manager = VersionManager() version = version_manager.get_version(version) @@ -415,7 +422,8 @@ class PlAggregate: return rspec.toxml() - def describe(self, urns, version=None, options={}): + def describe(self, urns, version=None, options=None): + if options is None: options={} version_manager = VersionManager() version = version_manager.get_version(version) rspec_version = version_manager._get_version(version.type, version.version, 'manifest') @@ -434,7 +442,7 @@ class PlAggregate: geni_urn = urns[0] sliver_ids = [sliver['sliver_id'] for sliver in slivers] constraint = SliverAllocation.sliver_id.in_(sliver_ids) - sliver_allocations = dbsession.query(SliverAllocation).filter(constraint) + sliver_allocations = self.driver.api.dbsession().query(SliverAllocation).filter(constraint) sliver_allocation_dict = {} for sliver_allocation in sliver_allocations: geni_urn = sliver_allocation.slice_urn