#!/usr/bin/python import os import subprocess import sys import time import shutil import hcl from dotenv import load_dotenv from decouple import config from glob import glob import yaml def setEnv(doc, timestamp, outputFolder, config): print(str(dict(doc[1]).get("env-url"))) os.environ['DYNATRACE_ENV_URL'] = dict(doc[1]).get("env-url") os.environ['DYNATRACE_API_TOKEN'] = config(dict(doc[2]).get("env-token-name")) os.environ['DYNATRACE_TARGET_FOLDER'] = str(outputFolder + timestamp + "_" + dict(doc[0]).get("name") + config) 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 = ["euprod", "eupreprod", "naprod", "napreprod", "cnprod", "cnpreprod"] with open(os.path.basename("./environment.yaml")) as file: env_doc = yaml.safe_load(file) for item, doc in env_doc.items(): setEnv(doc, timestamp, outputFolder, "_configurations") runProcess("Export", ["sudo", "/opt/workspace/coco_apm_dynatrace_terraform_backup_exporter/terraform-provider-dynatrace_v1.30.2" , "-export", "-id"]) # setEnv(environment, timestamp, outputFolder, "_dashboards") # runProcess("Export", ["sudo", bin, "-export", "-id", "dynatrace_dashboard"]) print("Finished!") else: print("Usage example: ") print("python .\export.py")