init
commit
847d48cf86
Binary file not shown.
|
|
@ -0,0 +1,73 @@
|
|||
import yaml
|
||||
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
||||
from helper import osInterface
|
||||
import re
|
||||
import pandas as pd
|
||||
|
||||
|
||||
#CHECKOUT shared_config
|
||||
#CHECKOUT terraform_config
|
||||
|
||||
#load
|
||||
|
||||
def load_yaml(path):
|
||||
try:
|
||||
with open(path) as file:
|
||||
yaml_doc = yaml.safe_load(file)
|
||||
return yaml_doc
|
||||
except Exception as e:
|
||||
print('Could not open YAML file %s' % e)
|
||||
|
||||
def store_terraform_keyrequest_files(terraform, filename):
|
||||
with open('./'+filename,'a') as file:
|
||||
file.write(terraform + '\n')
|
||||
|
||||
|
||||
def main():
|
||||
yamls = osInterface.findYAML('../../shared_configuration/')
|
||||
df = pd.DataFrame()
|
||||
df_visual = pd.DataFrame()
|
||||
|
||||
env = Environment(
|
||||
loader=FileSystemLoader('../terraform_templates/')
|
||||
)
|
||||
|
||||
for f in yamls:
|
||||
slo = load_yaml(f)
|
||||
try:
|
||||
for sloDefinition in slo["slo_definition"]['EMEA-Prod']:
|
||||
for service in sloDefinition["filter"]:
|
||||
#print(service)
|
||||
for req in service["keyRequests"]:
|
||||
df = pd.concat([df,pd.DataFrame({'service_name':service["service"],'key_req': req},index=[0])],ignore_index=True)
|
||||
df_visual = pd.concat([df_visual,pd.DataFrame({'service_name':service["service"],'key_req': req,'SLO':slo["slo_name"]},index=[0])],ignore_index=True)
|
||||
except:
|
||||
print("not a valid slo file: " + f +", next...")
|
||||
|
||||
|
||||
df = df.drop_duplicates()
|
||||
|
||||
|
||||
for name in pd.unique(df["service_name"]):
|
||||
|
||||
svc = {'service_name':re.sub('[^a-zA-Z0-9]','_',name),
|
||||
'service_raw_name':name
|
||||
}
|
||||
|
||||
template = env.get_template('dynatrace_service_data.tf')
|
||||
terraform = template.render(key_request = svc)
|
||||
store_terraform_keyrequest_files(terraform,'services_data.tf')
|
||||
|
||||
grouped = df.groupby('service_name')
|
||||
|
||||
for name, group in grouped:
|
||||
key_req = {'service_name':re.sub('[^a-zA-Z0-9]','_',name),
|
||||
'service_raw_name':name,
|
||||
'keyRequests': group["key_req"].values
|
||||
}
|
||||
|
||||
template = env.get_template('dynatrace_key_request.tf')
|
||||
terraform = template.render(key_request = key_req)
|
||||
store_terraform_keyrequest_files(terraform,'key_requests.tf')
|
||||
|
||||
main()
|
||||
Binary file not shown.
|
|
@ -0,0 +1,19 @@
|
|||
from git import Repo
|
||||
#import os
|
||||
|
||||
|
||||
def clone_repo_if_notexist(repourl, reponame):
|
||||
if(not os.path.isdir(reponame)):
|
||||
repo = Repo.clone_from(repourl, reponame)
|
||||
return repo
|
||||
return Repo(reponame)
|
||||
|
||||
def pull_repo(repo):
|
||||
origin = repo.remotes.origin
|
||||
origin.pull()
|
||||
|
||||
def push_repo(repo, message):
|
||||
repo.git.add(all=True)
|
||||
repo.index.commit(message)
|
||||
origin = repo.remotes.origin
|
||||
origin.push()
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import os
|
||||
|
||||
def findYAML(path: str):
|
||||
files = []
|
||||
|
||||
for dirpath, dirnames, filenames in os.walk(path):
|
||||
for filename in [f for f in filenames if f.endswith(".yaml")]:
|
||||
yield os.path.join(dirpath, filename)
|
||||
#files.append(os.path.join(dirpath, filename))
|
||||
|
||||
#return files
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
resource "dynatrace_key_requests" "Netty_on_0_0_0_0_8080___eroute_adapter___prod" {
|
||||
names = ["/route/eroute"]
|
||||
service = data.dynatrace_service.Netty_on_0_0_0_0_8080___eroute_adapter___prod.id
|
||||
}
|
||||
|
||||
resource "dynatrace_key_requests" "Netty_on_0_0_0_0_8080___eroute_ext___prod" {
|
||||
names = ["/api/eu/2.5/eroute/protobuf3","/api/eu/2.5/eroute-costs/protobuf3"]
|
||||
service = data.dynatrace_service.Netty_on_0_0_0_0_8080___eroute_ext___prod.id
|
||||
}
|
||||
|
||||
resource "dynatrace_key_requests" "Netty_on_0_0_0_0_8080___rtti___prod" {
|
||||
names = ["/api/default","/api/tw","/api/ru","/api/au","/api/sea","/api/br","/api/mx","/api/za","/api/tw-mgu21","/api/nz","/api/ae","/api/kw"]
|
||||
service = data.dynatrace_service.Netty_on_0_0_0_0_8080___rtti___prod.id
|
||||
}
|
||||
|
||||
resource "dynatrace_key_requests" "POIs" {
|
||||
names = ["getPOIs (FTS Calls)"]
|
||||
service = data.dynatrace_service.POIs.id
|
||||
}
|
||||
|
||||
resource "dynatrace_key_requests" "SimplePOIs" {
|
||||
names = ["getSimplePOIs (FTS Calls)"]
|
||||
service = data.dynatrace_service.SimplePOIs.id
|
||||
}
|
||||
|
||||
resource "dynatrace_key_requests" "TripService___PROD" {
|
||||
names = ["/v2/motorist/[UUID]/trips","/v3/motorist/[UUID]/trips"]
|
||||
service = data.dynatrace_service.TripService___PROD.id
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
data "dynatrace_service" "Netty_on_0_0_0_0_8080___rtti___prod" {
|
||||
name = "Netty on 0.0.0.0:8080 - rtti - prod"
|
||||
tags = ["Environment=PROD"]
|
||||
}
|
||||
|
||||
data "dynatrace_service" "Netty_on_0_0_0_0_8080___eroute_ext___prod" {
|
||||
name = "Netty on 0.0.0.0:8080 - eroute-ext - prod"
|
||||
tags = ["Environment=PROD"]
|
||||
}
|
||||
|
||||
data "dynatrace_service" "Netty_on_0_0_0_0_8080___eroute_adapter___prod" {
|
||||
name = "Netty on 0.0.0.0:8080 - eroute-adapter - prod"
|
||||
tags = ["Environment=PROD"]
|
||||
}
|
||||
|
||||
data "dynatrace_service" "TripService___PROD" {
|
||||
name = "TripService - PROD"
|
||||
tags = ["Environment=PROD"]
|
||||
}
|
||||
|
||||
data "dynatrace_service" "SimplePOIs" {
|
||||
name = "SimplePOIs"
|
||||
tags = ["Environment=PROD"]
|
||||
}
|
||||
|
||||
data "dynatrace_service" "POIs" {
|
||||
name = "POIs"
|
||||
tags = ["Environment=PROD"]
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
resource "dynatrace_key_requests" "{{ key_request.service_name }}" {
|
||||
names = [{% for req in key_request.keyRequests %}"{{ req }}"{%if not loop.last %},{% endif %}{% endfor %}]
|
||||
service = data.dynatrace_service.{{ key_request.service_name }}.id
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
data "dynatrace_service" "{{ key_request.service_name }}" {
|
||||
name = "{{ key_request.service_raw_name }}"
|
||||
tags = ["Environment=PROD"]
|
||||
}
|
||||
Loading…
Reference in New Issue