Use writeStdout so redirect stdout catches data; update documentation

This commit is contained in:
Ross Scroggs
2023-08-18 11:37:55 -07:00
parent 7573013da4
commit 1243ece157
3 changed files with 18 additions and 5 deletions

View File

@ -5135,7 +5135,7 @@ gam download storagefile <StorageBucketObjectName>
<UserClearAttribute> <UserClearAttribute>
gam create|add user <EmailAddress> [ignorenullpassword] <UserAttribute>* gam create|add user <EmailAddress> [ignorenullpassword] <UserAttribute>*
[verifynotinvitable] [verifynotinvitable|alwaysevict]
(groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)* (groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
[alias|aliases <EmailAddressList>] [alias|aliases <EmailAddressList>]
[license <SKUIDList> [product|productid <ProductID>]] [license <SKUIDList> [product|productid <ProductID>]]
@ -5152,7 +5152,7 @@ gam create|add user <EmailAddress> [ignorenullpassword] <UserAttribute>*
gam <UserTypeEntity> waitformailbox [retries <Number>] gam <UserTypeEntity> waitformailbox [retries <Number>]
gam update user <UserItem> [ignorenullpassword] <UserAttribute>* gam update user <UserItem> [ignorenullpassword] <UserAttribute>*
[verifynotinvitable] [noactionifalias] [verifynotinvitable|alwaysevict] [noactionifalias]
[updateprimaryemail <RegularExpression> <EmailReplacement>] [updateprimaryemail <RegularExpression> <EmailReplacement>]
[updateoufromgroup <FileName> [charset <CharSet>] [updateoufromgroup <FileName> [charset <CharSet>]
[columndelimiter <Character>] [quotechar <Character>] [columndelimiter <Character>] [quotechar <Character>]

View File

@ -2,6 +2,18 @@
Merged GAM-Team version Merged GAM-Team version
6.63.01
Following Jay's lead, added option `alwaysevict` to `gam create|update user` that is used to specify GAM's
behavior when `verifynotinvitable` is not specified and there is a conflict with an unmanaged account.
By default, when creating a user that has a conflict with an unmanaged account, GAM will honor the setting on this page:
* https://admin.google.com/ac/accountsettings/conflictaccountmanagement
Specifying `alwaysevict` forces GAM to select this setting: `Replace conflicting unmanaged accounts with managed ones`
With `gam update user`, `alwaysevict` only applies if `createifnotfound` is specified and the user was not found to update and must be created.
6.63.00 6.63.00
Added support for calendar working location events. Added support for calendar working location events.

View File

@ -12222,7 +12222,7 @@ def doCreateGCPServiceAccount():
systemErrorExit(API_ACCESS_DENIED_RC, str(e)) systemErrorExit(API_ACCESS_DENIED_RC, str(e))
sa_info['client_id'] = token_info['issued_to'] sa_info['client_id'] = token_info['issued_to']
sa_output = json.dumps(sa_info, ensure_ascii=False, sort_keys=True, indent=2) sa_output = json.dumps(sa_info, ensure_ascii=False, sort_keys=True, indent=2)
print(f'Writing SignJWT service account data:\n\n{sa_output}') writeStdout(f'Writing SignJWT service account data:\n\n{sa_output}\n')
writeFile(GC.Values[GC.OAUTH2SERVICE_JSON], sa_output, continueOnError=False) writeFile(GC.Values[GC.OAUTH2SERVICE_JSON], sa_output, continueOnError=False)
# Audit command utilities # Audit command utilities
@ -40366,6 +40366,7 @@ def createUserAddAliases(cd, user, aliasList, i, count):
Act.Set(action) Act.Set(action)
# gam create user <EmailAddress> <UserAttribute> # gam create user <EmailAddress> <UserAttribute>
# [verifynotinvitable|alwaysevict]
# (groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)* # (groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
# [alias|aliases <EmailAddressList>] # [alias|aliases <EmailAddressList>]
# [license <SKUID> [product|productid <ProductID>]] # [license <SKUID> [product|productid <ProductID>]]
@ -40463,7 +40464,8 @@ def verifyUserPrimaryEmail(cd, user, createIfNotFound, i, count):
entityUnknownWarning(Ent.USER, user, i, count) entityUnknownWarning(Ent.USER, user, i, count)
return False return False
# gam <UserTypeEntity> update user <UserAttribute>* [noactionifalias] # gam <UserTypeEntity> update user <UserAttribute>*
# [verifynotinvitable|alwaysevict] [noactionifalias]
# [updateprimaryemail <RegularExpression> <EmailReplacement>] # [updateprimaryemail <RegularExpression> <EmailReplacement>]
# [updateoufromgroup <CSVFileInput> [keyfield <FieldName>] [datafield <FieldName>]] # [updateoufromgroup <CSVFileInput> [keyfield <FieldName>] [datafield <FieldName>]]
# [immutableous <OrgUnitEntity>]| # [immutableous <OrgUnitEntity>]|
@ -40480,7 +40482,6 @@ def verifyUserPrimaryEmail(cd, user, createIfNotFound, i, count):
# (replace <Tag> <UserReplacement>)*] # (replace <Tag> <UserReplacement>)*]
# [notifyonupdate [<Boolean>]] # [notifyonupdate [<Boolean>]]
# [lograndompassword <FileName>] [ignorenullpassword] # [lograndompassword <FileName>] [ignorenullpassword]
# [verifynotinvitable]
def updateUsers(entityList): def updateUsers(entityList):
cd = buildGAPIObject(API.DIRECTORY) cd = buildGAPIObject(API.DIRECTORY)
ci = None ci = None