diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f54337d7..0f2c7131 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -252,8 +252,8 @@ jobs: $gam csv sample.csv gam update group $newgroup add member ~email $gam info group $newgroup $gam user $gam_user check serviceaccount - # confirm mailbox is working before continuing - rc=0; while [ "${rc}" == "0" ]; do $gam user $newuser show labels 2>&1 | grep ERROR; rc=$?; done + # confirm mailbox is provisoned before continuing + $gam user $newuser wait_for_mailbox $gam user $newuser imap on $gam user $newuser show imap $gam user $newuser delegate to "${newbase}-bulkuser-01" @@ -268,10 +268,10 @@ jobs: $gam user $gam_user insertemail subject "GHA insert $newbase" file gam.py labels INBOX,UNREAD # yep body is gam code $gam user $gam_user sendemail subject "GHA send $gam_user $newbase" file gam.py recipient admin@pdl.jaylee.us $gam user $gam_user draftemail subject "GHA draft $newbase" message "Draft message test" + $gam csv sample.csv gam user ~email wait_for_mailbox $gam users "$gam_user $newbase-bulkuser-01 $newbase-bulkuser-02 $newbase-bulkuser-03" delete messages query in:anywhere maxtodelete 99999 doit $gam users "$newbase-bulkuser-04 $newbase-bulkuser-05 $newbase-bulkuser-06" trash messages query in:anywhere maxtotrash 99999 doit - # disabling as we see a lot of errors here - # $gam users "$newbase-bulkuser-07 $newbase-bulkuser-08 $newbase-bulkuser-09" modify messages query in:anywhere maxtomodify 99999 addlabel IMPORTANT addlabel STARRED doit + $gam users "$newbase-bulkuser-07 $newbase-bulkuser-08 $newbase-bulkuser-09" modify messages query in:anywhere maxtomodify 99999 addlabel IMPORTANT addlabel STARRED doit $gam user $newuser delete label --ALL_LABELS-- $gam create feature name Whiteboard-$newbase $gam create feature name VC-$newbase diff --git a/src/gam/__init__.py b/src/gam/__init__.py index feb5c1c2..114ace7f 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -11937,6 +11937,8 @@ def ProcessGAMCommand(args): gapi_directory_users.signout(users) elif command == 'turnoff2sv': gapi_directory_users.turn_off_2sv(users) + elif command == 'waitformailbox': + gapi_directory_users.wait_for_mailbox(users) else: controlflow.invalid_argument_exit(command, 'gam') except IndexError: diff --git a/src/gam/gapi/directory/users.py b/src/gam/gapi/directory/users.py index 120801d1..58f4ab2b 100644 --- a/src/gam/gapi/directory/users.py +++ b/src/gam/gapi/directory/users.py @@ -41,3 +41,22 @@ def turn_off_2sv(users): 'turnOff', soft_errors=True, userKey=user) + +def wait_for_mailbox(users): + '''Wait until users mailbox is provisioned.''' + cd = gapi_directory.build() + i = 0 + count = len(users) + for user in users: + i += 1 + user = gam.normalizeEmailAddressOrUID(user) + while True: + result = gapi.call(cd.users(), + 'get', + 'fields=isMailboxSetup', + userKey=user) + mailbox_is_setup = result.get('isMailboxSetup') + print(f'{user} mailboxIsSetup: {mailbox_is_setup}') + if mailbox_is_setup: + break + sleep(3)