Support for Contact Delegation API

This commit is contained in:
Jay Lee
2020-12-09 11:34:05 -05:00
parent 59a3a68357
commit 39b9622cdb
4 changed files with 328 additions and 2 deletions

View File

@@ -53,6 +53,7 @@ from gam.gapi import cloudidentity as gapi_cloudidentity
from gam.gapi import cbcm as gapi_cbcm
from gam.gapi.cloudidentity import devices as gapi_cloudidentity_devices
from gam.gapi.cloudidentity import groups as gapi_cloudidentity_groups
from gam.gapi import contactdelegation as gapi_contactdelegation
from gam.gapi.directory import asps as gapi_directory_asps
from gam.gapi.directory import cros as gapi_directory_cros
from gam.gapi.directory import customer as gapi_directory_customer
@@ -10215,14 +10216,18 @@ OAUTH2_SCOPES = [
'subscopes': ['readonly'],
'scopes': 'https://www.googleapis.com/auth/cloud-identity.groups'
},
{
'name': 'Contact Delegation',
'subscopes': ['readonly'],
'scopes': 'https://www.googleapis.com/auth/admin.contact.delegation'
},
{
'name': 'Data Transfer API',
'subscopes': ['readonly'],
'scopes': 'https://www.googleapis.com/auth/admin.datatransfer'
},
{
'name':
'Directory API - Chrome OS Devices',
'name': 'Directory API - Chrome OS Devices',
'subscopes': ['readonly'],
'scopes':
'https://www.googleapis.com/auth/admin.directory.device.chromeos'
@@ -11597,6 +11602,8 @@ def ProcessGAMCommand(args):
printShowTeamDrives(users, False)
elif showWhat in ['teamdriveinfo']:
doGetTeamDriveInfo(users)
elif showWhat in ['contactdelegation']:
gapi_contactdelegation.print_(users)
else:
controlflow.invalid_argument_exit(showWhat, 'gam <users> show')
elif command == 'print':
@@ -11625,6 +11632,8 @@ def ProcessGAMCommand(args):
printShowTokens(5, 'users', users, True)
elif printWhat in ['teamdrive', 'teamdrives']:
printShowTeamDrives(users, True)
elif printWhat in ['contactdelegation']:
gapi_contactdelegation.print_(users)
else:
controlflow.invalid_argument_exit(printWhat,
'gam <users> print')
@@ -11705,6 +11714,8 @@ def ProcessGAMCommand(args):
deleteSmime(users)
elif delWhat == 'teamdrive':
doDeleteTeamDrive(users)
elif delWhat == 'contactdelegate':
gapi_contactdelegation.delete(users)
else:
controlflow.invalid_argument_exit(delWhat, 'gam <users> delete')
elif command in ['add', 'create']:
@@ -11737,6 +11748,8 @@ def ProcessGAMCommand(args):
addSmime(users)
elif addWhat == 'teamdrive':
doCreateTeamDrive(users)
elif addWhat == 'contactdelegation':
gapi_contactdelegation.create(users)
else:
controlflow.invalid_argument_exit(addWhat,
f'gam <users> {command}')

View File

@@ -0,0 +1,75 @@
"""Contact Delegation API calls"""
import csv
import os.path
import sys
import gam
from gam import controlflow
from gam import display
from gam import gapi
def build():
return gam.buildGAPIObject('contactdelegation')
def create(users):
condel = build()
delegate = gam.normalizeEmailAddressOrUID(sys.argv[5], noUid=True)
body = {'email': delegate}
i = 0
count = len(users)
for user in users:
i += 1
print(
f'Granting {delegate} contact delegate access to {user}{gam.currentCount(i, count)}'
)
body
gapi.call(condel.delegates(),
'create',
soft_errors=True,
user=user,
body=body)
def delete(users):
condel = build()
delegate = gam.normalizeEmailAddressOrUID(sys.argv[5], noUid=True)
i = 0
count = len(users)
for user in users:
i += 1
print(
f'Deleting {delegate} contact delegate access to {user}{gam.currentCount(i, count)}'
)
gapi.call(condel.delegates(),
'delete',
soft_errors=True,
user=user,
delegate=delegate)
def print_(users):
condel = build()
titles = ['user', 'delegate']
csv_rows = []
todrive = False
i = 5
while i < len(sys.argv):
myarg = sys.argv[i].lower().replace('_', '')
if myarg == 'todrive':
todrive = True
i += 1
else:
controlflow.invalid_argument_exit(sys.argv[i],
'gam print browsers')
page_message = gapi.got_total_items_msg('Contact Delegates', '...\n')
for user in users:
delegates = gapi.get_all_pages(condel.delegates(), 'list',
'delegates',
page_message=page_message,
user=user)
for delegate in delegates:
csv_rows.append({'user': user, 'delegate': delegate.get('email')})
display.write_csv_file(csv_rows, titles, 'Contact Delegates', todrive)

View File

@@ -266,6 +266,7 @@ API_VER_MAPPING = {
'cloudidentity_beta': 'v1beta1',
'cloudresourcemanager': 'v2',
'cloudresourcemanagerv1': 'v1',
'contactdelegation': 'v1',
'datatransfer': 'datatransfer_v1',
'directory': 'directory_v1',
'drive': 'v2',