Skip to content

Commit 9a9d76a

Browse files
committed
Exclude users from GitHub team sync if they will be removed from org
1 parent edc284a commit 9a9d76a

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

arthur/exts/github/management.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,28 @@ async def _sync_github_teams(
342342
"""Dry-run GitHub team membership synchronisation with Keycloak."""
343343
keycloak_identities, github_org_members, resolved_keycloak_logins_by_id, _, _ = common_info
344344
ignored_normalised = self._ignored_github_users_normalised()
345+
346+
desired_org_by_user_id = {
347+
identity["user_id"].strip(): resolved_keycloak_logins_by_id[identity["user_id"].strip()]
348+
for identity in keycloak_identities.values()
349+
if identity.get("user_id")
350+
and identity["user_id"].strip() in resolved_keycloak_logins_by_id
351+
}
352+
desired_org_by_user_id = {
353+
user_id: username
354+
for user_id, username in desired_org_by_user_id.items()
355+
if self._normalise_login(username) not in ignored_normalised
356+
}
357+
github_org_by_user_id = {
358+
user_id: username
359+
for user_id, username in github_org_members.items()
360+
if self._normalise_login(username) not in ignored_normalised
361+
}
362+
org_users_to_remove = set(github_org_by_user_id) - set(desired_org_by_user_id)
363+
org_users_to_remove_normalised = {
364+
self._normalise_login(github_org_by_user_id[user_id]) for user_id in org_users_to_remove
365+
}
366+
345367
keycloak_to_github = {
346368
keycloak_username: resolved_keycloak_logins_by_id[identity["user_id"].strip()]
347369
for keycloak_username, identity in keycloak_identities.items()
@@ -381,6 +403,7 @@ async def _sync_github_teams(
381403
normalised: username
382404
for normalised, username in current_by_normalised.items()
383405
if normalised not in ignored_normalised
406+
and normalised not in org_users_to_remove_normalised
384407
}
385408

386409
desired_normalised = set(desired_by_normalised)

0 commit comments

Comments
 (0)