Skip to content

Commit 12cd744

Browse files
committed
Merge branch 'master' of github.com:devopshobbies/devops-gpt into ec2
2 parents 149bc1e + d89591e commit 12cd744

57 files changed

Lines changed: 5239 additions & 8456 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/media/MyHelm_zip.zip

1.81 KB
Binary file not shown.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
resource "aws_s3_bucket" "s3_bucket" {
3+
count = var.s3_create_bucket ? 1 : 0
4+
bucket = var.s3_bucket_name
5+
force_destroy = var.s3_bucket_force_destroy
6+
tags = var.s3_bucket_tags
7+
}
8+
9+
resource "aws_s3_bucket_versioning" "s3_bucket_versioning" {
10+
count = var.s3_create_bucket && var.s3_create_bucket_versioning ? 1 : 0
11+
bucket = aws_s3_bucket.s3_bucket[0].id
12+
13+
versioning_configuration {
14+
status = var.s3_bucket_versioning_status
15+
}
16+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
s3_create_bucket = true
3+
s3_bucket_name = "UniqueName"
4+
s3_bucket_force_destroy = false
5+
s3_bucket_tags = {
6+
Name = "My bucket"
7+
Environment = "Dev"
8+
}
9+
s3_create_bucket_versioning = false
10+
s3_bucket_versioning_status = "Enabled"
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
variable "s3_create_bucket" {
3+
type = bool
4+
}
5+
6+
variable "s3_bucket_name" {
7+
type = string
8+
}
9+
10+
variable "s3_bucket_force_destroy" {
11+
type = bool
12+
}
13+
14+
variable "s3_bucket_tags" {
15+
type = map(string)
16+
}
17+
18+
variable "s3_create_bucket_versioning" {
19+
type = bool
20+
}
21+
22+
variable "s3_bucket_versioning_status" {
23+
type = string
24+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
terraform {
3+
required_version = ">= 1.0"
4+
5+
required_providers {
6+
aws = {
7+
source = "hashicorp/aws"
8+
version = ">= 5.20"
9+
}
10+
}
11+
}

app/media/MyTerraform_zip.zip

2.06 KB
Binary file not shown.

app/models/terraform_models.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,22 @@ class IaCTemplateGenerationS3(BaseModel):
7979

8080
class IaCTemplateGenerationIAM(BaseModel):
8181
iam_user:bool = True
82-
iam_group:bool = True
82+
iam_group:bool = True
83+
84+
class SyncPolicy(BaseModel):
85+
auto_prune: bool = True
86+
self_heal: bool = True
87+
88+
class SyncOptions(BaseModel):
89+
apply_out_of_sync_only: bool = True
90+
create_namespace: bool = True
91+
fail_or_share_resource:bool = True
92+
93+
class ArgoApplication(BaseModel):
94+
sync_policy: SyncPolicy | None = None
95+
sync_options: SyncOptions | None = None
96+
97+
class IaCTemplateGenerationArgoCD(BaseModel):
98+
argocd_application:ArgoApplication | None = None
99+
argocd_repository:bool = True
100+
argocd_cluster:bool = True

app/routes/terraform.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
IaCTemplateGenerationEC2,
1212
IaCTemplateGenerationS3,
1313
IaCTemplateGenerationIAM,
14+
IaCTemplateGenerationArgoCD
1415
)
1516

1617
from fastapi import Response
@@ -23,6 +24,7 @@
2324
from app.template_generators.terraform.aws.ec2 import (IaC_template_generator_ec2)
2425
from app.template_generators.terraform.aws.IAM import (IaC_template_generator_iam)
2526
from app.template_generators.terraform.aws.s3 import (IaC_template_generator_s3)
27+
from app.template_generators.terraform.argocd import (IaC_template_generator_argocd)
2628
import os
2729

2830
@app.post("/IaC-basic/")
@@ -92,3 +94,12 @@ async def IaC_template_generation_aws_iam(request:IaCTemplateGenerationIAM) -> O
9294
return Output(output='output')
9395

9496

97+
@app.post("/IaC-template/argocd")
98+
async def IaC_template_generation_argocd(request:IaCTemplateGenerationArgoCD) -> Output:
99+
if os.environ.get("TEST"):
100+
return Output(output='output (nothing special)')
101+
generated_prompt = IaC_template_generator_argocd(request)
102+
output = gpt_service(generated_prompt)
103+
edit_directory_generator("terraform_generator",output)
104+
execute_pythonfile("MyTerraform","terraform_generator")
105+
return Output(output='output')

app/routes/utils.py

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,33 @@
22
from fastapi import FastAPI, HTTPException,Response
33
from fastapi.responses import FileResponse
44
import os
5+
import zipfile
56

67

7-
@app.get("/download-helm/{filename}")
8-
def download_file_helm(filename: str):
8+
def zip_folder(folder_path: str, output_zip_path: str):
9+
"""Zip the entire folder."""
10+
with zipfile.ZipFile(output_zip_path, 'w', zipfile.ZIP_DEFLATED) as zip_file:
11+
for root, dirs, files in os.walk(folder_path):
12+
for file in files:
13+
file_path = os.path.join(root, file)
14+
# Add file to the zip file
15+
zip_file.write(file_path, os.path.relpath(file_path, folder_path))
916

10-
folder = 'app/media/MyHelm'
11-
file_path = os.path.join(folder, filename)
12-
13-
if not os.path.isfile(file_path):
14-
raise HTTPException(status_code=404, detail="File not found.")
1517

16-
17-
return FileResponse(file_path, media_type='application/octet-stream', filename=filename)
1818

1919

20-
@app.get("/download-terraform/{filename}")
21-
def download_file_terraform(filename: str):
20+
@app.get("/download-folder{folder_name}/{source}")
21+
async def download_folder_MyHelm(folder_name: str,source:str):
22+
folder_path = f"app/media/{folder_name}" # Adjust the path as needed
23+
if not os.path.exists(folder_path):
24+
raise HTTPException(status_code=404, detail="Folder not found")
2225

23-
folder = 'app/media/MyTerraform'
24-
file_path = os.path.join(folder, filename)
25-
26-
if not os.path.isfile(file_path):
27-
raise HTTPException(status_code=404, detail="File not found.")
26+
zip_file_path = f"app/media/{folder_name}_zip.zip"
2827

29-
30-
return FileResponse(file_path, media_type='application/octet-stream', filename=filename)
28+
# Zip the folder
29+
zip_folder(folder_path, zip_file_path)
30+
31+
# Return the zip file as a response
32+
return FileResponse(zip_file_path, media_type='application/zip', filename=f"{folder_name}_{source}.zip")
3133

32-
@app.get("/list-directory")
33-
def list_directory(folder: str):
34-
# Ensure the folder exists
35-
if not os.path.isdir(folder):
36-
raise HTTPException(status_code=404, detail=f"{folder} does not exist.")
3734

38-
# List the contents of the directory
39-
contents = os.listdir(folder)
40-
return {"folder": folder, "contents": contents}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
def IaC_template_generator_argocd(input) -> str:
2+
pass

0 commit comments

Comments
 (0)