X-Git-Url: http://git.onelab.eu/?p=sfa.git;a=blobdiff_plain;f=sfa%2Fplanetlab%2Fplslices.py;h=e868acd187251be8aa85563f85b24804a6ed5113;hp=635001cec8da8ad2c3091d64ab45809ad3624850;hb=7eb34251548a271ae964b2f7d7e0fad7a1e41f5a;hpb=184dd61175ae551139d065903099b031a35b9a33 diff --git a/sfa/planetlab/plslices.py b/sfa/planetlab/plslices.py index 635001ce..e868acd1 100644 --- a/sfa/planetlab/plslices.py +++ b/sfa/planetlab/plslices.py @@ -7,7 +7,8 @@ from sfa.util.xrn import Xrn, get_leaf, get_authority, urn_to_hrn from sfa.rspecs.rspec import RSpec from sfa.planetlab.vlink import VLink from sfa.planetlab.topology import Topology -from sfa.planetlab.plxrn import PlXrn, hrn_to_pl_slicename, xrn_to_hostname, top_auth, hash_loginbase +from sfa.planetlab.plxrn import (PlXrn, hrn_to_pl_slicename, xrn_to_hostname, + top_auth, hash_loginbase) from sfa.storage.model import SliverAllocation MAXINT = 2L**31 - 1 @@ -41,8 +42,9 @@ class PlSlices: person_ids = list(person_ids) all_slice_tag_ids = list(all_slice_tag_ids) # Get user information - all_persons_list = self.driver.shell.GetPersons({'person_id': person_ids, 'enabled': True}, - ['person_id', 'enabled', 'key_ids']) + all_persons_list = self.driver.shell.GetPersons( + {'person_id': person_ids, 'enabled': True}, + ['person_id', 'enabled', 'key_ids']) all_persons = {} for person in all_persons_list: all_persons[person['person_id']] = person @@ -90,13 +92,17 @@ class PlSlices: sliver_attributes = [] if node is not None: - for sliver_attribute in filter(lambda a: a['node_id'] == node['node_id'], slice_tags): + for sliver_attribute in filter( + lambda a: a['node_id'] == node['node_id'], + slice_tags): sliver_attributes.append(sliver_attribute['tagname']) attributes.append({'tagname': sliver_attribute['tagname'], 'value': sliver_attribute['value']}) # set nodegroup slice attributes - for slice_tag in filter(lambda a: a['nodegroup_id'] in node['nodegroup_ids'], slice_tags): + for slice_tag in filter( + lambda a: a['nodegroup_id'] in node['nodegroup_ids'], + slice_tags): # Do not set any nodegroup slice attributes for # which there is at least one sliver attribute # already set. @@ -104,7 +110,9 @@ class PlSlices: attributes.append({'tagname': slice_tag['tagname'], 'value': slice_tag['value']}) - for slice_tag in filter(lambda a: a['node_id'] is None, slice_tags): + for slice_tag in filter( + lambda a: a['node_id'] is None, + slice_tags): # Do not set any global slice attributes for # which there is at least one sliver attribute # already set. @@ -144,8 +152,9 @@ class PlSlices: def verify_slice_leases(self, slice, rspec_requested_leases): - leases = self.driver.shell.GetLeases({'name': slice['name'], 'clip': int(time.time())}, - ['lease_id', 'name', 'hostname', 't_from', 't_until']) + leases = self.driver.shell.GetLeases( + {'name': slice['name'], 'clip': int(time.time())}, + ['lease_id', 'name', 'hostname', 't_from', 't_until']) grain = self.driver.shell.GetLeaseGranularity() requested_leases = [] @@ -165,7 +174,8 @@ class PlSlices: if slice_name != slice['name']: continue - elif Xrn(lease['component_id']).get_authority_urn().split(':')[0] != self.driver.hrn: + elif (Xrn(lease['component_id']).get_authority_urn().split(':')[0] + != self.driver.hrn): continue hostname = xrn_to_hostname(lease['component_id']) @@ -180,8 +190,9 @@ class PlSlices: # prepare actual slice leases by lease_id leases_by_id = {} for lease in leases: - leases_by_id[lease['lease_id']] = {'name': lease['name'], 'hostname': lease['hostname'], - 't_from': lease['t_from'], 't_until': lease['t_until']} + leases_by_id[lease['lease_id']] = { + 'name': lease['name'], 'hostname': lease['hostname'], + 't_from': lease['t_from'], 't_until': lease['t_until']} added_leases = [] kept_leases_id = [] @@ -197,10 +208,11 @@ class PlSlices: try: self.driver.shell.DeleteLeases(deleted_leases_id) for lease in added_leases: - self.driver.shell.AddLeases(lease['hostname'], slice['name'], lease[ - 't_from'], lease['t_until']) + self.driver.shell.AddLeases( + lease['hostname'], slice['name'], + lease['t_from'], lease['t_until']) - except: + except Exception: logger.log_exc('Failed to add/remove slice leases') return leases @@ -235,7 +247,7 @@ class PlSlices: self.driver.shell.DeleteSliceFromNodes( slice['name'], deleted_nodes) - except: + except Exception: logger.log_exc('Failed to add/remove slice from nodes') slices = self.driver.shell.GetSlices(slice['name'], ['node_ids']) @@ -329,7 +341,8 @@ class PlSlices: self.verify_slice_tags(slice, slice_tags, { 'pltags': 'append'}, admin=True) - def verify_site(self, slice_xrn, slice_record=None, sfa_peer=None, options=None): + def verify_site(self, slice_xrn, + slice_record=None, sfa_peer=None, options=None): if slice_record is None: slice_record = {} if options is None: @@ -343,8 +356,9 @@ class PlSlices: login_base = hash_loginbase(site_hrn) # filter sites by hrn - sites = self.driver.shell.GetSites({'peer_id': None, 'hrn': site_hrn}, - ['site_id', 'name', 'abbreviated_name', 'login_base', 'hrn']) + sites = self.driver.shell.GetSites( + {'peer_id': None, 'hrn': site_hrn}, + ['site_id', 'name', 'abbreviated_name', 'login_base', 'hrn']) # alredy exists if sites: @@ -371,7 +385,8 @@ class PlSlices: return site - def verify_slice(self, slice_hrn, slice_record, sfa_peer, expiration, options=None): + def verify_slice(self, slice_hrn, slice_record, + sfa_peer, expiration, options=None): if options is None: options = {} top_auth_hrn = top_auth(slice_hrn) @@ -385,8 +400,9 @@ class PlSlices: expires = int(datetime_to_epoch(utcparse(expiration))) # Filter slices by HRN - slices = self.driver.shell.GetSlices({'peer_id': None, 'hrn': slice_hrn}, - ['slice_id', 'name', 'hrn', 'expires']) + slices = self.driver.shell.GetSlices( + {'peer_id': None, 'hrn': slice_hrn}, + ['slice_id', 'name', 'hrn', 'expires']) if slices: slice = slices[0] @@ -469,7 +485,8 @@ class PlSlices: return person_id - def verify_persons(self, slice_hrn, slice_record, users, sfa_peer, options=None): + def verify_persons(self, slice_hrn, slice_record, + users, sfa_peer, options=None): if options is None: options = {} @@ -501,8 +518,9 @@ class PlSlices: site_id = site['site_id'] # locate the slice object - slice = self.driver.shell.GetSlices({'peer_id': None, 'hrn': slice_hrn}, [ - 'slice_id', 'hrn', 'person_ids'])[0] + slice = self.driver.shell.GetSlices( + {'peer_id': None, 'hrn': slice_hrn}, + ['slice_id', 'hrn', 'person_ids'])[0] slice_id = slice['slice_id'] slice_person_ids = slice['person_ids'] @@ -538,10 +556,12 @@ class PlSlices: # and for this we need all the Person objects; we already have the target_existing ones # also we avoid issuing a call if possible target_created_persons = [] if not target_created_person_ids \ - else self.driver.shell.GetPersons \ - ({'peer_id': None, 'person_id': target_created_person_ids}, person_fields) - persons_by_person_id = {person['person_id']: person - for person in target_existing_persons + target_created_persons} + else self.driver.shell.GetPersons( + {'peer_id': None, 'person_id': target_created_person_ids}, + person_fields) + persons_by_person_id = { + person['person_id']: person + for person in target_existing_persons + target_created_persons} def user_by_person_id(person_id): person = persons_by_person_id[person_id] @@ -560,7 +580,8 @@ class PlSlices: # return hrns of the newly added persons - return [persons_by_person_id[person_id]['hrn'] for person_id in add_person_ids] + return [persons_by_person_id[person_id]['hrn'] + for person_id in add_person_ids] def verify_keys(self, persons_to_verify_keys, options=None): if options is None: @@ -578,13 +599,14 @@ class PlSlices: key = {'key': key_string, 'key_type': 'ssh'} self.driver.shell.AddPersonKey(int(person_id), key) - def verify_slice_tags(self, slice, requested_slice_attributes, options=None, admin=False): + def verify_slice_tags(self, slice, requested_slice_attributes, + options=None, admin=False): """ This function deals with slice tags, and supports 3 modes described in the 'pltags' option that can be either (*) 'ignore' (default) - do nothing (*) 'append' - only add incoming tags, that do not match an existing tag - (*) 'sync' - tries to do the plain wholesale thing, + (*) 'sync' - tries to do the plain wholesale thing, i.e. to leave the db in sync with incoming tags """ if options is None: @@ -634,8 +656,8 @@ class PlSlices: # be removed tag_found = False for requested_attribute in requested_slice_attributes: - if requested_attribute['name'] == slice_tag['tagname'] and \ - requested_attribute['value'] == slice_tag['value']: + if (requested_attribute['name'] == slice_tag['tagname'] and + requested_attribute['value'] == slice_tag['value']): tag_found = True break # remove tags only if not in append mode @@ -648,8 +670,8 @@ class PlSlices: if requested_attribute['name'] in valid_tag_names: tag_found = False for existing_attribute in existing_slice_tags: - if requested_attribute['name'] == existing_attribute['tagname'] and \ - requested_attribute['value'] == existing_attribute['value']: + if (requested_attribute['name'] == existing_attribute['tagname'] and \ + requested_attribute['value'] == existing_attribute['value']): tag_found = True break if not tag_found: @@ -659,7 +681,8 @@ class PlSlices: name = tag_or_att[ 'tagname'] if 'tagname' in tag_or_att else tag_or_att['name'] return "SliceTag slice={}, tagname={} value={}, node_id={}"\ - .format(slice['name'], tag_or_att['name'], tag_or_att['value'], tag_or_att.get('node_id')) + .format(slice['name'], tag_or_att['name'], + tag_or_att['value'], tag_or_att.get('node_id')) # remove stale tags for tag in slice_tags_to_remove: @@ -668,16 +691,17 @@ class PlSlices: friendly_message(tag))) self.driver.shell.DeleteSliceTag(tag['slice_tag_id']) except Exception as e: - logger.warn("Failed to remove slice tag {}\nCause:{}" - .format(friendly_message(tag), e)) + logger.warning("Failed to remove slice tag {}\nCause:{}" + .format(friendly_message(tag), e)) # add requested_tags for attribute in slice_attributes_to_add: try: logger.info("Adding Slice Tag {}".format( friendly_message(attribute))) - self.driver.shell.AddSliceTag(slice['name'], attribute['name'], - attribute['value'], attribute.get('node_id', None)) + self.driver.shell.AddSliceTag( + slice['name'], attribute['name'], + attribute['value'], attribute.get('node_id', None)) except Exception as e: - logger.warn("Failed to add slice tag {}\nCause:{}" - .format(friendly_message(attribute), e)) + logger.warning("Failed to add slice tag {}\nCause:{}" + .format(friendly_message(attribute), e))