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
- 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)
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 ")
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 "\
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 :
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)
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:
#{'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', \
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().
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