diff --git a/src/config/__init__.py b/src/config/__init__.py new file mode 100644 index 0000000..c97d2ea --- /dev/null +++ b/src/config/__init__.py @@ -0,0 +1,3 @@ +from src.config.router import router as config_router + +__all__ = ["config_router"] diff --git a/src/config/config.http b/src/config/config.http new file mode 100644 index 0000000..6c70986 --- /dev/null +++ b/src/config/config.http @@ -0,0 +1,14 @@ +POST http://127.0.0.1:8000/config +Content-Type: application/json + +{ + "cluster_list": [ + { + "hostname": "cluster1.demo.netapp.com", + "username": "admin", + "password": "Netapp1!" + } + ] +} + +### diff --git a/src/config/router.py b/src/config/router.py new file mode 100644 index 0000000..0c9b0c2 --- /dev/null +++ b/src/config/router.py @@ -0,0 +1,16 @@ +from fastapi import APIRouter +from .schema import ConfigSchema, ConfigReturnSchema +import logging + +logger = logging.getLogger("uvicorn") + +router = APIRouter(tags=["config"]) + + +@router.post("/config", response_model=ConfigReturnSchema) +async def create_config(config: ConfigSchema) -> ConfigSchema: + """ + Endpoint to receive and return configuration data. + """ + logger.info("Received configuration data") + return config diff --git a/src/config/schema.py b/src/config/schema.py new file mode 100644 index 0000000..d59c311 --- /dev/null +++ b/src/config/schema.py @@ -0,0 +1,21 @@ +# contains the schema definitions for the aggregate service +from pydantic import BaseModel + + +class ConfigEntrySchema(BaseModel): + hostname: str + username: str + password: str + + +class ConfigOutSchema(BaseModel): + hostname: str + username: str + + +class ConfigReturnSchema(BaseModel): + cluster_list: list[ConfigOutSchema] + + +class ConfigSchema(BaseModel): + cluster_list: list[ConfigEntrySchema] diff --git a/src/config/service.py b/src/config/service.py new file mode 100644 index 0000000..cd81419 --- /dev/null +++ b/src/config/service.py @@ -0,0 +1,3 @@ +# contains the business logic for the aggregate service +async def example_service() -> str: + return "This is an aggregate service" diff --git a/src/main.py b/src/main.py index 8e902bf..6848199 100644 --- a/src/main.py +++ b/src/main.py @@ -2,6 +2,7 @@ from src.service import load_config from fastapi import FastAPI import logging from src.aggregate import aggregate_router +from src.config import config_router logger = logging.getLogger("uvicorn") @@ -10,6 +11,7 @@ config = load_config() app = FastAPI() app.include_router(aggregate_router) +app.include_router(config_router) @app.get("/")