mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-04 04:41:35 +00:00
CrOS Telemetry API
This commit is contained in:
@@ -10479,9 +10479,10 @@ OAUTH2_SCOPES = [
|
|||||||
'scopes': 'https://www.googleapis.com/auth/admin.directory.device.chromebrowsers',
|
'scopes': 'https://www.googleapis.com/auth/admin.directory.device.chromebrowsers',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'Chrome Management API - read only',
|
'name': 'Chrome Management API - read only (2 scopes)',
|
||||||
'subscope': [],
|
'subscope': [],
|
||||||
'scopes': ['https://www.googleapis.com/auth/chrome.management.reports.readonly'],
|
'scopes': ['https://www.googleapis.com/auth/chrome.management.reports.readonly',
|
||||||
|
'https://www.googleapis.com/auth/chrome.management.telemetry.readonly'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'Chrome Policy API',
|
'name': 'Chrome Policy API',
|
||||||
@@ -11667,6 +11668,8 @@ def ProcessGAMCommand(args):
|
|||||||
gapi_cloudidentity_groups.print_()
|
gapi_cloudidentity_groups.print_()
|
||||||
elif argument == 'devices':
|
elif argument == 'devices':
|
||||||
gapi_cloudidentity_devices.print_()
|
gapi_cloudidentity_devices.print_()
|
||||||
|
elif argument == 'crostelemetry':
|
||||||
|
gapi_chromemanagement.printShowCrosTelemetry()
|
||||||
elif argument in ['groupmembers', 'groupsmembers']:
|
elif argument in ['groupmembers', 'groupsmembers']:
|
||||||
gapi_directory_groups.print_members()
|
gapi_directory_groups.print_members()
|
||||||
elif argument in ['cigroupmembers', 'cigroupsmembers']:
|
elif argument in ['cigroupmembers', 'cigroupsmembers']:
|
||||||
@@ -11775,6 +11778,8 @@ def ProcessGAMCommand(args):
|
|||||||
gapi_chromepolicy.printshow_schemas()
|
gapi_chromepolicy.printshow_schemas()
|
||||||
elif argument in ['chromepolicy', 'chromepolicies']:
|
elif argument in ['chromepolicy', 'chromepolicies']:
|
||||||
gapi_chromepolicy.printshow_policies()
|
gapi_chromepolicy.printshow_policies()
|
||||||
|
elif argument == 'crostelemetry':
|
||||||
|
gapi_chromemanagement.printShowCrosTelemetry(True)
|
||||||
else:
|
else:
|
||||||
controlflow.invalid_argument_exit(argument, 'gam show')
|
controlflow.invalid_argument_exit(argument, 'gam show')
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ from gam.var import YYYYMMDD_FORMAT
|
|||||||
from gam import controlflow
|
from gam import controlflow
|
||||||
from gam import display
|
from gam import display
|
||||||
from gam import gapi
|
from gam import gapi
|
||||||
|
from gam import utils
|
||||||
from gam.gapi.directory import orgunits as gapi_directory_orgunits
|
from gam.gapi.directory import orgunits as gapi_directory_orgunits
|
||||||
from gam.gapi.directory.cros import _getFilterDate
|
from gam.gapi.directory.cros import _getFilterDate
|
||||||
|
|
||||||
@@ -201,6 +202,79 @@ def printAppDevices():
|
|||||||
display.write_csv_file(csvRows, titles, 'Chrome Installed Application Devices', todrive)
|
display.write_csv_file(csvRows, titles, 'Chrome Installed Application Devices', todrive)
|
||||||
|
|
||||||
|
|
||||||
|
def printShowCrosTelemetry(show=False):
|
||||||
|
cm = build()
|
||||||
|
parent = _get_customerid()
|
||||||
|
todrive = False
|
||||||
|
filter_ = None
|
||||||
|
readMask = []
|
||||||
|
diskpercentonly = False
|
||||||
|
supported_readmask_values = list(cm._rootDesc['schemas']['GoogleChromeManagementV1TelemetryDevice']['properties'].keys())
|
||||||
|
supported_readmask_values.sort()
|
||||||
|
supported_readmask_map = {item.lower():item for item in supported_readmask_values}
|
||||||
|
listLimit = 0
|
||||||
|
i = 3
|
||||||
|
while i < len(sys.argv):
|
||||||
|
myarg = sys.argv[i].lower().replace('_', '')
|
||||||
|
if myarg == 'fields':
|
||||||
|
field_list = sys.argv[i+1].lower().split(',')
|
||||||
|
for field_item in field_list:
|
||||||
|
if field_item not in supported_readmask_map:
|
||||||
|
controlflow.expected_argument_exit('fields',
|
||||||
|
', '.join(supported_readmask_values),
|
||||||
|
field_item)
|
||||||
|
else:
|
||||||
|
readMask.append(supported_readmask_map[field_item])
|
||||||
|
i += 2
|
||||||
|
elif myarg == 'filter':
|
||||||
|
filter_ = sys.argv[i+1]
|
||||||
|
i += 2
|
||||||
|
elif myarg == 'todrive':
|
||||||
|
todrive = True
|
||||||
|
i += 1
|
||||||
|
elif myarg == 'storagepercentonly':
|
||||||
|
diskpercentonly = True
|
||||||
|
i += 1
|
||||||
|
else:
|
||||||
|
msg = f'{myarg} is not a valid argument to "gam print crostelemetry"'
|
||||||
|
controlflow.system_error_exit(3, msg)
|
||||||
|
if not readMask:
|
||||||
|
readMask = ','.join(supported_readmask_values)
|
||||||
|
else:
|
||||||
|
if 'deviceId' not in readMask:
|
||||||
|
readMask.append('deviceId')
|
||||||
|
readMask = ','.join(readMask)
|
||||||
|
gam.printGettingAllItems('Chrome Device Telemetry...', filter_)
|
||||||
|
page_message = gapi.got_total_items_msg('Chrome Device Telemetry', '...\n')
|
||||||
|
devices = gapi.get_all_pages(cm.customers().telemetry().devices(),
|
||||||
|
'list',
|
||||||
|
'devices',
|
||||||
|
page_message=page_message,
|
||||||
|
parent=parent,
|
||||||
|
filter=filter_,
|
||||||
|
readMask=readMask)
|
||||||
|
for device in devices:
|
||||||
|
if 'totalDiskBytes' in device.get('storageInfo', {}) and 'availableDiskBytes' in device.get('storageInfo', {}):
|
||||||
|
disk_avail = int(device['storageInfo']['availableDiskBytes'])
|
||||||
|
disk_size = int(device['storageInfo']['totalDiskBytes'])
|
||||||
|
if diskpercentonly:
|
||||||
|
device['storageInfo'] = {}
|
||||||
|
device['storageInfo']['percentDiskFree'] = int((disk_avail / disk_size) * 100)
|
||||||
|
device['storageInfo']['percentDiskUsed'] = 100 - device['storageInfo']['percentDiskFree']
|
||||||
|
if show:
|
||||||
|
for device in devices:
|
||||||
|
display.print_json(device)
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
else:
|
||||||
|
csvRows = []
|
||||||
|
titles = []
|
||||||
|
for device in devices:
|
||||||
|
display.add_row_titles_to_csv_file(utils.flatten_json(device),
|
||||||
|
csvRows, titles)
|
||||||
|
display.write_csv_file(csvRows, titles, 'Telemetry Devices', todrive)
|
||||||
|
|
||||||
|
|
||||||
CHROME_VERSIONS_TITLES = [
|
CHROME_VERSIONS_TITLES = [
|
||||||
'version', 'count', 'channel', 'deviceOsVersion', 'system'
|
'version', 'count', 'channel', 'deviceOsVersion', 'system'
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user