From 58a480022cec9e3ff8a7674d3d58afe5f0c8c2b9 Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Thu, 14 Nov 2013 13:44:43 +0100 Subject: [PATCH] Cortexlab driver modifications - propagating cortexlabshell --- sfa/cortexlab/cortexlabaggregate.py | 20 ++++++------ sfa/cortexlab/cortexlabdriver.py | 46 +++++++++++++-------------- sfa/cortexlab/cortexlabslices.py | 48 ++++++++++++++--------------- 3 files changed, 57 insertions(+), 57 deletions(-) diff --git a/sfa/cortexlab/cortexlabaggregate.py b/sfa/cortexlab/cortexlabaggregate.py index e91b57b3..f58acc66 100644 --- a/sfa/cortexlab/cortexlabaggregate.py +++ b/sfa/cortexlab/cortexlabaggregate.py @@ -101,7 +101,7 @@ class CortexlabAggregate: slice_name = slice_hrn # GetSlices always returns a list, even if there is only one element - slices = self.driver.cortexlab_api.GetSlices(slice_filter=str(slice_name), + slices = self.driver.testbed_shell.GetSlices(slice_filter=str(slice_name), slice_filter_type='slice_hrn', login=login) @@ -155,7 +155,7 @@ class CortexlabAggregate: researchers = [sfa_slice['reg_researchers'][0].__dict__] # look in ldap: ldap_username = None - ret = self.driver.iotlab_api.GetPersons(researchers) + ret = self.driver.testbed_shell.GetPersons(researchers) if len(ret) != 0: ldap_username = ret[0]['uid'] @@ -203,9 +203,9 @@ class CortexlabAggregate: return [] # get the granularity in second for the reservation system - grain = self.driver.cortexlab_api.GetLeaseGranularity() + grain = self.driver.testbed_shell.GetLeaseGranularity() - nodes = self.driver.cortexlab_api.GetNodes() + nodes = self.driver.testbed_shell.GetNodes() nodes_dict = {} @@ -217,7 +217,7 @@ class CortexlabAggregate: logger.debug("CortexlabAggregate api get_nodes slices %s " % (slices)) - reserved_nodes = self.driver.cortexlab_api.GetNodesCurrentlyInUse() + reserved_nodes = self.driver.testbed_shell.GetNodesCurrentlyInUse() logger.debug("CortexlabAggregate api get_nodes slice_nodes_list %s " % (slice_nodes_list)) for node in nodes: @@ -228,12 +228,12 @@ class CortexlabAggregate: - cortexlab_xrn = cortexlab_xrn_object(self.driver.cortexlab_api.root_auth, + cortexlab_xrn = cortexlab_xrn_object(self.driver.testbed_shell.root_auth, node['hostname']) rspec_node['component_id'] = cortexlab_xrn.urn rspec_node['component_name'] = node['hostname'] rspec_node['component_manager_id'] = \ - hrn_to_urn(self.driver.cortexlab_api.root_auth, + hrn_to_urn(self.driver.testbed_shell.root_auth, 'authority+sa') # Iotlab's nodes are federated : there is only one authority @@ -305,8 +305,8 @@ class CortexlabAggregate: logger.debug("CortexlabAggregate get_all_leases ldap_username %s " % (ldap_username)) - leases = self.driver.cortexlab_api.GetLeases(login=ldap_username) - grain = self.driver.cortexlab_api.GetLeaseGranularity() + leases = self.driver.testbed_shell.GetLeases(login=ldap_username) + grain = self.driver.testbed_shell.GetLeaseGranularity() # site_ids = [] rspec_leases = [] for lease in leases: @@ -316,7 +316,7 @@ class CortexlabAggregate: rspec_lease['lease_id'] = lease['lease_id'] cortexlab_xrn = cortexlab_xrn_object( - self.driver.cortexlab_api.root_auth, node) + self.driver.testbed_shell.root_auth, node) rspec_lease['component_id'] = cortexlab_xrn.urn #rspec_lease['component_id'] = hostname_to_urn(self.driver.hrn,\ #site, node['hostname']) diff --git a/sfa/cortexlab/cortexlabdriver.py b/sfa/cortexlab/cortexlabdriver.py index c5005a84..00ad8675 100644 --- a/sfa/cortexlab/cortexlabdriver.py +++ b/sfa/cortexlab/cortexlabdriver.py @@ -17,7 +17,7 @@ from sfa.cortexlab.cortexlabaggregate import CortexlabAggregate, \ from sfa.iotlab.iotlabslices import CortexlabSlices -from sfa.cortexlab.cortexlabapi import CortexlabTestbedAPI +from sfa.cortexlab.cortexlabshell import CortexlabShell class CortexlabDriver(Driver): @@ -41,7 +41,7 @@ class CortexlabDriver(Driver): """ Driver.__init__(self, config) self.config = config - self.cortexlab_api = CortexlabTestbedAPI(config) + self.testbed_shell = CortexlabShell(config) self.cache = None def augment_records_with_testbed_info(self, record_list): @@ -86,7 +86,7 @@ class CortexlabDriver(Driver): # look for node info using GetNodes # the record is about one node only filter_dict = {'hrn': [record['hrn']]} - node_info = self.cortexlab_api.GetNodes(filter_dict) + node_info = self.testbed_shell.GetNodes(filter_dict) # the node_info is about one node only, but it is formatted # as a list record.update(node_info[0]) @@ -118,7 +118,7 @@ class CortexlabDriver(Driver): 'key_ids': ''}) #Get iotlab slice record and oar job id if any. - recslice_list = self.cortexlab_api.GetSlices( + recslice_list = self.testbed_shell.GetSlices( slice_filter=str(record['hrn']), slice_filter_type='slice_hrn') @@ -132,7 +132,7 @@ class CortexlabDriver(Driver): fill_record_info experiment_id %s " % (rec['experiment_id'])) - record['node_ids'] = [self.cortexlab_api.root_auth + + record['node_ids'] = [self.testbed_shell.root_auth + '.' + hostname for hostname in rec['node_ids']] except KeyError: @@ -146,7 +146,7 @@ class CortexlabDriver(Driver): #The record is a SFA user record. #Get the information about his slice from Iotlab's DB #and add it to the user record. - recslice_list = self.cortexlab_api.GetSlices( + recslice_list = self.testbed_shell.GetSlices( slice_filter=record['record_id'], slice_filter_type='record_id_user') @@ -179,7 +179,7 @@ class CortexlabDriver(Driver): 'hrn': recslice_list[0]['hrn']}) #GetPersons takes [] as filters - user_cortexlab = self.cortexlab_api.GetPersons([record]) + user_cortexlab = self.testbed_shell.GetPersons([record]) record.update(user_cortexlab[0]) #For client_helper.py compatibility @@ -215,7 +215,7 @@ class CortexlabDriver(Driver): """ #First get the slice with the slice hrn - slice_list = self.cortexlab_api.GetSlices(slice_filter=slice_hrn, + slice_list = self.testbed_shell.GetSlices(slice_filter=slice_hrn, slice_filter_type='slice_hrn') if len(slice_list) == 0: @@ -228,7 +228,7 @@ class CortexlabDriver(Driver): slice_nodes_list = [] slice_nodes_list = one_slice['node_ids'] #Get all the corresponding nodes details - nodes_all = self.cortexlab_api.GetNodes( + nodes_all = self.testbed_shell.GetNodes( {'hostname': slice_nodes_list}, ['node_id', 'hostname', 'site', 'boot_state']) nodeall_byhostname = dict([(one_node['hostname'], one_node) @@ -361,7 +361,7 @@ class CortexlabDriver(Driver): if not lease.get('lease_id'): if get_authority(lease['component_id']) == \ - self.cortexlab_api.root_auth: + self.testbed_shell.root_auth: single_requested_lease['hostname'] = \ cortexlab_xrn_to_hostname(\ lease.get('component_id').strip()) @@ -372,7 +372,7 @@ class CortexlabDriver(Driver): #the lease to the requested leases list duration_in_seconds = \ int(single_requested_lease['duration']) - if duration_in_seconds >= self.cortexlab_api.GetMinExperimentDurationInGranularity(): + if duration_in_seconds >= self.testbed_shell.GetMinExperimentDurationInGranularity(): requested_lease_list.append(single_requested_lease) return requested_lease_list @@ -499,7 +499,7 @@ class CortexlabDriver(Driver): #requested_slivers = [node.get('component_id') \ #for node in rspec.version.get_nodes_with_slivers()\ - #if node.get('authority_id') is self.cortexlab_api.root_auth] + #if node.get('authority_id') is self.testbed_shell.root_auth] #l = [ node for node in rspec.version.get_nodes_with_slivers() ] #logger.debug("SLADRIVER \tcreate_sliver requested_slivers \ #requested_slivers %s listnodes %s" \ @@ -542,7 +542,7 @@ class CortexlabDriver(Driver): delete_sliver . """ - sfa_slice_list = self.cortexlab_api.GetSlices( + sfa_slice_list = self.testbed_shell.GetSlices( slice_filter=slice_hrn, slice_filter_type='slice_hrn') @@ -560,7 +560,7 @@ class CortexlabDriver(Driver): logger.debug("CORTEXLABDRIVER.PY delete_sliver peer %s \ \r\n \t sfa_slice %s " % (peer, sfa_slice)) try: - self.cortexlab_api.DeleteSliceFromNodes(sfa_slice) + self.testbed_shell.DeleteSliceFromNodes(sfa_slice) return True except: return False @@ -655,7 +655,7 @@ class CortexlabDriver(Driver): # get data from db - slices = self.cortexlab_api.GetSlices() + slices = self.testbed_shell.GetSlices() logger.debug("CORTEXLABDRIVER.PY \tlist_slices hrn %s \r\n \r\n" % (slices)) slice_hrns = [iotlab_slice['hrn'] for iotlab_slice in slices] @@ -732,11 +732,11 @@ class CortexlabDriver(Driver): if new_key: # must check this key against the previous one if it exists - persons = self.cortexlab_api.GetPersons([old_sfa_record]) + persons = self.testbed_shell.GetPersons([old_sfa_record]) person = persons[0] keys = [person['pkey']] #Get all the person's keys - keys_dict = self.cortexlab_api.GetKeys(keys) + keys_dict = self.testbed_shell.GetKeys(keys) # Delete all stale keys, meaning the user has only one key #at a time @@ -749,8 +749,8 @@ class CortexlabDriver(Driver): else: #remove all the other keys for key in keys_dict: - self.cortexlab_api.DeleteKey(person, key) - self.cortexlab_api.AddPersonKey( + self.testbed_shell.DeleteKey(person, key) + self.testbed_shell.AddPersonKey( person, {'sshPublicKey': person['pkey']}, {'sshPublicKey': new_key}) return True @@ -779,16 +779,16 @@ class CortexlabDriver(Driver): if sfa_record_type == 'user': #get user from iotlab ldap - person = self.cortexlab_api.GetPersons(sfa_record) + person = self.testbed_shell.GetPersons(sfa_record) #No registering at a given site in Iotlab. #Once registered to the LDAP, all iotlab sites are #accesible. if person: #Mark account as disabled in ldap - return self.cortexlab_api.DeletePerson(sfa_record) + return self.testbed_shell.DeletePerson(sfa_record) elif sfa_record_type == 'slice': - if self.cortexlab_api.GetSlices(slice_filter=hrn, + if self.testbed_shell.GetSlices(slice_filter=hrn, slice_filter_type='slice_hrn'): - ret = self.cortexlab_api.DeleteSlice(sfa_record) + ret = self.testbed_shell.DeleteSlice(sfa_record) return True diff --git a/sfa/cortexlab/cortexlabslices.py b/sfa/cortexlab/cortexlabslices.py index 2ef77154..f7ba032e 100644 --- a/sfa/cortexlab/cortexlabslices.py +++ b/sfa/cortexlab/cortexlabslices.py @@ -45,7 +45,7 @@ class IotlabSlices: slice_authority = get_authority(hrn) #Iotlab stuff #This slice belongs to the current site - if slice_authority == self.driver.iotlab_api.root_auth: + if slice_authority == self.driver.testbed_shell.root_auth: site_authority = slice_authority return None @@ -58,7 +58,7 @@ class IotlabSlices: # check if we are already peered with this site_authority #if so find the peer record - peers = self.driver.iotlab_api.GetPeers(peer_filter=site_authority) + peers = self.driver.testbed_shell.GetPeers(peer_filter=site_authority) for peer_record in peers: if site_authority == peer_record.hrn: peer = peer_record @@ -108,7 +108,7 @@ class IotlabSlices: logger.debug("IOTLABSLICES verify_slice_leases sfa_slice %s " % (sfa_slice)) #First get the list of current leases from OAR - leases = self.driver.iotlab_api.GetLeases({'slice_hrn': sfa_slice['hrn']}) + leases = self.driver.testbed_shell.GetLeases({'slice_hrn': sfa_slice['hrn']}) logger.debug("IOTLABSLICES verify_slice_leases requested_jobs_dict %s \ leases %s " % (requested_jobs_dict, leases)) @@ -132,8 +132,8 @@ class IotlabSlices: for job in requested_jobs_dict.values(): job['duration'] = \ str(int(job['duration']) \ - * self.driver.iotlab_api.GetLeaseGranularity()) - if job['duration'] < self.driver.iotlab_api.GetLeaseGranularity(): + * self.driver.testbed_shell.GetLeaseGranularity()) + if job['duration'] < self.driver.testbed_shell.GetLeaseGranularity(): del requested_jobs_dict[job['start_time']] #Requested jobs @@ -207,14 +207,14 @@ class IotlabSlices: logger.debug("IOTLABSLICES \ NEWLEASE slice %s job %s" % (sfa_slice, job)) - self.driver.iotlab_api.AddLeases( + self.driver.testbed_shell.AddLeases( job['hostname'], sfa_slice, int(job['start_time']), int(job['duration'])) #Deleted leases are the ones with lease id not declared in the Rspec if deleted_leases: - self.driver.iotlab_api.DeleteLeases(deleted_leases, + self.driver.testbed_shell.DeleteLeases(deleted_leases, sfa_slice['user']['uid']) logger.debug("IOTLABSLICES \ verify_slice_leases slice %s deleted_leases %s" @@ -223,7 +223,7 @@ class IotlabSlices: if reschedule_jobs_dict: for start_time in reschedule_jobs_dict: job = reschedule_jobs_dict[start_time] - self.driver.iotlab_api.AddLeases( + self.driver.testbed_shell.AddLeases( job['hostname'], sfa_slice, int(job['start_time']), int(job['duration'])) @@ -259,7 +259,7 @@ class IotlabSlices: deleted_nodes = [] if 'node_ids' in sfa_slice: - nodes = self.driver.iotlab_api.GetNodes( + nodes = self.driver.testbed_shell.GetNodes( sfa_slice['list_node_ids'], ['hostname']) current_slivers = [node['hostname'] for node in nodes] @@ -274,7 +274,7 @@ class IotlabSlices: if deleted_nodes: #Delete the entire experience - self.driver.iotlab_api.DeleteSliceFromNodes(sfa_slice) + self.driver.testbed_shell.DeleteSliceFromNodes(sfa_slice) return nodes def verify_slice(self, slice_hrn, slice_record, sfa_peer): @@ -300,7 +300,7 @@ class IotlabSlices: slicename = slice_hrn # check if slice belongs to Iotlab - slices_list = self.driver.iotlab_api.GetSlices( + slices_list = self.driver.testbed_shell.GetSlices( slice_filter=slicename, slice_filter_type='slice_hrn') sfa_slice = None @@ -316,7 +316,7 @@ class IotlabSlices: else: #Search for user in ldap based on email SA 14/11/12 - ldap_user = self.driver.iotlab_api.ldap.LdapFindUser(\ + ldap_user = self.driver.testbed_shell.ldap.LdapFindUser(\ slice_record['user']) logger.debug(" IOTLABSLICES \tverify_slice Oups \ slice_record %s sfa_peer %s ldap_user %s" @@ -333,7 +333,7 @@ class IotlabSlices: } if ldap_user: - hrn = self.driver.iotlab_api.root_auth + '.' + ldap_user['uid'] + hrn = self.driver.testbed_shell.root_auth + '.' + ldap_user['uid'] user = self.driver.get_user_record(hrn) logger.debug(" IOTLABSLICES \tverify_slice hrn %s USER %s" @@ -341,7 +341,7 @@ class IotlabSlices: # add the external slice to the local SFA iotlab DB if sfa_slice: - self.driver.iotlab_api.AddSlice(sfa_slice, user) + self.driver.testbed_shell.AddSlice(sfa_slice, user) logger.debug("IOTLABSLICES \tverify_slice ADDSLICE OK") return sfa_slice @@ -416,7 +416,7 @@ class IotlabSlices: #Check user i in LDAP with GetPersons #Needed because what if the user has been deleted in LDAP but #is still in SFA? - existing_users = self.driver.iotlab_api.GetPersons(filter_user) + existing_users = self.driver.testbed_shell.GetPersons(filter_user) logger.debug(" \r\n IOTLABSLICES.PY \tverify_person filter_user \ %s existing_users %s " % (filter_user, existing_users)) @@ -436,7 +436,7 @@ class IotlabSlices: req += users[0]['email'] else: req += users['email'] - ldap_reslt = self.driver.iotlab_api.ldap.LdapSearch(req) + ldap_reslt = self.driver.testbed_shell.ldap.LdapSearch(req) if ldap_reslt: logger.debug(" IOTLABSLICES.PY \tverify_person users \ @@ -502,7 +502,7 @@ class IotlabSlices: person['email'] = added_user['email'] person['key_ids'] = added_user.get('key_ids', []) - ret = self.driver.iotlab_api.AddPerson(person) + ret = self.driver.testbed_shell.AddPerson(person) if 'uid' in ret: # meaning bool is True and the AddPerson was successful person['uid'] = ret['uid'] @@ -528,7 +528,7 @@ class IotlabSlices: key_ids = [] for person in persons: key_ids.extend(person['key_ids']) - keylist = self.driver.iotlab_api.GetKeys(key_ids, ['key_id', 'key']) + keylist = self.driver.testbed_shell.GetKeys(key_ids, ['key_id', 'key']) keydict = {} for key in keylist: @@ -554,21 +554,21 @@ class IotlabSlices: #try: ##if peer: #person = persondict[user['email']] - #self.driver.iotlab_api.UnBindObjectFromPeer( + #self.driver.testbed_shell.UnBindObjectFromPeer( # 'person',person['person_id'], # peer['shortname']) - ret = self.driver.iotlab_api.AddPersonKey( + ret = self.driver.testbed_shell.AddPersonKey( user['email'], key) #if peer: #key_index = user_keys.index(key['key']) #remote_key_id = user['key_ids'][key_index] - #self.driver.iotlab_api.BindObjectToPeer('key', \ + #self.driver.testbed_shell.BindObjectToPeer('key', \ #key['key_id'], peer['shortname'], \ #remote_key_id) #finally: #if peer: - #self.driver.iotlab_api.BindObjectToPeer('person', \ + #self.driver.testbed_shell.BindObjectToPeer('person', \ #person['person_id'], peer['shortname'], \ #user['person_id']) @@ -578,10 +578,10 @@ class IotlabSlices: removed_keys = set(existing_keys).difference(requested_keys) for key in removed_keys: #if peer: - #self.driver.iotlab_api.UnBindObjectFromPeer('key', \ + #self.driver.testbed_shell.UnBindObjectFromPeer('key', \ #key, peer['shortname']) user = users_by_key_string[key] - self.driver.iotlab_api.DeleteKey(user, key) + self.driver.testbed_shell.DeleteKey(user, key) return -- 2.43.0