import os import subprocess import sys import time import shutil import hcl from dotenv import load_dotenv from glob import glob def setEnv(env, time, path, dashboard): os.environ['DYNATRACE_ENV_URL'] = str(os.getenv(env + "_ENV_URL")) os.environ['DYNATRACE_API_TOKEN'] = str(os.getenv(env + "_API_TOKEN")) os.environ['DYNATRACE_TARGET_FOLDER'] = str(path + time + "_" + env + dashboard) return os.environ def runProcess(process_name, input_params): process_names = ["Export", "Terraform init"] success = False try: process = subprocess.Popen(input_params) process.wait(timeout=60*10) # 10 minutes success = True print("[DEBUG]", "Process:", process_name, "Success:", success) except subprocess.TimeoutExpired: print("[DEBUG]", "Exception occured:", subprocess.TimeoutExpired) print("[DEBUG]", "Killing process:", process_name) process.kill() success = False print("[DEBUG]", "Process:", process_name, "Success:", success) except: if process_name in process_names and success == False: print("[DEBUG]", "Process:", process_name, "Success:", success) print("[DEBUG]", "Exiting program.") process.kill() success = False sys.exit(1) else: print("[FAILED]", input_params) if __name__ == "__main__": if(len(sys.argv) == 1): timestamp = time.strftime("%Y%m%d-%H%M%S") outputFolder = "./output/" environments = ["EMEA_PROD", "EMEA_PREPROD", "NA_PROD", "NA_PREPROD", "CN_PROD", "CN_PREPROD"] for environment in environments: load_dotenv() setEnv(environment, timestamp, outputFolder, "") runProcess("Export", [".\\bin\\terraform-provider-dynatrace_v1.30.2", "-export", "-id"]) setEnv(environment, timestamp, outputFolder, "_DASHBOARDS") runProcess("Export", [".\\bin\\terraform-provider-dynatrace_v1.30.2", "-export", "-id", "dynatrace_dashboard"]) print("Finished!") else: print("Usage example: ") print("python .\export.py")