use larger ci.members.list() page sizes

This commit is contained in:
Jay Lee
2025-02-14 13:32:40 +00:00
parent a70bbf08ed
commit cccbddcf45
2 changed files with 19 additions and 4 deletions

View File

@@ -36121,9 +36121,13 @@ def getCIGroupTransitiveMembers(ci, groupName, membersList, i, count):
return True return True
def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, count, def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, count,
memberOptions, memberDisplayOptions, level, typesSet): memberOptions, memberDisplayOptions, level, typesSet, listView='FULL'):
printGettingAllEntityItemsForWhom(memberRoles if memberRoles else Ent.ROLE_MANAGER_MEMBER_OWNER, groupName, i, count) printGettingAllEntityItemsForWhom(memberRoles if memberRoles else Ent.ROLE_MANAGER_MEMBER_OWNER, groupName, i, count)
validRoles = _getCIRoleVerification(memberRoles) validRoles = _getCIRoleVerification(memberRoles)
if listView == 'BASIC':
pageSize = GC.Values[GC.MEMBER_MAX_RESULTS_CI_BASIC]
else:
pageSize = GC.Values[GC.MEMBER_MAX_RESULTS_CI_FULL]
if memberOptions[MEMBEROPTION_INCLUDEDERIVEDMEMBERSHIP]: if memberOptions[MEMBEROPTION_INCLUDEDERIVEDMEMBERSHIP]:
groupMembers = [] groupMembers = []
if not getCIGroupTransitiveMembers(ci, groupName, groupMembers, i, count): if not getCIGroupTransitiveMembers(ci, groupName, groupMembers, i, count):
@@ -36137,8 +36141,8 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
groupMembers = callGAPIpages(ci.groups().memberships(), 'list', 'memberships', groupMembers = callGAPIpages(ci.groups().memberships(), 'list', 'memberships',
pageMessage=getPageMessageForWhom(), pageMessage=getPageMessageForWhom(),
throwReasons=GAPI.CIGROUP_LIST_THROW_REASONS, retryReasons=GAPI.CIGROUP_RETRY_REASONS, throwReasons=GAPI.CIGROUP_LIST_THROW_REASONS, retryReasons=GAPI.CIGROUP_RETRY_REASONS,
parent=groupName, view='FULL', parent=groupName, view=listView,
fields='nextPageToken,memberships(*)', pageSize=GC.Values[GC.MEMBER_MAX_RESULTS]) fields='nextPageToken,memberships(*)', pageSize=pageSize)
except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis, except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis,
GAPI.forbidden, GAPI.badRequest, GAPI.invalid, GAPI.invalidArgument, GAPI.systemError, GAPI.forbidden, GAPI.badRequest, GAPI.invalid, GAPI.invalidArgument, GAPI.systemError,
GAPI.permissionDenied, GAPI.serviceNotAvailable): GAPI.permissionDenied, GAPI.serviceNotAvailable):
@@ -36262,6 +36266,7 @@ def doPrintCIGroupMembers():
rolesSet = set() rolesSet = set()
typesSet = set() typesSet = set()
matchPatterns = {} matchPatterns = {}
listView = 'FULL'
while Cmd.ArgumentsRemaining(): while Cmd.ArgumentsRemaining():
myarg = getArgument() myarg = getArgument()
if myarg == 'todrive': if myarg == 'todrive':
@@ -36302,6 +36307,8 @@ def doPrintCIGroupMembers():
memberOptions[MEMBEROPTION_RECURSIVE] = False memberOptions[MEMBEROPTION_RECURSIVE] = False
elif myarg == 'nogroupemail': elif myarg == 'nogroupemail':
groupColumn = False groupColumn = False
elif myarg == 'basic':
listView = 'BASIC'
else: else:
FJQC.GetFormatJSONQuoteChar(myarg, False) FJQC.GetFormatJSONQuoteChar(myarg, False)
if not typesSet: if not typesSet:
@@ -36356,7 +36363,7 @@ def doPrintCIGroupMembers():
membersList = [] membersList = []
membersSet = set() membersSet = set()
getCIGroupMembers(ci, groupEntity['name'], getRoles, membersList, membersSet, i, count, getCIGroupMembers(ci, groupEntity['name'], getRoles, membersList, membersSet, i, count,
memberOptions, memberDisplayOptions, level, typesSet) memberOptions, memberDisplayOptions, level, typesSet, listView)
if showOwnedBy and not checkCIGroupShowOwnedBy(showOwnedBy, membersList): if showOwnedBy and not checkCIGroupShowOwnedBy(showOwnedBy, membersList):
continue continue
for member in membersList: for member in membersList:

View File

@@ -179,6 +179,10 @@ LICENSE_MAX_RESULTS = 'license_max_results'
LICENSE_SKUS = 'license_skus' LICENSE_SKUS = 'license_skus'
# When retrieving lists of Google Group members from API, how many should be retrieved in each chunk # When retrieving lists of Google Group members from API, how many should be retrieved in each chunk
MEMBER_MAX_RESULTS = 'member_max_results' MEMBER_MAX_RESULTS = 'member_max_results'
# CI API Group members max page size when view=BASIC
MEMBER_MAX_RESULTS_CI_BASIC = 'member.max_results_ci_basic'
# CI API Group members max page size when view=FULL
MEMBER_MAX_RESULTS_CI_FULL = 'member_max_results_ci_full'
# When deleting or modifying Gmail messages, how many should be processed in each batch # When deleting or modifying Gmail messages, how many should be processed in each batch
MESSAGE_BATCH_SIZE = 'message_batch_size' MESSAGE_BATCH_SIZE = 'message_batch_size'
# When retrieving lists of Gmail messages from API, how many should be retrieved in each chunk # When retrieving lists of Gmail messages from API, how many should be retrieved in each chunk
@@ -385,6 +389,8 @@ Defaults = {
LICENSE_MAX_RESULTS: '100', LICENSE_MAX_RESULTS: '100',
LICENSE_SKUS: '', LICENSE_SKUS: '',
MEMBER_MAX_RESULTS: '200', MEMBER_MAX_RESULTS: '200',
MEMBER_MAX_RESULTS_CI_BASIC: '1000',
MEMBER_MAX_RESULTS_CI_FULL: '500',
MESSAGE_BATCH_SIZE: '50', MESSAGE_BATCH_SIZE: '50',
MESSAGE_MAX_RESULTS: '500', MESSAGE_MAX_RESULTS: '500',
MOBILE_MAX_RESULTS: '100', MOBILE_MAX_RESULTS: '100',
@@ -550,6 +556,8 @@ VAR_INFO = {
LICENSE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (10, 1000)}, LICENSE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (10, 1000)},
LICENSE_SKUS: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)}, LICENSE_SKUS: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
MEMBER_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 200)}, MEMBER_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 200)},
MEMBER_MAX_RESULTS_CI_BASIC: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
MEMBER_MAX_RESULTS_CI_FULL: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 500)},
MESSAGE_BATCH_SIZE: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)}, MESSAGE_BATCH_SIZE: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
MESSAGE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10000)}, MESSAGE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10000)},
MOBILE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 100)}, MOBILE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 100)},