From 847d48cf86328a4671415d0e1fe38563e2220107 Mon Sep 17 00:00:00 2001 From: Rene Forstner Date: Tue, 28 Feb 2023 08:36:53 +0100 Subject: [PATCH] init --- src/__pycache__/createTFFiles.cpython-311.pyc | Bin 0 -> 3459 bytes src/createTFFiles.py | 73 ++++++++++++++++++ .../__pycache__/osInterface.cpython-311.pyc | Bin 0 -> 924 bytes src/helper/gitInterface.py | 19 +++++ src/helper/osInterface.py | 11 +++ src/key_requests.tf | 30 +++++++ src/services_data.tf | 30 +++++++ terraform_templates/dynatrace_key_request.tf | 5 ++ terraform_templates/dynatrace_service_data.tf | 4 + 9 files changed, 172 insertions(+) create mode 100644 src/__pycache__/createTFFiles.cpython-311.pyc create mode 100644 src/createTFFiles.py create mode 100644 src/helper/__pycache__/osInterface.cpython-311.pyc create mode 100644 src/helper/gitInterface.py create mode 100644 src/helper/osInterface.py create mode 100644 src/key_requests.tf create mode 100644 src/services_data.tf create mode 100644 terraform_templates/dynatrace_key_request.tf create mode 100644 terraform_templates/dynatrace_service_data.tf diff --git a/src/__pycache__/createTFFiles.cpython-311.pyc b/src/__pycache__/createTFFiles.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..17075274dc75e12a01989cb24ab1315b8b027ffe GIT binary patch literal 3459 zcmb7GUu+Y}8K3><_4;3ka}X#^;^2hCgd~I(1eB1=Kkh&WrN>om+#c4RXB-^tUEl0F z0oT5|)jc?ORxg#1$O8{~sM54h3H70(JhY-ueY8)j)>?X`JE~yu6BPAe38a@tgoj(eE-bI}2t9{cUD_WQe8_E&9wd3)%b07p1iB8 zm{7aZASn_zV`|pai4j*bB*NKV-MFlogeKHDi8n_CZ*0W^+%LWWaUUtj-1Rk&+Gltg z6*!YwZ|AZ=y#PMl=Sq^{Xgh9)&LBHCg`HE-D>>ubAN zhZxr5Hb)E*W*LI=>hkFK4ML4kN;HztsbOk_j>dINMyIa+Aod=~=mxyT^_ZGTJ3ACJ zQu?StF-<_SdNyXb;Kzr zR=>U3efZwTYq;7yWOWaf-l+?qbv`-bIWv06L`%0zAM%Z-NYZHsSgUc)8yOR)7bW11;v;K?k7a^ZeQ_ScB1a z$-^OLeO`yu-r!{b+Z(>@OGLbu<3~nqPJP9BB0P12Ut3zDNt3{dRp9VZ6(Ete-3&jP znkF;=CI&lC03F)N>_djBQxa<$$8M9mlzfyWh8bhs40;I623bEAfg;*e{3X0{b~(K| zT~$Js5@MS(xHeOB`#$%4>RCCrYF4|#Rri499;mnn*ftD0CXN7DNP_^2-MZG-*IEs1 z{0~!uVf5ai^TJc{qWp~GF3PsQ4c55>BO{}&wV5QHNdf2$ASf3@JE3v#&@8~t4Q~1^ zK%jlI7n<9NUuPa+p9?hT+J}dC1x8*DUnpHtiP+q_S z+mS}WVyg}PuNB0+h^02&bV15X*wv;xTX40_xygcgu1()u3wV%Q9`Y{ie!yd8o_pkJ zhyFZ|y^nnDx&l`|SDq<|Sx-SWyLN05T5xhTd&m25XI@^17(8snLB_!ce8G*o3QD;b=Cy0L zT0U?``zQrZ-UA~Y|1qGdAQ!y<&vDoZD$xo-1T(g;yi3#GFuGns)*WG2(Zumg|`Vwfb7T9R4jl-aAZlf&1k zj%^p5emFU{7YO0K1|b->47p}887C3m_H8#~j96?LtYW|$lyN7VE-9&Da_4<$`I7S* zV;Dz~JHV2n8d_9SNgRT~owRs9lv7TGG;+rr85yDd;34Px(M@$YH#r#HAWUDr>5xCRnzXkRL{h4Hj_%iD+I`u)sjGlHcyEy7}*bPd7kRo%!hYv7pwtTGUB%-mNE^S z#|fKDfK^Jj{UBzVVWlB94FSSqi%zrzV=)c{oroDGB>MSnrv%%Q~FG<~I1>oqBZPuX5%3ob^t$ zl1Nt0F0e|C%135pC|e!MT0_~&n~QaXX8Fs|8TDS_pF8rUBUkxV9`XotEIES;Y(iUg z52uW8`Z_DY;~U?r21g!ytHJM7eHSd>h00E4Da3_5zP~GnzfcZWl^#p!DNcPIK%HIp zl+`1vH?41+sO}rK_6^sOBpq}_N&Koe^dPZz^YQc(vD!Os^^Vv2!gYb~2-Fb>2$BnR z9V{s&rS3x=ou4m!y0F??4IHxq$BJ*)1L$C19l0ckFoGEh~H;7S;tFK$PT?T$gvcJ1BVOo$Q&4@PCPPPxDeFKv^QO zT?eej>o}Vt7wHV>Sk5z^f`I6ATn%}P&Q(KiRsMUeq25Y+ts$l8Ts72H*{St?E)IU| zn&KqS!GA(ixRD$z-mV4vR)*I)Dr1+c!7Enq3T%SxdyYW7WTFT=F~&jMnnHtrdrwjM OnfH_JxzcHv{=WgY%{oB< literal 0 HcmV?d00001 diff --git a/src/createTFFiles.py b/src/createTFFiles.py new file mode 100644 index 0000000..bfa8b26 --- /dev/null +++ b/src/createTFFiles.py @@ -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() \ No newline at end of file diff --git a/src/helper/__pycache__/osInterface.cpython-311.pyc b/src/helper/__pycache__/osInterface.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..34c357fac362f9010d02b584cb5a879b40d8aa0e GIT binary patch literal 924 zcmZ`%&ubGw6n?Wmnxr;DW1%s4C|J>zl9=|Og-}ouv}k)!R4kUT>`ZLxW;f1kDJ>hw zp@$xNs3J7So~oqN6G|)p?@FaqI3gp(4Z#E|WD889_^SycBe*50;yo<;C0qrpV z!_{L;Eg?vw>DMy#)(Zde(>NGOqRx zy8A#-i!4s!N-yeF_l2y9&0xJ3cGQD*;YK}U%TxY{{%vV0%rFV=`pwlO|y^q(d^ z4EyA@vXMezvZ|+7%!+N0Aj%vnmdoCPp#)0$MnFnJmNPPPI-7Yc7#A7N99D9<@Epc7 zmP=XY&dk%|LsoSKhL&42tCga;74CarY)urbh8nBzcA3%;V41vSajh0=-nWnFu1Z%;n_>q6i$bf=4l#>A+|Y%KI`B z8jndW%ycT|Ll{bVA^-I^9CbJuIA1S(y>@*+a-i+T_v0;4^zqO&qoeDQ&17TpB