(on top of creating an account for him).
Prevents duplicates created upon importing the user from LDAP to
SFA (same email).
if ldapentry['mail'][0] == "unknown":
tmpemail = None
- #except IndexError:
- #logger.error("LDAP ldapFindHRn : no entry for record %s found"\
- #%(record))
- #return None
-
- try:
+ parent_hrn = None
+ peer_authority = None
+ if 'hrn' in record:
hrn = record['hrn']
parent_hrn = get_authority(hrn)
- peer_authority = None
if parent_hrn != self.authname:
peer_authority = parent_hrn
-
#In case the user was not imported from Senslab LDAP
#but from another federated site, has an account in
#senslab but currently using his hrn from federated site
- #then the login is different from the one found in its hrn
+ #then the login is different from the one found in its hrn
if tmpname != hrn.split('.')[1]:
hrn = None
- results = {
- 'type': 'user',
- 'pkey': ldapentry['sshPublicKey'][0],
- #'uid': ldapentry[1]['uid'][0],
- 'uid': tmpname ,
- 'email':tmpemail,
- #'email': ldapentry[1]['mail'][0],
- 'first_name': ldapentry['givenName'][0],
- 'last_name': ldapentry['sn'][0],
- #'phone': 'none',
- 'serial': 'none',
- 'authority': parent_hrn,
- 'peer_authority': peer_authority,
- 'pointer' : -1,
- 'hrn': hrn,
- }
- except KeyError,error:
- logger.log_exc("LDAPapi \t LdaFindUser KEyError %s" \
- %error )
- return
+ else:
+ hrn = None
+
+
+
+ results = {
+ 'type': 'user',
+ 'pkey': ldapentry['sshPublicKey'][0],
+ #'uid': ldapentry[1]['uid'][0],
+ 'uid': tmpname ,
+ 'email':tmpemail,
+ #'email': ldapentry[1]['mail'][0],
+ 'first_name': ldapentry['givenName'][0],
+ 'last_name': ldapentry['sn'][0],
+ #'phone': 'none',
+ 'serial': 'none',
+ 'authority': parent_hrn,
+ 'peer_authority': peer_authority,
+ 'pointer' : -1,
+ 'hrn': hrn,
+ }
+ #except KeyError,error:
+ #logger.log_exc("LDAPapi \t LdaFindUser KEyError %s" \
+ #%error )
+ #return
else:
#Asked for all users in ldap
results = []
from sfa.util.faults import SliverDoesNotExist, UnknownSfaType
from sfa.util.sfalogging import logger
-
from sfa.storage.alchemy import dbsession
from sfa.storage.model import RegRecord, RegUser, RegSlice
from sqlalchemy.orm import joinedload
self.oar = OARrestapi()
self.ldap = LDAPapi()
self.time_format = "%Y-%m-%d %H:%M:%S"
- self.db = SlabDB(config, debug = True)
+ self.db = SlabDB(config, debug = False)
self.cache = None
logger.warning("SLABDRIVER DeleteSlice %s "%(slice_record))
return
+ def __add_person_to_db(self, user_dict):
+ hrn = Xrn(user_dict['urn']).get_hrn()
+ check_if_exists = dbsession.query(RegUser).filter_by(email = user_dict['email']).first()
+ #user doesn't exists
+ if not check_if_exists:
+ logger.debug("__add_person_to_db \t Adding %s \r\n \r\n \
+ _________________________________________________________________________\
+ " %(hrn))
+ user_record = RegUser(hrn = hrn, pointer= '-1', authority=get_authority(hrn), \
+ email= user_dict['email'], gid = None)
+ user_record.reg_keys = [RegKey(user_dict['pkey'])]
+ user_record.just_created()
+ dbsession.add (user_record)
+ dbsession.commit()
+ return
+
#TODO AddPerson 04/07/2012 SA
#def AddPerson(self, auth, person_fields=None):
def AddPerson(self, record):#TODO fixing 28/08//2012 SA
"""
ret = self.ldap.LdapAddUser(record)
logger.debug("SLABDRIVER AddPerson return code %s \r\n "%(ret))
+ self.__add_person_to_db(record)
return ret['uid']
#TODO AddPersonToSite 04/07/2012 SA
for added_user_email in added_user_emails:
#hrn, type = urn_to_hrn(added_user['urn'])
-
+ added_user = users_dict[added_user_email]
+ logger.debug(" SLABSLICE \r\n \r\n \t THE SECOND verify_person added_user %s" %(added_user))
person = {}
person['peer_person_id'] = None
k_list = ['first_name','last_name','person_id']
person['mail'] = added_user['email']
person['email'] = added_user['email']
person['key_ids'] = added_user.get('key_ids', [])
-
+ person['urn'] = added_user['urn']
+
#person['person_id'] = self.driver.AddPerson(person)
person['uid'] = self.driver.AddPerson(person)
+
+ logger.debug(" SLABSLICE \r\n \r\n \t THE SECOND verify_person ppeersonne %s" %(person))
#Update slice_Record with the id now known to LDAP
slice_record['login'] = person['uid']
- slice_record['reg_researchers'] = [self.driver.root_auth + '.' + person['uid']]
- slice_record['reg-researchers'] = slice_record['reg_researchers']
- logger.debug(" SLABSLICE \r\n \r\n \t THE SECONDverify_person slice_record['record_id_user'] %s" %(slice_record))
+ #slice_record['reg_researchers'] = [self.driver.root_auth + '.' + person['uid']]
+ #slice_record['reg-researchers'] = slice_record['reg_researchers']
+
#if peer:
#person['peer_person_id'] = added_user['person_id']
added_persons.append(person)
warn_logger = _SfaLogger(loggername='warning', level=logging.WARNING)
error_logger = _SfaLogger(loggername='error', level=logging.ERROR)
critical_logger = _SfaLogger(loggername='critical', level=logging.CRITICAL)
+
+#sql_logger = _SfaLogger(loggername = 'sqlalchemy.engine', level=logging.DEBUG)
+
logger = info_logger
sfi_logger = _SfaLogger(logfile=os.path.expanduser("~/.sfi/")+'sfi.log',loggername='sfilog', level=logging.DEBUG)
########################################