from decouple import config import yaml import requests import json import pandas as pd import time from distutils.version import LooseVersion from dynatraceAPI import Dynatrace def GatherAllAgents(DTAPIToken, DTENV,friendlyName): reportingFolder = config('REPORTING_FOLDER') env = DTENV DTAPIToken = DTAPIToken result_tags = ["Environment", "Hub", "PaaS", "Cloud", "ms-id","compass-id","app-id","app.bmwgroup.com/archetype","app.bmwgroup.com/archetype-version"] search_tags = ["app.bmwgroup.com/archtetype"] dtClient = Dynatrace(env, DTAPIToken) params = {} pgs = dtClient.returnPageination(f"/api/v2/entities?entitySelector=type(PROCESS_GROUP),tag([KUBERNETES]app.bmwgroup.com/archetype)&fields=+tags", params, list_item="entities") df = pd.DataFrame() for pg in pgs.elements: row={'displayName':pg['displayName']} for tag in pg['tags']: if tag['key'] in result_tags: try: row.update({ tag['key']:tag['value']}) except: row.update({ tag['key']:tag['key']}) df = df.append(row,ignore_index=True) df.to_csv(reportingFolder + friendlyName + '_mrps.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') GatherAllAgents(DTTOKEN,DTURL,item) else: print("token not found, skipping " + item)