Archived
Support not deleting group memberships properly in sync
This commit is contained in:
1 parent
c59998ecd1
commit
51b767e99e
2 files changed
+16
-9
No files matched your search
+2
-2
@@ -163,10 +163,10 @@ def ldap_update_user_groups(inside_user, ldap_user_diffable, dry_run=False, dele
|
||||
g.save()
|
||||
|
||||
if len(missing_groups) > 0:
|
||||
logger.debug('User groups added: {}'.format(','.join(missing_groups)))
|
||||
logger.debug('Group memberships added: {}'.format(','.join(missing_groups)))
|
||||
|
||||
if len(stale_groups) > 0 and delete_group_memberships:
|
||||
logger.debug('User groups removed: {}'.format(','.join(stale_groups)))
|
||||
logger.debug('Group memberships removed: {}'.format(','.join(stale_groups)))
|
||||
|
||||
|
||||
def create_ldap_automount(username, dry_run=False):
|
||||
|
||||
@@ -133,7 +133,7 @@ class Command(BaseCommand):
|
||||
|
||||
def log_totals(self):
|
||||
if self.COUNTS['create'] > 0 or self.COUNTS['update'] > 0 or int(self.options['verbosity']) >= 2:
|
||||
self.stdout.write('Totals: created {}, updated {}, in sync: {}.'.format(
|
||||
self.stdout.write('Totals: created {}, updated {}, in sync: {}'.format(
|
||||
self.COUNTS['create'],
|
||||
self.COUNTS['update'],
|
||||
self.COUNTS['in_sync']))
|
||||
@@ -152,12 +152,19 @@ class Command(BaseCommand):
|
||||
|
||||
def user_groups_in_sync(self, inside_user, ldap_user):
|
||||
# Compare set of group names
|
||||
if set(inside_user['groups']) != set(ldap_user['groups']):
|
||||
if int(self.options['verbosity']) >= 2:
|
||||
inside_groups = set(inside_user['groups'])
|
||||
ldap_groups = set(ldap_user['groups'])
|
||||
if self.options['delete_group_memberships']:
|
||||
in_sync = inside_groups == ldap_groups
|
||||
if not in_sync and int(self.options['verbosity']) >= 2:
|
||||
self.stdout.write('{}: {} (Inside) != {} (LDAP)'.format(
|
||||
inside_user['username'],
|
||||
','.join(set(inside_user['groups'])),
|
||||
','.join(set(ldap_user['groups']))))
|
||||
return False
|
||||
','.join(inside_groups),
|
||||
','.join(ldap_groups)))
|
||||
else:
|
||||
missing_groups = inside_groups.difference(ldap_groups)
|
||||
in_sync = len(missing_groups) == 0
|
||||
if not in_sync and int(self.options['verbosity']) >= 2:
|
||||
self.stdout.write('{}: Missing groups in LDAP: {}'.format(','.join(missing_groups)))
|
||||
|
||||
return True
|
||||
return in_sync
|
||||
Reference in new issue
Block a user