Skip to content

Commit 6273dd0

Browse files
committed
fix(terraform refactore): re-design terraform endpoints
1 parent 7574958 commit 6273dd0

File tree

9 files changed

+227
-1389
lines changed

9 files changed

+227
-1389
lines changed

app/media/terraform.tfvars

Lines changed: 14 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,16 @@
1-
2-
# Grafana Connection Variables
3-
grafana_connection = {
4-
"url" = "http://localhost:8080",
5-
"auth" = ""
6-
}
7-
8-
9-
10-
# Grafana_Contact_Point Variables
11-
create_contact_point = true
12-
contact_point_name = "My Contact Point"
13-
use_email = false
14-
use_slack = true
15-
email_contact_point = {
16-
17-
message = "{ len .Alerts.Firing } firing."
18-
subject = "{{ template \"default.title\" .}}"
19-
single_email = true
20-
disable_resolve_message = false
21-
}
22-
23-
slack_contact_point = {
24-
url = "https://hooks.slack.com/<YOUR_SLACK_WEBHOOK_URL>"
25-
text = <<EOT
26-
{{ len .Alerts.Firing }} alerts are firing
27-
28-
Alert summaries:
29-
{{ range .Alerts.Firing }}
30-
{{ template "Alert Instance Template" . }}
31-
{{ end }}
32-
EOT
33-
}
34-
35-
36-
# Use { template "Alert Instance Template" . } or any other template if you plan # to create one. Otherwise, remove it from the text section of Slack in the above example
37-
38-
39-
# Grafana_Message_Template Variables
40-
create_message_template = true
41-
message_template_name = "Alert Instance Template"
42-
message_template_content = <<EOT
43-
{{ define "Alert Instance Template" }}
44-
Firing: {{ .Labels.alertname }}
45-
Silence: {{ .SilenceURL }}
46-
{{ end }}
47-
EOT
48-
49-
50-
51-
# Grafana_Mute_Timing Variables
52-
create_mute_timing = true
53-
mute_timing = {
54-
name = "My Mute Timing"
55-
start = "04:56"
56-
end = "04:57"
57-
weekdays = ["monday", "tuesday:thursday"]
58-
days_of_month = ["1:7", "-1"]
59-
months = ["1:3", "december"]
60-
years = []
61-
}
62-
63-
64-
65-
66-
# Grafana_Notification_Policy Variables
67-
create_notification_policy = true
68-
notification_policy_config = {
69-
group_by = ["..."]
70-
group_wait = "45s"
71-
group_interval = "6m"
72-
repeat_interval = "3h"
73-
}
74-
75-
76-
policies = []
77-
/* policies = [
78-
{
79-
matchers = [
80-
{ label = "mylabel", match = "=", value = "myvalue" },
81-
{ label = "alertname", match = "=", value = "CPU Usage" },
82-
{ label = "Name", match = "=~", value = "host.*|host-b.*" }
83-
]
84-
contact_point = "a_contact_point_1"
85-
continue = true
86-
mute_timings = ["mute_timing_1"]
87-
group_by = ["group1_sub"]
88-
},
1+
iam_create_user = true
2+
iam_users = [
3+
{
4+
name = "devopshobbies"
5+
path = "/"
6+
}
7+
]
8+
9+
iam_create_group = true
10+
iam_groups = [
8911
{
90-
matchers = [
91-
{ label = "sublabel", match = "=", value = "subvalue" }
92-
]
93-
contact_point = "a_contact_point_1"
94-
continue = false
95-
mute_timings = ["mute_timing_2"]
96-
group_by = ["group2_sub"]
97-
}
98-
99-
100-
] */
101-
12+
name = "developers"
13+
path = "/"
14+
}
10215

103-
16+
]

app/routes/grafana_terraform.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ def zip_folder(folder_path: str, output_zip_path: str):
1313
file_path = os.path.join(root, file)
1414
# Add file to the zip file
1515
zip_file.write(file_path, os.path.relpath(file_path, folder_path))
16+
1617
@app.post("/api/grafana/terraform")
1718
async def grafana_terraform_template_route(request:GrafanaTerraform) -> Output:
1819

app/routes/terraform.py

Lines changed: 61 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from app.app_instance import app
22
from app.gpt_services import gpt_service
3+
from fastapi.responses import FileResponse
34
from app.services import (
45

56
edit_directory_generator,execute_pythonfile)
@@ -58,74 +59,85 @@ async def IaC_install_generation(request:IaCInstallationInput) -> Output:
5859

5960
@app.post("/api/IaC-template/docker")
6061
async def IaC_template_generation_docker(request:IaCTemplateGenerationDocker) -> Output:
61-
if os.environ.get("TEST"):
62-
return Output(output='output (nothing special)')
63-
generated_prompt = IaC_template_generator_docker(request)
64-
output = gpt_service(generated_prompt)
65-
edit_directory_generator("terraform_generator",output)
66-
execute_pythonfile("MyTerraform","terraform_generator")
67-
return Output(output='output')
62+
63+
dir = 'app/media/terraform.tfvars'
64+
65+
file_response = IaC_template_generator_docker(request)
66+
with open(dir,'w')as f:
67+
f.write(file_response)
68+
69+
return FileResponse(dir, media_type='application/zip', filename=f"terraform.tfvars")
6870

