From 1a9de867f958612c3639695aa5929bacbb0152aa Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Tue, 10 Aug 2021 03:30:52 -0700 Subject: [PATCH] Work around API restriction that roleId and userKey are mutually exclusive (#1406) --- src/gam/__init__.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 28b9c8da..5c5406e6 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -1756,8 +1756,8 @@ def doCreateAdmin(): def doPrintAdmins(): cd = buildGAPIObject('directory') roleId = None - userKey = None todrive = False + kwargs = {} fields = 'nextPageToken,items(roleAssignmentId,roleId,assignedTo,scopeType,orgUnitId)' titles = [ 'roleAssignmentId', 'roleId', 'role', 'assignedTo', 'assignedToUser', @@ -1768,7 +1768,7 @@ def doPrintAdmins(): while i < len(sys.argv): myarg = sys.argv[i].lower() if myarg == 'user': - userKey = normalizeEmailAddressOrUID(sys.argv[i + 1]) + kwargs['userKey'] = normalizeEmailAddressOrUID(sys.argv[i + 1]) i += 2 elif myarg == 'role': roleId = getRoleId(sys.argv[i + 1]) @@ -1778,14 +1778,18 @@ def doPrintAdmins(): i += 1 else: controlflow.invalid_argument_exit(sys.argv[i], 'gam print admins') + if roleId and not kwargs: + kwargs['roleId'] = roleId + roleId = None admins = gapi.get_all_pages(cd.roleAssignments(), 'list', 'items', customer=GC_Values[GC_CUSTOMER_ID], - userKey=userKey, - roleId=roleId, - fields=fields) + fields=fields, + **kwargs) for admin in admins: + if roleId and roleId != admin['roleId']: + continue admin_attrib = {} for key, value in list(admin.items()): if key == 'assignedTo':