From 5eb12776916bd2e10dad5d6df6990ad96814426d Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Fri, 8 Apr 2022 09:28:11 -0700 Subject: [PATCH] Do print|show for caalevels and oushareddrives (#1506) --- src/gam/__init__.py | 8 ++++++-- src/gam/gapi/caa.py | 28 ++++++++++++++++++++++---- src/gam/gapi/cloudidentity/orgunits.py | 28 ++++++++++++++++++++++---- 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/src/gam/__init__.py b/src/gam/__init__.py index b0e2dc4b..c520459b 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -11740,9 +11740,9 @@ def ProcessGAMCommand(args): elif argument in ['chatmembers']: gapi_chat.print_members() elif argument in ['caalevels']: - gapi_caa.print_access_levels() + gapi_caa.printshow_access_levels(True) elif argument in ['oushareddrives', 'orgunitshareddrives']: - gapi_cloudidentity_orgunits.print_orgunit_shared_drives() + gapi_cloudidentity_orgunits.printshow_orgunit_shared_drives(True) else: controlflow.invalid_argument_exit(argument, 'gam print') sys.exit(0) @@ -11773,6 +11773,10 @@ def ProcessGAMCommand(args): gapi_chromepolicy.printshow_policies() elif argument == 'crostelemetry': gapi_chromemanagement.printShowCrosTelemetry('show') + elif argument in ['caalevels']: + gapi_caa.printshow_access_levels(False) + elif argument in ['oushareddrives', 'orgunitshareddrives']: + gapi_cloudidentity_orgunits.printshow_orgunit_shared_drives(False) else: controlflow.invalid_argument_exit(argument, 'gam show') sys.exit(0) diff --git a/src/gam/gapi/caa.py b/src/gam/gapi/caa.py index f5f2ccc6..2797ea27 100644 --- a/src/gam/gapi/caa.py +++ b/src/gam/gapi/caa.py @@ -52,9 +52,22 @@ def get_access_policy(caa=None): controlflow.system_error_exit(2, ' Could not find a org level access policy. That is odd.') -def print_access_levels(): +def printshow_access_levels(csvFormat): caa = build() ap_name = get_access_policy(caa) + if csvFormat: + todrive = False + csvRows = [] + titles = ['name', 'title'] + i = 3 + while i < len(sys.argv): + myarg = sys.argv[i].lower() + if csvFormat and myarg == 'todrive': + todrive = True + i += 1 + else: + controlflow.invalid_argument_exit(sys.argv[i], + f"gam {['show', 'print'][csvFormat]} caalevels") try: levels = gapi.get_all_pages(caa.accessPolicies().accessLevels(), 'list', @@ -64,9 +77,16 @@ def print_access_levels(): accessLevelFormat='CEL', fields='*') except googleapiclient.errors.HttpError: _gen_role_error(caa) - for level in levels: - display.print_json(level) - print() + if not csvFormat: + for level in levels: + display.print_json(level) + print() + else: + for level in levels: + display.add_row_titles_to_csv_file( + utils.flatten_json(level), + csvRows, titles) + display.write_csv_file(csvRows, titles, 'CAA Levels', todrive) def build_os_constraints(constraints): diff --git a/src/gam/gapi/cloudidentity/orgunits.py b/src/gam/gapi/cloudidentity/orgunits.py index 248fc11e..7839fa0f 100644 --- a/src/gam/gapi/cloudidentity/orgunits.py +++ b/src/gam/gapi/cloudidentity/orgunits.py @@ -32,11 +32,24 @@ def move_shared_drive(driveId, orgUnit): name=name, body=body) -def print_orgunit_shared_drives(): +def printshow_orgunit_shared_drives(csvFormat): try: orgunit = sys.argv[3] except IndexError: orgunit = '/' + if csvFormat: + todrive = False + csvRows = [] + titles = ['name'] + i = 4 + while i < len(sys.argv): + myarg = sys.argv[i].lower() + if csvFormat and myarg == 'todrive': + todrive = True + i += 1 + else: + controlflow.invalid_argument_exit(sys.argv[i], + f"gam {['show', 'print'][csvFormat]} oushareddrives") ci = gapi_cloudidentity.build('cloudidentity_beta') _, orgUnitId = gapi_directory_orgunits.getOrgUnitId(orgunit) parent = f'orgUnits/{orgUnitId[3:]}' @@ -47,6 +60,13 @@ def print_orgunit_shared_drives(): parent=parent, customer=_get_orgunit_customerid(), filter=filter_) - for sd in sds: - display.print_json(sd) - print() + if not csvFormat: + for sd in sds: + display.print_json(sd) + print() + else: + for sd in sds: + display.add_row_titles_to_csv_file( + utils.flatten_json(sd), + csvRows, titles) + display.write_csv_file(csvRows, titles, f'OrgUnit {orgunit} Shared Drives', todrive)