mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-25 08:31:35 +00:00
Compare commits
3 Commits
20250131.0
...
20250202.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8108dace0 | ||
|
|
83a70d656e | ||
|
|
3a38609fbb |
@@ -1,3 +1,15 @@
|
||||
7.03.03
|
||||
|
||||
Fixed bug in `gam update resoldcustomer` that caused the following error:
|
||||
```
|
||||
ERROR: Got an unexpected keyword argument customerAuthToken
|
||||
```
|
||||
|
||||
7.03.02
|
||||
|
||||
Updated `gam <UserTypeEntity> show labels nested` to properly display label nesting
|
||||
when labels have embedded `/` characters in their names.
|
||||
|
||||
7.03.01
|
||||
|
||||
Updated `gam create project` to retry the following unexpected error:
|
||||
|
||||
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
||||
"""
|
||||
|
||||
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
||||
__version__ = '7.03.01'
|
||||
__version__ = '7.03.03'
|
||||
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
||||
|
||||
#pylint: disable=wrong-import-position
|
||||
@@ -11387,7 +11387,7 @@ def _grantRotateRights(iam, projectId, service_account, email, account_type='ser
|
||||
except Exception as e:
|
||||
entityActionFailedWarning([Ent.PROJECT, projectId, Ent.SVCACCT, service_account], str(e))
|
||||
return False
|
||||
|
||||
|
||||
def _createOauth2serviceJSON(httpObj, projectInfo, svcAcctInfo, create_key=True):
|
||||
iam = getAPIService(API.IAM, httpObj)
|
||||
try:
|
||||
@@ -15110,11 +15110,11 @@ def doCreateResoldCustomer():
|
||||
def doUpdateResoldCustomer():
|
||||
res = buildGAPIObject(API.RESELLER)
|
||||
customerId = getString(Cmd.OB_CUSTOMER_ID)
|
||||
customerAuthToken, body = _getResoldCustomerAttr()
|
||||
_, body = _getResoldCustomerAttr()
|
||||
try:
|
||||
callGAPI(res.customers(), 'patch',
|
||||
throwReasons=GAPI.RESELLER_THROW_REASONS,
|
||||
customerId=customerId, body=body, customerAuthToken=customerAuthToken, fields='')
|
||||
customerId=customerId, body=body, fields='')
|
||||
entityActionPerformed([Ent.CUSTOMER_ID, customerId])
|
||||
except (GAPI.badRequest, GAPI.resourceNotFound, GAPI.forbidden, GAPI.invalid) as e:
|
||||
entityActionFailedWarning([Ent.CUSTOMER_ID, customerId], str(e))
|
||||
@@ -37443,7 +37443,7 @@ def _doDeleteResourceCalendars(entityList):
|
||||
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
||||
customer=GC.Values[GC.CUSTOMER_ID], calendarResourceId=resourceId)
|
||||
entityActionPerformed([Ent.RESOURCE_CALENDAR, resourceId], i, count)
|
||||
except GAPI.serviceNotAvailable as e:
|
||||
except GAPI.serviceNotAvailable as e:
|
||||
entityActionFailedWarning([Ent.RESOURCE_CALENDAR, resourceId], str(e), i, count)
|
||||
except (GAPI.badRequest, GAPI.resourceNotFound, GAPI.forbidden):
|
||||
checkEntityAFDNEorAccessErrorExit(cd, Ent.RESOURCE_CALENDAR, resourceId, i, count)
|
||||
@@ -39162,10 +39162,12 @@ def _wipeCalendarEvents(user, origCal, calIds, count):
|
||||
continue
|
||||
try:
|
||||
callGAPI(cal.calendars(), 'clear',
|
||||
throwReasons=GAPI.CALENDAR_THROW_REASONS+[GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.INVALID, GAPI.REQUIRED_ACCESS_LEVEL],
|
||||
throwReasons=GAPI.CALENDAR_THROW_REASONS+[GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.INVALID,
|
||||
GAPI.REQUIRED_ACCESS_LEVEL, GAPI.SERVICE_NOT_AVAILABLE],
|
||||
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
||||
calendarId=calId)
|
||||
entityActionPerformed([Ent.CALENDAR, calId], i, count)
|
||||
except (GAPI.notFound, GAPI.forbidden, GAPI.invalid, GAPI.requiredAccessLevel) as e:
|
||||
except (GAPI.notFound, GAPI.forbidden, GAPI.invalid, GAPI.requiredAccessLevel, GAPI.serviceNotAvailable) as e:
|
||||
entityActionFailedWarning([Ent.CALENDAR, calId], str(e), i, count)
|
||||
except GAPI.notACalendarUser:
|
||||
userCalServiceNotEnabledWarning(calId, i, count)
|
||||
@@ -69399,13 +69401,18 @@ LABEL_COUNTS_FIELDS = ','.join(LABEL_COUNTS_FIELDS_LIST)
|
||||
def printShowLabels(users):
|
||||
def _buildLabelTree(labels):
|
||||
def _checkChildLabel(label):
|
||||
if label.find('/') != -1:
|
||||
(parent, base) = label.rsplit('/', 1)
|
||||
labelItemList = label.split('/')
|
||||
i = len(labelItemList)-1
|
||||
while i > 0:
|
||||
parent = '/'.join(labelItemList[:i])
|
||||
base = '/'.join(labelItemList[i:])
|
||||
if parent in labelTree:
|
||||
if label in labelTree:
|
||||
labelTree[label]['info']['base'] = base
|
||||
labelTree[parent]['children'].append(labelTree.pop(label))
|
||||
_checkChildLabel(parent)
|
||||
return
|
||||
i -= 1
|
||||
|
||||
labelTree = {}
|
||||
for label in labels['labels']:
|
||||
|
||||
Reference in New Issue
Block a user