adding oneagentapi script

master
rforstner 2022-07-22 10:04:00 +02:00
parent dae384caf2
commit 9c25776396
1 changed files with 118 additions and 0 deletions

118
getOneAgentVersions.py Normal file
View File

@ -0,0 +1,118 @@
from decouple import config
import yaml
import requests
import json
import pandas as pd
import time
from distutils.version import LooseVersion
def make_request(url, headers):
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
except requests.exceptions.HTTPError as errh:
return "An Http Error occurred:" + repr(errh)
except requests.exceptions.ConnectionError as errc:
return "An Error Connecting to the API occurred:" + repr(errc)
except requests.exceptions.Timeout as errt:
return "A Timeout Error occurred:" + repr(errt)
except requests.exceptions.RequestException as err:
return "An Unknown Error occurred" + repr(err)
return response
def GatherReportingInfo(DTAPIToken, DTENV,friendlyName):
reportingFolder = config('REPORTING_FOLDER')
env = DTENV
DTAPIToken = DTAPIToken
DTAPIURL= env + "/api/v1/oneagents"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Api-Token ' + DTAPIToken
}
r = make_request(DTAPIURL,headers)
data = r.json()
hosts = []
for host in data['hosts']:
hosts.append(host)
while 'nextPageKey' in data.keys():
if data['nextPageKey'] == None:
break
DTAPIURL= env + "/api/v1/oneagents?nextPageKey=" + data['nextPageKey']
r = make_request(DTAPIURL,headers)
data = r.json()
for host in data['hosts']:
hosts.append(host)
df = pd.DataFrame()
mgmt = pd.DataFrame()
for Host in hosts:
row={'Name':Host['hostInfo']['displayName'],'availabilityState':Host['detailedAvailabilityState'],'autoUpdateSetting':Host['autoUpdateSetting'],'UpdateStatus':Host['updateStatus']}
for tag in Host['hostInfo']['tags']:
if tag['key'] == 'Cloud':
try:
row.update({ tag['key']:tag['value']})
except:
row.update({ tag['key']:tag['key']})
if tag['key'] == 'Hub':
try:
row.update({ tag['key']:tag['value']})
except:
row.update({ tag['key']:tag['key']})
if tag['key'] == 'Platform':
try:
row.update({ tag['key']:tag['value']})
except:
row.update({ tag['key']:tag['key']})
if tag['key'] == 'licensing-base':
try:
row.update({ tag['key']:tag['value']})
except:
row.update({ tag['key']:tag['key']})
if tag['key'] == 'PaaS':
try:
row.update({ tag['key']:tag['value']})
except:
row.update({ tag['key']:tag['key']})
try:
agentVersion = str(Host['hostInfo']['agentVersion']['major']) + '.' + str(Host['hostInfo']['agentVersion']['minor']) + '.' + str(Host['hostInfo']['agentVersion']['revision']) + '.' + Host['hostInfo']['agentVersion']['timestamp']
row.update({'agentVersion':agentVersion})
except:
row.update({'agentVersion':'NOT_FOUND'})
df = df.append(row,ignore_index=True)
df.to_csv(reportingFolder + friendlyName + 'oa_versions.csv')
with open('./environment.yaml') as file:
doc = yaml.safe_load(file)
for item, doc in doc.items():
token = dict(doc[2])
url = dict(doc[1])
print("Crawling through: " + item)
print("Check if token exists in environment...")
if(config(token.get('env-token-name')) != ""):
print("Gather data, hold on a minute")
DTTOKEN = config(token.get('env-token-name'))
DTURL = url.get('env-url')
GatherReportingInfo(DTTOKEN,DTURL,item)
else:
print("token not found, skipping " + item)