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

add ldap utilities for retrieving and creating groups

parent bafac26b
No related branches found
No related tags found
No related merge requests found
#!/bin/sh
# Run command
if [ -z $DM_ROOT_DIR ]; then
cd `dirname $0` && myDir=`pwd`
setupFile=$myDir/../setup.sh
if [ ! -f $setupFile ]; then
echo "Cannot find setup file: $setupFile"
exit 1
fi
source $setupFile > /dev/null
fi
source dm_command_setup.sh
eval "$DM_ROOT_DIR/src/python/dm/aps_ldap/cli/createGroupInApsLdapCli.py $DM_COMMAND_ARGS"
#!/bin/sh
# Run command
if [ -z $DM_ROOT_DIR ]; then
cd `dirname $0` && myDir=`pwd`
setupFile=$myDir/../setup.sh
if [ ! -f $setupFile ]; then
echo "Cannot find setup file: $setupFile"
exit 1
fi
source $setupFile > /dev/null
fi
source dm_command_setup.sh
eval "$DM_ROOT_DIR/src/python/dm/aps_ldap/cli/getGroupFromApsLdapCli.py $DM_COMMAND_ARGS"
#!/usr/bin/env python
import datetime
import time
import os
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.exceptions.invalidArgument import InvalidArgument
from dm.common.cli.dmCli import DmCli
from dm.common.utility.configurationManager import ConfigurationManager
from dm.common.utility.loggingManager import LoggingManager
from dm.common.utility.ldapUserManager import LdapUserManager
class CreateGroupInApsLdapCli(DmCli):
def __init__(self):
DmCli.__init__(self)
self.addOption('', '--config-file', dest='configFile', help='Utility configuration file.')
self.addOption('', '--group', dest='groupName', help='Group name.')
def checkArgs(self):
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)
groupName = self.options.groupName
if groupName is None:
raise InvalidRequest('Group name be provided.')
def runCommand(self):
self.parseArgs(usage="""
dm-create-group-in-aps-ldap
--config-file=CONFIGFILE
--group=GROUPNAME
Description:
Create group in APS LDAP.
""")
ConfigurationManager.getInstance().setConfigFile(self.options.configFile)
LoggingManager.getInstance().configure()
self.checkArgs()
ldapUserManager = LdapUserManager.createInstance()
ldapGroup = ldapUserManager.createGroup(self.options.groupName)
print(ldapGroup.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat()))
#######################################################################
# Run command.
if __name__ == '__main__':
cli = CreateGroupInApsLdapCli()
cli.run()
#!/usr/bin/env python
import datetime
import time
import os
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.exceptions.invalidArgument import InvalidArgument
from dm.common.cli.dmCli import DmCli
from dm.common.utility.configurationManager import ConfigurationManager
from dm.common.utility.loggingManager import LoggingManager
from dm.common.utility.ldapUserManager import LdapUserManager
class GetGroupFromApsLdapCli(DmCli):
def __init__(self):
DmCli.__init__(self)
self.addOption('', '--config-file', dest='configFile', help='Utility configuration file.')
self.addOption('', '--group', dest='groupName', help='Group name.')
def checkArgs(self):
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)
groupName = self.options.groupName
if groupName is None:
raise InvalidRequest('Group name be provided.')
def runCommand(self):
self.parseArgs(usage="""
dm-get-group-from-aps-ldap
--config-file=CONFIGFILE
--group=GROUPNAME
Description:
Get group information from APS LDAP.
""")
ConfigurationManager.getInstance().setConfigFile(self.options.configFile)
LoggingManager.getInstance().configure()
self.checkArgs()
ldapUserManager = LdapUserManager.createInstance()
ldapGroup = ldapUserManager.getGroupInfo(self.options.groupName)
print(ldapGroup.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat()))
#######################################################################
# Run command.
if __name__ == '__main__':
cli = GetGroupFromApsLdapCli()
cli.run()
#!/usr/bin/env python
from .dmObject import DmObject
class LdapGroupInfo(DmObject):
DEFAULT_KEY_LIST = [ 'dn', 'memberUid', 'objectClass', 'cn' ]
def __init__(self, dict):
DmObject.__init__(self, dict)
......@@ -10,6 +10,7 @@ from base64 import b64encode
from base64 import b64decode
from dm.common.objects.ldapUserInfo import LdapUserInfo
from dm.common.objects.ldapGroupInfo import LdapGroupInfo
from dm.common.utility.loggingManager import LoggingManager
from dm.common.utility.configurationManager import ConfigurationManager
from dm.common.exceptions.configurationError import ConfigurationError
......@@ -57,7 +58,7 @@ class LdapUserManager(LdapClient):
#logger.debug('Using user DN format: %s' % userDnFormat)
groupDnFormat = cm.getConfigOption(LdapUserManager.CONFIG_SECTION_NAME, LdapUserManager.GROUP_DN_FORMAT_KEY)
#logger.debug('Using group DN format: %s' % groupDnFormat)
minGidNumber = cm.getConfigOption(LdapUserManager.CONFIG_SECTION_NAME, LdapUserManager.MIN_GID_NUMBER_KEY)
minGidNumber = int(cm.getConfigOption(LdapUserManager.CONFIG_SECTION_NAME, LdapUserManager.MIN_GID_NUMBER_KEY))
#logger.debug('Using min GID number: %s' % minGidNumber)
return LdapUserManager(serverUrl, adminDn, adminPasswordFile, userDnFormat, groupDnFormat, minGidNumber)
......@@ -222,8 +223,11 @@ class LdapUserManager(LdapClient):
# this method will throw exception if group is not found
resultList = ldapClient.search_s(groupDn, ldap.SCOPE_BASE)
groupTuple = resultList[0]
logger.debug('Group %s already exists' % groupTuple[0])
return
dn = groupTuple[0]
groupDict = groupTuple[1]
groupDict['dn'] = dn
logger.debug('Group %s already exists' % dn)
return LdapGroupInfo(groupDict)
except ldap.NO_SUCH_OBJECT as ex:
logger.debug('Group DN %s must be created' % groupDn)
except Exception as ex:
......@@ -260,6 +264,7 @@ class LdapUserManager(LdapClient):
try:
groupLdif = ldap.modlist.addModlist(attrs)
ldapClient.add_s(groupDn, groupLdif)
return LdapGroupInfo(attrs)
except Exception as ex:
logger.error('Could not add group %s: %s' % (groupDn, ex))
raise InternalError(exception=ex)
......@@ -332,7 +337,13 @@ class LdapUserManager(LdapClient):
resultList = ldapClient.search_s(groupDn, ldap.SCOPE_BASE)
groupTuple = resultList[0]
groupAttrs = groupTuple[1]
return groupTuple
#return groupTuple
dn = groupTuple[0]
groupDict = groupTuple[1]
groupDict['dn'] = dn
return LdapGroupInfo(groupDict)
except ldap.NO_SUCH_OBJECT as ex:
raise ObjectNotFound('Group %s does not exist' % groupName)
except Exception as ex:
raise InternalError(exception=ex)
......
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