Update device files (#661)

* Update device files

info cros/print crosactivity - device files are filtered by dote just line time rnages, recent users

print cros - device files can be printed so user can identify ones to download

* Allow download of all deviceFiles fields
This commit is contained in:
Ross Scroggs
2017-12-21 08:57:10 -08:00
committed by Jay Lee
parent 134f170726
commit d9dc4ac68c

View File

@ -9238,6 +9238,19 @@ def _filterTimeRanges(activeTimeRanges, startDate, endDate):
filteredTimeRanges.append(timeRange)
return filteredTimeRanges
def _filterDeviceFiles(deviceFiles, startTime, endTime):
if startTime is None and endTime is None:
return deviceFiles
filteredDeviceFiles = []
for deviceFile in deviceFiles:
createTime = datetime.datetime.strptime(deviceFile[u'createTime'], u'%Y-%m-%dT%H:%M:%S.%fZ')
if ((startTime is None) or (createTime >= startTime)) and ((endTime is None) or (createTime <= endTime)):
filteredDeviceFiles.append(deviceFile)
return filteredDeviceFiles
def _getFilterDate(dateStr):
return datetime.datetime.strptime(dateStr, YYYYMMDD_FORMAT)
def doGetCrosInfo():
cd = buildGAPIObject(u'directory')
deviceId = sys.argv[3]
@ -9268,10 +9281,10 @@ def doGetCrosInfo():
noLists = True
i += 1
elif myarg in CROS_START_ARGUMENTS:
startDate = datetime.datetime.strptime(sys.argv[i+1], u'%Y-%m-%d')
startDate = _getFilterDate(sys.argv[i+1])
i += 2
elif myarg in CROS_END_ARGUMENTS:
endDate = datetime.datetime.strptime(sys.argv[i+1], u'%Y-%m-%d')
endDate = _getFilterDate(sys.argv[i+1])
i += 2
elif myarg == u'listlimit':
listLimit = int(sys.argv[i+1])
@ -9357,13 +9370,16 @@ def doGetCrosInfo():
for recentUser in recentUsers[:min(lenRU, listLimit or lenRU)]:
print u' type: {0}'.format(recentUser[u'type'])
print u' email: {0}'.format(recentUser.get(u'email', [u'Unknown', u'UnmanagedUser'][recentUser[u'type'] == u'USER_TYPE_UNMANAGED']))
deviceFiles = cros.get(u'deviceFiles', [])
deviceFiles = _filterDeviceFiles(cros.get(u'deviceFiles', []), startDate, endDate)
lenDF = len(deviceFiles)
if lenDF:
print u' deviceFiles'
for deviceFile in deviceFiles[:min(lenDF, listLimit or lenDF)]:
print u' {0}: {1}'.format(deviceFile[u'type'], deviceFile[u'createTime'])
if downloadfile:
if downloadfile:
deviceFiles = cros.get(u'deviceFiles', [])
lenDF = len(deviceFiles)
if lenDF:
if downloadfile == u'latest':
deviceFile = deviceFiles[-1]
else:
@ -9378,8 +9394,8 @@ def doGetCrosInfo():
_, content = cd._http.request(deviceFile[u'downloadUrl'])
writeFile(downloadfilename, content, continueOnError=True)
print u'Downloaded: {0}'.format(downloadfilename)
elif downloadfile:
print u'ERROR: no files to download.'
elif downloadfile:
print u'ERROR: no files to download.'
def doGetMobileInfo():
cd = buildGAPIObject(u'directory')
@ -11011,10 +11027,10 @@ def doPrintCrosActivity():
selectActiveTimeRanges = selectDeviceFiles = selectRecentUsers = True
i += 1
elif myarg in CROS_START_ARGUMENTS:
startDate = datetime.datetime.strptime(sys.argv[i+1], u'%Y-%m-%d')
startDate = _getFilterDate(sys.argv[i+1])
i += 2
elif myarg in CROS_END_ARGUMENTS:
endDate = datetime.datetime.strptime(sys.argv[i+1], u'%Y-%m-%d')
endDate = _getFilterDate(sys.argv[i+1])
i += 2
elif myarg == u'listlimit':
listLimit = int(sys.argv[i+1])
@ -11062,9 +11078,9 @@ def doPrintCrosActivity():
row[u'recentUsers.email'] = delimiter.join([recent_user.get(u'email', [u'Unknown', u'UnmanagedUser'][recent_user[u'type'] == u'USER_TYPE_UNMANAGED']) for recent_user in recentUsers[:min(lenRU, listLimit or lenRU)]])
csvRows.append(row)
if selectDeviceFiles:
devicefiles = cros.get(u'deviceFiles', [])
lenDF = len(devicefiles)
for deviceFile in devicefiles[:min(lenDF, listLimit or lenDF)]:
deviceFiles = _filterDeviceFiles(cros.get(u'deviceFiles', []), startDate, endDate)
lenDF = len(deviceFiles)
for deviceFile in deviceFiles[:min(lenDF, listLimit or lenDF)]:
new_row = row.copy()
new_row[u'deviceFiles.type'] = deviceFile[u'type']
new_row[u'deviceFiles.createTime'] = deviceFile[u'createTime']
@ -11092,7 +11108,7 @@ def doPrintCrosDevices():
sortHeaders = False
query = projection = orderBy = sortOrder = orgUnitPath = None
noLists = False
selectActiveTimeRanges = selectRecentUsers = False
selectActiveTimeRanges = selectDeviceFiles = selectRecentUsers = False
startDate = endDate = None
listLimit = 0
i = 3
@ -11109,7 +11125,7 @@ def doPrintCrosDevices():
i += 1
elif myarg == u'nolists':
noLists = True
selectActiveTimeRanges = selectRecentUsers = False
selectActiveTimeRanges = selectDeviceFiles = selectRecentUsers = False
i += 1
elif myarg in CROS_ACTIVE_TIME_RANGES_ARGUMENTS:
projection = u'FULL'
@ -11118,6 +11134,13 @@ def doPrintCrosDevices():
if fieldsList:
fieldsList.append(u'activeTimeRanges')
i += 1
elif myarg in CROS_DEVICE_FILES_ARGUMENTS:
projection = u'FULL'
selectDeviceFiles = True
noLists = False
if fieldsList:
fieldsList.append(u'deviceFiles')
i += 1
elif myarg in CROS_RECENT_USERS_ARGUMENTS:
projection = u'FULL'
selectRecentUsers = True
@ -11126,10 +11149,10 @@ def doPrintCrosDevices():
fieldsList.append(u'recentUsers')
i += 1
elif myarg in CROS_START_ARGUMENTS:
startDate = datetime.datetime.strptime(sys.argv[i+1], u'%Y-%m-%d')
startDate = _getFilterDate(sys.argv[i+1])
i += 2
elif myarg in CROS_END_ARGUMENTS:
endDate = datetime.datetime.strptime(sys.argv[i+1], u'%Y-%m-%d')
endDate = _getFilterDate(sys.argv[i+1])
i += 2
elif myarg == u'listlimit':
listLimit = int(sys.argv[i+1])
@ -11179,14 +11202,18 @@ def doPrintCrosDevices():
for field in fieldNameList.lower().replace(u',', u' ').split():
if field in CROS_ARGUMENT_TO_PROPERTY_MAP:
addFieldToCSVfile(field, CROS_ARGUMENT_TO_PROPERTY_MAP, fieldsList, fieldsTitles, titles)
if field in CROS_ACTIVE_TIME_RANGES_ARGUMENTS:
projection = u'FULL'
selectActiveTimeRanges = True
noLists = False
elif field in CROS_DEVICE_FILES_ARGUMENTS:
projection = u'FULL'
selectDeviceFiles = True
noLists = False
if field in CROS_RECENT_USERS_ARGUMENTS:
projection = u'FULL'
selectRecentUsers = True
noLists = False
elif field in CROS_ACTIVE_TIME_RANGES_ARGUMENTS:
projection = u'FULL'
selectActiveTimeRanges = True
noLists = False
else:
print u'ERROR: %s is not a valid argument for "gam print cros fields"' % field
sys.exit(2)
@ -11205,9 +11232,8 @@ def doPrintCrosDevices():
orderBy=orderBy, sortOrder=sortOrder, fields=fields, maxResults=GC_Values[GC_DEVICE_MAX_RESULTS])
for cros in all_cros:
cros = _checkTPMVulnerability(cros)
if (not noLists) and (not selectActiveTimeRanges) and (not selectRecentUsers):
if (not noLists) and (not selectActiveTimeRanges) and (not selectRecentUsers) and (not selectDeviceFiles):
for cros in all_cros:
cros.pop(u'deviceFiles', None)
if u'notes' in cros:
cros[u'notes'] = cros[u'notes'].replace(u'\n', u'\\n')
addRowTitlesToCSVfile(flatten_json(cros, listLimit=listLimit), csvRows, titles)
@ -11217,6 +11243,8 @@ def doPrintCrosDevices():
titles.extend([u'activeTimeRanges.date', u'activeTimeRanges.activeTime', u'activeTimeRanges.duration', u'activeTimeRanges.minutes'])
if selectRecentUsers:
titles.extend([u'recentUsers.email', u'recentUsers.type'])
if selectDeviceFiles:
titles.extend([u'deviceFiles.type', u'deviceFiles.createTime'])
for cros in all_cros:
if u'notes' in cros:
cros[u'notes'] = cros[u'notes'].replace(u'\n', u'\\n')
@ -11228,11 +11256,13 @@ def doPrintCrosDevices():
row[attrib] = cros[attrib]
activeTimeRanges = _filterTimeRanges(cros.get(u'activeTimeRanges', []), startDate, endDate) if selectActiveTimeRanges else []
recentUsers = cros.get(u'recentUsers', []) if selectRecentUsers else []
if noLists or (not activeTimeRanges and not recentUsers):
deviceFiles = _filterDeviceFiles(cros.get(u'deviceFiles', []), startDate, endDate) if selectDeviceFiles else []
if noLists or (not activeTimeRanges and not recentUsers and not deviceFiles):
csvRows.append(row)
else:
lenATR = len(activeTimeRanges)
lenRU = len(recentUsers)
lenDF = len(deviceFiles)
for i in xrange(min(listLimit, max(lenATR, lenRU)) if listLimit else max(lenATR, lenRU)):
new_row = row.copy()
if i < lenATR:
@ -11243,6 +11273,9 @@ def doPrintCrosDevices():
if i < lenRU:
new_row[u'recentUsers.email'] = recentUsers[i].get(u'email', [u'Unknown', u'UnmanagedUser'][recentUsers[i][u'type'] == u'USER_TYPE_UNMANAGED'])
new_row[u'recentUsers.type'] = recentUsers[i][u'type']
if i < lenDF:
new_row[u'deviceFiles.type'] = deviceFiles[i][u'type']
new_row[u'deviceFiles.createTime'] = deviceFiles[i][u'createTime']
csvRows.append(new_row)
if sortHeaders:
sortCSVTitles([u'deviceId',], titles)