X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fdummy%2Fdummyaggregate.py;h=2e6fc5b09e62f108b7cd7e62cbb2c74ae0ed3c8a;hb=31cc4fa991896f000abb106916662923f37bc3a6;hp=c5b4d10ce3d9dfa28ae576e57a8c027e2bdd4c22;hpb=4a2337e7f70cef81a8de37829aa63fc941c4b96e;p=sfa.git diff --git a/sfa/dummy/dummyaggregate.py b/sfa/dummy/dummyaggregate.py index c5b4d10c..2e6fc5b0 100644 --- a/sfa/dummy/dummyaggregate.py +++ b/sfa/dummy/dummyaggregate.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python2 from sfa.util.xrn import Xrn, hrn_to_urn, urn_to_hrn from sfa.util.sfatime import utcparse, datetime_to_string from sfa.util.sfalogging import logger @@ -22,6 +22,7 @@ from sfa.dummy.dummyxrn import DummyXrn, hostname_to_urn, hrn_to_dummy_slicename from sfa.storage.model import SliverAllocation import time + class DummyAggregate: def __init__(self, driver): @@ -42,24 +43,27 @@ class DummyAggregate: if not slices: return (slice, slivers) slice = slices[0] - - # sort slivers by node id + + # sort slivers by node id slice_nodes = [] if 'node_ids' in slice.keys(): - slice_nodes = self.driver.shell.GetNodes({'node_ids': slice['node_ids']}) + slice_nodes = self.driver.shell.GetNodes( + {'node_ids': slice['node_ids']}) for node in slice_nodes: - slivers[node['node_id']] = node + slivers[node['node_id']] = node return (slice, slivers) def get_nodes(self, options=None): - if options is None: options={} + if options is None: + options = {} filter = {} nodes = self.driver.shell.GetNodes(filter) return nodes def get_slivers(self, urns, options=None): - if options is None: options={} + if options is None: + options = {} slice_names = set() slice_ids = set() node_ids = [] @@ -88,7 +92,8 @@ class DummyAggregate: if not slices: return [] slice = slices[0] - slice['hrn'] = DummyXrn(auth=self.driver.hrn, slicename=slice['slice_name']).hrn + slice['hrn'] = DummyXrn(auth=self.driver.hrn, + slicename=slice['slice_name']).hrn # get sliver users users = [] @@ -111,13 +116,15 @@ class DummyAggregate: users_list.append(user) if node_ids: - node_ids = [node_id for node_id in node_ids if node_id in slice['node_ids']] + node_ids = [ + node_id for node_id in node_ids if node_id in slice['node_ids']] slice['node_ids'] = node_ids nodes_dict = self.get_slice_nodes(slice, options) slivers = [] for node in nodes_dict.values(): node.update(slice) - sliver_hrn = '%s.%s-%s' % (self.driver.hrn, slice['slice_id'], node['node_id']) + sliver_hrn = '%s.%s-%s' % (self.driver.hrn, + slice['slice_id'], node['node_id']) node['sliver_id'] = Xrn(sliver_hrn, type='sliver').urn node['urn'] = node['sliver_id'] node['services_user'] = users @@ -125,20 +132,25 @@ class DummyAggregate: return slivers def node_to_rspec_node(self, node, options=None): - if options is None: options={} + if options is None: + options = {} rspec_node = NodeElement() - site=self.driver.testbedInfo - rspec_node['component_id'] = hostname_to_urn(self.driver.hrn, site['name'], node['hostname']) + site = self.driver.testbedInfo + rspec_node['component_id'] = hostname_to_urn( + self.driver.hrn, site['name'], node['hostname']) rspec_node['component_name'] = node['hostname'] - rspec_node['component_manager_id'] = Xrn(self.driver.hrn, 'authority+cm').get_urn() - rspec_node['authority_id'] = hrn_to_urn(DummyXrn.site_hrn(self.driver.hrn, site['name']), 'authority+sa') - #distinguish between Shared and Reservable nodes + rspec_node['component_manager_id'] = Xrn( + self.driver.hrn, 'authority+cm').get_urn() + rspec_node['authority_id'] = hrn_to_urn(DummyXrn.site_hrn( + self.driver.hrn, site['name']), 'authority+sa') + # distinguish between Shared and Reservable nodes rspec_node['exclusive'] = 'false' rspec_node['hardware_types'] = [HardwareType({'name': 'dummy-pc'}), HardwareType({'name': 'pc'})] if site['longitude'] and site['latitude']: - location = Location({'longitude': site['longitude'], 'latitude': site['latitude'], 'country': 'unknown'}) + location = Location({'longitude': site['longitude'], 'latitude': site[ + 'latitude'], 'country': 'unknown'}) rspec_node['location'] = location return rspec_node @@ -147,27 +159,30 @@ class DummyAggregate: rspec_node['expires'] = datetime_to_string(utcparse(sliver['expires'])) # add sliver info rspec_sliver = Sliver({'sliver_id': sliver['urn'], - 'name': sliver['slice_name'], - 'type': 'dummy-vserver', - 'tags': []}) + 'name': sliver['slice_name'], + 'type': 'dummy-vserver', + 'tags': []}) rspec_node['sliver_id'] = rspec_sliver['sliver_id'] if sliver['urn'] in sliver_allocations: - rspec_node['client_id'] = sliver_allocations[sliver['urn']].client_id + rspec_node['client_id'] = sliver_allocations[ + sliver['urn']].client_id if sliver_allocations[sliver['urn']].component_id: - rspec_node['component_id'] = sliver_allocations[sliver['urn']].component_id + rspec_node['component_id'] = sliver_allocations[ + sliver['urn']].component_id rspec_node['slivers'] = [rspec_sliver] # slivers always provide the ssh service login = Login({'authentication': 'ssh-keys', 'hostname': sliver['hostname'], - 'port':'22', + 'port': '22', 'username': sliver['slice_name'], 'login': sliver['slice_name'] - }) + }) return rspec_node def get_slice_nodes(self, slice, options=None): - if options is None: options={} + if options is None: + options = {} nodes_dict = {} filter = {} if slice and slice.get('node_ids'): @@ -180,15 +195,16 @@ class DummyAggregate: nodes_dict[node['node_id']] = node return nodes_dict - def rspec_node_to_geni_sliver(self, rspec_node, sliver_allocations = None): - if sliver_allocations is None: 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']] if sliver_allocation: allocation_status = sliver_allocation.allocation_state if allocation_status == 'geni_allocated': - op_status = 'geni_pending_allocation' + op_status = 'geni_pending_allocation' elif allocation_status == 'geni_provisioned': op_status = 'geni_ready' else: @@ -201,22 +217,24 @@ class DummyAggregate: # required fields geni_sliver = {'geni_sliver_urn': rspec_node['sliver_id'], 'geni_expires': rspec_node['expires'], - 'geni_allocation_status' : allocation_status, + 'geni_allocation_status': allocation_status, 'geni_operational_status': op_status, 'geni_error': '', } return geni_sliver - def list_resources(self, version = None, options=None): - if options is None: options={} + def list_resources(self, 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, 'ad') + rspec_version = version_manager._get_version( + version.type, version.version, 'ad') rspec = RSpec(version=rspec_version, user_options=options) # get nodes - nodes = self.get_nodes(options) + nodes = self.get_nodes(options) nodes_dict = {} for node in nodes: nodes_dict[node['node_id']] = node @@ -231,10 +249,12 @@ class DummyAggregate: return rspec.toxml() def describe(self, urns, version=None, options=None): - if options is None: options={} + 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') + rspec_version = version_manager._get_version( + version.type, version.version, 'manifest') rspec = RSpec(version=rspec_version, user_options=options) # get slivers @@ -250,11 +270,13 @@ class DummyAggregate: geni_urn = urns[0] sliver_ids = [sliver['sliver_id'] for sliver in slivers] constraint = SliverAllocation.sliver_id.in_(sliver_ids) - sliver_allocations = self.driver.api.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 - sliver_allocation_dict[sliver_allocation.sliver_id] = sliver_allocation + sliver_allocation_dict[ + sliver_allocation.sliver_id] = sliver_allocation # add slivers nodes_dict = {} @@ -262,13 +284,14 @@ class DummyAggregate: nodes_dict[sliver['node_id']] = sliver rspec_nodes = [] for sliver in slivers: - rspec_node = self.sliver_to_rspec_node(sliver, sliver_allocation_dict) + rspec_node = self.sliver_to_rspec_node( + sliver, sliver_allocation_dict) rspec_nodes.append(rspec_node) - geni_sliver = self.rspec_node_to_geni_sliver(rspec_node, sliver_allocation_dict) + geni_sliver = self.rspec_node_to_geni_sliver( + rspec_node, sliver_allocation_dict) geni_slivers.append(geni_sliver) rspec.version.add_nodes(rspec_nodes) return {'geni_urn': geni_urn, 'geni_rspec': rspec.toxml(), 'geni_slivers': geni_slivers} -