Skip to content
Snippets Groups Projects
Commit 6b7c3818 authored by sveseli's avatar sveseli
Browse files

got dm user updates algorithm working

parent b11a5dd2
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python
import datetime
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.cli.dmCli import DmCli
from dm.common.utility.configurationManager import ConfigurationManager
......@@ -19,13 +20,14 @@ Description:
Updates all users in DM LDAP and database using information from APS DB.
""")
ConfigurationManager.getInstance().setConfigFile('/home/oxygen/SVESELI/Work/DM/etc/dm.conf')
print ConfigurationManager.getInstance().getConfigOption('DsRestApiFactory', 'username')
self.logger.debug('Starting sync process')
apsUserDbApi = ApsUserDbApi()
userRestApi = DsRestApiFactory.getUserRestApi()
self.logger.debug('Retrieving APS users')
apsUsers = apsUserDbApi.getApsUsers()
self.logger.debug('Number of APS Users: %s' % len(apsUsers))
self.logger.debug('Retrieving DM users')
dmUsers = userRestApi.getUsers()
self.logger.debug('Number of DM Users: %s' % len(dmUsers))
dmUserBadgeMap = {}
......@@ -60,15 +62,25 @@ Description:
nCreatedUsers += 1
else:
dmLastUpdate = dmUser.get('lastUpdate')
if dmLastUpdate:
# need to convert DM last update time to datetime object
# datetime cannot handle time zone at the moment
timeZonePos = dmLastUpdate.rfind('-')
dmLastUpdate = dmLastUpdate[0:timeZonePos]
dmLastUpdate = datetime.datetime.strptime(dmLastUpdate, '%Y-%m-%d %H:%M:%S')
if not dmLastUpdate or dmLastUpdate < apsLastChangeDate:
id = dmUser.get('id')
self.logger.debug('Modifying user with badge %s: %s (DM id: %s)' % (badge, apsUser['name'], id))
print apsUser
userRestApi.updateUser(id, username, firstName, lastName, middleName, email, badge, globusUsername, description, password, isLocalUser, lastUpdate)
nUpdatedUsers += 1
else:
# User is up to date
pass
self.logger.debug('Number of new DM users: %s' % (nCreatedUsers))
self.logger.debug('Number of updated DM users: %s' % (nUpdatedUsers))
self.logger.debug('Completed sync process')
#ldapUserManager = LdapUserManager('ldaps://dmid-vm.xray.aps.anl.gov:636', 'uid=dmadmin,ou=People,o=aps.anl.gov,dc=aps,dc=anl,dc=gov', '/tmp/ldapPassword', userDnFormat='uid=%s,ou=DM,ou=People,o=aps.anl.gov,dc=aps,dc=anl,dc=gov', groupDnFormat='cn=%s,ou=DM,ou=Group,o=aps.anl.gov,dc=aps,dc=anl,dc=gov', minGidNumber=66000)
#ldapUser = ldapUserManager.getUserInfo(username)
......
......@@ -94,12 +94,12 @@ class UserRestApi(DsRestApi):
if isLocalUser:
url += '&isLocaUser=%s' % isLocalUser
if lastUpdate:
url += '&lastUpdate=%s' % lastUpdate
url += '&lastUpdate=%s' % Encoder.encode(str(lastUpdate))
if not url:
raise InvalidRequest('No user attributes have been modified.')
# Remove first '&' character
url = '%s/users/%s?%s' % (self.getContextRoot(), id, url[1:])
responseData = self.sendSessionRequest(url=url, method='POST')
responseData = self.sendSessionRequest(url=url, method='PUT')
return UserInfo(responseData)
@DsRestApi.execute
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment