Skip to content

Commit

Permalink
refactor(routes): dedicate all routes to specific directory
Browse files Browse the repository at this point in the history
  • Loading branch information
abolfazl8131 committed Nov 14, 2024
1 parent dbd2fc3 commit 12e95f6
Show file tree
Hide file tree
Showing 25 changed files with 205 additions and 148 deletions.
Binary file added app/__pycache__/app_instance.cpython-311.pyc
Binary file not shown.
Binary file modified app/__pycache__/main.cpython-311.pyc
Binary file not shown.
3 changes: 3 additions & 0 deletions app/app_instance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from fastapi import FastAPI

app = FastAPI()
81 changes: 45 additions & 36 deletions app/directory_generators/terraform_generator.py
Original file line number Diff line number Diff line change
@@ -1,36 +1,39 @@
import os

project_name = "app/media/MyTerraform"
modules_dir = os.path.join(project_name, "modules")
docker_module_dir = os.path.join(modules_dir, "docker")
docker_dir = os.path.join(modules_dir, "docker")

# Create project directories
os.makedirs(docker_module_dir, exist_ok=True)
os.makedirs(docker_dir, exist_ok=True)

# Create main.tf
with open(os.path.join(project_name, "main.tf"), "w") as main_file:
main_file.write('''provider "docker" {
main_file.write('''
provider "docker" {
host = "unix:///var/run/docker.sock"
}
module "docker" {
source = "./modules/docker"
image_name = var.image_name
image_force_remove = var.image_force_remove
image_build = var.image_build
image_count = var.image_count
image_name = var.image_name
image_force_remove = var.image_force_remove
image_build = var.image_build
image_count = var.image_count
container_image = var.container_image
container_name = var.container_name
container_hostname = var.container_hostname
container_restart = var.container_restart
container_count = var.container_count
container_count = var.container_count
}
''')

# Create variables.tf
with open(os.path.join(project_name, "variables.tf"), "w") as vars_file:
vars_file.write('''variable "image_name" {
with open(os.path.join(project_name, "variables.tf"), "w") as variables_file:
variables_file.write('''
variable "image_name" {
type = string
}
Expand Down Expand Up @@ -72,13 +75,14 @@

# Create terraform.tfvars
with open(os.path.join(project_name, "terraform.tfvars"), "w") as tfvars_file:
tfvars_file.write('''image_name = "my-image"
tfvars_file.write('''
image_name = "my-image"
image_force_remove = true
image_build = {
context = "./"
tag = ["my-image:latest"]
context = "./"
tag = ["my-image:latest"]
}
image_count = 0
image_count = 1
container_image = "my-image"
container_name = "my-container"
Expand All @@ -89,7 +93,8 @@

# Create versions.tf
with open(os.path.join(project_name, "versions.tf"), "w") as versions_file:
versions_file.write('''terraform {
versions_file.write('''
terraform {
required_version = ">= 1.0"
required_providers {
Expand All @@ -102,30 +107,32 @@
''')

# Create module main.tf
with open(os.path.join(docker_module_dir, "main.tf"), "w") as docker_main_file:
docker_main_file.write('''resource "docker_image" "image" {
count = var.image_count
name = var.image_name
force_remove = var.image_force_remove
with open(os.path.join(docker_dir, "main.tf"), "w") as module_main_file:
module_main_file.write('''
resource "docker_image" "app_image" {
count = var.image_count
name = var.image_name
force_remove = var.image_force_remove
build {
context = var.image_build.context
tag = var.image_build.tag
}
}
resource "docker_container" "container" {
count = var.container_count
image = var.container_image
name = var.container_name
hostname = var.container_hostname
restart = var.container_restart
resource "docker_container" "app_container" {
count = var.container_count
image = var.container_image
name = var.container_name
hostname = var.container_hostname
restart = var.container_restart
}
''')

# Create module variables.tf
with open(os.path.join(docker_module_dir, "variables.tf"), "w") as docker_vars_file:
docker_vars_file.write('''variable "image_name" {
with open(os.path.join(docker_dir, "variables.tf"), "w") as module_variables_file:
module_variables_file.write('''
variable "image_name" {
type = string
}
Expand Down Expand Up @@ -166,14 +173,15 @@
''')

# Create module terraform.tfvars
with open(os.path.join(docker_module_dir, "terraform.tfvars"), "w") as docker_tfvars_file:
docker_tfvars_file.write('''image_name = "my-image"
with open(os.path.join(docker_dir, "terraform.tfvars"), "w") as module_tfvars_file:
module_tfvars_file.write('''
image_name = "my-image"
image_force_remove = true
image_build = {
context = "./"
tag = ["my-image:latest"]
context = "./"
tag = ["my-image:latest"]
}
image_count = 0
image_count = 1
container_image = "my-image"
container_name = "my-container"
Expand All @@ -183,8 +191,9 @@
''')

# Create module versions.tf
with open(os.path.join(docker_module_dir, "versions.tf"), "w") as docker_versions_file:
docker_versions_file.write('''terraform {
with open(os.path.join(docker_dir, "versions.tf"), "w") as module_versions_file:
module_versions_file.write('''
terraform {
required_version = ">= 1.0"
required_providers {
Expand Down
93 changes: 3 additions & 90 deletions app/main.py
Original file line number Diff line number Diff line change
@@ -1,90 +1,3 @@

from .gpt_services import gpt_service
from .services import (write_basic,
write_bugfix,
write_installation,
edit_directory_generator,execute_pythonfile)
from app.models import (IaCBasicInput,
IaCBugfixInput,
Output,
IaCInstallationInput,IaCTemplateGenerationDocker,HelmTemplateGeneration)

from fastapi import FastAPI, HTTPException,Response
from fastapi.responses import FileResponse
from .prompt_generators import (IaC_basics_generator,
IaC_bugfix_generator,
IaC_installation_generator,
helm_template_generator)

from app.template_generators.terraform.docker import (IaC_template_generator_docker)

import os
app = FastAPI()


@app.post("/IaC-basic/")
async def IaC_basic_generation(request:IaCBasicInput) -> Output:

generated_prompt = IaC_basics_generator(request)
output = gpt_service(generated_prompt)
return Output(output=output)

@app.post("/IaC-bugfix/")
async def IaC_bugfix_generation(request:IaCBugfixInput) -> Output:

generated_prompt = IaC_bugfix_generator(request)
output = gpt_service(generated_prompt)
return Output(output=output)


@app.post("/IaC-install/")
async def IaC_install_generation(request:IaCInstallationInput) -> Output:

generated_prompt = IaC_installation_generator(request)
output = gpt_service(generated_prompt)
return Output(output=output)

@app.post("/IaC-template/docker")
async def IaC_template_generation_docker(request:IaCTemplateGenerationDocker) -> Output:

generated_prompt = IaC_template_generator_docker(request)
output = gpt_service(generated_prompt)
edit_directory_generator("terraform_generator",output)
execute_pythonfile("MyTerraform","terraform_generator")
return Output(output='output')

@app.post("/Helm-template/")
async def Helm_template_generation(request:HelmTemplateGeneration) -> Output:

generated_prompt = helm_template_generator(request)
output = gpt_service(generated_prompt)
edit_directory_generator("helm_generator",output)
execute_pythonfile("MyHelm","helm_generator")
return Output(output='output')






@app.get("/download/{filename}")
def download_file(filename: str):
folder = "app/media/MyTerraform" # specify your folder path here
file_path = os.path.join(folder, filename)

# Ensure the file exists
if not os.path.isfile(file_path):
raise HTTPException(status_code=404, detail="File not found.")

# Return the file response for download
return FileResponse(file_path, media_type='application/octet-stream', filename=filename)

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

# List the contents of the directory
contents = os.listdir(folder)
return {"folder": folder, "contents": contents}
from app.routes.utils import *
from app.routes.terraform import *
from app.routes.helm import *
13 changes: 7 additions & 6 deletions app/media/MyTerraform/main.tf
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@

provider "docker" {
host = "unix:///var/run/docker.sock"
}

module "docker" {
source = "./modules/docker"

image_name = var.image_name
image_force_remove = var.image_force_remove
image_build = var.image_build
image_count = var.image_count
image_name = var.image_name
image_force_remove = var.image_force_remove
image_build = var.image_build
image_count = var.image_count

container_image = var.container_image
container_name = var.container_name
container_hostname = var.container_hostname
container_restart = var.container_restart
container_count = var.container_count
container_count = var.container_count
}
21 changes: 11 additions & 10 deletions app/media/MyTerraform/modules/docker/main.tf
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
resource "docker_image" "image" {
count = var.image_count
name = var.image_name
force_remove = var.image_force_remove

resource "docker_image" "app_image" {
count = var.image_count
name = var.image_name
force_remove = var.image_force_remove

build {
context = var.image_build.context
tag = var.image_build.tag
}
}

resource "docker_container" "container" {
count = var.container_count
image = var.container_image
name = var.container_name
hostname = var.container_hostname
restart = var.container_restart
resource "docker_container" "app_container" {
count = var.container_count
image = var.container_image
name = var.container_name
hostname = var.container_hostname
restart = var.container_restart
}
7 changes: 4 additions & 3 deletions app/media/MyTerraform/modules/docker/terraform.tfvars
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@

image_name = "my-image"
image_force_remove = true
image_build = {
context = "./"
tag = ["my-image:latest"]
context = "./"
tag = ["my-image:latest"]
}
image_count = 0
image_count = 1

container_image = "my-image"
container_name = "my-container"
Expand Down
1 change: 1 addition & 0 deletions app/media/MyTerraform/modules/docker/variables.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

variable "image_name" {
type = string
}
Expand Down
1 change: 1 addition & 0 deletions app/media/MyTerraform/modules/docker/versions.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

terraform {
required_version = ">= 1.0"

Expand Down
7 changes: 4 additions & 3 deletions app/media/MyTerraform/terraform.tfvars
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@

image_name = "my-image"
image_force_remove = true
image_build = {
context = "./"
tag = ["my-image:latest"]
context = "./"
tag = ["my-image:latest"]
}
image_count = 0
image_count = 1

container_image = "my-image"
container_name = "my-container"
Expand Down
1 change: 1 addition & 0 deletions app/media/MyTerraform/variables.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

variable "image_name" {
type = string
}
Expand Down
1 change: 1 addition & 0 deletions app/media/MyTerraform/versions.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

terraform {
required_version = ">= 1.0"

Expand Down
Binary file modified app/models/__pycache__/terraform_models.cpython-311.pyc
Binary file not shown.
Binary file added app/routes/__pycache__/helm.cpython-311.pyc
Binary file not shown.
Binary file added app/routes/__pycache__/terraform.cpython-311.pyc
Binary file not shown.
Binary file added app/routes/__pycache__/utils.cpython-311.pyc
Binary file not shown.
14 changes: 14 additions & 0 deletions app/routes/helm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from app.app_instance import app
from app.gpt_services import gpt_service
from app.services import (write_installation,edit_directory_generator,execute_pythonfile)
from app.models import (HelmTemplateGeneration,Output)
from app.prompt_generators import (helm_template_generator)

@app.post("/Helm-template/")
async def Helm_template_generation(request:HelmTemplateGeneration) -> Output:

generated_prompt = helm_template_generator(request)
output = gpt_service(generated_prompt)
edit_directory_generator("helm_generator",output)
execute_pythonfile("MyHelm","helm_generator")
return Output(output='output')
Loading

0 comments on commit 12e95f6

Please sign in to comment.