Newer
Older
#!/usr/bin/env python

sveseli
committed
import os
from dm.common.exceptions.invalidRequest import InvalidRequest

sveseli
committed
from dm.common.exceptions.objectNotFound import ObjectNotFound
from dm.common.exceptions.invalidArgument import InvalidArgument
from dm.common.cli.dmCli import DmCli
from dm.common.utility.ldapUserManager import LdapUserManager

sveseli
committed
from dm.common.utility.configurationManager import ConfigurationManager
from dm.common.utility.loggingManager import LoggingManager
from dm.aps_user_db.api.apsUserDbApi import ApsUserDbApi
class UpdateUserFromApsDbCli(DmCli):
def __init__(self):
DmCli.__init__(self)
self.addOption('', '--badge', dest='badge', help='User badge number.')

sveseli
committed
self.addOption('', '--config-file', dest='configFile', help='Utility configuration file.')
def checkArgs(self):
if self.options.badge is None:
raise InvalidRequest('Badge number must be provided.')

sveseli
committed
configFile = self.options.configFile
if configFile is None:
raise InvalidRequest('Config file must be provided.')
if not os.path.exists(configFile):
raise InvalidArgument('Invalid config file: %s.' % configFile)
def getBadge(self):
return self.options.badge
def runCommand(self):
self.parseArgs(usage="""

sveseli
committed
dm-update-user-from-aps-db --badge=BADGE --config-file=CONFIGFILE
Description:
Updates single user in DM LDAP using information from APS DB. This command will not update DM DB.

sveseli
committed
ConfigurationManager.getInstance().setConfigFile(self.options.configFile)
self.checkArgs()
apsUserDbApi = ApsUserDbApi()

sveseli
committed
badge = self.getBadge()
username = 'd%s' % badge
self.logger.debug('Retrieving APS user with badge %s' % badge)

sveseli
committed
apsUser = apsUserDbApi.getApsUserByBadgeNumber(badge)
#self.logger.info('APS User Info: %s' % apsUser)

sveseli
committed
ldapUserManager = LdapUserManager.createInstance()
try:
self.logger.debug('Modifying LDAP user with badge %s: %s' % (badge, apsUser['name']))
ldapUser = ldapUserManager.getUserInfo(username)
#self.logger.info('LDAP User Info (before update): %s' % ldapUser)
#self.logger.info('LDAP User Password Hash (before update): %s\n' % ldapUserManager.decodePasswordHash(ldapUser.getUserPassword()))
print('LDAP User Info (before update): %s' % ldapUser)
print('LDAP User Password Hash (before update): %s\n' % ldapUserManager.decodePasswordHash(ldapUser.getUserPassword()))

sveseli
committed
ldapUserManager.modifyUserInfo(username, apsUser)
ldapUser = ldapUserManager.getUserInfo(username)
except ObjectNotFound, ex:
self.logger.debug('User with badge %s does not exist, creating it' % (badge))
ldapUser = ldapUserManager.createUserInfo(username, apsUser)
#self.logger.info('LDAP User Info (after update): %s' % ldapUser)
#self.logger.info('LDAP User Password Hash (after update): %s\n' % ldapUserManager.decodePasswordHash(ldapUser.getUserPassword()))
print('LDAP User Info (after update): %s' % ldapUser)
print('LDAP User Password Hash (after update): %s\n' % ldapUserManager.decodePasswordHash(ldapUser.getUserPassword()))