From 948ad94acbc4605754e9d46680dc5a42d3bf2f6d Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Wed, 29 Aug 2012 15:50:03 +0200 Subject: [PATCH] Fixed bug when listing nodes in a slice. --- sfa/rspecs/elements/versions/slabv1Node.py | 2 +- sfa/senslab/LDAPapi.py | 8 ++++--- sfa/senslab/slabaggregate.py | 14 +++++++---- sfa/senslab/slabdriver.py | 27 ++++++++++------------ 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/sfa/rspecs/elements/versions/slabv1Node.py b/sfa/rspecs/elements/versions/slabv1Node.py index e1c95362..ce5a2152 100644 --- a/sfa/rspecs/elements/versions/slabv1Node.py +++ b/sfa/rspecs/elements/versions/slabv1Node.py @@ -31,7 +31,7 @@ class Slabv1Node: should be used after add_nodes, which creates the network item. """ - + logger.debug(" add_connection_information xml %s" %(xml)) #Get network item in the xml network_elems = xml.xpath('//network') if len(network_elems) > 0: diff --git a/sfa/senslab/LDAPapi.py b/sfa/senslab/LDAPapi.py index ac0a424f..f0ecb58b 100644 --- a/sfa/senslab/LDAPapi.py +++ b/sfa/senslab/LDAPapi.py @@ -328,8 +328,10 @@ class LDAPapi : attrs['gidNumber'] = self.ldapUserGidNumber attrs['uidNumber'] = self.find_max_uidNumber() attrs['mail'] = record['mail'].lower() - - attrs['sshPublicKey'] = self.get_ssh_pkey(record) + try: + attrs['sshPublicKey'] = record['pkey'] + except KeyError: + attrs['sshPublicKey'] = self.get_ssh_pkey(record) #Password is automatically generated because SFA user don't go @@ -357,7 +359,7 @@ class LDAPapi : - def LdapAddUser(self, record = None) : + def LdapAddUser(self, record) : """Add SFA user to LDAP if it is not in LDAP yet. """ user_ldap_attrs = self.make_ldap_attributes_from_record(record) diff --git a/sfa/senslab/slabaggregate.py b/sfa/senslab/slabaggregate.py index 0a42bf52..7298a334 100644 --- a/sfa/senslab/slabaggregate.py +++ b/sfa/senslab/slabaggregate.py @@ -78,14 +78,16 @@ class SlabAggregate: for sfa_slice in slices: try: - for node_id in sfa_slice['node_ids']: + for node in sfa_slice['node_ids']: #node_id = self.driver.root_auth + '.' + node_id sliver = Sliver({'sliver_id': urn_to_sliver_id(slice_urn, \ - sfa_slice['record_id_slice'], node_id), + sfa_slice['record_id_slice'], node['hostname']), 'name': sfa_slice['slice_hrn'], 'type': 'slab-node', 'tags': []}) - slivers[node_id] = sliver + logger.log_exc("SLABAGGREGATE \t \ + get_slice_and_slivers node_id %s "%(node)) + slivers[node['hostname']] = sliver except KeyError: logger.log_exc("SLABAGGREGATE \t \ get_slice_and_slivers KeyError ") @@ -173,8 +175,8 @@ class SlabAggregate: slice_nodes_list = [] if slices: for one_slice in slices: - for node_id in one_slice['node_ids']: - slice_nodes_list.append(node_id) + for node in one_slice['node_ids']: + slice_nodes_list.append(node['hostname']) reserved_nodes = self.driver.GetNodesCurrentlyInUse() logger.debug("SLABAGGREGATE api get_rspec slice_nodes_list %s "\ @@ -349,6 +351,8 @@ class SlabAggregate: if lease_option in ['all', 'resources']: #if not options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'leases': nodes = self.get_nodes(slices, slivers) + logger.debug("SlabAggregate \tget_rspec **** \ + nodes %s \r\n" %(nodes)) #In case creating a job, slice_xrn is not set to None rspec.version.add_nodes(nodes) if slice_xrn : diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index b02ad9d2..f009aa40 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -377,7 +377,7 @@ class SlabDriver(Driver): if key not in acceptable_fields: slab_record.pop(key) logger.debug("SLABDRIVER.PY register") - slices = self.GetSlices(slice_filter =slab_record['hrn'], \ + slices = self.GetSlices(slice_filter=slab_record['hrn'], \ slice_filter_type = 'slice_hrn') if not slices: pointer = self.AddSlice(slab_record) @@ -388,6 +388,9 @@ class SlabDriver(Driver): persons = self.GetPersons([sfa_record]) #persons = self.GetPersons([sfa_record['hrn']]) if not persons: + sfa_record['enabled'] = False + #For Senslab LDAP, if the user is a new one, disable the + #account so that admins have to acknowledge the user first. pointer = self.AddPerson(dict(sfa_record)) #add in LDAP else: @@ -399,19 +402,11 @@ class SlabDriver(Driver): #{'enabled': sfa_record['enabled']}) #TODO register Change this AddPersonToSite stuff 05/07/2012 SA - # add this person to the site only if - # she is being added for the first - # time by sfa and doesnt already exist in plc - if not persons or not persons[0]['site_ids']: - login_base = get_leaf(sfa_record['authority']) - self.AddPersonToSite(pointer, login_base) + #No site in senslab 28/08/12 SA + # What roles should this user have? - #TODO : DElete this AddRoleToPerson 04/07/2012 SA - #Function prototype is : - #AddRoleToPerson(self, auth, role_id_or_name, person_id_or_email) - #what's the pointer doing here? - self.AddRoleToPerson('user', pointer) + #No user roles in Slab/SFA 28/08/12 SA: roles are handled in LDAP # Add the user's key if pub_key: self.AddPersonKey(pointer, {'key_type' : 'ssh', \ @@ -1563,8 +1558,9 @@ class SlabDriver(Driver): return #TODO AddPerson 04/07/2012 SA - def AddPerson(self, auth, person_fields=None): - """Adds a new account. Any fields specified in person_fields are used, + #def AddPerson(self, auth, person_fields=None): + def AddPerson(self, record):#TODO fixing 28/08//2012 SA + """Adds a new account. Any fields specified in records are used, otherwise defaults are used. Accounts are disabled by default. To enable an account, use UpdatePerson(). @@ -1572,7 +1568,8 @@ class SlabDriver(Driver): FROM PLC API DOC """ - logger.warning("SLABDRIVER AddPerson EMPTY - DO NOTHING \r\n ") + ret = self.ldap.LdapAddUser(record) + logger.warning("SLABDRIVER AddPerson return code %s \r\n ", ret) return #TODO AddPersonToSite 04/07/2012 SA -- 2.45.2