From 6c62483e8e2e3f3fc21a3c0bc6672678bcabfd2f Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Wed, 21 Jul 2021 14:27:46 -0700 Subject: [PATCH] Updates for CRM v3 changes (#1400) --- src/GamCommands.txt | 2 ++ src/gam/__init__.py | 39 +++++++++++++++------------------------ 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/GamCommands.txt b/src/GamCommands.txt index 2bb2e161..e766f15b 100644 --- a/src/GamCommands.txt +++ b/src/GamCommands.txt @@ -849,6 +849,8 @@ An argument containing instances of ~~xxx~~ has xxx replaced by the value of fie Example: gam csv Users.csv gam update user "~primaryEmail" address type work unstructured "~~Street~~, ~~City~~, ~~State~~ ~~ZIP~~" Each user (~primaryEmail, e.g. foo@bar.com) would have their work address updated +gam create gcpfolder + gam create project [] [] gam create project [admin ] [project ] [parent ] gam use project [] [] diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 8f4c82fe..584656b3 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -7517,22 +7517,15 @@ def _getLoginHintProjectId(createCmd): f'Invalid Project ID: {projectId}, expected <{PROJECTID_FORMAT_REQUIRED}>' ) crm, httpObj = getCRMService(login_hint) - if parent and not parent.startswith( - 'organizations/') and not parent.startswith('folders/'): + if parent and not parent.startswith('organizations/') and not parent.startswith('folders/'): parent = convertGCPFolderNameToID(parent, crm) - if parent: - parent_type, parent_id = parent.split('/') - if parent_type[-1] == 's': - parent_type = parent_type[: - -1] # folders > folder, organizations > organization - parent = {'type': parent_type, 'id': parent_id} projects = _getProjects(crm, f'id:{projectId}') if not createCmd: if not projects: controlflow.system_error_exit( 2, f'User: {login_hint}, Project ID: {projectId}, Does not exist') - if projects[0]['lifecycleState'] != 'ACTIVE': + if projects[0]['state'] != 'ACTIVE': controlflow.system_error_exit( 2, f'User: {login_hint}, Project ID: {projectId}, Not active') else: @@ -7563,17 +7556,14 @@ def convertGCPFolderNameToID(parent, crm): def createGCPFolder(): + displayName = sys.argv[3] login_hint = _getValidateLoginHint() login_domain = login_hint.split('@')[-1] crm, _ = getCRMService(login_hint) organization = getGCPOrg(crm, login_domain) - gapi.call(crm.folders(), - 'create', - body={ - 'parent': organization, - 'name': sys.argv[3], - 'displayName': sys.argv[3] - }) + result = gapi.call(crm.folders(), 'create', + body={'parent': organization, 'displayName': displayName}) + print(f'User: {login_hint}, Folder: {displayName}, GCP Folder Name: {result["name"]}, Created') def _getLoginHintProjects(printShowCmd): @@ -8069,8 +8059,9 @@ def doPrintShowProjects(csvFormat): csvRows = [] todrive = False titles = [ - 'User', 'projectId', 'projectNumber', 'name', 'createTime', - 'lifecycleState' + 'User', 'projectId', 'name', 'displayName', + 'createTime', 'updateTime', 'deleteTime', + 'state' ] while i < len(sys.argv): myarg = sys.argv[i].lower() @@ -8087,19 +8078,19 @@ def doPrintShowProjects(csvFormat): for project in projects: i += 1 print(f' Project: {project["projectId"]}{currentCount(i, count)}') - print(f' projectNumber: {project["projectNumber"]}') print(f' name: {project["name"]}') - print(f' createTime: {project["createTime"]}') - print(f' lifecycleState: {project["lifecycleState"]}') + print(f' displayName: {project["displayName"]}') + for field in ['createTime', 'updateTime', 'deleteTime']: + if field in project: + print(f' {field}: {project[field]}') + print(f' state: {project["state"]}') jcount = len(project.get('labels', [])) if jcount > 0: print(' labels:') for k, v in list(project['labels'].items()): print(f' {k}: {v}') if 'parent' in project: - print(' parent:') - print(f' type: {project["parent"]["type"]}') - print(f' id: {project["parent"]["id"]}') + print(f' parent: {project["parent"]}') else: for project in projects: display.add_row_titles_to_csv_file(