diff --git a/app/directory_generators/compose_generator.py b/app/directory_generators/compose_generator.py new file mode 100644 index 00000000..acd5aaec --- /dev/null +++ b/app/directory_generators/compose_generator.py @@ -0,0 +1 @@ +Hello! It looks like you entered just the letter "M." How can I assist you today? \ No newline at end of file diff --git a/app/main.py b/app/main.py index 60e62703..ca950b8b 100644 --- a/app/main.py +++ b/app/main.py @@ -2,4 +2,5 @@ from app.routes.terraform import * from app.routes.helm import * from app.routes.ansible import * -from app.routes.jcasc import * \ No newline at end of file +from app.routes.jcasc import * +from app.routes.docker import * \ No newline at end of file diff --git a/app/models/__init__.py b/app/models/__init__.py index a765bf91..f206434e 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -2,4 +2,5 @@ from .terraform_models import * from .utils import * from .ansible_models import * -from .jcasc import * \ No newline at end of file +from .jcasc import * +from .compose_models import * \ No newline at end of file diff --git a/app/models/compose_models.py b/app/models/compose_models.py new file mode 100644 index 00000000..163ee3cb --- /dev/null +++ b/app/models/compose_models.py @@ -0,0 +1,37 @@ +from typing import List, Optional +from pydantic import BaseModel, validator, ValidationError + +class Port(BaseModel): + machine_port:int = 80 + container_port:int = 80 + +class Network(BaseModel): + name:str = 'app_network' + +class EnvironmentVariable(BaseModel): + name:str = 'foo' + value:str = "bar" + +class Volume(BaseModel): + local_dir: str = './nginx/nginx.conf' + container_dir:str = '/etc/nginx/nginx.conf' + +class Build(BaseModel): + context:str + dockerfile:str +class Service(BaseModel): + image:str = 'nginx' + container_name:str = 'web_server' + build: Build | None = None + version:str = 'latest' + volumes:List[Volume] + depends_on:List[str] + ports:List[Port] + networks:List[Network] + environments:List[EnvironmentVariable] + + +class DockerCompose(BaseModel): + services: List[Service] + network:Network + \ No newline at end of file diff --git a/app/routes/docker.py b/app/routes/docker.py new file mode 100644 index 00000000..1c8b4e65 --- /dev/null +++ b/app/routes/docker.py @@ -0,0 +1,19 @@ +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 (DockerCompose,Output) +from app.template_generators.docker.compose import docker_compose_generator +import os + +@app.post("/docker-compose/") +async def docker_compose_template(request:DockerCompose) -> Output: + + if os.environ.get("TEST"): + return Output(output='output') + generated_prompt = docker_compose_generator(request) + + output = gpt_service(generated_prompt) + edit_directory_generator("compose_generator",output) + execute_pythonfile("MyCompose","compose_generator") + return Output(output='output') + \ No newline at end of file diff --git a/app/template_generators/docker/compose.py b/app/template_generators/docker/compose.py new file mode 100644 index 00000000..ae8e052d --- /dev/null +++ b/app/template_generators/docker/compose.py @@ -0,0 +1,3 @@ +def docker_compose_generator(input): + prompt = """M""" + return prompt \ No newline at end of file