Files
GoogleDriveManagement/src/gam/__init__.py
2026-07-03 18:22:48 -04:00

3600 lines
126 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# GAM7
#
# Copyright 2026, All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
GAM is a command line tool which allows Administrators to control their Google Workspace domain and accounts.
For more information, see:
https://github.com/GAM-team/GAM
https://github.com/GAM-team/GAM/wiki
"""
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
__version__ = '7.46.03'
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
# pylint: disable=wrong-import-position
import base64
import codecs
import collections
import configparser
import csv
from email.charset import add_charset, QP
from email.generator import Generator
from email.header import decode_header, Header
from email import message_from_string
from email.mime.application import MIMEApplication
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate
from email.policy import SMTP as policySMTP
import hashlib
from html.entities import name2codepoint
from html.parser import HTMLParser
import http.client
import importlib
from importlib.metadata import version as lib_version
import io
import ipaddress
import json
import logging
from logging.handlers import RotatingFileHandler
import mimetypes
import multiprocessing
import os
import platform
import queue
import random
import re
from secrets import SystemRandom
import shlex
import signal
import smtplib
import socket
import sqlite3
import ssl
import string
import struct
import subprocess
import sys
from tempfile import TemporaryFile
try:
import termios
except ImportError:
# termios does not exist for Windows
pass
import threading
import time
from traceback import print_exc
import types
from urllib.parse import quote, quote_plus, unquote, urlencode, urlparse, parse_qs
import uuid
import warnings
import webbrowser
import wsgiref.simple_server
import wsgiref.util
import zipfile
# disable legacy stuff we don't use and isn't secure
os.environ['CRYPTOGRAPHY_OPENSSL_NO_LEGACY'] = "1"
from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.x509.oid import NameOID
# 10/2024 - I don't recall why we did this but PyInstaller
# 6.10.0+ does not like it. Only run this when we're not
# Frozen.
if not getattr(sys, 'frozen', False):
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
import arrow
from pathvalidate import sanitize_filename, sanitize_filepath
import google.oauth2.credentials
import google.oauth2.id_token
import google.auth
import google.auth.transport.requests
from google.auth.compute_engine import _metadata as gce_metadata
from google.auth.jwt import Credentials as JWTCredentials
import google.oauth2.service_account
import google_auth_oauthlib.flow
import google_auth_httplib2
import googleapiclient
import googleapiclient.discovery
import googleapiclient.errors
import googleapiclient.http
import httplib2
httplib2.RETRIES = 5
from passlib.hash import sha512_crypt
from filelock import FileLock
if platform.system() == 'Linux':
import distro
from gamlib import glaction
from gamlib import glapi as API
from gamlib import glcfg as GC
from gamlib import glclargs
from gamlib import glentity
from gamlib import glgapi as GAPI
from gamlib import glgdata as GDATA
from gamlib import glglobals as GM
from gamlib import glindent
from gamlib import glmsgs as Msg
from gamlib import glskus as SKU
from gamlib import gluprop as UProp
from gamlib import glverlibs
import gdata.apps.service
import gdata.apps.audit
import gdata.apps.audit.service
import gdata.apps.contacts
import gdata.apps.contacts.service
from gam.util.html import _DeHTMLParser, dehtml # noqa: F401 # re-export
from gam.util.access import ( # noqa: F401 # re-export
accessErrorMessage, accessErrorExit, accessErrorExitNonDirectory,
ClientAPIAccessDeniedExit, SvcAcctAPIAccessDenied, SvcAcctAPIAccessDeniedExit,
SvcAcctAPIDisabledExit, APIAccessDeniedExit,
checkEntityDNEorAccessErrorExit, checkEntityAFDNEorAccessErrorExit,
checkEntityItemValueAFDNEorAccessErrorExit,
entityUnknownWarning, entityOrEntityUnknownWarning, duplicateAliasGroupUserWarning,
)
from gam.util.email import ( # noqa: F401 # re-export
_addAttachmentsToMessage, _addEmbeddedImagesToMessage, send_email,
)
IS08601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S%:z'
RFC2822_TIME_FORMAT = '%a, %d %b %Y %H:%M:%S %z'
def ISOformatTimeStamp(timestamp):
return timestamp.isoformat('T', 'seconds')
def currentISOformatTimeStamp(timespec='milliseconds'):
return arrow.now(GC.Values[GC.TIMEZONE]).isoformat('T', timespec)
Act = glaction.GamAction()
Cmd = glclargs.GamCLArgs()
Ent = glentity.GamEntity()
Ind = glindent.GamIndent()
# Finding path method varies between Python source, PyInstaller and StaticX
if os.environ.get('STATICX_PROG_PATH', False):
# StaticX static executable
GM.Globals[GM.GAM_PATH] = os.path.dirname(os.environ['STATICX_PROG_PATH'])
GM.Globals[GM.GAM_TYPE] = 'staticx'
elif getattr(sys, 'frozen', False):
# Pyinstaller executable
GM.Globals[GM.GAM_PATH] = os.path.dirname(sys.executable)
GM.Globals[GM.GAM_TYPE] = 'pyinstaller'
else:
# Source code
GM.Globals[GM.GAM_PATH] = os.path.dirname(os.path.realpath(__file__))
GM.Globals[GM.GAM_TYPE] = 'pythonsource'
GIT_USER = 'GAM-team'
GAM = 'GAM'
GAM_URL = f'https://github.com/{GIT_USER}/{GAM}'
GAM_USER_AGENT = (f'{GAM} {__version__} - {GAM_URL} / '
f'{__author__} / '
f'Python {sys.version_info[0]}.{sys.version_info[1]}.{sys.version_info[2]} {sys.version_info[3]} / '
f'{platform.platform()} {platform.machine()} /'
)
GAM_RELEASES = f'https://github.com/{GIT_USER}/{GAM}/releases'
GAM_WIKI = f'https://github.com/{GIT_USER}/{GAM}/wiki'
GAM_LATEST_RELEASE = f'https://api.github.com/repos/{GIT_USER}/{GAM}/releases/latest'
GAM_PROJECT_CREATION = 'GAM Project Creation'
GAM_PROJECT_CREATION_CLIENT_ID = '297408095146-fug707qsjv4ikron0hugpevbrjhkmsk7.apps.googleusercontent.com'
from gam.constants import *
def redactable_debug_print(*args):
processed_args = []
for arg in args:
if arg.startswith('b\''):
sbytes = arg[2:-1]
sbytes = bytes(sbytes, 'utf-8')
arg = sbytes.decode()
arg = arg.replace('\\r\\n', "\n ")
if GC.Values[GC.DEBUG_REDACTION]:
for pattern, replace in DEBUG_REDACTION_PATTERNS:
arg = re.sub(pattern, replace, arg)
processed_args.append(arg)
print(*processed_args)
# Multiprocessing lock
mplock = None
# stdin/stdout/stderr — extracted to gam.util.output
from util.output import readStdin # noqa: E402
from util.output import stdErrorExit # noqa: E402
from util.output import writeStdout # noqa: E402
from util.output import flushStdout # noqa: E402
from util.output import writeStderr # noqa: E402
from util.output import flushStderr # noqa: E402
from util.output import setSysExitRC # noqa: E402
from util.output import stderrErrorMsg # noqa: E402
from util.output import stderrWarningMsg # noqa: E402
from util.output import systemErrorExit # noqa: E402
from util.output import printErrorMessage # noqa: E402
from util.output import printWarningMessage # noqa: E402
from util.output import supportsColoredText # noqa: E402
from util.output import createColoredText # noqa: E402
from util.output import createRedText # noqa: E402
from util.output import createGreenText # noqa: E402
from util.output import createYellowText # noqa: E402
from util.output import executeBatch # noqa: E402
from util.output import _stripControlCharsFromName # noqa: E402
from util.output import currentCount # noqa: E402
from util.output import currentCountNL # noqa: E402
from util.output import formatKeyValueList # noqa: E402
# File I/O — extracted to gam.util.fileio
from util.fileio import cleanFilename # noqa: E402
from util.fileio import setFilePath # noqa: E402
from util.fileio import uniqueFilename # noqa: E402
from util.fileio import cleanFilepath # noqa: E402
from util.fileio import fileErrorMessage # noqa: E402
from util.fileio import fdErrorMessage # noqa: E402
from util.fileio import setEncoding # noqa: E402
from util.fileio import StringIOobject # noqa: E402
from util.fileio import openFile # noqa: E402
from util.fileio import closeFile # noqa: E402
from util.fileio import readFile # noqa: E402
from util.fileio import writeFile # noqa: E402
from util.fileio import writeFileReturnError # noqa: E402
from util.fileio import deleteFile # noqa: E402
from util.fileio import getGDocSheetDataRetryWarning # noqa: E402
from util.fileio import getGDocSheetDataFailedExit # noqa: E402
from util.fileio import incrAPICallsRetryData # noqa: E402
from util.fileio import initAPICallsRateCheck # noqa: E402
from util.fileio import checkAPICallsRate # noqa: E402
from util.fileio import openGAMCommandLog # noqa: E402
from util.fileio import writeGAMCommandLog # noqa: E402
from util.fileio import closeGAMCommandLog # noqa: E402
# Display / warning / action — extracted to gam.util.display
from util.display import badRequestWarning # noqa: E402
from util.display import emptyQuery # noqa: E402
from util.display import invalidQuery # noqa: E402
from util.display import invalidMember # noqa: E402
from util.display import invalidUserSchema # noqa: E402
from util.display import userServiceNotEnabledWarning # noqa: E402
from util.display import userAlertsServiceNotEnabledWarning # noqa: E402
from util.display import userAnalyticsServiceNotEnabledWarning # noqa: E402
from util.display import userCalServiceNotEnabledWarning # noqa: E402
from util.display import userChatServiceNotEnabledWarning # noqa: E402
from util.display import userContactDelegateServiceNotEnabledWarning # noqa: E402
from util.display import userDriveServiceNotEnabledWarning # noqa: E402
from util.display import userKeepServiceNotEnabledWarning # noqa: E402
from util.display import userGmailServiceNotEnabledWarning # noqa: E402
from util.display import userLookerStudioServiceNotEnabledWarning # noqa: E402
from util.display import userPeopleServiceNotEnabledWarning # noqa: E402
from util.display import userTasksServiceNotEnabledWarning # noqa: E402
from util.display import userYouTubeServiceNotEnabledWarning # noqa: E402
from util.display import entityServiceNotApplicableWarning # noqa: E402
from util.display import entityDoesNotExistWarning # noqa: E402
from util.display import entityListDoesNotExistWarning # noqa: E402
from util.display import entityDoesNotHaveItemWarning # noqa: E402
from util.display import entityDuplicateWarning # noqa: E402
from util.display import entityActionFailedWarning # noqa: E402
from util.display import entityModifierItemValueListActionFailedWarning # noqa: E402
from util.display import entityModifierActionFailedWarning # noqa: E402
from util.display import entityModifierNewValueActionFailedWarning # noqa: E402
from util.display import entityNumEntitiesActionFailedWarning # noqa: E402
from util.display import entityActionNotPerformedWarning # noqa: E402
from util.display import entityItemValueListActionNotPerformedWarning # noqa: E402
from util.display import entityModifierItemValueListActionNotPerformedWarning # noqa: E402
from util.display import entityNumEntitiesActionNotPerformedWarning # noqa: E402
from util.display import entityBadRequestWarning # noqa: E402
from util.display import printGettingAllAccountEntities # noqa: E402
from util.display import printGotAccountEntities # noqa: E402
from util.display import setGettingAllEntityItemsForWhom # noqa: E402
from util.display import printGettingAllEntityItemsForWhom # noqa: E402
from util.display import printGotEntityItemsForWhom # noqa: E402
from util.display import printGettingEntityItem # noqa: E402
from util.display import printGettingEntityItemForWhom # noqa: E402
from util.display import stderrEntityMessage # noqa: E402
from util.display import FIRST_ITEM_MARKER # noqa: E402
from util.display import LAST_ITEM_MARKER # noqa: E402
from util.display import TOTAL_ITEMS_MARKER # noqa: E402
from util.display import getPageMessage # noqa: E402
from util.display import getPageMessageForWhom # noqa: E402
from util.display import printLine # noqa: E402
from util.display import printBlankLine # noqa: E402
from util.display import printKeyValueList # noqa: E402
from util.display import printKeyValueListWithCount # noqa: E402
from util.display import printKeyValueDict # noqa: E402
from util.display import printKeyValueWithCRsNLs # noqa: E402
from util.display import printJSONKey # noqa: E402
from util.display import printJSONValue # noqa: E402
from util.display import printEntity # noqa: E402
from util.display import printEntityMessage # noqa: E402
from util.display import printEntitiesCount # noqa: E402
from util.display import printEntityKVList # noqa: E402
from util.display import performAction # noqa: E402
from util.display import performActionNumItems # noqa: E402
from util.display import performActionModifierNumItems # noqa: E402
from util.display import actionPerformedNumItems # noqa: E402
from util.display import actionFailedNumItems # noqa: E402
from util.display import actionNotPerformedNumItemsWarning # noqa: E402
from util.display import entityPerformAction # noqa: E402
from util.display import entityPerformActionNumItems # noqa: E402
from util.display import entityPerformActionModifierNumItems # noqa: E402
from util.display import entityPerformActionNumItemsModifier # noqa: E402
from util.display import entityPerformActionSubItemModifierNumItems # noqa: E402
from util.display import entityPerformActionSubItemModifierNumItemsModifierNewValue # noqa: E402
from util.display import entityPerformActionModifierNumItemsModifier # noqa: E402
from util.display import entityPerformActionModifierItemValueList # noqa: E402
from util.display import entityPerformActionModifierNewValue # noqa: E402
from util.display import entityPerformActionModifierNewValueItemValueList # noqa: E402
from util.display import entityPerformActionItemValue # noqa: E402
from util.display import entityPerformActionInfo # noqa: E402
from util.display import entityActionPerformed # noqa: E402
from util.display import entityActionPerformedMessage # noqa: E402
from util.display import entityNumItemsActionPerformed # noqa: E402
from util.display import entityModifierActionPerformed # noqa: E402
from util.display import entityModifierItemValueListActionPerformed # noqa: E402
from util.display import entityModifierNewValueActionPerformed # noqa: E402
from util.display import entityModifierNewValueItemValueListActionPerformed # noqa: E402
from util.display import entityModifierNewValueKeyValueActionPerformed # noqa: E402
from util.errors import invalidClientSecretsJsonExit # noqa: E402
from util.errors import invalidOauth2serviceJsonExit # noqa: E402
from util.errors import invalidOauth2TxtExit # noqa: E402
from util.errors import expiredRevokedOauth2TxtExit # noqa: E402
from util.errors import invalidDiscoveryJsonExit # noqa: E402
from util.errors import entityActionFailedExit # noqa: E402
from util.errors import entityDoesNotExistExit # noqa: E402
from util.errors import entityDoesNotHaveItemExit # noqa: E402
from util.errors import entityIsNotUniqueExit # noqa: E402
from util.errors import usageErrorExit # noqa: E402
from util.errors import csvFieldErrorExit # noqa: E402
from util.errors import csvDataAlreadySavedErrorExit # noqa: E402
from util.errors import unknownArgumentExit # noqa: E402
from util.errors import expectedArgumentExit # noqa: E402
from util.errors import blankArgumentExit # noqa: E402
from util.errors import emptyArgumentExit # noqa: E402
from util.errors import invalidArgumentExit # noqa: E402
from util.errors import missingArgumentExit # noqa: E402
from util.errors import deprecatedArgument # noqa: E402
from util.errors import deprecatedArgumentExit # noqa: E402
from util.errors import deprecatedCommandExit # noqa: E402
from util.errors import formatChoiceList # noqa: E402
from util.errors import invalidChoiceExit # noqa: E402
from util.errors import missingChoiceExit # noqa: E402
from util.args import * # noqa: E402,F403 - re-exports ~155 symbols
from util.connection import getLocalGoogleTimeOffset # noqa: E402
from util.connection import _getServerTLSUsed # noqa: E402
from util.connection import getOSPlatform # noqa: E402
from util.connection import inspect_untrusted_cert # noqa: E402
from util.connection import doCheckConnection # noqa: E402
from util.connection import doComment # noqa: E402
from util.connection import doVersion # noqa: E402
from util.connection import doUsage # noqa: E402
from util.connection import MACOS_CODENAMES # noqa: E402
# API transport, service builders, and call wrappers — extracted to gam.util.api
from util.api import handleServerError # noqa: E402
from util.api import getHttpObj # noqa: E402
from util.api import _force_user_agent # noqa: E402
from util.api import transportAgentRequest # noqa: E402
from util.api import transportAuthorizedHttp # noqa: E402
from util.api import transportCreateRequest # noqa: E402
from util.api import doGAMCheckForUpdates # noqa: E402
from util.api import signjwtJWTCredentials # noqa: E402
from util.api import signjwtCredentials # noqa: E402
from util.api import get_adc_request # noqa: E402
from util.api import signjwtSignJwt # noqa: E402
from util.api import handleOAuthTokenError # noqa: E402
from util.api import getOauth2TxtCredentials # noqa: E402
from util.api import _getValueFromOAuth # noqa: E402
from util.api import _getAdminEmail # noqa: E402
from util.api import writeClientCredentials # noqa: E402
from util.api import shortenURL # noqa: E402
from util.api import runSqliteQuery # noqa: E402
from util.api import refreshCredentialsWithReauth # noqa: E402
from util.api import getClientCredentials # noqa: E402
from util.api import waitOnFailure # noqa: E402
from util.api import clearServiceCache # noqa: E402
from util.api import getAPIService # noqa: E402
from util.api import getService # noqa: E402
from util.api import defaultSvcAcctScopes # noqa: E402
from util.api import _getSvcAcctData # noqa: E402
from util.api import getSvcAcctCredentials # noqa: E402
from util.api import getGDataOAuthToken # noqa: E402
from util.api import checkGDataError # noqa: E402
from util.api import callGData # noqa: E402
from util.api import callGDataPages # noqa: E402
from util.api import checkGAPIError # noqa: E402
from util.api import callGAPI # noqa: E402
from util.api import _showGAPIpagesResult # noqa: E402
from util.api import callGAPIpages # noqa: E402
from util.api import yieldGAPIpages # noqa: E402
from util.api import callGAPIitems # noqa: E402
from util.api import readDiscoveryFile # noqa: E402
from util.api import buildGAPIObject # noqa: E402
from util.api import buildGAPIServiceObject # noqa: E402
from util.api import buildGAPIObjectNoAuthentication # noqa: E402
from util.api import initGDataObject # noqa: E402
from util.api import getGDataUserCredentials # noqa: E402
from util.api import getContactsObject # noqa: E402
from util.api import getContactsQuery # noqa: E402
from util.api import getEmailAuditObject # noqa: E402
from util.api import _processGAPIpagesResult # noqa: E402
from util.api import _finalizeGAPIpagesResult # noqa: E402
from util.api import _setMaxArgResults # noqa: E402
from util.api import writeGotMessage # noqa: E402
from util.api import getSaUser # noqa: E402
from util.api import chooseSaAPI # noqa: E402
# Entity resolution — extracted to gam.util.entity
from util.entity import getUserEmailFromID # noqa: E402
from util.entity import getGroupEmailFromID # noqa: E402
from util.entity import getServiceAccountEmailFromID # noqa: E402
from util.entity import convertUIDtoEmailAddressWithType # noqa: E402
from util.entity import NON_EMAIL_MEMBER_PREFIXES # noqa: E402
from util.entity import convertUIDtoEmailAddress # noqa: E402
from util.entity import convertEmailAddressToUID # noqa: E402
from util.entity import convertUserIDtoEmail # noqa: E402
from util.entity import splitEmailAddressOrUID # noqa: E402
from util.entity import convertOrgUnitIDtoPath # noqa: E402
from util.entity import shlexSplitList # noqa: E402
from util.entity import shlexSplitListStatus # noqa: E402
from util.entity import getQueries # noqa: E402
from util.entity import _validateDeviceQuery # noqa: E402
from util.entity import getDeviceQueries # noqa: E402
from util.entity import convertEntityToList # noqa: E402
from util.entity import GROUP_ROLES_MAP # noqa: E402
from util.entity import ALL_GROUP_ROLES # noqa: E402
from util.entity import _getRoleVerification # noqa: E402
from util.entity import _getCIRoleVerification # noqa: E402
from util.entity import _checkMemberStatusIsSuspendedIsArchived # noqa: E402
from util.entity import _checkMemberIsSuspendedIsArchived # noqa: E402
from util.entity import _checkMemberRole # noqa: E402
from util.entity import _checkMemberRoleIsSuspendedIsArchived # noqa: E402
from util.entity import _checkMemberCategory # noqa: E402
from util.entity import _checkCIMemberCategory # noqa: E402
from util.entity import getCIGroupMemberRoleFixType # noqa: E402
from util.entity import getCIGroupTransitiveMemberRoleFixType # noqa: E402
from util.entity import convertGroupCloudIDToEmail # noqa: E402
from util.entity import convertGroupEmailToCloudID # noqa: E402
from util.entity import CIGROUP_DISCUSSION_FORUM_LABEL # noqa: E402
from util.entity import CIGROUP_DYNAMIC_LABEL # noqa: E402
from util.entity import CIGROUP_SECURITY_LABEL # noqa: E402
from util.entity import CIGROUP_LOCKED_LABEL # noqa: E402
from util.entity import getCIGroupMembershipGraph # noqa: E402
from util.entity import checkGroupExists # noqa: E402
from util.entity import getItemsToModify # noqa: E402
from util.entity import splitEntityList # noqa: E402
from util.entity import splitEntityListShlex # noqa: E402
from util.entity import fileDataErrorExit # noqa: E402
from util.entity import getEntitiesFromFile # noqa: E402
from util.entity import getEntitiesFromCSVFile # noqa: E402
from util.entity import getEntitiesFromCSVbyField # noqa: E402
from util.entity import mapEntityType # noqa: E402
from util.entity import getEntityArgument # noqa: E402
from util.entity import getEntityToModify # noqa: E402
from util.entity import getEntitySelector # noqa: E402
from util.entity import getEntitySelection # noqa: E402
from util.entity import getEntityList # noqa: E402
from util.entity import getNormalizedEmailAddressEntity # noqa: E402
from util.entity import getUserObjectEntity # noqa: E402
from util.entity import _validateUserGetObjectList # noqa: E402
from util.entity import _validateUserGetMessageIds # noqa: E402
from util.entity import checkUserExists # noqa: E402
from util.entity import checkUserSuspended # noqa: E402
# CSV Print Framework — extracted to gam.util.csv_pf
from util.csv_pf import addFieldToFieldsList # noqa: E402
from util.csv_pf import _getFieldsList # noqa: E402
from util.csv_pf import _getRawFields # noqa: E402
from util.csv_pf import CheckInputRowFilterHeaders # noqa: E402
from util.csv_pf import RowFilterMatch # noqa: E402
from util.csv_pf import getFieldsList # noqa: E402
from util.csv_pf import getFieldsFromFieldsList # noqa: E402
from util.csv_pf import getItemFieldsFromFieldsList # noqa: E402
from util.csv_pf import CSVPrintFile # noqa: E402
from util.csv_pf import writeEntityNoHeaderCSVFile # noqa: E402
from util.csv_pf import getTodriveOnly # noqa: E402
from util.csv_pf import DEFAULT_SKIP_OBJECTS # noqa: E402
from util.csv_pf import cleanJSON # noqa: E402
from util.csv_pf import flattenJSON # noqa: E402
from util.csv_pf import showJSON # noqa: E402
from util.csv_pf import FormatJSONQuoteChar # noqa: E402
from util.csv_pf import RI_ENTITY # noqa: E402
from util.csv_pf import RI_I # noqa: E402
from util.csv_pf import RI_COUNT # noqa: E402
from util.csv_pf import RI_J # noqa: E402
from util.csv_pf import RI_JCOUNT # noqa: E402
from util.csv_pf import RI_ITEM # noqa: E402
from util.csv_pf import RI_ROLE # noqa: E402
from util.csv_pf import RI_OPTION # noqa: E402
from util.csv_pf import batchRequestID # noqa: E402
# OrgUnit helpers — extracted to gam.util.orgunits
from util.orgunits import getOrgUnitItem # noqa: E402
from util.orgunits import getTopLevelOrgId # noqa: E402
from util.orgunits import getOrgUnitId # noqa: E402
from util.orgunits import getAllParentOrgUnitsForUser # noqa: E402
# GDoc/GSheet/Storage/CSV readers — extracted to gam.util.gdoc
from util.gdoc import GDOC_FORMAT_MIME_TYPES # noqa: E402
from util.gdoc import getGDocData # noqa: E402
from util.gdoc import HTML_TITLE_PATTERN # noqa: E402
from util.gdoc import getGSheetData # noqa: E402
from util.gdoc import BUCKET_OBJECT_PATTERNS # noqa: E402
from util.gdoc import getBucketObjectName # noqa: E402
from util.gdoc import GCS_FORMAT_MIME_TYPES # noqa: E402
from util.gdoc import getStorageFileData # noqa: E402
from util.gdoc import openCSVFileReader # noqa: E402
# Configuration — extracted to gam.util.config
from util.config import SetGlobalVariables # noqa: E402
# Batch/multiprocess infrastructure — extracted to gam.util.batch
from util.batch import NullHandler # noqa: E402
from util.batch import initializeLogging # noqa: E402
from util.batch import saveNonPickleableValues # noqa: E402
from util.batch import restoreNonPickleableValues # noqa: E402
from util.batch import CSVFileQueueHandler # noqa: E402
from util.batch import initializeCSVFileQueueHandler # noqa: E402
from util.batch import terminateCSVFileQueueHandler # noqa: E402
from util.batch import StdQueueHandler # noqa: E402
from util.batch import initializeStdQueueHandler # noqa: E402
from util.batch import batchWriteStderr # noqa: E402
from util.batch import writeStdQueueHandler # noqa: E402
from util.batch import terminateStdQueueHandler # noqa: E402
from util.batch import ProcessGAMCommandMulti # noqa: E402
from util.batch import checkChildProcessRC # noqa: E402
from util.batch import initGamWorker # noqa: E402
from util.batch import MultiprocessGAMCommands # noqa: E402
from util.batch import threadBatchWorker # noqa: E402
from util.batch import ThreadBatchGAMCommands # noqa: E402
from util.batch import _getShowCommands # noqa: E402
from util.batch import _getSkipRows # noqa: E402
from util.batch import _getMaxRows # noqa: E402
from util.batch import doBatch # noqa: E402
from util.batch import doThreadBatch # noqa: E402
from util.batch import doAutoBatch # noqa: E402
from util.batch import getSubFields # noqa: E402
from util.batch import processSubFields # noqa: E402
from util.batch import doCSV # noqa: E402
from util.batch import doCSVTest # noqa: E402
from util.batch import doLoop # noqa: E402
from util.batch import _doList # noqa: E402
from util.batch import doListType # noqa: E402
from util.batch import doListCrOS # noqa: E402
from util.batch import doListUser # noqa: E402
from util.batch import _showCount # noqa: E402
from util.batch import showCountCrOS # noqa: E402
from util.batch import showCountUser # noqa: E402
# Command module re-exports for routing tables
# Command function references (lazy-loaded at first call)
# These replace the old `from gam.cmd.X import func` re-exports
# gam.cmd.admin
# Command module imports
from gam.cmd.admin import (
doCreateAdmin,
doCreateUpdateAdminRoles,
doDeleteAdmin,
doDeleteAdminRole,
doInfoPrintShowAdminRoles,
doPrintShowAdmins,
doPrintShowPrivileges,
)
from gam.cmd.alerts import (
doClearAlertSettings,
doCreateAlertFeedback,
doDeleteOrUndeleteAlert,
doInfoAlert,
doPrintShowAlertFeedback,
doPrintShowAlerts,
doShowAlertSettings,
doUpdateAlertSettings,
)
from gam.cmd.aliases import (
deleteUsersAliases,
doCreateUpdateAliases,
doDeleteAliases,
doInfoAliases,
doPrintAddresses,
doPrintAliases,
doRemoveAliases,
)
from gam.cmd.analytics import (
printShowAnalyticAccountSummaries,
printShowAnalyticAccounts,
printShowAnalyticDatastreams,
printShowAnalyticProperties,
)
from gam.cmd.audit import doCreateMonitor, doDeleteMonitor, doShowMonitors
from gam.cmd.browsers import (
doCreateBrowserToken,
doCreateChromeProfileCommand,
doDeleteBrowsers,
doDeleteChromeProfile,
doInfoBrowsers,
doInfoChromeProfile,
doInfoChromeProfileCommand,
doMoveBrowsers,
doPrintShowBrowserTokens,
doPrintShowBrowsers,
doPrintShowChromeProfileCommands,
doPrintShowChromeProfiles,
doRevokeBrowserToken,
doUpdateBrowsers,
)
from gam.cmd.caa import (
doCreateCAALevel,
doDeleteCAALevel,
doPrintShowCAALevels,
doUpdateCAALevel,
)
from gam.cmd.calendar import (
doCalendarsCreateACL,
doCalendarsCreateACLs,
doCalendarsCreateEvent,
doCalendarsDeleteACL,
doCalendarsDeleteACLs,
doCalendarsDeleteEvents,
doCalendarsDeleteEventsOld,
doCalendarsEmptyTrash,
doCalendarsImportEvent,
doCalendarsInfoACLs,
doCalendarsInfoEvents,
doCalendarsModifySettings,
doCalendarsMoveEvents,
doCalendarsMoveEventsOld,
doCalendarsPrintShowACLs,
doCalendarsPrintShowEvents,
doCalendarsPrintShowSettings,
doCalendarsPurgeEvents,
doCalendarsUpdateACL,
doCalendarsUpdateACLs,
doCalendarsUpdateEvents,
doCalendarsUpdateEventsOld,
doCalendarsWipeEvents,
doResourceCreateCalendarACLs,
doResourceDeleteCalendarACLs,
doResourceInfoCalendarACLs,
doResourcePrintShowCalendarACLs,
doResourceUpdateCalendarACLs,
)
from gam.cmd.chat import (
createChatEmoji,
createChatMember,
createChatMessage,
createChatSpace,
createUpdateChatSection,
deleteChatEmoji,
deleteChatMessage,
deleteChatSection,
deleteChatSpace,
deleteUpdateChatMember,
doCreateChatMessage,
doDeleteChatMessage,
doInfoChatEvent,
doInfoChatMember,
doInfoChatMessage,
doInfoChatSpace,
doPrintShowChatMembers,
doPrintShowChatSpaces,
doSetupChat,
doUpdateChatMessage,
infoChatEmoji,
infoChatEvent,
infoChatMember,
infoChatMessage,
infoChatSpace,
infoChatSpaceDM,
moveShowChatSectionItem,
printShowChatEmojis,
printShowChatEvents,
printShowChatMembers,
printShowChatMessages,
printShowChatSearchMessages,
printShowChatSectionItems,
printShowChatSections,
printShowChatSpaces,
syncChatMembers,
updateChatMessage,
updateChatSpace,
)
from gam.cmd.chromeapps import (
doInfoChromeApp,
doPrintChromeSnValidity,
doPrintShowChromeAppDevices,
doPrintShowChromeApps,
doPrintShowChromeAues,
doPrintShowChromeDeviceCounts,
doPrintShowChromeHistory,
doPrintShowChromeNeedsAttn,
doPrintShowChromeVersions,
)
from gam.cmd.chromepolicies import (
doCreateChromeNetwork,
doCreateChromePolicyImage,
doDeleteChromeNetwork,
doDeleteChromePolicy,
doInfoChromePolicySchemas,
doPrintShowChromePolicies,
doPrintShowChromePolicySchemas,
doUpdateChromePolicy,
)
from gam.cmd.cidevices import (
doApproveCIDeviceUser,
doBlockCIDeviceUser,
doCancelWipeCIDevice,
doCancelWipeCIDeviceUser,
doCreateCIDevice,
doDeleteCIDevice,
doDeleteCIDeviceUser,
doInfoCIDevice,
doInfoCIDeviceUser,
doInfoCIDeviceUserState,
doPrintCIDeviceUsers,
doPrintCIDevices,
doSyncCIDevices,
doUpdateCIDevice,
doUpdateCIDeviceUser,
doUpdateCIDeviceUserState,
doWipeCIDevice,
doWipeCIDeviceUser,
)
from gam.cmd.cigroups import (
doCreateCIGroup,
doCreateUpdateCIPolicy,
doDeleteCIGroups,
doDeleteCIPolicies,
doInfoCIGroupMembers,
doInfoCIGroups,
doInfoCIPolicies,
doPrintCIGroupMembers,
doPrintCIGroups,
doPrintShowCIPolicies,
doShowCIGroupMembers,
doUpdateCIGroups,
infoCIGroupMembers,
)
from gam.cmd.ciuserinvitations import (
checkCIUserIsInvitable,
doCIUserInvitationsAction,
doCheckCIUserInvitations,
doInfoCIUserInvitations,
doPrintShowCIUserInvitations,
)
from gam.cmd.cloudstorage import doCopyCloudStorageBucket, doDownloadCloudStorageBucket, doDownloadCloudStorageFile
from gam.cmd.contacts import (
doClearDomainContacts,
doCreateDomainContact,
doDedupDomainContacts,
doDeleteDomainContacts,
doInfoDomainContacts,
doPrintShowDomainContacts,
doUpdateDomainContacts,
)
from gam.cmd.courses import (
acceptClassroomInvitations,
cancelGuardianInvitations,
clearGuardians,
createClassroomInvitations,
deleteClassroomInvitations,
deleteGuardians,
doCancelGuardianInvitation,
doClearCourseStudentGroups,
doCourseAddItems,
doCourseClearParticipants,
doCourseRemoveItems,
doCourseSyncParticipants,
doCourseUpdateItems,
doCreateCourse,
doCreateCourseStudentGroups,
doDeleteClassroomInvitations,
doDeleteCourse,
doDeleteCourseStudentGroups,
doDeleteCourses,
doDeleteGuardian,
doInfoCourse,
doInfoCourses,
doInviteGuardian,
doPrintCourseAnnouncements,
doPrintCourseCounts,
doPrintCourseMaterials,
doPrintCourseParticipants,
doPrintCourseStudentGroupMembers,
doPrintCourseStudentGroups,
doPrintCourseSubmissions,
doPrintCourseTopics,
doPrintCourseWork,
doPrintCourses,
doPrintShowClassroomInvitations,
doPrintShowGuardians,
doProcessCourseStudentGroupMembers,
doUpdateCourse,
doUpdateCourseStudentGroups,
doUpdateCourses,
inviteGuardians,
printShowClassroomInvitations,
printShowClassroomProfile,
printShowGuardians,
syncGuardians,
)
from gam.cmd.cros import (
doGetCommandResultCrOSDevices,
doGetCrOSDeviceFiles,
doInfoCrOSDevices,
doInfoPrintShowCrOSTelemetry,
doIssueCommandCrOSDevices,
doPrintCrOSActivity,
doPrintCrOSDevices,
doPrintCrOSEntity,
doUpdateCrOSDevices,
getCommandResultCrOSDevices,
getCrOSDeviceFiles,
infoCrOSDevices,
issueCommandCrOSDevices,
updateCrOSDevices,
)
from gam.cmd.customer import (
doInfoCustomer,
doInfoDomain,
doInfoInstance,
doPrintShowDomains,
doUpdateCustomer,
)
from gam.cmd.datatransfer import (
doCreateDataTransfer,
doInfoDataTransfer,
doPrintShowDataTransfers,
doShowTransferApps,
)
from gam.cmd.delegates import printShowContactDelegates, processContactDelegates
from gam.cmd.domains import (
doCreateDomain,
doCreateDomainAlias,
doDeleteDomain,
doDeleteDomainAlias,
doInfoDomainAlias,
doPrintShowDomainAliases,
doUpdateDomain,
)
from gam.cmd.drive import (
checkDriveFileShortcut,
claimOwnership,
collectOrphans,
copyDriveFile,
copySyncSharedDriveACLs,
createDriveFile,
createDriveFileACL,
createDriveFilePermissions,
createDriveFileShortcut,
createDriveFolderPath,
createDriveLabelPermissions,
createSharedDrive,
deleteDriveFile,
deleteDriveFileACLs,
deleteDriveLabelPermissions,
deleteEmptyDriveFolders,
deleteFileRevisions,
deletePermissions,
deleteSharedDrive,
doCopySyncSharedDriveACLs,
doCreateDriveFileACL,
doCreateDriveLabelPermissions,
doCreatePermissions,
doCreateSharedDrive,
doDeleteDriveFileACLs,
doDeleteDriveLabelPermissions,
doDeletePermissions,
doDeleteSharedDrive,
doHideUnhideSharedDrive,
doInfoDriveFileACLs,
doInfoDriveLabels,
doInfoSharedDrive,
doPrintSharedDriveOrganizers,
doPrintShowDriveFileACLs,
doPrintShowDriveLabelPermissions,
doPrintShowDriveLabels,
doPrintShowOrgunitSharedDrives,
doPrintShowOwnership,
doPrintShowSharedDriveACLs,
doPrintShowSharedDrives,
doShowSharedDriveThemes,
doUpdateDriveFileACLs,
doUpdateSharedDrive,
emptyDriveTrash,
getDriveFile,
getGoogleDocument,
hideUnhideSharedDrive,
infoDriveFileACLs,
infoDriveLabels,
infoSharedDrive,
moveDriveFile,
printDiskUsage,
printDriveActivity,
printEmptyDriveFolders,
printFileList,
printFileParentTree,
printSharedDriveOrganizers,
printShowDriveFileACLs,
printShowDriveLabelPermissions,
printShowDriveLabels,
printShowDriveSettings,
printShowDrivelastModifications,
printShowFileComments,
printShowFileCounts,
printShowFilePaths,
printShowFileRevisions,
printShowFileShareCounts,
printShowFileTree,
printShowLookerStudioAssets,
printShowSharedDriveACLs,
printShowSharedDrives,
processFileDriveLabels,
purgeDriveFile,
showFileInfo,
showSharedDriveThemes,
transferDrive,
transferOwnership,
trashDriveFile,
untrashDriveFile,
updateDriveFile,
updateDriveFileACLs,
updateFileRevisions,
updateGoogleDocument,
updateSharedDrive,
)
from gam.cmd.gmail import (
archiveMessages,
createCSEKeyPair,
createFilter,
createForm,
createForwardingAddresses,
createLabel,
createLabelList,
createSmime,
createUpdateCSEIdentity,
createUpdateSendAs,
delegateTo,
deleteFilters,
deleteForwardingAddresses,
deleteInfoSendAs,
deleteLabel,
deleteLabelId,
deleteLabelIdList,
deleteLabelList,
deleteSmime,
draftMessage,
exportMessages,
exportThreads,
importMessage,
infoFilters,
infoForwardingAddresses,
insertMessage,
printShowCSEIdentities,
printShowCSEKeyPairs,
printShowDelegates,
printShowFilters,
printShowFormResponses,
printShowForms,
printShowForward,
printShowForwardingAddresses,
printShowGmailProfile,
printShowImap,
printShowLabels,
printShowLanguage,
printShowMessages,
printShowPop,
printShowSendAs,
printShowSignature,
printShowSmimes,
printShowThreads,
printShowVacation,
processCSEIdentity,
processCSEKeyPair,
processDelegates,
processMessages,
processThreads,
setForward,
setImap,
setLanguage,
setPop,
setSignature,
setVacation,
updateDelegates,
updateForm,
updateLabelSettings,
updateLabelSettingsById,
updateLabels,
updateSmime,
watchGmail,
)
from gam.cmd.groups import (
doCreateGroup,
doDeleteGroups,
doInfoGroupMembers,
doInfoGroups,
doPrintGroupMembers,
doPrintGroups,
doPrintShowGroupTree,
doShowGroupMembers,
doUpdateGroups,
infoGroupMembers,
)
from gam.cmd.licenses import doPrintLicenses, doShowLicenses
from gam.cmd.meet import (
createMeetSpace,
endMeetConference,
infoMeetSpace,
printShowMeetConferences,
printShowMeetParticipants,
printShowMeetRecordings,
printShowMeetTranscripts,
updateMeetSpace,
)
from gam.cmd.mobile import (
doDeleteMobileDevices,
doInfoMobileDevices,
doPrintMobileDevices,
doUpdateMobileDevices,
)
from gam.cmd.notes import (
createNote,
createNotesACLs,
deleteInfoNotes,
deleteNotesACLs,
getNoteAttachments,
printShowNotes,
)
from gam.cmd.oauth import (
Credentials,
doOAuthCreate,
doOAuthDelete,
doOAuthExport,
doOAuthInfo,
doOAuthRefresh,
doOAuthUpdate,
)
from gam.cmd.orgunits import (
doCheckOrgUnit,
doCreateOrg,
doDeleteOrg,
doDeleteOrgs,
doInfoOrg,
doInfoOrgs,
doPrintOrgs,
doShowOrgTree,
doUpdateOrg,
doUpdateOrgs,
)
from gam.cmd.people import (
clearUserPeopleContacts,
copyUserPeopleOtherContacts,
createUserPeopleContact,
createUserPeopleContactGroup,
dedupReplaceDomainUserPeopleContacts,
deleteUserPeopleContactGroups,
deleteUserPeopleContactPhoto,
deleteUserPeopleContacts,
doDeleteDomainContactPhoto,
doGetDomainContactPhoto,
doInfoDomainPeopleContacts,
doInfoDomainPeopleProfile,
doPrintShowDomainPeopleContacts,
doPrintShowDomainPeopleProfiles,
doUpdateDomainContactPhoto,
getUserPeopleContactPhoto,
infoUserPeopleContactGroups,
infoUserPeopleContacts,
printShowUserPeopleContactGroups,
printShowUserPeopleContacts,
printShowUserPeopleOtherContacts,
printShowUserPeopleProfiles,
processUserPeopleOtherContacts,
updateUserPeopleContactGroup,
updateUserPeopleContactPhoto,
updateUserPeopleContacts,
)
from gam.cmd.printers import (
doCreatePrinter,
doDeletePrinter,
doInfoPrinter,
doPrintShowPrinterModels,
doPrintShowPrinters,
doUpdatePrinter,
)
from gam.cmd.project import (
checkServiceAccount,
doCheckUpdateSvcAcct,
doCreateGCPFolder,
doCreateGCPServiceAccount,
doCreateProject,
doCreateSvcAcct,
doCreateSvcAcctKeys,
doDeleteProject,
doDeleteSvcAcct,
doDeleteSvcAcctKeys,
doEnableAPIs,
doInfoCurrentProjectId,
doInfoCustomerId,
doInfoGCPOrgId,
doPrintShowProjects,
doPrintShowSvcAccts,
doProcessSvcAcctKeys,
doReplaceSvcAcctKeys,
doShowSvcAcctKeys,
doUpdateProject,
doUpdateSvcAcctKeys,
doUploadSvcAcctKeys,
doUseProject,
)
from gam.cmd.reports import doReport, doWhatIs
from gam.cmd.reseller import (
doCreateResoldCustomer,
doCreateResoldSubscription,
doDeleteResoldSubscription,
doInfoResoldCustomer,
doInfoResoldSubscription,
doPrintShowChannelCustomerEntitlements,
doPrintShowChannelCustomers,
doPrintShowChannelOffers,
doPrintShowChannelProducts,
doPrintShowChannelSKUs,
doPrintShowResoldSubscriptions,
doUpdateResoldCustomer,
doUpdateResoldSubscription,
)
from gam.cmd.resources import (
doCreateBuilding,
doCreateFeature,
doCreateResourceCalendar,
doDeleteBuilding,
doDeleteFeature,
doDeleteResourceCalendar,
doDeleteResourceCalendars,
doInfoBuilding,
doInfoResourceCalendar,
doInfoResourceCalendars,
doPrintShowBuildings,
doPrintShowFeatures,
doPrintShowResourceCalendars,
doUpdateBuilding,
doUpdateFeature,
doUpdateResourceCalendar,
doUpdateResourceCalendars,
)
from gam.cmd.schemas import (
doCreateUpdateUserSchemas,
doDeleteUserSchemas,
doInfoUserSchemas,
doPrintShowUserSchemas,
)
from gam.cmd.send_email import doSendEmail, doSendReply
from gam.cmd.sites import (
deprecatedDomainSites,
deprecatedUserSites,
doCreateSiteVerification,
doInfoSiteVerification,
doUpdateSiteVerification,
printShowBusinessProfileAccounts,
printShowWebMasterSites,
printShowWebResources,
)
from gam.cmd.sso import (
doCreateInboundSSOAssignment,
doCreateInboundSSOCredential,
doCreateInboundSSOProfile,
doDeleteInboundSSOAssignment,
doDeleteInboundSSOCredential,
doDeleteInboundSSOProfile,
doInfoInboundSSOAssignment,
doInfoInboundSSOCredential,
doInfoInboundSSOProfile,
doPrintShowInboundSSOAssignments,
doPrintShowInboundSSOCredentials,
doPrintShowInboundSSOProfiles,
doUpdateInboundSSOAssignment,
doUpdateInboundSSOProfile,
)
from gam.cmd.tasks import (
importTasklist,
printShowTagManagerAccounts,
printShowTagManagerContainers,
printShowTagManagerPermissions,
printShowTagManagerTags,
printShowTagManagerWorkspaces,
printShowTasklists,
printShowTasks,
processTasklists,
processTasks,
)
from gam.cmd.userop import (
addUserToGroups,
appendSheetRanges,
checkUserInGroups,
clearSheetRanges,
createLicense,
createSheet,
deleteLicense,
deletePhoto,
deleteTokens,
deleteUserFromGroups,
deprovisionUser,
doPrintShowTokens,
getProfilePhoto,
getUserPhoto,
infoPrintShowSheets,
printShowGroupTree,
printShowLookerStudioPermissions,
printShowSheetRanges,
printShowTokens,
printShowUserGroups,
printUserGroupsList,
processLookerStudioPermissions,
setProfile,
showProfile,
syncLicense,
syncUserWithGroups,
updateLicense,
updatePhoto,
updateSheetRanges,
updateSheets,
updateUserGroups,
)
from gam.cmd.users import (
deleteUsers,
doCheckUserSuspended,
doCreateGuestUser,
doCreateUser,
doDeleteUser,
doDeleteUsers,
doInfoUser,
doInfoUsers,
doPrintUserCountsByOrgUnit,
doPrintUserEntity,
doPrintUserList,
doPrintUsers,
doSuspendUnsuspendUser,
doSuspendUnsuspendUsers,
doUndeleteUser,
doUndeleteUsers,
doUpdateUser,
doUpdateUsers,
infoUsers,
signoutTurnoff2SVUsers,
suspendUnsuspendUsers,
undeleteUsers,
updateUsers,
waitForMailbox,
)
from gam.cmd.userservices import (
addCreateCalendars,
createCalendarACLs,
createCalendarEvent,
createFocusTime,
createOutOfOffice,
createWorkingLocation,
deleteASP,
deleteBackupCodes,
deleteCalendarACLs,
deleteCalendarEvents,
deleteCalendars,
deleteFocusTime,
deleteOutOfOffice,
deleteWorkingLocation,
doCalendarsTransferOwnership,
emptyCalendarTrash,
importCalendarEvent,
infoCalendarACLs,
infoCalendarEvents,
infoCalendars,
modifyCalendars,
moveCalendarEvents,
printShowASPs,
printShowBackupCodes,
printShowCalSettings,
printShowCalendarACLs,
printShowCalendarEvents,
printShowCalendars,
printShowFocusTime,
printShowOutOfOffice,
printShowWorkingLocation,
printShowYouTubeChannel,
purgeCalendarEvents,
removeCalendars,
updateBackupCodes,
updateCalendarACLs,
updateCalendarAttendees,
updateCalendarEvents,
updateCalendars,
wipeCalendarEvents,
)
from gam.cmd.vault import (
doCloseVaultMatter,
doCopyVaultExport,
doCopyVaultQuery,
doCreateVaultExport,
doCreateVaultHold,
doCreateVaultMatter,
doCreateVaultQuery,
doDeleteVaultExport,
doDeleteVaultHold,
doDeleteVaultMatter,
doDeleteVaultQuery,
doDownloadVaultExport,
doInfoVaultExport,
doInfoVaultHold,
doInfoVaultMatter,
doInfoVaultQuery,
doPrintShowVaultExports,
doPrintShowVaultHolds,
doPrintShowVaultMatters,
doPrintShowVaultQueries,
doPrintVaultCounts,
doReopenVaultMatter,
doUndeleteVaultMatter,
doUpdateVaultHold,
doUpdateVaultMatter,
printShowUserVaultHolds,
)
# gam.cmd.alerts
# gam.cmd.aliases
# gam.cmd.analytics
# gam.cmd.audit
# gam.cmd.browsers
# gam.cmd.caa
# gam.cmd.calendar
# gam.cmd.chat
# gam.cmd.chromeapps
# gam.cmd.chromepolicies
# gam.cmd.cidevices
# gam.cmd.cigroups
# gam.cmd.ciuserinvitations
# gam.cmd.cloudstorage
# gam.cmd.contacts
# gam.cmd.courses
# gam.cmd.cros
# gam.cmd.customer
# gam.cmd.datatransfer
# gam.cmd.delegates
# gam.cmd.domains
# gam.cmd.drive
# gam.cmd.gmail
# gam.cmd.groups
# gam.cmd.licenses
# gam.cmd.meet
# gam.cmd.mobile
# gam.cmd.notes
# gam.cmd.oauth
# gam.cmd.orgunits
# gam.cmd.people
# gam.cmd.printers
# gam.cmd.project
# gam.cmd.reports
# gam.cmd.reseller
# gam.cmd.resources
# gam.cmd.schemas
# gam.cmd.send_email
# gam.cmd.sites
# gam.cmd.sso
# gam.cmd.tasks
# gam.cmd.userop
# gam.cmd.users
# gam.cmd.userservices
# gam.cmd.vault
class LazyLoader(types.ModuleType):
"""Lazily import a module, mainly to avoid pulling in large dependencies.
`contrib`, and `ffmpeg` are examples of modules that are large and not always
needed, and this allows them to only be loaded when they are used.
"""
# The lint error here is incorrect.
def __init__(self, local_name, parent_module_globals, name):
self._local_name = local_name
self._parent_module_globals = parent_module_globals
super().__init__(name)
def _load(self):
# Import the target module and insert it into the parent's namespace
module = importlib.import_module(self.__name__)
self._parent_module_globals[self._local_name] = module
# Update this object's dict so that if someone keeps a reference to the
# LazyLoader, lookups are efficient (__getattr__ is only called on lookups
# that fail).
self.__dict__.update(module.__dict__)
return module
def __getattr__(self, item):
module = self._load()
return getattr(module, item)
def __dir__(self):
module = self._load()
return dir(module)
yubikey = LazyLoader('yubikey', globals(), 'gam.gamlib.yubikey')
# gam yubikey resetpvi [yubikey_serialnumber <String>]
def doResetYubiKeyPIV():
new_data = {}
while Cmd.ArgumentsRemaining():
myarg = getArgument()
if myarg == 'yubikeyserialnumber':
new_data['yubikey_serial_number'] = getInteger()
else:
unknownArgumentExit()
yk = yubikey.YubiKey(new_data)
yk.serial_number = yk.get_serial_number()
yk.reset_piv()
# Audit command utilities
def ACLRuleDict(rule):
if rule['scope']['type'] != 'default':
return {'Scope': f'{rule["scope"]["type"]}:{rule["scope"]["value"]}', 'Role': rule['role']}
return {'Scope': f'{rule["scope"]["type"]}', 'Role': rule['role']}
def ACLRuleKeyValueList(rule):
if rule['scope']['type'] != 'default':
return ['Scope', f'{rule["scope"]["type"]}:{rule["scope"]["value"]}', 'Role', rule['role']]
return ['Scope', f'{rule["scope"]["type"]}', 'Role', rule['role']]
def formatACLRule(rule):
return formatKeyValueList('(', ACLRuleKeyValueList(rule), ')')
def formatACLScopeRole(scope, role):
if role:
return formatKeyValueList('(', ['Scope', scope, 'Role', role], ')')
return formatKeyValueList('(', ['Scope', scope], ')')
def normalizeRuleId(ruleId):
ruleIdParts = ruleId.split(':', 1)
if (len(ruleIdParts) == 1) or not ruleIdParts[1]:
if ruleIdParts[0] == 'default':
return ruleId
if ruleIdParts[0] == 'domain':
return f'domain:{GC.Values[GC.DOMAIN]}'
return f'user:{normalizeEmailAddressOrUID(ruleIdParts[0], noUid=True)}'
if ruleIdParts[0] in {'user', 'group'}:
return f'{ruleIdParts[0]}:{normalizeEmailAddressOrUID(ruleIdParts[1], noUid=True)}'
return ruleId
def makeRoleRuleIdBody(role, ruleId):
ruleIdParts = ruleId.split(':', 1)
if len(ruleIdParts) == 1:
if ruleIdParts[0] == 'default':
return {'role': role, 'scope': {'type': ruleIdParts[0]}}
if ruleIdParts[0] == 'domain':
return {'role': role, 'scope': {'type': ruleIdParts[0], 'value': GC.Values[GC.DOMAIN]}}
return {'role': role, 'scope': {'type': 'user', 'value': ruleIdParts[0]}}
return {'role': role, 'scope': {'type': ruleIdParts[0], 'value': ruleIdParts[1]}}
BUILDING_ADDRESS_FIELD_MAP = {
'address': 'addressLines',
'addresslines': 'addressLines',
'administrativearea': 'administrativeArea',
'city': 'locality',
'country': 'regionCode',
'language': 'languageCode',
'languagecode': 'languageCode',
'locality': 'locality',
'postalcode': 'postalCode',
'regioncode': 'regionCode',
'state': 'administrativeArea',
'sublocality': 'sublocality',
'zipcode': 'postalCode',
}
CMD_ACTION = 0
CMD_FUNCTION = 1
# Batch commands
BATCH_CSV_COMMANDS = {
Cmd.BATCH_CMD: (Act.PERFORM, doBatch),
Cmd.CSV_CMD: (Act.PERFORM, doCSV),
Cmd.CSVTEST_CMD: (Act.PERFORM, doCSVTest),
Cmd.TBATCH_CMD: (Act.PERFORM, doThreadBatch),
}
# Main commands
MAIN_COMMANDS = {
'checkconn': (Act.CHECK, doCheckConnection),
'checkconnection': (Act.CHECK, doCheckConnection),
'comment': (Act.COMMENT, doComment),
'help': (Act.PERFORM, doUsage),
'list': (Act.LIST, doListType),
'report': (Act.REPORT, doReport),
'sendemail': (Act.SENDEMAIL, doSendEmail),
'version': (Act.PERFORM, doVersion),
'whatis': (Act.INFO, doWhatIs),
}
# Main commands with objects
MAIN_ADD_CREATE_FUNCTIONS = {
Cmd.ARG_ADMIN: doCreateAdmin,
Cmd.ARG_ADMINROLE: doCreateUpdateAdminRoles,
Cmd.ARG_ALERTFEEDBACK: doCreateAlertFeedback,
Cmd.ARG_ALIAS: doCreateUpdateAliases,
Cmd.ARG_BROWSERTOKEN: doCreateBrowserToken,
Cmd.ARG_BUILDING: doCreateBuilding,
Cmd.ARG_CAALEVEL: doCreateCAALevel,
Cmd.ARG_CHATMESSAGE: doCreateChatMessage,
Cmd.ARG_CHROMENETWORK: doCreateChromeNetwork,
Cmd.ARG_CHROMEPOLICYIMAGE: doCreateChromePolicyImage,
Cmd.ARG_CHROMEPROFILECOMMAND: doCreateChromeProfileCommand,
Cmd.ARG_CIGROUP: doCreateCIGroup,
Cmd.ARG_CIPOLICY: doCreateUpdateCIPolicy,
Cmd.ARG_CONTACT: doCreateDomainContact,
Cmd.ARG_COURSE: doCreateCourse,
Cmd.ARG_COURSESTUDENTGROUP: doCreateCourseStudentGroups,
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doProcessCourseStudentGroupMembers,
Cmd.ARG_DATATRANSFER: doCreateDataTransfer,
Cmd.ARG_DEVICE: doCreateCIDevice,
Cmd.ARG_DOMAIN: doCreateDomain,
Cmd.ARG_DOMAINALIAS: doCreateDomainAlias,
Cmd.ARG_DRIVEFILEACL: doCreateDriveFileACL,
Cmd.ARG_DRIVELABELPERMISSION: doCreateDriveLabelPermissions,
Cmd.ARG_FEATURE: doCreateFeature,
Cmd.ARG_GCPFOLDER: doCreateGCPFolder,
Cmd.ARG_GCPSERVICEACCOUNT: doCreateGCPServiceAccount,
Cmd.ARG_GROUP: doCreateGroup,
Cmd.ARG_GUARDIAN: doInviteGuardian,
Cmd.ARG_GUARDIANINVITATION: doInviteGuardian,
Cmd.ARG_GUESTUSER: doCreateGuestUser,
Cmd.ARG_INBOUNDSSOASSIGNMENT: doCreateInboundSSOAssignment,
Cmd.ARG_INBOUNDSSOCREDENTIAL: doCreateInboundSSOCredential,
Cmd.ARG_INBOUNDSSOPROFILE: doCreateInboundSSOProfile,
Cmd.ARG_ORG: doCreateOrg,
Cmd.ARG_PERMISSION: doCreatePermissions,
Cmd.ARG_PRINTER: doCreatePrinter,
Cmd.ARG_PROJECT: doCreateProject,
Cmd.ARG_RESOLDCUSTOMER: doCreateResoldCustomer,
Cmd.ARG_RESOLDSUBSCRIPTION: doCreateResoldSubscription,
Cmd.ARG_RESOURCE: doCreateResourceCalendar,
Cmd.ARG_SAKEY: doCreateSvcAcctKeys,
Cmd.ARG_SCHEMA: doCreateUpdateUserSchemas,
Cmd.ARG_SHAREDDRIVE: doCreateSharedDrive,
Cmd.ARG_SITE: deprecatedDomainSites,
Cmd.ARG_SITEACL: deprecatedDomainSites,
Cmd.ARG_SVCACCT: doCreateSvcAcct,
Cmd.ARG_USER: doCreateUser,
Cmd.ARG_VAULTEXPORT: doCreateVaultExport,
Cmd.ARG_VAULTHOLD: doCreateVaultHold,
Cmd.ARG_VAULTMATTER: doCreateVaultMatter,
Cmd.ARG_VAULTQUERY: doCreateVaultQuery,
Cmd.ARG_VERIFY: doCreateSiteVerification,
}
MAIN_COMMANDS_WITH_OBJECTS = {
'add':
(Act.ADD,
MAIN_ADD_CREATE_FUNCTIONS
),
'approve':
(Act.APPROVE,
{Cmd.ARG_DEVICEUSER: doApproveCIDeviceUser,
}
),
'block':
(Act.BLOCK,
{Cmd.ARG_DEVICEUSER: doBlockCIDeviceUser,
}
),
'cancel':
(Act.CANCEL,
{Cmd.ARG_GUARDIANINVITATION: doCancelGuardianInvitation,
Cmd.ARG_USERINVITATION: doCIUserInvitationsAction,
}
),
'cancelwipe':
(Act.CANCEL_WIPE,
{Cmd.ARG_DEVICE: doCancelWipeCIDevice,
Cmd.ARG_DEVICEUSER: doCancelWipeCIDeviceUser,
}
),
'check':
(Act.CHECK,
{Cmd.ARG_SVCACCT: doCheckUpdateSvcAcct,
Cmd.ARG_USERINVITATION: doCheckCIUserInvitations,
Cmd.ARG_ISINVITABLE: doCheckCIUserInvitations,
Cmd.ARG_ORG: doCheckOrgUnit,
Cmd.ARG_SUSPENDED: doCheckUserSuspended,
}
),
'clear':
(Act.CLEAR,
{Cmd.ARG_ALERTSETTINGS: doClearAlertSettings,
Cmd.ARG_CONTACT: doClearDomainContacts,
Cmd.ARG_COURSESTUDENTGROUP: doClearCourseStudentGroups,
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doProcessCourseStudentGroupMembers,
}
),
'close':
(Act.CLOSE,
{Cmd.ARG_VAULTMATTER: doCloseVaultMatter,
}
),
'copy':
(Act.COPY,
{Cmd.ARG_SHAREDDRIVEACLS: doCopySyncSharedDriveACLs,
Cmd.ARG_STORAGEBUCKET: doCopyCloudStorageBucket,
Cmd.ARG_VAULTEXPORT: doCopyVaultExport,
Cmd.ARG_VAULTQUERY: doCopyVaultQuery,
}
),
'create':
(Act.CREATE,
MAIN_ADD_CREATE_FUNCTIONS
),
'dedup':
(Act.DEDUP,
{Cmd.ARG_CONTACT: doDedupDomainContacts,
}
),
'delete':
(Act.DELETE,
{Cmd.ARG_ADMIN: doDeleteAdmin,
Cmd.ARG_ADMINROLE: doDeleteAdminRole,
Cmd.ARG_ALIAS: doDeleteAliases,
Cmd.ARG_ALERT: doDeleteOrUndeleteAlert,
Cmd.ARG_BROWSER: doDeleteBrowsers,
Cmd.ARG_BUILDING: doDeleteBuilding,
Cmd.ARG_CAALEVEL: doDeleteCAALevel,
Cmd.ARG_CHATMESSAGE: doDeleteChatMessage,
Cmd.ARG_CHROMENETWORK: doDeleteChromeNetwork,
Cmd.ARG_CHROMEPOLICY: doDeleteChromePolicy,
Cmd.ARG_CHROMEPROFILE: doDeleteChromeProfile,
Cmd.ARG_CIGROUP: doDeleteCIGroups,
Cmd.ARG_CIPOLICY: doDeleteCIPolicies,
Cmd.ARG_CLASSROOMINVITATION: doDeleteClassroomInvitations,
Cmd.ARG_CONTACT: doDeleteDomainContacts,
Cmd.ARG_CONTACTPHOTO: doDeleteDomainContactPhoto,
Cmd.ARG_COURSE: doDeleteCourse,
Cmd.ARG_COURSES: doDeleteCourses,
Cmd.ARG_COURSESTUDENTGROUP: doDeleteCourseStudentGroups,
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doProcessCourseStudentGroupMembers,
Cmd.ARG_DEVICE: doDeleteCIDevice,
Cmd.ARG_DEVICEUSER: doDeleteCIDeviceUser,
Cmd.ARG_DOMAIN: doDeleteDomain,
Cmd.ARG_DOMAINALIAS: doDeleteDomainAlias,
Cmd.ARG_DOMAINCONTACT: doDeleteDomainContacts,
Cmd.ARG_DRIVEFILEACL: doDeleteDriveFileACLs,
Cmd.ARG_DRIVELABELPERMISSION: doDeleteDriveLabelPermissions,
Cmd.ARG_FEATURE: doDeleteFeature,
Cmd.ARG_GROUP: doDeleteGroups,
Cmd.ARG_GUARDIAN: doDeleteGuardian,
Cmd.ARG_INBOUNDSSOASSIGNMENT: doDeleteInboundSSOAssignment,
Cmd.ARG_INBOUNDSSOCREDENTIAL: doDeleteInboundSSOCredential,
Cmd.ARG_INBOUNDSSOPROFILE: doDeleteInboundSSOProfile,
Cmd.ARG_MOBILE: doDeleteMobileDevices,
Cmd.ARG_ORG: doDeleteOrg,
Cmd.ARG_ORGS: doDeleteOrgs,
Cmd.ARG_PERMISSION: doDeletePermissions,
Cmd.ARG_PRINTER: doDeletePrinter,
Cmd.ARG_PROJECT: doDeleteProject,
Cmd.ARG_RESOLDSUBSCRIPTION: doDeleteResoldSubscription,
Cmd.ARG_RESOURCE: doDeleteResourceCalendar,
Cmd.ARG_RESOURCES: doDeleteResourceCalendars,
Cmd.ARG_SAKEY: doDeleteSvcAcctKeys,
Cmd.ARG_SCHEMA: doDeleteUserSchemas,
Cmd.ARG_SHAREDDRIVE: doDeleteSharedDrive,
Cmd.ARG_SITEACL: deprecatedDomainSites,
Cmd.ARG_SVCACCT: doDeleteSvcAcct,
Cmd.ARG_USER: doDeleteUser,
Cmd.ARG_USERS: doDeleteUsers,
Cmd.ARG_VAULTEXPORT: doDeleteVaultExport,
Cmd.ARG_VAULTHOLD: doDeleteVaultHold,
Cmd.ARG_VAULTMATTER: doDeleteVaultMatter,
Cmd.ARG_VAULTQUERY: doDeleteVaultQuery,
}
),
'download':
(Act.DOWNLOAD,
{Cmd.ARG_STORAGEBUCKET: doDownloadCloudStorageBucket,
Cmd.ARG_STORAGEFILE: doDownloadCloudStorageFile,
Cmd.ARG_VAULTEXPORT: doDownloadVaultExport,
}
),
'enable':
(Act.ENABLE,
{Cmd.ARG_API: doEnableAPIs,
}
),
'get':
(Act.DOWNLOAD,
{Cmd.ARG_CONTACTPHOTO: doGetDomainContactPhoto,
Cmd.ARG_DEVICEFILE: doGetCrOSDeviceFiles,
}
),
'getcommand':
(Act.GET_COMMAND_RESULT,
{Cmd.ARG_CROS: doGetCommandResultCrOSDevices,
}
),
'hide':
(Act.HIDE,
{Cmd.ARG_SHAREDDRIVE: doHideUnhideSharedDrive,
}
),
'info':
(Act.INFO,
{Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
Cmd.ARG_ALERT: doInfoAlert,
Cmd.ARG_ALIAS: doInfoAliases,
Cmd.ARG_BUILDING: doInfoBuilding,
Cmd.ARG_BROWSER: doInfoBrowsers,
Cmd.ARG_CHATEVENT: doInfoChatEvent,
Cmd.ARG_CHATMEMBER: doInfoChatMember,
Cmd.ARG_CHATMESSAGE: doInfoChatMessage,
Cmd.ARG_CHATSPACE: doInfoChatSpace,
Cmd.ARG_CHROMEAPP: doInfoChromeApp,
Cmd.ARG_CHROMEPROFILE: doInfoChromeProfile,
Cmd.ARG_CHROMEPROFILECOMMAND: doInfoChromeProfileCommand,
Cmd.ARG_CHROMESCHEMA: doInfoChromePolicySchemas,
Cmd.ARG_CIGROUP: doInfoCIGroups,
Cmd.ARG_CIGROUPMEMBERS: doInfoCIGroupMembers,
Cmd.ARG_CIPOLICY: doInfoCIPolicies,
Cmd.ARG_CONTACT: doInfoDomainContacts,
Cmd.ARG_COURSE: doInfoCourse,
Cmd.ARG_COURSES: doInfoCourses,
Cmd.ARG_CROS: doInfoCrOSDevices,
Cmd.ARG_CROSTELEMETRY: doInfoPrintShowCrOSTelemetry,
Cmd.ARG_CURRENTPROJECTID: doInfoCurrentProjectId,
Cmd.ARG_CUSTOMER: doInfoCustomer,
Cmd.ARG_CUSTOMERID: doInfoCustomerId,
Cmd.ARG_DATATRANSFER: doInfoDataTransfer,
Cmd.ARG_DEVICE: doInfoCIDevice,
Cmd.ARG_DEVICEUSER: doInfoCIDeviceUser,
Cmd.ARG_DEVICEUSERSTATE: doInfoCIDeviceUserState,
Cmd.ARG_DOMAIN: doInfoDomain,
Cmd.ARG_DOMAINALIAS: doInfoDomainAlias,
Cmd.ARG_DOMAINCONTACT: doInfoDomainContacts,
Cmd.ARG_DRIVEFILEACL: doInfoDriveFileACLs,
Cmd.ARG_DRIVELABEL: doInfoDriveLabels,
Cmd.ARG_INSTANCE: doInfoInstance,
Cmd.ARG_GCPORGID: doInfoGCPOrgId,
Cmd.ARG_GROUP: doInfoGroups,
Cmd.ARG_GROUPMEMBERS: doInfoGroupMembers,
Cmd.ARG_INBOUNDSSOASSIGNMENT: doInfoInboundSSOAssignment,
Cmd.ARG_INBOUNDSSOCREDENTIAL: doInfoInboundSSOCredential,
Cmd.ARG_INBOUNDSSOPROFILE: doInfoInboundSSOProfile,
Cmd.ARG_MOBILE: doInfoMobileDevices,
Cmd.ARG_ORG: doInfoOrg,
Cmd.ARG_ORGS: doInfoOrgs,
Cmd.ARG_PEOPLEPROFILE: doInfoDomainPeopleProfile,
Cmd.ARG_PEOPLECONTACT: doInfoDomainPeopleContacts,
Cmd.ARG_PRINTER: doInfoPrinter,
Cmd.ARG_RESOLDCUSTOMER: doInfoResoldCustomer,
Cmd.ARG_RESOLDSUBSCRIPTION: doInfoResoldSubscription,
Cmd.ARG_RESOURCE: doInfoResourceCalendar,
Cmd.ARG_RESOURCES: doInfoResourceCalendars,
Cmd.ARG_SCHEMA: doInfoUserSchemas,
Cmd.ARG_SHAREDDRIVE: doInfoSharedDrive,
Cmd.ARG_SITE: deprecatedDomainSites,
Cmd.ARG_SITEACL: deprecatedDomainSites,
Cmd.ARG_USER: doInfoUser,
Cmd.ARG_USERS: doInfoUsers,
Cmd.ARG_USERINVITATION: doInfoCIUserInvitations,
Cmd.ARG_VAULTEXPORT: doInfoVaultExport,
Cmd.ARG_VAULTHOLD: doInfoVaultHold,
Cmd.ARG_VAULTMATTER: doInfoVaultMatter,
Cmd.ARG_VAULTQUERY: doInfoVaultQuery,
Cmd.ARG_VERIFY: doInfoSiteVerification,
}
),
'issuecommand':
(Act.ISSUE_COMMAND,
{Cmd.ARG_CROS: doIssueCommandCrOSDevices,
}
),
'move':
(Act.MOVE,
{Cmd.ARG_BROWSER: doMoveBrowsers,
}
),
'print':
(Act.PRINT,
{Cmd.ARG_ADDRESSES: doPrintAddresses,
Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
Cmd.ARG_ADMIN: doPrintShowAdmins,
Cmd.ARG_ALERT: doPrintShowAlerts,
Cmd.ARG_ALERTFEEDBACK: doPrintShowAlertFeedback,
Cmd.ARG_ALIAS: doPrintAliases,
Cmd.ARG_BROWSER: doPrintShowBrowsers,
Cmd.ARG_BROWSERTOKEN: doPrintShowBrowserTokens,
Cmd.ARG_BUILDING: doPrintShowBuildings,
Cmd.ARG_CAALEVEL: doPrintShowCAALevels,
Cmd.ARG_CHANNELCUSTOMER: doPrintShowChannelCustomers,
Cmd.ARG_CHANNELCUSTOMERENTITLEMENT: doPrintShowChannelCustomerEntitlements,
Cmd.ARG_CHANNELOFFER: doPrintShowChannelOffers,
Cmd.ARG_CHANNELPRODUCT: doPrintShowChannelProducts,
Cmd.ARG_CHANNELSKU: doPrintShowChannelSKUs,
Cmd.ARG_CHATMEMBER: doPrintShowChatMembers,
Cmd.ARG_CHATSPACE: doPrintShowChatSpaces,
Cmd.ARG_CHROMEAPP: doPrintShowChromeApps,
Cmd.ARG_CHROMEAPPDEVICES: doPrintShowChromeAppDevices,
Cmd.ARG_CHROMEAUES: doPrintShowChromeAues,
Cmd.ARG_CHROMEDEVICECOUNTS: doPrintShowChromeDeviceCounts,
Cmd.ARG_CHROMEHISTORY: doPrintShowChromeHistory,
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
Cmd.ARG_CHROMEPROFILECOMMAND: doPrintShowChromeProfileCommands,
Cmd.ARG_CHROMESCHEMA: doPrintShowChromePolicySchemas,
Cmd.ARG_CHROMESNVALIDITY: doPrintChromeSnValidity,
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
Cmd.ARG_CIGROUP: doPrintCIGroups,
Cmd.ARG_CIGROUPMEMBERS: doPrintCIGroupMembers,
Cmd.ARG_CIPOLICY: doPrintShowCIPolicies,
Cmd.ARG_CLASSROOMINVITATION: doPrintShowClassroomInvitations,
Cmd.ARG_CONTACT: doPrintShowDomainContacts,
Cmd.ARG_COURSE: doPrintCourses,
Cmd.ARG_COURSES: doPrintCourses,
Cmd.ARG_COURSEANNOUNCEMENTS: doPrintCourseAnnouncements,
Cmd.ARG_COURSECOUNTS: doPrintCourseCounts,
Cmd.ARG_COURSEMATERIALS: doPrintCourseMaterials,
Cmd.ARG_COURSEPARTICIPANTS: doPrintCourseParticipants,
Cmd.ARG_COURSESTUDENTGROUP: doPrintCourseStudentGroups,
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doPrintCourseStudentGroupMembers,
Cmd.ARG_COURSESUBMISSIONS: doPrintCourseSubmissions,
Cmd.ARG_COURSETOPICS: doPrintCourseTopics,
Cmd.ARG_COURSEWORK: doPrintCourseWork,
Cmd.ARG_CROS: doPrintCrOSDevices,
Cmd.ARG_CROSACTIVITY: doPrintCrOSActivity,
Cmd.ARG_CROSTELEMETRY: doInfoPrintShowCrOSTelemetry,
Cmd.ARG_DATATRANSFER: doPrintShowDataTransfers,
Cmd.ARG_DEVICE: doPrintCIDevices,
Cmd.ARG_DEVICEUSER: doPrintCIDeviceUsers,
Cmd.ARG_DOMAIN: doPrintShowDomains,
Cmd.ARG_DOMAINALIAS: doPrintShowDomainAliases,
Cmd.ARG_DOMAINCONTACT: doPrintShowDomainContacts,
Cmd.ARG_DRIVEFILEACL: doPrintShowDriveFileACLs,
Cmd.ARG_DRIVELABEL: doPrintShowDriveLabels,
Cmd.ARG_DRIVELABELPERMISSION: doPrintShowDriveLabelPermissions,
Cmd.ARG_FEATURE: doPrintShowFeatures,
Cmd.ARG_GROUP: doPrintGroups,
Cmd.ARG_GROUPMEMBERS: doPrintGroupMembers,
Cmd.ARG_GROUPTREE: doPrintShowGroupTree,
Cmd.ARG_GUARDIAN: doPrintShowGuardians,
Cmd.ARG_INBOUNDSSOASSIGNMENT: doPrintShowInboundSSOAssignments,
Cmd.ARG_INBOUNDSSOCREDENTIAL: doPrintShowInboundSSOCredentials,
Cmd.ARG_INBOUNDSSOPROFILE: doPrintShowInboundSSOProfiles,
Cmd.ARG_LICENSE: doPrintLicenses,
Cmd.ARG_MOBILE: doPrintMobileDevices,
Cmd.ARG_ORG: doPrintOrgs,
Cmd.ARG_ORGS: doPrintOrgs,
Cmd.ARG_ORGUNITSHAREDDRIVE: doPrintShowOrgunitSharedDrives,
Cmd.ARG_OWNERSHIP: doPrintShowOwnership,
Cmd.ARG_PEOPLECONTACT: doPrintShowDomainPeopleContacts,
Cmd.ARG_PEOPLEPROFILE: doPrintShowDomainPeopleProfiles,
Cmd.ARG_PRINTER: doPrintShowPrinters,
Cmd.ARG_PRINTERMODEL: doPrintShowPrinterModels,
Cmd.ARG_PRIVILEGES: doPrintShowPrivileges,
Cmd.ARG_PROJECT: doPrintShowProjects,
Cmd.ARG_RESOLDSUBSCRIPTION: doPrintShowResoldSubscriptions,
Cmd.ARG_RESOURCE: doPrintShowResourceCalendars,
Cmd.ARG_RESOURCES: doPrintShowResourceCalendars,
Cmd.ARG_SCHEMA: doPrintShowUserSchemas,
Cmd.ARG_SHAREDDRIVE: doPrintShowSharedDrives,
Cmd.ARG_SHAREDDRIVEACLS: doPrintShowSharedDriveACLs,
Cmd.ARG_SHAREDDRIVEORGANIZERS: doPrintSharedDriveOrganizers,
Cmd.ARG_SITE: deprecatedDomainSites,
Cmd.ARG_SITEACL: deprecatedDomainSites,
Cmd.ARG_SITEACTIVITY: deprecatedDomainSites,
Cmd.ARG_SVCACCT: doPrintShowSvcAccts,
Cmd.ARG_TOKEN: doPrintShowTokens,
Cmd.ARG_TRANSFERAPPS: doShowTransferApps,
Cmd.ARG_USER: doPrintUsers,
Cmd.ARG_USERS: doPrintUsers,
Cmd.ARG_USERCOUNTSBYORGUNIT: doPrintUserCountsByOrgUnit,
Cmd.ARG_USERINVITATION: doPrintShowCIUserInvitations,
Cmd.ARG_VAULTCOUNT: doPrintVaultCounts,
Cmd.ARG_VAULTEXPORT: doPrintShowVaultExports,
Cmd.ARG_VAULTHOLD: doPrintShowVaultHolds,
Cmd.ARG_VAULTMATTER: doPrintShowVaultMatters,
Cmd.ARG_VAULTQUERY: doPrintShowVaultQueries,
}
),
'remove':
(Act.REMOVE,
{Cmd.ARG_ALIAS: doRemoveAliases,
Cmd.ARG_DRIVELABELPERMISSION: doDeleteDriveLabelPermissions,
}
),
'reopen':
(Act.REOPEN,
{Cmd.ARG_VAULTMATTER: doReopenVaultMatter,
}
),
'replace':
(Act.UPDATE,
{Cmd.ARG_SAKEY: doReplaceSvcAcctKeys,
}
),
'rotate':
(Act.UPDATE,
{Cmd.ARG_SAKEY: doProcessSvcAcctKeys,
}
),
'revoke':
(Act.REVOKE,
{Cmd.ARG_BROWSERTOKEN: doRevokeBrowserToken,
}
),
'send':
(Act.SEND,
{Cmd.ARG_USERINVITATION: doCIUserInvitationsAction,
}
),
'setup':
(Act.SETUP,
{Cmd.ARG_CHAT: doSetupChat,
}
),
'show':
(Act.SHOW,
{Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
Cmd.ARG_ADMIN: doPrintShowAdmins,
Cmd.ARG_ALERT: doPrintShowAlerts,
Cmd.ARG_ALERTFEEDBACK: doPrintShowAlertFeedback,
Cmd.ARG_ALERTSETTINGS: doShowAlertSettings,
Cmd.ARG_BROWSER: doPrintShowBrowsers,
Cmd.ARG_BROWSERTOKEN: doPrintShowBrowserTokens,
Cmd.ARG_BUILDING: doPrintShowBuildings,
Cmd.ARG_CAALEVEL: doPrintShowCAALevels,
Cmd.ARG_CHANNELCUSTOMER: doPrintShowChannelCustomers,
Cmd.ARG_CHANNELCUSTOMERENTITLEMENT: doPrintShowChannelCustomerEntitlements,
Cmd.ARG_CHANNELOFFER: doPrintShowChannelOffers,
Cmd.ARG_CHANNELPRODUCT: doPrintShowChannelProducts,
Cmd.ARG_CHANNELSKU: doPrintShowChannelSKUs,
Cmd.ARG_CHATMEMBER: doPrintShowChatMembers,
Cmd.ARG_CHATSPACE: doPrintShowChatSpaces,
Cmd.ARG_CHROMEAPP: doPrintShowChromeApps,
Cmd.ARG_CHROMEAPPDEVICES: doPrintShowChromeAppDevices,
Cmd.ARG_CHROMEAUES: doPrintShowChromeAues,
Cmd.ARG_CHROMEDEVICECOUNTS: doPrintShowChromeDeviceCounts,
Cmd.ARG_CHROMEHISTORY: doPrintShowChromeHistory,
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
Cmd.ARG_CHROMEPROFILECOMMAND: doPrintShowChromeProfileCommands,
Cmd.ARG_CHROMESCHEMA: doPrintShowChromePolicySchemas,
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
Cmd.ARG_CIGROUPMEMBERS: doShowCIGroupMembers,
Cmd.ARG_CIPOLICY: doPrintShowCIPolicies,
Cmd.ARG_CLASSROOMINVITATION: doPrintShowClassroomInvitations,
Cmd.ARG_CONTACT: doPrintShowDomainContacts,
Cmd.ARG_CROSTELEMETRY: doInfoPrintShowCrOSTelemetry,
Cmd.ARG_DATATRANSFER: doPrintShowDataTransfers,
Cmd.ARG_DOMAIN: doPrintShowDomains,
Cmd.ARG_DOMAINALIAS: doPrintShowDomainAliases,
Cmd.ARG_DOMAINCONTACT: doPrintShowDomainContacts,
Cmd.ARG_DRIVEFILEACL: doPrintShowDriveFileACLs,
Cmd.ARG_DRIVELABEL: doPrintShowDriveLabels,
Cmd.ARG_DRIVELABELPERMISSION: doPrintShowDriveLabelPermissions,
Cmd.ARG_FEATURE: doPrintShowFeatures,
Cmd.ARG_GROUPMEMBERS: doShowGroupMembers,
Cmd.ARG_GROUPTREE: doPrintShowGroupTree,
Cmd.ARG_GUARDIAN: doPrintShowGuardians,
Cmd.ARG_INBOUNDSSOASSIGNMENT: doPrintShowInboundSSOAssignments,
Cmd.ARG_INBOUNDSSOCREDENTIAL: doPrintShowInboundSSOCredentials,
Cmd.ARG_INBOUNDSSOPROFILE: doPrintShowInboundSSOProfiles,
Cmd.ARG_ORGUNITSHAREDDRIVE: doPrintShowOrgunitSharedDrives,
Cmd.ARG_LICENSE: doShowLicenses,
Cmd.ARG_ORGTREE: doShowOrgTree,
Cmd.ARG_OWNERSHIP: doPrintShowOwnership,
Cmd.ARG_PEOPLECONTACT: doPrintShowDomainPeopleContacts,
Cmd.ARG_PEOPLEPROFILE: doPrintShowDomainPeopleProfiles,
Cmd.ARG_PRINTER: doPrintShowPrinters,
Cmd.ARG_PRINTERMODEL: doPrintShowPrinterModels,
Cmd.ARG_PRIVILEGES: doPrintShowPrivileges,
Cmd.ARG_PROJECT: doPrintShowProjects,
Cmd.ARG_RESOLDSUBSCRIPTION: doPrintShowResoldSubscriptions,
Cmd.ARG_RESOURCE: doPrintShowResourceCalendars,
Cmd.ARG_RESOURCES: doPrintShowResourceCalendars,
Cmd.ARG_SAKEY: doShowSvcAcctKeys,
Cmd.ARG_SCHEMA: doPrintShowUserSchemas,
Cmd.ARG_SHAREDDRIVE: doPrintShowSharedDrives,
Cmd.ARG_SHAREDDRIVEACLS: doPrintShowSharedDriveACLs,
Cmd.ARG_SHAREDDRIVEINFO: doInfoSharedDrive,
Cmd.ARG_SHAREDDRIVETHEMES: doShowSharedDriveThemes,
Cmd.ARG_SITE: deprecatedDomainSites,
Cmd.ARG_SITEACL: deprecatedDomainSites,
Cmd.ARG_SVCACCT: doPrintShowSvcAccts,
Cmd.ARG_TOKEN: doPrintShowTokens,
Cmd.ARG_TRANSFERAPPS: doShowTransferApps,
Cmd.ARG_USERINVITATION: doPrintShowCIUserInvitations,
Cmd.ARG_VAULTEXPORT: doPrintShowVaultExports,
Cmd.ARG_VAULTHOLD: doPrintShowVaultHolds,
Cmd.ARG_VAULTMATTER: doPrintShowVaultMatters,
Cmd.ARG_VAULTQUERY: doPrintShowVaultQueries,
}
),
'suspend':
(Act.SUSPEND,
{Cmd.ARG_USER: doSuspendUnsuspendUser,
Cmd.ARG_USERS: doSuspendUnsuspendUsers,
}
),
'sync':
(Act.SYNC,
{Cmd.ARG_DEVICE: doSyncCIDevices,
Cmd.ARG_SHAREDDRIVEACLS: copySyncSharedDriveACLs,
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doProcessCourseStudentGroupMembers,
}
),
'unhide':
(Act.UNHIDE,
{Cmd.ARG_SHAREDDRIVE: doHideUnhideSharedDrive,
}
),
'update':
(Act.UPDATE,
{Cmd.ARG_ADMINROLE: doCreateUpdateAdminRoles,
Cmd.ARG_ALERTSETTINGS: doUpdateAlertSettings,
Cmd.ARG_ALIAS: doCreateUpdateAliases,
Cmd.ARG_BROWSER: doUpdateBrowsers,
Cmd.ARG_BUILDING: doUpdateBuilding,
Cmd.ARG_CAALEVEL: doUpdateCAALevel,
Cmd.ARG_CHATMESSAGE: doUpdateChatMessage,
Cmd.ARG_CHROMEPOLICY: doUpdateChromePolicy,
Cmd.ARG_CIGROUP: doUpdateCIGroups,
Cmd.ARG_CIPOLICY: doCreateUpdateCIPolicy,
Cmd.ARG_CONTACT: doUpdateDomainContacts,
Cmd.ARG_CONTACTPHOTO: doUpdateDomainContactPhoto,
Cmd.ARG_COURSE: doUpdateCourse,
Cmd.ARG_COURSES: doUpdateCourses,
Cmd.ARG_COURSESTUDENTGROUP: doUpdateCourseStudentGroups,
Cmd.ARG_CROS: doUpdateCrOSDevices,
Cmd.ARG_CUSTOMER: doUpdateCustomer,
Cmd.ARG_DEVICE: doUpdateCIDevice,
Cmd.ARG_DEVICEUSER: doUpdateCIDeviceUser,
Cmd.ARG_DEVICEUSERSTATE: doUpdateCIDeviceUserState,
Cmd.ARG_DOMAIN: doUpdateDomain,
Cmd.ARG_DRIVEFILEACL: doUpdateDriveFileACLs,
Cmd.ARG_FEATURE: doUpdateFeature,
Cmd.ARG_GROUP: doUpdateGroups,
Cmd.ARG_INBOUNDSSOASSIGNMENT: doUpdateInboundSSOAssignment,
Cmd.ARG_INBOUNDSSOPROFILE: doUpdateInboundSSOProfile,
Cmd.ARG_MOBILE: doUpdateMobileDevices,
Cmd.ARG_ORG: doUpdateOrg,
Cmd.ARG_ORGS: doUpdateOrgs,
Cmd.ARG_PRINTER: doUpdatePrinter,
Cmd.ARG_PROJECT: doUpdateProject,
Cmd.ARG_RESOLDCUSTOMER: doUpdateResoldCustomer,
Cmd.ARG_RESOLDSUBSCRIPTION: doUpdateResoldSubscription,
Cmd.ARG_RESOURCE: doUpdateResourceCalendar,
Cmd.ARG_RESOURCES: doUpdateResourceCalendars,
Cmd.ARG_SAKEY: doUpdateSvcAcctKeys,
Cmd.ARG_SCHEMA: doCreateUpdateUserSchemas,
Cmd.ARG_SHAREDDRIVE: doUpdateSharedDrive,
Cmd.ARG_SITE: deprecatedDomainSites,
Cmd.ARG_SITEACL: deprecatedDomainSites,
Cmd.ARG_SVCACCT: doCheckUpdateSvcAcct,
Cmd.ARG_USER: doUpdateUser,
Cmd.ARG_USERS: doUpdateUsers,
Cmd.ARG_VAULTHOLD: doUpdateVaultHold,
Cmd.ARG_VAULTMATTER: doUpdateVaultMatter,
Cmd.ARG_VERIFY: doUpdateSiteVerification,
}
),
'undelete':
(Act.UNDELETE,
{Cmd.ARG_ALERT: doDeleteOrUndeleteAlert,
Cmd.ARG_USER: doUndeleteUser,
Cmd.ARG_USERS: doUndeleteUsers,
Cmd.ARG_VAULTMATTER: doUndeleteVaultMatter,
}
),
'unsuspend':
(Act.UNSUSPEND,
{Cmd.ARG_USER: doSuspendUnsuspendUser,
Cmd.ARG_USERS: doSuspendUnsuspendUsers,
}
),
'upload':
(Act.USE,
{Cmd.ARG_SAKEY: doUploadSvcAcctKeys,
}
),
'use':
(Act.USE,
{Cmd.ARG_PROJECT: doUseProject,
}
),
'wipe':
(Act.WIPE,
{Cmd.ARG_DEVICE: doWipeCIDevice,
Cmd.ARG_DEVICEUSER: doWipeCIDeviceUser,
}
),
'yubikey':
(Act.RESET_YUBIKEY_PIV,
{Cmd.ARG_RESETPIV: doResetYubiKeyPIV,
}
),
}
MAIN_COMMANDS_OBJ_ALIASES = {
Cmd.ARG_ADMINS: Cmd.ARG_ADMIN,
Cmd.ARG_ADMINROLES: Cmd.ARG_ADMINROLE,
Cmd.ARG_ALERTFEEDBACKS: Cmd.ARG_ALERTFEEDBACK,
Cmd.ARG_ALERTS: Cmd.ARG_ALERT,
Cmd.ARG_ALERTSFEEDBACK: Cmd.ARG_ALERTFEEDBACK,
Cmd.ARG_ALIASDOMAIN: Cmd.ARG_DOMAINALIAS,
Cmd.ARG_ALIASDOMAINS: Cmd.ARG_DOMAINALIAS,
Cmd.ARG_ALIASES: Cmd.ARG_ALIAS,
Cmd.ARG_APIS: Cmd.ARG_API,
Cmd.ARG_APIPROJECT: Cmd.ARG_PROJECT,
Cmd.ARG_APPDETAILS: Cmd.ARG_CHROMEAPP,
Cmd.ARG_BROWSERS: Cmd.ARG_BROWSER,
Cmd.ARG_BROWSERTOKENS: Cmd.ARG_BROWSERTOKEN,
Cmd.ARG_BUCKET: Cmd.ARG_STORAGEBUCKET,
Cmd.ARG_BUCKETS: Cmd.ARG_STORAGEBUCKET,
Cmd.ARG_BUILDINGS: Cmd.ARG_BUILDING,
Cmd.ARG_CAALEVELS: Cmd.ARG_CAALEVEL,
Cmd.ARG_CHATMEMBERS: Cmd.ARG_CHATMEMBER,
Cmd.ARG_CHANNELCUSTOMERS: Cmd.ARG_CHANNELCUSTOMER,
Cmd.ARG_CHANNELCUSTOMERENTITLEMENTS: Cmd.ARG_CHANNELCUSTOMERENTITLEMENT,
Cmd.ARG_CHANNELOFFERS: Cmd.ARG_CHANNELOFFER,
Cmd.ARG_CHANNELPRODUCTS: Cmd.ARG_CHANNELPRODUCT,
Cmd.ARG_CHANNELSKUS: Cmd.ARG_CHANNELSKU,
Cmd.ARG_CHATSPACES: Cmd.ARG_CHATSPACE,
Cmd.ARG_CHROMEAPPS: Cmd.ARG_CHROMEAPP,
Cmd.ARG_CHROMENETWORKS: Cmd.ARG_CHROMENETWORK,
Cmd.ARG_CHROMEPOLICIES: Cmd.ARG_CHROMEPOLICY,
Cmd.ARG_CHROMEPROFILES: Cmd.ARG_CHROMEPROFILE,
Cmd.ARG_CHROMEPROFILECOMMANDS: Cmd.ARG_CHROMEPROFILECOMMAND,
Cmd.ARG_CHROMESCHEMAS: Cmd.ARG_CHROMESCHEMA,
Cmd.ARG_CIGROUPS: Cmd.ARG_CIGROUP,
Cmd.ARG_CIGROUPSMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
Cmd.ARG_CIMEMBER: Cmd.ARG_CIGROUPMEMBERS,
Cmd.ARG_CIMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
Cmd.ARG_CIPOLICIES: Cmd.ARG_CIPOLICY,
Cmd.ARG_CLASSIFICATIONLABEL: Cmd.ARG_DRIVELABEL,
Cmd.ARG_CLASSIFICATIONLABELS: Cmd.ARG_DRIVELABEL,
Cmd.ARG_CLASSIFICATIONLABELPERMISSION: Cmd.ARG_DRIVELABELPERMISSION,
Cmd.ARG_CLASSIFICATIONLABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
Cmd.ARG_CLASS: Cmd.ARG_COURSE,
Cmd.ARG_CLASSES: Cmd.ARG_COURSES,
Cmd.ARG_CLASSCOUNTS: Cmd.ARG_COURSECOUNTS,
Cmd.ARG_CLASSPARTICIPANTS: Cmd.ARG_COURSEPARTICIPANTS,
Cmd.ARG_CLASSROOMINVITATIONS: Cmd.ARG_CLASSROOMINVITATION,
Cmd.ARG_CONTACTS: Cmd.ARG_CONTACT,
Cmd.ARG_CONTACTPHOTOS: Cmd.ARG_CONTACTPHOTO,
Cmd.ARG_COURSESTUDENTGROUPS: Cmd.ARG_COURSESTUDENTGROUP,
Cmd.ARG_CROSES: Cmd.ARG_CROS,
Cmd.ARG_DATATRANSFERS: Cmd.ARG_DATATRANSFER,
Cmd.ARG_DEVICES: Cmd.ARG_DEVICE,
Cmd.ARG_DEVICEFILES: Cmd.ARG_DEVICEFILE,
Cmd.ARG_DEVICEUSERS: Cmd.ARG_DEVICEUSER,
Cmd.ARG_DOMAINS: Cmd.ARG_DOMAIN,
Cmd.ARG_DOMAINALIASES: Cmd.ARG_DOMAINALIAS,
Cmd.ARG_DOMAINCONTACT: Cmd.ARG_PEOPLECONTACT,
Cmd.ARG_DOMAINCONTACTS: Cmd.ARG_PEOPLECONTACT,
Cmd.ARG_DOMAINPROFILES: Cmd.ARG_PEOPLEPROFILE,
Cmd.ARG_DRIVEFILEACLS: Cmd.ARG_DRIVEFILEACL,
Cmd.ARG_DRIVELABELS: Cmd.ARG_DRIVELABEL,
Cmd.ARG_DRIVELABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
Cmd.ARG_EXPORT: Cmd.ARG_VAULTEXPORT,
Cmd.ARG_EXPORTS: Cmd.ARG_VAULTEXPORT,
Cmd.ARG_FEATURES: Cmd.ARG_FEATURE,
Cmd.ARG_FORMS: Cmd.ARG_FORM,
Cmd.ARG_GROUPS: Cmd.ARG_GROUP,
Cmd.ARG_GROUPSMEMBERS: Cmd.ARG_GROUPMEMBERS,
Cmd.ARG_GUARDIANINVITATIONS: Cmd.ARG_GUARDIANINVITATION,
Cmd.ARG_GUARDIANINVITE: Cmd.ARG_GUARDIANINVITATION,
Cmd.ARG_GUARDIANS: Cmd.ARG_GUARDIAN,
Cmd.ARG_HOLD: Cmd.ARG_VAULTHOLD,
Cmd.ARG_HOLDS: Cmd.ARG_VAULTHOLD,
Cmd.ARG_INBOUNDSSOASSIGNMENTS: Cmd.ARG_INBOUNDSSOASSIGNMENT,
Cmd.ARG_INBOUNDSSOCREDENTIALS: Cmd.ARG_INBOUNDSSOCREDENTIAL,
Cmd.ARG_INBOUNDSSOPROFILES: Cmd.ARG_INBOUNDSSOPROFILE,
Cmd.ARG_INVITEGUARDIAN: Cmd.ARG_GUARDIANINVITATION,
Cmd.ARG_LICENCE: Cmd.ARG_LICENSE,
Cmd.ARG_LICENCES: Cmd.ARG_LICENSE,
Cmd.ARG_LICENSES: Cmd.ARG_LICENSE,
Cmd.ARG_MATTER: Cmd.ARG_VAULTMATTER,
Cmd.ARG_MATTERS: Cmd.ARG_VAULTMATTER,
Cmd.ARG_MEMBER: Cmd.ARG_GROUPMEMBERS,
Cmd.ARG_MEMBERS: Cmd.ARG_GROUPMEMBERS,
Cmd.ARG_MOBILES: Cmd.ARG_MOBILE,
Cmd.ARG_NICKNAME: Cmd.ARG_ALIAS,
Cmd.ARG_NICKNAMES: Cmd.ARG_ALIAS,
Cmd.ARG_ORGUNIT: Cmd.ARG_ORG,
Cmd.ARG_ORGUNITS: Cmd.ARG_ORGS,
Cmd.ARG_ORGUNITSHAREDDRIVES: Cmd.ARG_ORGUNITSHAREDDRIVE,
Cmd.ARG_OU: Cmd.ARG_ORG,
Cmd.ARG_OUS: Cmd.ARG_ORGS,
Cmd.ARG_OUSHAREDDRIVE: Cmd.ARG_ORGUNITSHAREDDRIVE,
Cmd.ARG_OUSHAREDDRIVES: Cmd.ARG_ORGUNITSHAREDDRIVE,
Cmd.ARG_OUTREE: Cmd.ARG_ORGTREE,
Cmd.ARG_PARTICIPANTS: Cmd.ARG_COURSEPARTICIPANTS,
Cmd.ARG_PEOPLE: Cmd.ARG_PEOPLEPROFILE,
Cmd.ARG_PEOPLECONTACTS: Cmd.ARG_PEOPLECONTACT,
Cmd.ARG_PEOPLEPROFILES: Cmd.ARG_PEOPLEPROFILE,
Cmd.ARG_PERMISSIONS: Cmd.ARG_PERMISSION,
Cmd.ARG_PRINTERS: Cmd.ARG_PRINTER,
Cmd.ARG_PRINTERMODELS: Cmd.ARG_PRINTERMODEL,
Cmd.ARG_PROJECTS: Cmd.ARG_PROJECT,
Cmd.ARG_RESELLERCUSTOMERS: Cmd.ARG_RESOLDCUSTOMER,
Cmd.ARG_RESELLERSUBSCRIPTIONS: Cmd.ARG_RESOLDSUBSCRIPTION,
Cmd.ARG_RESOLDCUSTOMERS: Cmd.ARG_RESOLDCUSTOMER,
Cmd.ARG_RESOLDSUBSCRIPTIONS: Cmd.ARG_RESOLDSUBSCRIPTION,
Cmd.ARG_ROLE: Cmd.ARG_ADMINROLE,
Cmd.ARG_ROLES: Cmd.ARG_ADMINROLE,
Cmd.ARG_SAKEYS: Cmd.ARG_SAKEY,
Cmd.ARG_SCHEMAS: Cmd.ARG_SCHEMA,
Cmd.ARG_SHAREDDRIVES: Cmd.ARG_SHAREDDRIVE,
Cmd.ARG_SIGNJWTSERVICEACCOUNT: Cmd.ARG_GCPSERVICEACCOUNT,
Cmd.ARG_SITEACLS: Cmd.ARG_SITEACL,
Cmd.ARG_SITES: Cmd.ARG_SITE,
Cmd.ARG_STORAGEBUCKETS: Cmd.ARG_STORAGEBUCKET,
Cmd.ARG_STORAGEFILES: Cmd.ARG_STORAGEFILE,
Cmd.ARG_SVCACCTS: Cmd.ARG_SVCACCT,
Cmd.ARG_TEAMDRIVE: Cmd.ARG_SHAREDDRIVE,
Cmd.ARG_TEAMDRIVES: Cmd.ARG_SHAREDDRIVE,
Cmd.ARG_TEAMDRIVEACLS: Cmd.ARG_SHAREDDRIVEACLS,
Cmd.ARG_TEAMDRIVEINFO: Cmd.ARG_SHAREDDRIVEINFO,
Cmd.ARG_TEAMDRIVEORGANIZERS: Cmd.ARG_SHAREDDRIVEORGANIZERS,
Cmd.ARG_TEAMDRIVETHEMES: Cmd.ARG_SHAREDDRIVETHEMES,
Cmd.ARG_TOKENS: Cmd.ARG_TOKEN,
Cmd.ARG_TRANSFER: Cmd.ARG_DATATRANSFER,
Cmd.ARG_TRANSFERS: Cmd.ARG_DATATRANSFER,
Cmd.ARG_USERINVITATIONS: Cmd.ARG_USERINVITATION,
Cmd.ARG_VAULTCOUNTS: Cmd.ARG_VAULTCOUNT,
Cmd.ARG_VAULTEXPORTS: Cmd.ARG_VAULTEXPORT,
Cmd.ARG_VAULTHOLDS: Cmd.ARG_VAULTHOLD,
Cmd.ARG_VAULTQUERIES: Cmd.ARG_VAULTQUERY,
Cmd.ARG_VAULTMATTERS: Cmd.ARG_VAULTMATTER,
Cmd.ARG_VERIFICATION: Cmd.ARG_VERIFY,
}
# Audit command sub-commands with objects
AUDIT_SUBCOMMANDS_WITH_OBJECTS = {
'monitor':
{'create': (Act.CREATE, doCreateMonitor),
'delete': (Act.DELETE, doDeleteMonitor),
'list': (Act.LIST, doShowMonitors),
},
}
def processAuditCommands():
CL_subCommand = getChoice(list(AUDIT_SUBCOMMANDS_WITH_OBJECTS))
CL_objectName = getChoice(AUDIT_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand])
Act.Set(AUDIT_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CL_objectName][CMD_ACTION])
AUDIT_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CL_objectName][CMD_FUNCTION]()
# Oauth command sub-commands
OAUTH2_SUBCOMMANDS = {
'create': (Act.CREATE, doOAuthCreate),
'delete': (Act.DELETE, doOAuthDelete),
'export': (Act.EXPORT, doOAuthExport),
'info': (Act.INFO, doOAuthInfo),
'refresh': (Act.REFRESH, doOAuthRefresh),
'update': (Act.UPDATE, doOAuthUpdate),
}
# Oauth sub-command aliases
OAUTH2_SUBCOMMAND_ALIASES = {
'request': 'create',
'revoke': 'delete',
'verify': 'info',
}
def processOauthCommands():
CL_subCommand = getChoice(OAUTH2_SUBCOMMANDS, choiceAliases=OAUTH2_SUBCOMMAND_ALIASES)
Act.Set(OAUTH2_SUBCOMMANDS[CL_subCommand][CMD_ACTION])
if GC.Values[GC.ENABLE_DASA]:
systemErrorExit(USAGE_ERROR_RC, Msg.COMMAND_NOT_COMPATIBLE_WITH_ENABLE_DASA.format('oauth', CL_subCommand))
OAUTH2_SUBCOMMANDS[CL_subCommand][CMD_FUNCTION]()
# Calendar command sub-commands
CALENDAR_SUBCOMMANDS = {
'showacl': (Act.SHOW, doCalendarsPrintShowACLs),
'printacl': (Act.PRINT, doCalendarsPrintShowACLs),
'addevent': (Act.ADD, doCalendarsCreateEvent),
'deleteevent': (Act.DELETE, doCalendarsDeleteEventsOld),
'moveevent': (Act.MOVE, doCalendarsMoveEventsOld),
'updateevent': (Act.UPDATE, doCalendarsUpdateEventsOld),
'printevents': (Act.PRINT, doCalendarsPrintShowEvents),
'wipe': (Act.WIPE, doCalendarsWipeEvents),
'modify': (Act.MODIFY, doCalendarsModifySettings),
}
CALENDAR_OLDACL_SUBCOMMANDS = {
'add': (Act.ADD, doCalendarsCreateACL),
'create': (Act.CREATE, doCalendarsCreateACL),
'delete': (Act.DELETE, doCalendarsDeleteACL),
'update': (Act.UPDATE, doCalendarsUpdateACL),
}
# Calendar sub-command aliases
CALENDAR_OLDACL_SUBCOMMAND_ALIASES = {
'del': 'delete',
}
# Calendars command sub-commands with objects
CALENDARS_SUBCOMMANDS_WITH_OBJECTS = {
'add':
(Act.ADD,
{Cmd.ARG_CALENDARACL: doCalendarsCreateACLs,
Cmd.ARG_EVENT: doCalendarsCreateEvent,
}
),
'create':
(Act.CREATE,
{Cmd.ARG_CALENDARACL: doCalendarsCreateACLs,
Cmd.ARG_EVENT: doCalendarsCreateEvent,
}
),
'delete':
(Act.DELETE,
{Cmd.ARG_CALENDARACL: doCalendarsDeleteACLs,
Cmd.ARG_EVENT: doCalendarsDeleteEvents,
}
),
'empty':
(Act.EMPTY,
{Cmd.ARG_CALENDARTRASH: doCalendarsEmptyTrash,
}
),
'import':
(Act.IMPORT,
{Cmd.ARG_EVENT: doCalendarsImportEvent,
}
),
'info':
(Act.INFO,
{Cmd.ARG_CALENDARACL: doCalendarsInfoACLs,
Cmd.ARG_EVENT: doCalendarsInfoEvents,
}
),
'move':
(Act.MOVE,
{Cmd.ARG_EVENT: doCalendarsMoveEvents,
}
),
'print':
(Act.PRINT,
{Cmd.ARG_CALENDARACL: doCalendarsPrintShowACLs,
Cmd.ARG_EVENT: doCalendarsPrintShowEvents,
Cmd.ARG_SETTINGS: doCalendarsPrintShowSettings,
}
),
'purge':
(Act.PURGE,
{Cmd.ARG_EVENT: doCalendarsPurgeEvents,
}
),
'show':
(Act.SHOW,
{Cmd.ARG_CALENDARACL: doCalendarsPrintShowACLs,
Cmd.ARG_EVENT: doCalendarsPrintShowEvents,
Cmd.ARG_SETTINGS: doCalendarsPrintShowSettings,
}
),
'transfer':
(Act.TRANSFER,
{Cmd.ARG_OWNERSHIP: doCalendarsTransferOwnership,
}
),
'update':
(Act.UPDATE,
{Cmd.ARG_CALENDARACL: doCalendarsUpdateACLs,
Cmd.ARG_EVENT: doCalendarsUpdateEvents,
}
),
'wipe':
(Act.WIPE,
{Cmd.ARG_EVENT: doCalendarsWipeEvents,
}
),
}
CALENDARS_SUBCOMMANDS_OBJECT_ALIASES = {
Cmd.ARG_ACL: Cmd.ARG_CALENDARACL,
Cmd.ARG_ACLS: Cmd.ARG_CALENDARACL,
Cmd.ARG_CALENDARACLS: Cmd.ARG_CALENDARACL,
Cmd.ARG_EVENTS: Cmd.ARG_EVENT,
}
def processCalendarsCommands():
calendarList = getEntityList(Cmd.OB_EMAIL_ADDRESS_ENTITY)
CL_subCommand = getChoice(CALENDAR_SUBCOMMANDS, defaultChoice=None)
if CL_subCommand:
Act.Set(CALENDAR_SUBCOMMANDS[CL_subCommand][CMD_ACTION])
CALENDAR_SUBCOMMANDS[CL_subCommand][CMD_FUNCTION](calendarList)
return
CL_subCommand = getChoice(CALENDAR_OLDACL_SUBCOMMANDS, choiceAliases=CALENDAR_OLDACL_SUBCOMMAND_ALIASES, defaultChoice=None)
if CL_subCommand:
Act.Set(CALENDAR_OLDACL_SUBCOMMANDS[CL_subCommand][CMD_ACTION])
CL_objectName = getChoice([Cmd.ARG_CALENDARACL, Cmd.ARG_EVENT], choiceAliases=CALENDARS_SUBCOMMANDS_OBJECT_ALIASES, defaultChoice=None)
if not CL_objectName:
CALENDAR_OLDACL_SUBCOMMANDS[CL_subCommand][CMD_FUNCTION](calendarList)
else:
CALENDARS_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION][CL_objectName](calendarList)
return
CL_subCommand = getChoice(CALENDARS_SUBCOMMANDS_WITH_OBJECTS)
Act.Set(CALENDARS_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_ACTION])
CL_objectName = getChoice(CALENDARS_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION], choiceAliases=CALENDARS_SUBCOMMANDS_OBJECT_ALIASES)
CALENDARS_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION][CL_objectName](calendarList)
# Course command sub-commands
COURSE_SUBCOMMANDS = {
'add': (Act.ADD, doCourseAddItems),
'clear': (Act.REMOVE, doCourseClearParticipants),
'remove': (Act.REMOVE, doCourseRemoveItems),
'update': (Act.UPDATE, doCourseUpdateItems),
'sync': (Act.SYNC, doCourseSyncParticipants),
}
# Course sub-command aliases
COURSE_SUBCOMMAND_ALIASES = {
'create': 'add',
'del': 'remove',
'delete': 'remove',
}
def executeCourseCommands(courseIdList, getEntityListArg):
CL_subCommand = getChoice(COURSE_SUBCOMMANDS, choiceAliases=COURSE_SUBCOMMAND_ALIASES)
Act.Set(COURSE_SUBCOMMANDS[CL_subCommand][CMD_ACTION])
COURSE_SUBCOMMANDS[CL_subCommand][CMD_FUNCTION](courseIdList, getEntityListArg)
def processCourseCommands():
executeCourseCommands(getStringReturnInList(Cmd.OB_COURSE_ID), False)
def processCoursesCommands():
executeCourseCommands(getEntityList(Cmd.OB_COURSE_ENTITY, shlexSplit=True), True)
# Resource command sub-commands
RESOURCE_SUBCOMMANDS_WITH_OBJECTS = {
'add':
(Act.ADD,
{Cmd.ARG_CALENDARACL: doResourceCreateCalendarACLs,
}
),
'create':
(Act.CREATE,
{Cmd.ARG_CALENDARACL: doResourceCreateCalendarACLs,
}
),
'update':
(Act.UPDATE,
{Cmd.ARG_CALENDARACL: doResourceUpdateCalendarACLs,
}
),
'delete':
(Act.DELETE,
{Cmd.ARG_CALENDARACL: doResourceDeleteCalendarACLs,
}
),
'info':
(Act.INFO,
{Cmd.ARG_CALENDARACL: doResourceInfoCalendarACLs,
}
),
'print':
(Act.PRINT,
{Cmd.ARG_CALENDARACL: doResourcePrintShowCalendarACLs,
}
),
'show':
(Act.SHOW,
{Cmd.ARG_CALENDARACL: doResourcePrintShowCalendarACLs,
}
),
}
# Resource sub-command aliases
RESOURCE_SUBCOMMAND_ALIASES = {
'del': 'delete',
}
RESOURCE_SUBCOMMANDS_OBJECT_ALIASES = {
Cmd.ARG_ACL: Cmd.ARG_CALENDARACL,
Cmd.ARG_ACLS: Cmd.ARG_CALENDARACL,
Cmd.ARG_CALENDARACLS: Cmd.ARG_CALENDARACL,
}
def executeResourceCommands(resourceEntity):
CL_subCommand = getChoice(RESOURCE_SUBCOMMANDS_WITH_OBJECTS, choiceAliases=RESOURCE_SUBCOMMAND_ALIASES)
Act.Set(RESOURCE_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_ACTION])
CL_objectName = getChoice(RESOURCE_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION], choiceAliases=RESOURCE_SUBCOMMANDS_OBJECT_ALIASES)
RESOURCE_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION][CL_objectName](resourceEntity)
def processResourceCommands():
executeResourceCommands(getStringReturnInList(Cmd.OB_RESOURCE_ID))
def processResourcesCommands():
executeResourceCommands(getEntityList(Cmd.OB_RESOURCE_ENTITY))
# Commands
COMMANDS_MAP = {
'oauth': processOauthCommands,
'audit': processAuditCommands,
'calendars': processCalendarsCommands,
'course': processCourseCommands,
'courses': processCoursesCommands,
'resource': processResourceCommands,
'resources': processResourcesCommands,
}
# Commands aliases
COMMANDS_ALIASES = {
'oauth2': 'oauth',
'calendar': 'calendars',
}
# <CrOSTypeEntity> commands
CROS_COMMANDS = {
'getcommand': (Act.GET_COMMAND_RESULT, getCommandResultCrOSDevices),
'info': (Act.INFO, infoCrOSDevices),
'issuecommand': (Act.ISSUE_COMMAND, issueCommandCrOSDevices),
'list': (Act.LIST, doListCrOS),
'print': (Act.PRINT, doPrintCrOSEntity),
'update': (Act.UPDATE, updateCrOSDevices),
}
CROS_COMMANDS_WITH_OBJECTS = {
'get':
(Act.DOWNLOAD,
{Cmd.ARG_DEVICEFILE: getCrOSDeviceFiles,
}
),
'show':
(Act.SHOW,
{Cmd.ARG_COUNT: showCountCrOS,
}
),
}
CROS_COMMANDS_OBJ_ALIASES = {
Cmd.ARG_DEVICEFILES: Cmd.ARG_DEVICEFILE,
Cmd.ARG_COUNTS: Cmd.ARG_COUNT,
}
# <UserTypeEntity> commands
USER_COMMANDS = {
'delegate': (Act.ADD, delegateTo),
'deprovision': (Act.DEPROVISION, deprovisionUser),
'draftemail': (Act.DRAFT, draftMessage),
'filter': (Act.ADD, createFilter),
'forward': (Act.SET, setForward),
'imap': (Act.SET, setImap),
'importemail': (Act.IMPORT, importMessage),
'insertemail': (Act.INSERT, insertMessage),
'label': (Act.ADD, createLabel),
'list': (Act.LIST, doListUser),
'language': (Act.SET, setLanguage),
'pop': (Act.SET, setPop),
'profile': (Act.SET, setProfile),
'sendas': (Act.ADD, createUpdateSendAs),
'sendemail': (Act.SENDEMAIL, doSendEmail),
'sendreply': (Act.SENDREPLY, doSendReply),
'signature': (Act.SET, setSignature),
'signout': (Act.SIGNOUT, signoutTurnoff2SVUsers),
'turnoff2sv': (Act.TURNOFF2SV, signoutTurnoff2SVUsers),
'vacation': (Act.SET, setVacation),
'waitformailbox': (Act.WAITFORMAILBOX, waitForMailbox),
}
# User commands with objects
#
USER_ADD_CREATE_FUNCTIONS = {
Cmd.ARG_CALENDAR: addCreateCalendars,
Cmd.ARG_GROUP: addUserToGroups,
Cmd.ARG_CALENDARACL: createCalendarACLs,
Cmd.ARG_CHATEMOJI: createChatEmoji,
Cmd.ARG_CHATMEMBER: createChatMember,
Cmd.ARG_CHATMESSAGE: createChatMessage,
Cmd.ARG_CHATSECTION: createUpdateChatSection,
Cmd.ARG_CHATSPACE: createChatSpace,
Cmd.ARG_CLASSROOMINVITATION: createClassroomInvitations,
Cmd.ARG_CONTACTDELEGATE: processContactDelegates,
Cmd.ARG_CSEIDENTITY: createUpdateCSEIdentity,
Cmd.ARG_CSEKEYPAIR: createCSEKeyPair,
Cmd.ARG_LOOKERSTUDIOPERMISSION: processLookerStudioPermissions,
Cmd.ARG_DELEGATE: processDelegates,
Cmd.ARG_DRIVEFILE: createDriveFile,
Cmd.ARG_DRIVEFILEACL: createDriveFileACL,
Cmd.ARG_DRIVEFILESHORTCUT: createDriveFileShortcut,
Cmd.ARG_DRIVEFOLDERPATH: createDriveFolderPath,
Cmd.ARG_DRIVELABELPERMISSION: createDriveLabelPermissions,
Cmd.ARG_EVENT: createCalendarEvent,
Cmd.ARG_FILTER: createFilter,
Cmd.ARG_FOCUSTIME: createFocusTime,
Cmd.ARG_FORM: createForm,
Cmd.ARG_FORWARDINGADDRESS: createForwardingAddresses,
Cmd.ARG_GUARDIAN: inviteGuardians,
Cmd.ARG_GUARDIANINVITATION: inviteGuardians,
Cmd.ARG_LABEL: createLabel,
Cmd.ARG_LABELLIST: createLabelList,
Cmd.ARG_LICENSE: createLicense,
Cmd.ARG_MEETSPACE: createMeetSpace,
Cmd.ARG_NOTE: createNote,
Cmd.ARG_NOTEACL: createNotesACLs,
Cmd.ARG_OUTOFOFFICE: createOutOfOffice,
Cmd.ARG_PEOPLECONTACT: createUserPeopleContact,
Cmd.ARG_PEOPLECONTACTGROUP: createUserPeopleContactGroup,
Cmd.ARG_PERMISSION: createDriveFilePermissions,
Cmd.ARG_SENDAS: createUpdateSendAs,
Cmd.ARG_SHAREDDRIVE: createSharedDrive,
Cmd.ARG_SHEET: createSheet,
Cmd.ARG_SITE: deprecatedUserSites,
Cmd.ARG_SITEACL: deprecatedUserSites,
Cmd.ARG_SMIME: createSmime,
Cmd.ARG_TASK: processTasks,
Cmd.ARG_TASKLIST: processTasklists,
Cmd.ARG_WORKINGLOCATION: createWorkingLocation,
}
USER_COMMANDS_WITH_OBJECTS = {
'accept':
(Act.ACCEPT,
{Cmd.ARG_CLASSROOMINVITATION: acceptClassroomInvitations,
}
),
'add':
(Act.ADD,
USER_ADD_CREATE_FUNCTIONS
),
'append':
(Act.APPEND,
{Cmd.ARG_SHEETRANGE: appendSheetRanges,
}
),
'archive':
(Act.ARCHIVE,
{Cmd.ARG_MESSAGE: archiveMessages,
}
),
'cancel':
(Act.CANCEL,
{Cmd.ARG_GUARDIANINVITATION: cancelGuardianInvitations,
}
),
'check':
(Act.CHECK,
{Cmd.ARG_DRIVEFILESHORTCUT: checkDriveFileShortcut,
Cmd.ARG_GROUP: checkUserInGroups,
Cmd.ARG_ISINVITABLE: checkCIUserIsInvitable,
Cmd.ARG_SERVICEACCOUNT: checkServiceAccount,
}
),
'claim':
(Act.CLAIM,
{Cmd.ARG_OWNERSHIP: claimOwnership,
}
),
'clear':
(Act.CLEAR,
{Cmd.ARG_GUARDIAN: clearGuardians,
Cmd.ARG_PEOPLECONTACT: clearUserPeopleContacts,
Cmd.ARG_SHEETRANGE: clearSheetRanges,
Cmd.ARG_TASKLIST: processTasklists,
}
),
'collect':
(Act.COLLECT,
{Cmd.ARG_ORPHANS: collectOrphans,
}
),
'copy':
(Act.COPY,
{Cmd.ARG_DRIVEFILE: copyDriveFile,
Cmd.ARG_OTHERCONTACT: copyUserPeopleOtherContacts,
Cmd.ARG_SHAREDDRIVEACLS: copySyncSharedDriveACLs,
}
),
'create':
(Act.CREATE,
USER_ADD_CREATE_FUNCTIONS
),
'dedup':
(Act.DEDUP,
{Cmd.ARG_PEOPLECONTACT: dedupReplaceDomainUserPeopleContacts,
}
),
'delete':
(Act.DELETE,
{Cmd.ARG_ALIAS: deleteUsersAliases,
Cmd.ARG_ASP: deleteASP,
Cmd.ARG_BACKUPCODE: deleteBackupCodes,
Cmd.ARG_CALENDAR: deleteCalendars,
Cmd.ARG_CALENDARACL: deleteCalendarACLs,
Cmd.ARG_CHATEMOJI: deleteChatEmoji,
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
Cmd.ARG_CHATMESSAGE: deleteChatMessage,
Cmd.ARG_CHATSECTION: deleteChatSection,
Cmd.ARG_CHATSPACE: deleteChatSpace,
Cmd.ARG_CLASSROOMINVITATION: deleteClassroomInvitations,
Cmd.ARG_CONTACTDELEGATE: processContactDelegates,
Cmd.ARG_CSEIDENTITY: processCSEIdentity,
Cmd.ARG_LOOKERSTUDIOPERMISSION: processLookerStudioPermissions,
Cmd.ARG_DELEGATE: processDelegates,
Cmd.ARG_DRIVEFILE: deleteDriveFile,
Cmd.ARG_DRIVEFILEACL: deleteDriveFileACLs,
Cmd.ARG_DRIVELABELPERMISSION: deleteDriveLabelPermissions,
Cmd.ARG_EMPTYDRIVEFOLDERS: deleteEmptyDriveFolders,
Cmd.ARG_EVENT: deleteCalendarEvents,
Cmd.ARG_FILEREVISION: deleteFileRevisions,
Cmd.ARG_FILTER: deleteFilters,
Cmd.ARG_FOCUSTIME: deleteFocusTime,
Cmd.ARG_FORWARDINGADDRESS: deleteForwardingAddresses,
Cmd.ARG_GROUP: deleteUserFromGroups,
Cmd.ARG_GUARDIAN: deleteGuardians,
Cmd.ARG_LABEL: deleteLabel,
Cmd.ARG_LABELLIST: deleteLabelList,
Cmd.ARG_LABELID: deleteLabelId,
Cmd.ARG_LABELIDLIST: deleteLabelIdList,
Cmd.ARG_LICENSE: deleteLicense,
Cmd.ARG_MESSAGE: processMessages,
Cmd.ARG_NOTE: deleteInfoNotes,
Cmd.ARG_NOTEACL: deleteNotesACLs,
Cmd.ARG_OUTOFOFFICE: deleteOutOfOffice,
Cmd.ARG_OTHERCONTACT: processUserPeopleOtherContacts,
Cmd.ARG_PEOPLECONTACT: deleteUserPeopleContacts,
Cmd.ARG_PEOPLECONTACTGROUP: deleteUserPeopleContactGroups,
Cmd.ARG_PEOPLECONTACTPHOTO: deleteUserPeopleContactPhoto,
Cmd.ARG_PERMISSION: deletePermissions,
Cmd.ARG_PHOTO: deletePhoto,
Cmd.ARG_SENDAS: deleteInfoSendAs,
Cmd.ARG_SMIME: deleteSmime,
Cmd.ARG_SHAREDDRIVE: deleteSharedDrive,
Cmd.ARG_SITEACL: deprecatedUserSites,
Cmd.ARG_TASK: processTasks,
Cmd.ARG_TASKLIST: processTasklists,
Cmd.ARG_THREAD: processThreads,
Cmd.ARG_TOKEN: deleteTokens,
Cmd.ARG_USER: deleteUsers,
Cmd.ARG_WORKINGLOCATION: deleteWorkingLocation,
}
),
'disable':
(Act.DISABLE,
{Cmd.ARG_CSEKEYPAIR: processCSEKeyPair,
}
),
'draft':
(Act.DRAFT,
{Cmd.ARG_MESSAGE: draftMessage,
}
),
'empty':
(Act.EMPTY,
{Cmd.ARG_CALENDARTRASH: emptyCalendarTrash,
Cmd.ARG_DRIVETRASH: emptyDriveTrash,
}
),
'enable':
(Act.ENABLE,
{Cmd.ARG_CSEKEYPAIR: processCSEKeyPair,
}
),
'end':
(Act.END,
{Cmd.ARG_MEETCONFERENCE: endMeetConference,
}
),
'export':
(Act.EXPORT,
{Cmd.ARG_MESSAGE: exportMessages,
Cmd.ARG_THREAD: exportThreads,
}
),
'get':
(Act.DOWNLOAD,
{Cmd.ARG_DOCUMENT: getGoogleDocument,
Cmd.ARG_DRIVEFILE: getDriveFile,
Cmd.ARG_NOTEATTACHMENT: getNoteAttachments,
Cmd.ARG_PEOPLECONTACTPHOTO: getUserPeopleContactPhoto,
Cmd.ARG_PHOTO: getUserPhoto,
Cmd.ARG_PROFILE_PHOTO: getProfilePhoto,
}
),
'hide':
(Act.HIDE,
{Cmd.ARG_SHAREDDRIVE: hideUnhideSharedDrive,
}
),
'import':
(Act.IMPORT,
{Cmd.ARG_EVENT: importCalendarEvent,
Cmd.ARG_MESSAGE: importMessage,
Cmd.ARG_TASKLIST: importTasklist,
}
),
'info':
(Act.INFO,
{Cmd.ARG_CALENDAR: infoCalendars,
Cmd.ARG_CALENDARACL: infoCalendarACLs,
Cmd.ARG_CHATEMOJI: infoChatEmoji,
Cmd.ARG_CHATEVENT: infoChatEvent,
Cmd.ARG_CHATMEMBER: infoChatMember,
Cmd.ARG_CHATMESSAGE: infoChatMessage,
Cmd.ARG_CHATSPACE: infoChatSpace,
Cmd.ARG_CHATSPACEDM: infoChatSpaceDM,
Cmd.ARG_CIGROUPMEMBERS: infoCIGroupMembers,
Cmd.ARG_CSEIDENTITY: processCSEIdentity,
Cmd.ARG_CSEKEYPAIR: processCSEKeyPair,
Cmd.ARG_DRIVEFILE: showFileInfo,
Cmd.ARG_DRIVEFILEACL: infoDriveFileACLs,
Cmd.ARG_DRIVELABEL: infoDriveLabels,
Cmd.ARG_EVENT: infoCalendarEvents,
Cmd.ARG_FILTER: infoFilters,
Cmd.ARG_FORWARDINGADDRESS: infoForwardingAddresses,
Cmd.ARG_GROUPMEMBERS: infoGroupMembers,
Cmd.ARG_MEETSPACE: infoMeetSpace,
Cmd.ARG_NOTE: deleteInfoNotes,
Cmd.ARG_PEOPLECONTACT: infoUserPeopleContacts,
Cmd.ARG_PEOPLECONTACTGROUP: infoUserPeopleContactGroups,
Cmd.ARG_SENDAS: deleteInfoSendAs,
Cmd.ARG_SHAREDDRIVE: infoSharedDrive,
Cmd.ARG_SHEET: infoPrintShowSheets,
Cmd.ARG_SITE: deprecatedUserSites,
Cmd.ARG_SITEACL: deprecatedUserSites,
Cmd.ARG_TASK: processTasks,
Cmd.ARG_TASKLIST: processTasklists,
Cmd.ARG_USER: infoUsers,
}
),
'insert':
(Act.INSERT,
{Cmd.ARG_MESSAGE: insertMessage,
}
),
'modify':
(Act.MODIFY,
{Cmd.ARG_CALENDAR: modifyCalendars,
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
Cmd.ARG_MESSAGE: processMessages,
Cmd.ARG_THREAD: processThreads,
}
),
'move':
(Act.MOVE,
{Cmd.ARG_DRIVEFILE: moveDriveFile,
Cmd.ARG_EVENT: moveCalendarEvents,
Cmd.ARG_CHATSECTIONITEM: moveShowChatSectionItem,
Cmd.ARG_OTHERCONTACT: processUserPeopleOtherContacts,
Cmd.ARG_TASK: processTasks,
}
),
'obliterate':
(Act.OBLITERATE,
{Cmd.ARG_CSEKEYPAIR: processCSEKeyPair,
}
),
'purge':
(Act.PURGE,
{Cmd.ARG_DRIVEFILE: purgeDriveFile,
Cmd.ARG_EVENT: purgeCalendarEvents,
}
),
'print':
(Act.PRINT,
{Cmd.ARG_ANALYTICACCOUNT: printShowAnalyticAccounts,
Cmd.ARG_ANALYTICACCOUNTSUMMARY: printShowAnalyticAccountSummaries,
Cmd.ARG_ANALYTICDATASTREAM: printShowAnalyticDatastreams,
Cmd.ARG_ANALYTICPROPERTY: printShowAnalyticProperties,
Cmd.ARG_ASP: printShowASPs,
Cmd.ARG_BACKUPCODE: printShowBackupCodes,
Cmd.ARG_BUSINESSPROFILEACCOUNT: printShowBusinessProfileAccounts,
Cmd.ARG_CALENDAR: printShowCalendars,
Cmd.ARG_CALENDARACL: printShowCalendarACLs,
Cmd.ARG_CALSETTINGS: printShowCalSettings,
Cmd.ARG_CHATEMOJI: printShowChatEmojis,
Cmd.ARG_CHATEVENT: printShowChatEvents,
Cmd.ARG_CHATMEMBER: printShowChatMembers,
Cmd.ARG_CHATMESSAGE: printShowChatMessages,
Cmd.ARG_CHATSEARCHMESSAGE: printShowChatSearchMessages,
Cmd.ARG_CHATSECTION: printShowChatSections,
Cmd.ARG_CHATSECTIONITEM: printShowChatSectionItems,
Cmd.ARG_CHATSPACE: printShowChatSpaces,
Cmd.ARG_CLASSROOMINVITATION: printShowClassroomInvitations,
Cmd.ARG_CLASSROOMPROFILE: printShowClassroomProfile,
Cmd.ARG_CONTACTDELEGATE: printShowContactDelegates,
Cmd.ARG_CSEIDENTITY: printShowCSEIdentities,
Cmd.ARG_CSEKEYPAIR: printShowCSEKeyPairs,
Cmd.ARG_LOOKERSTUDIOASSET: printShowLookerStudioAssets,
Cmd.ARG_LOOKERSTUDIOPERMISSION: printShowLookerStudioPermissions,
Cmd.ARG_DELEGATE: printShowDelegates,
Cmd.ARG_DISKUSAGE: printDiskUsage,
Cmd.ARG_DRIVEACTIVITY: printDriveActivity,
Cmd.ARG_DRIVEFILEACL: printShowDriveFileACLs,
Cmd.ARG_DRIVELABEL: printShowDriveLabels,
Cmd.ARG_DRIVELABELPERMISSION: printShowDriveLabelPermissions,
Cmd.ARG_DRIVELASTMODIFICATION: printShowDrivelastModifications,
Cmd.ARG_DRIVESETTINGS: printShowDriveSettings,
Cmd.ARG_EMPTYDRIVEFOLDERS: printEmptyDriveFolders,
Cmd.ARG_EVENT: printShowCalendarEvents,
Cmd.ARG_FILECOMMENT: printShowFileComments,
Cmd.ARG_FILECOUNT: printShowFileCounts,
Cmd.ARG_FILEINFO: showFileInfo,
Cmd.ARG_FILELIST: printFileList,
Cmd.ARG_FILEPATH: printShowFilePaths,
Cmd.ARG_FILEREVISION: printShowFileRevisions,
Cmd.ARG_FILESHARECOUNT: printShowFileShareCounts,
Cmd.ARG_FILETREE: printShowFileTree,
Cmd.ARG_FILTER: printShowFilters,
Cmd.ARG_FOCUSTIME: printShowFocusTime,
Cmd.ARG_FORM: printShowForms,
Cmd.ARG_FORMRESPONSE: printShowFormResponses,
Cmd.ARG_FORWARD: printShowForward,
Cmd.ARG_FORWARDINGADDRESS: printShowForwardingAddresses,
Cmd.ARG_GMAILPROFILE: printShowGmailProfile,
Cmd.ARG_GROUP: printShowUserGroups,
Cmd.ARG_GROUPSLIST: printUserGroupsList,
Cmd.ARG_GROUPTREE: printShowGroupTree,
Cmd.ARG_GUARDIAN: printShowGuardians,
Cmd.ARG_IMAP: printShowImap,
Cmd.ARG_LABEL: printShowLabels,
Cmd.ARG_LANGUAGE: printShowLanguage,
Cmd.ARG_MEETCONFERENCE: printShowMeetConferences,
Cmd.ARG_MEETPARTICIPANT: printShowMeetParticipants,
Cmd.ARG_MEETRECORDING: printShowMeetRecordings,
Cmd.ARG_MEETTRANSCRIPT: printShowMeetTranscripts,
Cmd.ARG_MESSAGE: printShowMessages,
Cmd.ARG_NOTE: printShowNotes,
Cmd.ARG_OTHERCONTACT: printShowUserPeopleOtherContacts,
Cmd.ARG_OUTOFOFFICE: printShowOutOfOffice,
Cmd.ARG_FILEPARENTTREE: printFileParentTree,
Cmd.ARG_PEOPLECONTACT: printShowUserPeopleContacts,
Cmd.ARG_PEOPLECONTACTGROUP: printShowUserPeopleContactGroups,
Cmd.ARG_PEOPLEPROFILE: printShowUserPeopleProfiles,
Cmd.ARG_POP: printShowPop,
Cmd.ARG_SENDAS: printShowSendAs,
Cmd.ARG_SHAREDDRIVE: printShowSharedDrives,
Cmd.ARG_SHAREDDRIVEACLS: printShowSharedDriveACLs,
Cmd.ARG_SHAREDDRIVEORGANIZERS: printSharedDriveOrganizers,
Cmd.ARG_SHEET: infoPrintShowSheets,
Cmd.ARG_SHEETRANGE: printShowSheetRanges,
Cmd.ARG_SIGNATURE: printShowSignature,
Cmd.ARG_SMIME: printShowSmimes,
Cmd.ARG_SITE: deprecatedUserSites,
Cmd.ARG_SITEACL: deprecatedUserSites,
Cmd.ARG_SITEACTIVITY: deprecatedUserSites,
Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
Cmd.ARG_TASK: printShowTasks,
Cmd.ARG_TASKLIST: printShowTasklists,
Cmd.ARG_THREAD: printShowThreads,
Cmd.ARG_TOKEN: printShowTokens,
Cmd.ARG_USER: doPrintUserEntity,
Cmd.ARG_USERLIST: doPrintUserList,
Cmd.ARG_VACATION: printShowVacation,
Cmd.ARG_VAULTHOLD: printShowUserVaultHolds,
Cmd.ARG_WEBMASTERSITE: printShowWebMasterSites,
Cmd.ARG_WEBRESOURCE: printShowWebResources,
Cmd.ARG_WORKINGLOCATION: printShowWorkingLocation,
Cmd.ARG_YOUTUBECHANNEL: printShowYouTubeChannel,
}
),
'process':
(Act.PROCESS,
{Cmd.ARG_FILEDRIVELABEL: processFileDriveLabels,
}
),
'remove':
(Act.REMOVE,
{Cmd.ARG_CALENDAR: removeCalendars,
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
Cmd.ARG_DRIVELABELPERMISSION: deleteDriveLabelPermissions,
}
),
'replacedomain':
(Act.REPLACE_DOMAIN,
{Cmd.ARG_PEOPLECONTACT: dedupReplaceDomainUserPeopleContacts,
}
),
'show':
(Act.SHOW,
{Cmd.ARG_ANALYTICACCOUNT: printShowAnalyticAccounts,
Cmd.ARG_ANALYTICACCOUNTSUMMARY: printShowAnalyticAccountSummaries,
Cmd.ARG_ANALYTICDATASTREAM: printShowAnalyticDatastreams,
Cmd.ARG_ANALYTICPROPERTY: printShowAnalyticProperties,
Cmd.ARG_ASP: printShowASPs,
Cmd.ARG_BACKUPCODE: printShowBackupCodes,
Cmd.ARG_BUSINESSPROFILEACCOUNT: printShowBusinessProfileAccounts,
Cmd.ARG_CALENDAR: printShowCalendars,
Cmd.ARG_CALENDARACL: printShowCalendarACLs,
Cmd.ARG_CALSETTINGS: printShowCalSettings,
Cmd.ARG_CHATEMOJI: printShowChatEmojis,
Cmd.ARG_CHATEVENT: printShowChatEvents,
Cmd.ARG_CHATMEMBER: printShowChatMembers,
Cmd.ARG_CHATMESSAGE: printShowChatMessages,
Cmd.ARG_CHATSEARCHMESSAGE: printShowChatSearchMessages,
Cmd.ARG_CHATSECTION: printShowChatSections,
Cmd.ARG_CHATSECTIONITEM: printShowChatSectionItems,
Cmd.ARG_CHATSPACE: printShowChatSpaces,
Cmd.ARG_CLASSROOMINVITATION: printShowClassroomInvitations,
Cmd.ARG_CLASSROOMPROFILE: printShowClassroomProfile,
Cmd.ARG_CONTACTDELEGATE: printShowContactDelegates,
Cmd.ARG_COUNT: showCountUser,
Cmd.ARG_CSEIDENTITY: printShowCSEIdentities,
Cmd.ARG_CSEKEYPAIR: printShowCSEKeyPairs,
Cmd.ARG_LOOKERSTUDIOASSET: printShowLookerStudioAssets,
Cmd.ARG_LOOKERSTUDIOPERMISSION: printShowLookerStudioPermissions,
Cmd.ARG_DELEGATE: printShowDelegates,
Cmd.ARG_DISKUSAGE: printDiskUsage,
Cmd.ARG_DRIVEACTIVITY: printDriveActivity,
Cmd.ARG_DRIVEFILEACL: printShowDriveFileACLs,
Cmd.ARG_DRIVELABEL: printShowDriveLabels,
Cmd.ARG_DRIVELABELPERMISSION: printShowDriveLabelPermissions,
Cmd.ARG_DRIVELASTMODIFICATION: printShowDrivelastModifications,
Cmd.ARG_DRIVESETTINGS: printShowDriveSettings,
Cmd.ARG_EVENT: printShowCalendarEvents,
Cmd.ARG_FILECOMMENT: printShowFileComments,
Cmd.ARG_FILECOUNT: printShowFileCounts,
Cmd.ARG_FILEINFO: showFileInfo,
Cmd.ARG_FILELIST: printFileList,
Cmd.ARG_FILEPATH: printShowFilePaths,
Cmd.ARG_FILEREVISION: printShowFileRevisions,
Cmd.ARG_FILESHARECOUNT: printShowFileShareCounts,
Cmd.ARG_FILETREE: printShowFileTree,
Cmd.ARG_FILTER: printShowFilters,
Cmd.ARG_FOCUSTIME: printShowFocusTime,
Cmd.ARG_FORM: printShowForms,
Cmd.ARG_FORMRESPONSE: printShowFormResponses,
Cmd.ARG_FORWARD: printShowForward,
Cmd.ARG_FORWARDINGADDRESS: printShowForwardingAddresses,
Cmd.ARG_GMAILPROFILE: printShowGmailProfile,
Cmd.ARG_GROUP: printShowUserGroups,
Cmd.ARG_GROUPTREE: printShowGroupTree,
Cmd.ARG_GUARDIAN: printShowGuardians,
Cmd.ARG_IMAP: printShowImap,
Cmd.ARG_LABEL: printShowLabels,
Cmd.ARG_LANGUAGE: printShowLanguage,
Cmd.ARG_MEETCONFERENCE: printShowMeetConferences,
Cmd.ARG_MEETPARTICIPANT: printShowMeetParticipants,
Cmd.ARG_MEETRECORDING: printShowMeetRecordings,
Cmd.ARG_MEETTRANSCRIPT: printShowMeetTranscripts,
Cmd.ARG_MESSAGE: printShowMessages,
Cmd.ARG_NOTE: printShowNotes,
Cmd.ARG_OTHERCONTACT: printShowUserPeopleOtherContacts,
Cmd.ARG_OUTOFOFFICE: printShowOutOfOffice,
Cmd.ARG_PEOPLECONTACT: printShowUserPeopleContacts,
Cmd.ARG_PEOPLECONTACTGROUP: printShowUserPeopleContactGroups,
Cmd.ARG_PEOPLEPROFILE: printShowUserPeopleProfiles,
Cmd.ARG_POP: printShowPop,
Cmd.ARG_PROFILE: showProfile,
Cmd.ARG_SENDAS: printShowSendAs,
Cmd.ARG_SHAREDDRIVE: printShowSharedDrives,
Cmd.ARG_SHAREDDRIVEACLS: printShowSharedDriveACLs,
Cmd.ARG_SHAREDDRIVEINFO: infoSharedDrive,
Cmd.ARG_SHAREDDRIVETHEMES: showSharedDriveThemes,
Cmd.ARG_SHEET: infoPrintShowSheets,
Cmd.ARG_SHEETRANGE: printShowSheetRanges,
Cmd.ARG_SIGNATURE: printShowSignature,
Cmd.ARG_SITE: deprecatedUserSites,
Cmd.ARG_SITEACL: deprecatedUserSites,
Cmd.ARG_SMIME: printShowSmimes,
Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
Cmd.ARG_TASK: printShowTasks,
Cmd.ARG_TASKLIST: printShowTasklists,
Cmd.ARG_THREAD: printShowThreads,
Cmd.ARG_TOKEN: printShowTokens,
Cmd.ARG_VAULTHOLD: printShowUserVaultHolds,
Cmd.ARG_VACATION: printShowVacation,
Cmd.ARG_WEBMASTERSITE: printShowWebMasterSites,
Cmd.ARG_WEBRESOURCE: printShowWebResources,
Cmd.ARG_WORKINGLOCATION: printShowWorkingLocation,
Cmd.ARG_YOUTUBECHANNEL: printShowYouTubeChannel,
}
),
'spam':
(Act.SPAM,
{Cmd.ARG_MESSAGE: processMessages,
Cmd.ARG_THREAD: processThreads,
}
),
'suspend':
(Act.SUSPEND,
{Cmd.ARG_USER: suspendUnsuspendUsers,
}
),
'sync':
(Act.SYNC,
{Cmd.ARG_CHATMEMBER: syncChatMembers,
Cmd.ARG_GROUP: syncUserWithGroups,
Cmd.ARG_GUARDIAN: syncGuardians,
Cmd.ARG_LICENSE: syncLicense,
Cmd.ARG_SHAREDDRIVEACLS: copySyncSharedDriveACLs,
}
),
'transfer':
(Act.TRANSFER,
{Cmd.ARG_DRIVE: transferDrive,
Cmd.ARG_OWNERSHIP: transferOwnership,
}
),
'trash':
(Act.TRASH,
{Cmd.ARG_DRIVEFILE: trashDriveFile,
Cmd.ARG_MESSAGE: processMessages,
Cmd.ARG_THREAD: processThreads,
}
),
'undelete':
(Act.UNDELETE,
{Cmd.ARG_USER: undeleteUsers,
}
),
'unhide':
(Act.UNHIDE,
{Cmd.ARG_SHAREDDRIVE: hideUnhideSharedDrive,
}
),
'unsuspend':
(Act.UNSUSPEND,
{Cmd.ARG_USER: suspendUnsuspendUsers,
}
),
'untrash':
(Act.UNTRASH,
{Cmd.ARG_DRIVEFILE: untrashDriveFile,
Cmd.ARG_MESSAGE: processMessages,
Cmd.ARG_THREAD: processThreads,
}
),
'update':
(Act.UPDATE,
{Cmd.ARG_BACKUPCODE: updateBackupCodes,
Cmd.ARG_CALATTENDEES: updateCalendarAttendees,
Cmd.ARG_CALENDAR: updateCalendars,
Cmd.ARG_CALENDARACL: updateCalendarACLs,
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
Cmd.ARG_CHATMESSAGE: updateChatMessage,
Cmd.ARG_CHATSECTION: createUpdateChatSection,
Cmd.ARG_CHATSPACE: updateChatSpace,
Cmd.ARG_CSEIDENTITY: createUpdateCSEIdentity,
Cmd.ARG_LOOKERSTUDIOPERMISSION: processLookerStudioPermissions,
Cmd.ARG_DELEGATE: updateDelegates,
Cmd.ARG_DOCUMENT: updateGoogleDocument,
Cmd.ARG_DRIVEFILE: updateDriveFile,
Cmd.ARG_DRIVEFILEACL: updateDriveFileACLs,
Cmd.ARG_EVENT: updateCalendarEvents,
Cmd.ARG_FILEREVISION: updateFileRevisions,
Cmd.ARG_FORM: updateForm,
Cmd.ARG_GROUP: updateUserGroups,
Cmd.ARG_LABEL: updateLabels,
Cmd.ARG_LABELID: updateLabelSettingsById,
Cmd.ARG_LABELSETTINGS: updateLabelSettings,
Cmd.ARG_LICENSE: updateLicense,
Cmd.ARG_MEETSPACE: updateMeetSpace,
Cmd.ARG_OTHERCONTACT: processUserPeopleOtherContacts,
Cmd.ARG_PEOPLECONTACT: updateUserPeopleContacts,
Cmd.ARG_PEOPLECONTACTGROUP: updateUserPeopleContactGroup,
Cmd.ARG_PEOPLECONTACTPHOTO: updateUserPeopleContactPhoto,
Cmd.ARG_PHOTO: updatePhoto,
Cmd.ARG_SENDAS: createUpdateSendAs,
Cmd.ARG_SERVICEACCOUNT: checkServiceAccount,
Cmd.ARG_SHAREDDRIVE: updateSharedDrive,
Cmd.ARG_SHEET: updateSheets,
Cmd.ARG_SHEETRANGE: updateSheetRanges,
Cmd.ARG_SMIME: updateSmime,
Cmd.ARG_SITE: deprecatedUserSites,
Cmd.ARG_SITEACL: deprecatedUserSites,
Cmd.ARG_TASK: processTasks,
Cmd.ARG_TASKLIST: processTasklists,
Cmd.ARG_USER: updateUsers,
}
),
'watch':
(Act.WATCH,
{Cmd.ARG_GMAIL: watchGmail,
}
),
'wipe':
(Act.WIPE,
{Cmd.ARG_EVENT: wipeCalendarEvents,
}
),
}
# User commands aliases
USER_COMMANDS_ALIASES = {
'del': 'delete',
'delegates': 'delegate',
'deprov': 'deprovision',
'imap4': 'imap',
'pop3': 'pop',
'sig': 'signature',
'utf': 'unicode',
'utf-8': 'unicode',
'utf8': 'unicode',
}
USER_COMMANDS_OBJ_ALIASES = {
Cmd.ARG_3LO: Cmd.ARG_TOKEN,
Cmd.ARG_ALIASES: Cmd.ARG_ALIAS,
Cmd.ARG_APPLICATIONSPECIFICPASSWORDS: Cmd.ARG_ASP,
Cmd.ARG_ANALYTICACCOUNTS: Cmd.ARG_ANALYTICACCOUNT,
Cmd.ARG_ANALYTICACCOUNTSUMMARIES: Cmd.ARG_ANALYTICACCOUNTSUMMARY,
Cmd.ARG_ANALYTICDATASTREAMS: Cmd.ARG_ANALYTICDATASTREAM,
Cmd.ARG_ANALYTICPROPERTIES: Cmd.ARG_ANALYTICPROPERTY,
Cmd.ARG_ASPS: Cmd.ARG_ASP,
Cmd.ARG_BACKUPCODES: Cmd.ARG_BACKUPCODE,
Cmd.ARG_BUSINESSPROFILEACCOUNTS: Cmd.ARG_BUSINESSPROFILEACCOUNT,
Cmd.ARG_CALENDARS: Cmd.ARG_CALENDAR,
Cmd.ARG_CALENDARACLS: Cmd.ARG_CALENDARACL,
Cmd.ARG_CLASSIFICATIONLABEL: Cmd.ARG_DRIVELABEL,
Cmd.ARG_CLASSIFICATIONLABELS: Cmd.ARG_DRIVELABEL,
Cmd.ARG_CLASSIFICATIONLABELPERMISSION: Cmd.ARG_DRIVELABELPERMISSION,
Cmd.ARG_CLASSIFICATIONLABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
Cmd.ARG_CLASSROOMINVITATIONS: Cmd.ARG_CLASSROOMINVITATION,
Cmd.ARG_CHATEMOJIS: Cmd.ARG_CHATEMOJI,
Cmd.ARG_CHATEVENTS: Cmd.ARG_CHATEVENT,
Cmd.ARG_CHATMEMBERS: Cmd.ARG_CHATMEMBER,
Cmd.ARG_CHATMESSAGES: Cmd.ARG_CHATMESSAGE,
Cmd.ARG_CHATSEARCHMESSAGES: Cmd.ARG_CHATSEARCHMESSAGE,
Cmd.ARG_CHATSECTIONS: Cmd.ARG_CHATSECTION,
Cmd.ARG_CHATSECTIONITEMS: Cmd.ARG_CHATSECTIONITEM,
Cmd.ARG_CHATSPACES: Cmd.ARG_CHATSPACE,
Cmd.ARG_CIMEMBER: Cmd.ARG_CIGROUPMEMBERS,
Cmd.ARG_CIMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
Cmd.ARG_CONTACT: Cmd.ARG_PEOPLECONTACT,
Cmd.ARG_CONTACTS: Cmd.ARG_PEOPLECONTACT,
Cmd.ARG_CONTACTDELEGATES: Cmd.ARG_CONTACTDELEGATE,
Cmd.ARG_CONTACTGROUP: Cmd.ARG_PEOPLECONTACTGROUP,
Cmd.ARG_CONTACTGROUPS: Cmd.ARG_PEOPLECONTACTGROUP,
Cmd.ARG_CONTACTPHOTO: Cmd.ARG_PEOPLECONTACTPHOTO,
Cmd.ARG_CONTACTPHOTOS: Cmd.ARG_PEOPLECONTACTPHOTO,
Cmd.ARG_CSEIDENTITIES: Cmd.ARG_CSEIDENTITY,
Cmd.ARG_CSEKEYPAIRS: Cmd.ARG_CSEKEYPAIR,
Cmd.ARG_COUNTS: Cmd.ARG_COUNT,
Cmd.ARG_DATASTUDIOASSET: Cmd.ARG_LOOKERSTUDIOASSET,
Cmd.ARG_DATASTUDIOPERMISSION: Cmd.ARG_LOOKERSTUDIOPERMISSION,
Cmd.ARG_DATASTUDIOASSETS: Cmd.ARG_LOOKERSTUDIOASSET,
Cmd.ARG_DATASTUDIOPERMISSIONS: Cmd.ARG_LOOKERSTUDIOPERMISSION,
Cmd.ARG_LOOKERSTUDIOASSETS: Cmd.ARG_LOOKERSTUDIOASSET,
Cmd.ARG_LOOKERSTUDIOPERMISSIONS: Cmd.ARG_LOOKERSTUDIOPERMISSION,
Cmd.ARG_DELEGATES: Cmd.ARG_DELEGATE,
Cmd.ARG_DOMAINCONTACT: Cmd.ARG_PEOPLECONTACT,
Cmd.ARG_DOMAINCONTACTS: Cmd.ARG_PEOPLECONTACT,
Cmd.ARG_DRIVEFILEACLS: Cmd.ARG_DRIVEFILEACL,
Cmd.ARG_DRIVEFILESHORTCUTS: Cmd.ARG_DRIVEFILESHORTCUT,
Cmd.ARG_DRIVELABELS: Cmd.ARG_DRIVELABEL,
Cmd.ARG_DRIVELABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
Cmd.ARG_DRIVELASTMODIFICATIONS: Cmd.ARG_DRIVELASTMODIFICATION,
Cmd.ARG_EVENTS: Cmd.ARG_EVENT,
Cmd.ARG_FILECOMMENTS: Cmd.ARG_FILECOMMENT,
Cmd.ARG_FILECOUNTS: Cmd.ARG_FILECOUNT,
Cmd.ARG_FILEDRIVELABELS: Cmd.ARG_FILEDRIVELABEL,
Cmd.ARG_FILEPATHS: Cmd.ARG_FILEPATH,
Cmd.ARG_FILEREVISIONS: Cmd.ARG_FILEREVISION,
Cmd.ARG_FILESHARECOUNTS: Cmd.ARG_FILESHARECOUNT,
Cmd.ARG_FILTERS: Cmd.ARG_FILTER,
Cmd.ARG_FOCUSTIMES: Cmd.ARG_FOCUSTIME,
Cmd.ARG_FORMS: Cmd.ARG_FORM,
Cmd.ARG_FORMRESPONSES: Cmd.ARG_FORMRESPONSE,
Cmd.ARG_FORWARDS: Cmd.ARG_FORWARD,
Cmd.ARG_FORWARDINGADDRESSES: Cmd.ARG_FORWARDINGADDRESS,
Cmd.ARG_GROUPS: Cmd.ARG_GROUP,
Cmd.ARG_GROUPLIST: Cmd.ARG_GROUPSLIST,
Cmd.ARG_GROUPSMEMBERS: Cmd.ARG_GROUPMEMBERS,
Cmd.ARG_GUARDIANINVITATIONS: Cmd.ARG_GUARDIANINVITATION,
Cmd.ARG_GUARDIANINVITE: Cmd.ARG_GUARDIANINVITATION,
Cmd.ARG_GUARDIANS: Cmd.ARG_GUARDIAN,
Cmd.ARG_GUESTUSERS: Cmd.ARG_GUESTUSER,
Cmd.ARG_HOLD: Cmd.ARG_VAULTHOLD,
Cmd.ARG_HOLDS: Cmd.ARG_VAULTHOLD,
Cmd.ARG_IMAP4: Cmd.ARG_IMAP,
Cmd.ARG_INVITEGUARDIAN: Cmd.ARG_GUARDIANINVITATION,
Cmd.ARG_LABELS: Cmd.ARG_LABEL,
Cmd.ARG_LICENCE: Cmd.ARG_LICENSE,
Cmd.ARG_LICENCES: Cmd.ARG_LICENSE,
Cmd.ARG_LICENSES: Cmd.ARG_LICENSE,
Cmd.ARG_MEETCONFERENCES: Cmd.ARG_MEETCONFERENCE,
Cmd.ARG_MEETPARTICIPANTS: Cmd.ARG_MEETPARTICIPANT,
Cmd.ARG_MEETRECORDINGS: Cmd.ARG_MEETRECORDING,
Cmd.ARG_MEETTRANSCRIPTS: Cmd.ARG_MEETTRANSCRIPT,
Cmd.ARG_MEETSPACES: Cmd.ARG_MEETSPACE,
Cmd.ARG_MEMBER: Cmd.ARG_GROUPMEMBERS,
Cmd.ARG_MEMBERS: Cmd.ARG_GROUPMEMBERS,
Cmd.ARG_MESSAGES: Cmd.ARG_MESSAGE,
Cmd.ARG_NOTES: Cmd.ARG_NOTE,
Cmd.ARG_NOTEACLS: Cmd.ARG_NOTEACL,
Cmd.ARG_NOTESACL: Cmd.ARG_NOTEACL,
Cmd.ARG_NOTESACLS: Cmd.ARG_NOTEACL,
Cmd.ARG_NOTEATTACHMENTS: Cmd.ARG_NOTEATTACHMENT,
Cmd.ARG_OAUTH: Cmd.ARG_TOKEN,
Cmd.ARG_OTHERCONTACTS: Cmd.ARG_OTHERCONTACT,
Cmd.ARG_OUTOFOFFICES: Cmd.ARG_OUTOFOFFICE,
Cmd.ARG_PEOPLECONTACTS: Cmd.ARG_PEOPLECONTACT,
Cmd.ARG_PEOPLECONTACTGROUPS: Cmd.ARG_PEOPLECONTACTGROUP,
Cmd.ARG_PEOPLECONTACTPHOTOS: Cmd.ARG_PEOPLECONTACTPHOTO,
Cmd.ARG_PEOPLE: Cmd.ARG_PEOPLEPROFILE,
Cmd.ARG_PEOPLEPROFILES: Cmd.ARG_PEOPLEPROFILE,
Cmd.ARG_PERMISSIONS: Cmd.ARG_PERMISSION,
Cmd.ARG_POP3: Cmd.ARG_POP,
Cmd.ARG_SECCALS: Cmd.ARG_CALENDAR,
Cmd.ARG_SHAREDDRIVES: Cmd.ARG_SHAREDDRIVE,
Cmd.ARG_SHEETS: Cmd.ARG_SHEET,
Cmd.ARG_SHEETRANGES: Cmd.ARG_SHEETRANGE,
Cmd.ARG_SIG: Cmd.ARG_SIGNATURE,
Cmd.ARG_SITES: Cmd.ARG_SITE,
Cmd.ARG_SITEACLS: Cmd.ARG_SITEACL,
Cmd.ARG_SMIMES: Cmd.ARG_SMIME,
Cmd.ARG_TAGMANAGERACCOUNTS: Cmd.ARG_TAGMANAGERACCOUNT,
Cmd.ARG_TAGMANAGERCONTAINERS: Cmd.ARG_TAGMANAGERCONTAINER,
Cmd.ARG_TAGMANAGERPERMISSIONS: Cmd.ARG_TAGMANAGERPERMISSION,
Cmd.ARG_TAGMANAGERTAGS: Cmd.ARG_TAGMANAGERTAG,
Cmd.ARG_TAGMANAGERWORKSPACES: Cmd.ARG_TAGMANAGERWORKSPACE,
Cmd.ARG_TASKS: Cmd.ARG_TASK,
Cmd.ARG_TASKLISTS: Cmd.ARG_TASKLIST,
Cmd.ARG_TEAMDRIVE: Cmd.ARG_SHAREDDRIVE,
Cmd.ARG_TEAMDRIVES: Cmd.ARG_SHAREDDRIVE,
Cmd.ARG_TEAMDRIVEACLS: Cmd.ARG_SHAREDDRIVEACLS,
Cmd.ARG_TEAMDRIVEINFO: Cmd.ARG_SHAREDDRIVEINFO,
Cmd.ARG_TEAMDRIVEORGANIZERS: Cmd.ARG_SHAREDDRIVEORGANIZERS,
Cmd.ARG_TEAMDRIVETHEMES: Cmd.ARG_SHAREDDRIVETHEMES,
Cmd.ARG_THREADS: Cmd.ARG_THREAD,
Cmd.ARG_TOKENS: Cmd.ARG_TOKEN,
Cmd.ARG_USERS: Cmd.ARG_USER,
Cmd.ARG_VAULTHOLDS: Cmd.ARG_VAULTHOLD,
Cmd.ARG_VERIFICATIONCODES: Cmd.ARG_BACKUPCODE,
Cmd.ARG_WEBMASTERSITES: Cmd.ARG_WEBMASTERSITE,
Cmd.ARG_WEBRESOURCES: Cmd.ARG_WEBRESOURCE,
Cmd.ARG_WORKINGLOCATIONS: Cmd.ARG_WORKINGLOCATION,
Cmd.ARG_YOUTUBECHANNELS: Cmd.ARG_YOUTUBECHANNEL,
}
def showAPICallsRetryData():
if GC.Values.get(GC.SHOW_API_CALLS_RETRY_DATA) and GM.Globals[GM.API_CALLS_RETRY_DATA]:
Ind.Reset()
writeStderr(Msg.API_CALLS_RETRY_DATA)
Ind.Increment()
for k, v in sorted(GM.Globals[GM.API_CALLS_RETRY_DATA].items()):
m, s = divmod(int(v[1]), 60)
h, m = divmod(m, 60)
writeStderr(formatKeyValueList(Ind.Spaces(), [k, f'{v[0]}/{h}:{m:02d}:{s:02d}'], '\n'))
Ind.Decrement()
def adjustRedirectedSTDFilesIfNotMultiprocessing():
def adjustRedirectedSTDFile(stdtype):
rdFd = GM.Globals[stdtype].get(GM.REDIRECT_FD)
rdMultiFd = GM.Globals[stdtype].get(GM.REDIRECT_MULTI_FD)
if rdFd and rdMultiFd and rdFd != rdMultiFd:
try:
rdFd.write(rdMultiFd.getvalue())
rdMultiFd.close()
GM.Globals[stdtype][GM.REDIRECT_MULTI_FD] = rdFd
if (stdtype == GM.STDOUT) and (GM.Globals.get(GM.SAVED_STDOUT) is not None):
sys.stdout = rdFd
except IOError as e:
systemErrorExit(FILE_ERROR_RC, e)
adjustRedirectedSTDFile(GM.STDOUT)
if GM.Globals[GM.STDERR].get(GM.REDIRECT_NAME) != 'stdout':
adjustRedirectedSTDFile(GM.STDERR)
else:
GM.Globals[GM.STDERR][GM.REDIRECT_MULTI_FD] = GM.Globals[GM.STDOUT][GM.REDIRECT_MULTI_FD]
def closeSTDFilesIfNotMultiprocessing(closeSTD):
def closeSTDFile(stdtype, stdfile):
rdFd = GM.Globals[stdtype].get(GM.REDIRECT_FD)
rdMultiFd = GM.Globals[stdtype].get(GM.REDIRECT_MULTI_FD)
if rdFd and rdMultiFd and (rdFd == rdMultiFd) and (rdFd != stdfile):
try:
rdFd.flush()
if closeSTD:
rdFd.close()
except BrokenPipeError:
pass
closeSTDFile(GM.STDOUT, sys.stdout)
if GM.Globals[GM.STDERR].get(GM.REDIRECT_NAME) != 'stdout':
closeSTDFile(GM.STDERR, sys.stderr)
# Process GAM command
def ProcessGAMCommand(args, processGamCfg=True, inLoop=False, closeSTD=True):
setSysExitRC(0)
Cmd.InitializeArguments(args)
Ind.Reset()
try:
logCmd = Cmd.QuotedArgumentList(args)
if checkArgumentPresent(Cmd.LOOP_CMD):
if processGamCfg and (not SetGlobalVariables()):
sys.exit(GM.Globals[GM.SYSEXITRC])
doLoop(logCmd)
sys.exit(GM.Globals[GM.SYSEXITRC])
if processGamCfg and (not SetGlobalVariables()):
sys.exit(GM.Globals[GM.SYSEXITRC])
if checkArgumentPresent(Cmd.LOOP_CMD):
doLoop(logCmd)
sys.exit(GM.Globals[GM.SYSEXITRC])
if not Cmd.ArgumentsRemaining():
doUsage()
sys.exit(GM.Globals[GM.SYSEXITRC])
CL_command = getChoice(BATCH_CSV_COMMANDS, defaultChoice=None)
if CL_command:
Act.Set(BATCH_CSV_COMMANDS[CL_command][CMD_ACTION])
if GM.Globals[GM.CMDLOG_LOGGER]:
writeGAMCommandLog(GM.Globals, logCmd, '*')
BATCH_CSV_COMMANDS[CL_command][CMD_FUNCTION]()
sys.exit(GM.Globals[GM.SYSEXITRC])
CL_command = getChoice(MAIN_COMMANDS, defaultChoice=None)
if CL_command:
adjustRedirectedSTDFilesIfNotMultiprocessing()
Act.Set(MAIN_COMMANDS[CL_command][CMD_ACTION])
MAIN_COMMANDS[CL_command][CMD_FUNCTION]()
sys.exit(GM.Globals[GM.SYSEXITRC])
CL_command = getChoice(MAIN_COMMANDS_WITH_OBJECTS, defaultChoice=None)
if CL_command:
adjustRedirectedSTDFilesIfNotMultiprocessing()
Act.Set(MAIN_COMMANDS_WITH_OBJECTS[CL_command][CMD_ACTION])
CL_objectName = getChoice(MAIN_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION], choiceAliases=MAIN_COMMANDS_OBJ_ALIASES)
MAIN_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION][CL_objectName]()
sys.exit(GM.Globals[GM.SYSEXITRC])
CL_command = getChoice(COMMANDS_MAP, choiceAliases=COMMANDS_ALIASES, defaultChoice=None)
if CL_command:
adjustRedirectedSTDFilesIfNotMultiprocessing()
COMMANDS_MAP[CL_command]()
sys.exit(GM.Globals[GM.SYSEXITRC])
GM.Globals[GM.ENTITY_CL_START] = Cmd.Location()
entityType, entityList = getEntityToModify(crosAllowed=True, delayGet=True)
if entityType == Cmd.ENTITY_USERS:
CL_command = getChoice(list(USER_COMMANDS)+list(USER_COMMANDS_WITH_OBJECTS), choiceAliases=USER_COMMANDS_ALIASES)
if (CL_command != 'list') and (GC.Values[GC.AUTO_BATCH_MIN] > 0):
_, count, entityList = getEntityArgument(entityList)
if count > GC.Values[GC.AUTO_BATCH_MIN]:
if GM.Globals[GM.CMDLOG_LOGGER]:
writeGAMCommandLog(GM.Globals, logCmd, '*')
doAutoBatch(Cmd.ENTITY_USER, entityList, CL_command)
sys.exit(GM.Globals[GM.SYSEXITRC])
adjustRedirectedSTDFilesIfNotMultiprocessing()
if CL_command in USER_COMMANDS:
Act.Set(USER_COMMANDS[CL_command][CMD_ACTION])
USER_COMMANDS[CL_command][CMD_FUNCTION](entityList)
else:
Act.Set(USER_COMMANDS_WITH_OBJECTS[CL_command][CMD_ACTION])
CL_objectName = getChoice(USER_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION], choiceAliases=USER_COMMANDS_OBJ_ALIASES,
defaultChoice=[Cmd.ARG_USER, NO_DEFAULT][CL_command != 'print'])
USER_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION][CL_objectName](entityList)
else:
CL_command = getChoice(list(CROS_COMMANDS)+list(CROS_COMMANDS_WITH_OBJECTS))
if (CL_command != 'list') and (GC.Values[GC.AUTO_BATCH_MIN] > 0):
_, count, entityList = getEntityArgument(entityList)
if count > GC.Values[GC.AUTO_BATCH_MIN]:
if GM.Globals[GM.CMDLOG_LOGGER]:
writeGAMCommandLog(GM.Globals, logCmd, '*')
doAutoBatch(Cmd.ENTITY_CROS, entityList, CL_command)
sys.exit(GM.Globals[GM.SYSEXITRC])
adjustRedirectedSTDFilesIfNotMultiprocessing()
if CL_command in CROS_COMMANDS:
Act.Set(CROS_COMMANDS[CL_command][CMD_ACTION])
CROS_COMMANDS[CL_command][CMD_FUNCTION](entityList)
else:
Act.Set(CROS_COMMANDS_WITH_OBJECTS[CL_command][CMD_ACTION])
CL_objectName = getChoice(CROS_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION], choiceAliases=CROS_COMMANDS_OBJ_ALIASES,
defaultChoice=NO_DEFAULT)
CROS_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION][CL_objectName](entityList)
sys.exit(GM.Globals[GM.SYSEXITRC])
except KeyboardInterrupt:
batchWriteStderr('\nControl-C\n')
setSysExitRC(KEYBOARD_INTERRUPT_RC)
showAPICallsRetryData()
adjustRedirectedSTDFilesIfNotMultiprocessing()
except OSError as e:
printErrorMessage(SOCKET_ERROR_RC, str(e))
showAPICallsRetryData()
adjustRedirectedSTDFilesIfNotMultiprocessing()
except MemoryError:
printErrorMessage(MEMORY_ERROR_RC, Msg.GAM_OUT_OF_MEMORY)
showAPICallsRetryData()
adjustRedirectedSTDFilesIfNotMultiprocessing()
except (GAPI.permissionDenied, GAPI.accessNotConfigured):
SvcAcctAPIDisabledExit()
except SystemExit as e:
GM.Globals[GM.SYSEXITRC] = e.code
if GM.Globals[GM.SYSEXITRC] != STDOUT_STDERR_ERROR_RC and not inLoop:
showAPICallsRetryData()
try:
adjustRedirectedSTDFilesIfNotMultiprocessing()
except SystemExit:
pass
except Exception:
print_exc(file=sys.stderr)
setSysExitRC(UNKNOWN_ERROR_RC)
showAPICallsRetryData()
adjustRedirectedSTDFilesIfNotMultiprocessing()
if processGamCfg:
if not inLoop:
if GM.Globals.get(GM.SAVED_STDOUT) is not None:
sys.stdout = GM.Globals[GM.SAVED_STDOUT]
closeSTDFilesIfNotMultiprocessing(closeSTD)
if GM.Globals[GM.PID] == 0 and GM.Globals[GM.CMDLOG_LOGGER]:
writeGAMCommandLog(GM.Globals, logCmd, GM.Globals[GM.SYSEXITRC])
if not inLoop:
closeGAMCommandLog(GM.Globals)
return GM.Globals[GM.SYSEXITRC]
# Process GAM command
def CallGAMCommand(args, processGamCfg=True, inLoop=False, closeSTD=False):
return ProcessGAMCommand(args, processGamCfg=processGamCfg, inLoop=inLoop, closeSTD=closeSTD)