From 6c09397dc696448d29eec9b4c725c164b99a69ac Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Tue, 15 Dec 2015 14:34:51 +0000 Subject: [PATCH] added delete local user method via ldap --- .../utility/ldapLinuxPlatformUtility.py | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/src/python/dm/common/utility/ldapLinuxPlatformUtility.py b/src/python/dm/common/utility/ldapLinuxPlatformUtility.py index 9f3e0b36..7371166d 100755 --- a/src/python/dm/common/utility/ldapLinuxPlatformUtility.py +++ b/src/python/dm/common/utility/ldapLinuxPlatformUtility.py @@ -166,6 +166,38 @@ class LdapLinuxPlatformUtility: logger.error('Could not add user %s to group %s: %s' % (username, groupName, ex)) raise InternalError(exception=ex) + def deleteUserFromGroup(self, username, groupName): + """ Remove user from group. """ + logger = self.getLogger() + ldapClient = self.getLdapClient() + username = str(username) + groupName = str(groupName) + try: + groupDn = self.groupDnFormat % groupName + resultList = ldapClient.search_s(groupDn, ldap.SCOPE_BASE) + groupTuple = resultList[0] + groupAttrs = groupTuple[1] + memberUidList = groupAttrs.get('memberUid', []) + if username not in memberUidList: + logger.debug('Group %s does not contain user %s' % (groupName, username)) + return + except Exception, ex: + raise InternalError(exception=ex) + logger.debug('Adding user %s to group %s' % (username, groupName)) + memberUidList2 = copy.copy(memberUidList) + memberUidList2.remove(username) + groupAttrs2 = copy.copy(groupAttrs) + groupAttrs2['memberUid'] = memberUidList2 + try: + groupLdif = ldap.modlist.modifyModlist(groupAttrs, groupAttrs2) + ldapClient.modify_s(groupDn, groupLdif) + except Exception, ex: + logger.error('Could not remove user %s from group %s: %s' % (username, groupName, ex)) + raise InternalError(exception=ex) + + @classmethod + def createLocalGroup(cls, name): + """ Create local group if it does not exist. """ @classmethod def createLocalGroup(cls, name): """ Create local group if it does not exist. """ @@ -184,19 +216,12 @@ class LdapLinuxPlatformUtility: @classmethod def addLocalUserToGroup(cls, username, groupName): """ Add local user to group. """ - cls.createLocalGroup(groupName) - logger = cls.getLogger() - logger.debug('Adding local user %s to group %s' % (username, groupName)) - cmd = '%s -a %s %s' % (cls.GPASSWD_CMD, username, groupName) - cls.executeSudoCommand(cmd) + cls.addUserFromGroup(username, groupName) @classmethod def deleteLocalUserFromGroup(cls, username, groupName): """ Remove local user from group. """ - logger = cls.getLogger() - logger.debug('Removing local user %s from group %s' % (username, groupName)) - cmd = '%s -d %s %s' % (cls.GPASSWD_CMD, username, groupName) - cls.executeSudoCommand(cmd) + cls.deleteUserFromGroup(username, groupName) def getGroupInfo(self, groupName): """ Get given group info. """ -- GitLab