6971
@app.post("/api/IaC-template/aws/ec2")
7072
async def IaC_template_generation_aws_ec2(request:IaCTemplateGenerationEC2) -> Output:
71-
if os.environ.get("TEST"):
72-
return Output(output='output (nothing special)')
73+
74+
dir = 'app/media/terraform.tfvars'
75+
76+
file_response = IaC_template_generator_ec2(request)
77+
with open(dir,'w')as f:
78+
f.write(file_response)
79+
80+
return FileResponse(dir, media_type='application/zip', filename=f"terraform.tfvars")
7381

74-
generated_prompt = IaC_template_generator_ec2(request)
75-
output = gpt_service(generated_prompt)
76-
edit_directory_generator("terraform_generator",output)
77-
execute_pythonfile("MyTerraform","terraform_generator")
78-
return Output(output='output')
7982

8083
@app.post("/api/IaC-template/aws/s3")
8184
async def IaC_template_generation_aws_s3(request:IaCTemplateGenerationS3) -> Output:
82-
if os.environ.get("TEST"):
83-
return Output(output='output (nothing special)')
84-
generated_prompt = IaC_template_generator_s3(request)
85-
output = gpt_service(generated_prompt)
86-
edit_directory_generator("terraform_generator",output)
87-
execute_pythonfile("MyTerraform","terraform_generator")
88-
return Output(output='output')
85+
86+
dir = 'app/media/terraform.tfvars'
87+
88+
file_response = IaC_template_generator_s3(request)
89+
with open(dir,'w')as f:
90+
f.write(file_response)
91+
92+
return FileResponse(dir, media_type='application/zip', filename=f"terraform.tfvars")
93+
8994

9095
@app.post("/api/IaC-template/aws/iam")
9196
async def IaC_template_generation_aws_iam(request:IaCTemplateGenerationIAM) -> Output:
92-
if os.environ.get("TEST"):
93-
return Output(output='output (nothing special)')
94-
generated_prompt = IaC_template_generator_iam(request)
95-
output = gpt_service(generated_prompt)
96-
edit_directory_generator("terraform_generator",output)
97-
execute_pythonfile("MyTerraform","terraform_generator")
98-
return Output(output='output')
97+
98+
dir = 'app/media/terraform.tfvars'
99+
100+
file_response = IaC_template_generator_iam(request)
101+
with open(dir,'w')as f:
102+
f.write(file_response)
103+
104+
return FileResponse(dir, media_type='application/zip', filename=f"terraform.tfvars")
105+
99106

100107

101108
@app.post("/api/IaC-template/argocd")
102109
async def IaC_template_generation_argocd(request:IaCTemplateGenerationArgoCD) -> Output:
103-
if os.environ.get("TEST"):
104-
return Output(output='output (nothing special)')
105-
generated_prompt = IaC_template_generator_argocd(request)
106-
output = gpt_service(generated_prompt)
107-
edit_directory_generator("terraform_generator",output)
108-
execute_pythonfile("MyTerraform","terraform_generator")
109-
return Output(output='output')
110+
111+
dir = 'app/media/terraform.tfvars'
112+
113+
file_response = IaC_template_generator_argocd(request)
114+
with open(dir,'w')as f:
115+
f.write(file_response)
116+
117+
return FileResponse(dir, media_type='application/zip', filename=f"terraform.tfvars")
110118

111119

112120

113121
@app.post("/api/IaC-template/aws/elb")
114122
async def IaC_template_generation_aws_elb(request:IaCTemplateGenerationELB) -> Output:
115-
if os.environ.get("TEST"):
116-
return Output(output='output (nothing special)')
117-
generated_prompt = IaC_template_generator_elb(request)
118-
output = gpt_service(generated_prompt)
119-
edit_directory_generator("terraform_generator",output)
120-
execute_pythonfile("MyTerraform","terraform_generator")
121-
return Output(output='output')
123+
124+
dir = 'app/media/terraform.tfvars'
125+
126+
file_response = IaC_template_generator_elb(request)
127+
with open(dir,'w')as f:
128+
f.write(file_response)
129+
130+
return FileResponse(dir, media_type='application/zip', filename=f"terraform.tfvars")
131+
122132

123133
@app.post("/api/IaC-template/aws/efs")
124134
async def IaC_template_generation_aws_efs(request:IaCTemplateGenerationEFS) -> Output:
125-
if os.environ.get("TEST"):
126-
return Output(output='output (nothing special)')
127-
generated_prompt = IaC_template_generator_efs(request)
128-
output = gpt_service(generated_prompt)
129-
edit_directory_generator("terraform_generator",output)
130-
execute_pythonfile("MyTerraform","terraform_generator")
131-
return Output(output='output')
135+
136+
dir = 'app/media/terraform.tfvars'
137+
138+
file_response = IaC_template_generator_efs(request)
139+
with open(dir,'w')as f:
140+
f.write(file_response)
141+
142+
return FileResponse(dir, media_type='application/zip', filename=f"terraform.tfvars")
143+

0 commit comments

Comments
 (0)