diff --git a/gso/api/__init__.py b/gso/api/__init__.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f30090d3e1462d787308bd56d6ce5ab675144c40 100644 --- a/gso/api/__init__.py +++ b/gso/api/__init__.py @@ -0,0 +1,7 @@ +from fastapi import APIRouter + +from gso.api.v1 import router as router_v1 + +router = APIRouter() + +router.include_router(router_v1, prefix="/v1") diff --git a/gso/api/api_v1/__init__.py b/gso/api/api_v1/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/gso/api/api_v1/api.py b/gso/api/api_v1/api.py deleted file mode 100644 index b7ba2d520e2d082bc1e127d790f668f9bf69e5a3..0000000000000000000000000000000000000000 --- a/gso/api/api_v1/api.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Module that implements process related API endpoints.""" - -from fastapi.param_functions import Depends -from fastapi.routing import APIRouter -from orchestrator.security import opa_security_default - -from gso.api.api_v1.endpoints import imports - -api_router = APIRouter() -api_router.include_router(imports.router, prefix="/imports", dependencies=[Depends(opa_security_default)]) diff --git a/gso/api/api_v1/endpoints/__init__.py b/gso/api/api_v1/endpoints/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/gso/api/v1/__init__.py b/gso/api/v1/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..89fd2c8eb6d1455a1f80cf3be6ddd552918ad775 --- /dev/null +++ b/gso/api/v1/__init__.py @@ -0,0 +1,7 @@ +from fastapi import APIRouter + +from gso.api.v1.imports import router as imports_router + +router = APIRouter() + +router.include_router(imports_router) diff --git a/gso/api/api_v1/endpoints/imports.py b/gso/api/v1/imports.py similarity index 91% rename from gso/api/api_v1/endpoints/imports.py rename to gso/api/v1/imports.py index c83b0919d70ae5988885ee1d4efd1b874589330d..383901a6c4b2219762a93c26f7e72dd10fd24310 100644 --- a/gso/api/api_v1/endpoints/imports.py +++ b/gso/api/v1/imports.py @@ -2,8 +2,9 @@ import ipaddress from typing import Any, Dict, Optional from uuid import UUID -from fastapi import HTTPException, status +from fastapi import Depends, HTTPException, status from fastapi.routing import APIRouter +from orchestrator.security import opa_security_default from orchestrator.services import processes, subscriptions from pydantic import BaseModel from sqlalchemy.exc import MultipleResultsFound @@ -11,7 +12,7 @@ from sqlalchemy.exc import MultipleResultsFound from gso.products.product_blocks.router import RouterRole, RouterVendor from gso.products.product_blocks.site import SiteTier -router = APIRouter() +router = APIRouter(prefix="/imports", tags=["Import"], dependencies=[Depends(opa_security_default)]) def start_process(process_name: str, data: dict) -> UUID: @@ -45,7 +46,7 @@ class SiteImport(BaseModel): customer: str -@router.post("/sites", status_code=status.HTTP_201_CREATED, tags=["Import"]) +@router.post("/sites", status_code=status.HTTP_201_CREATED) def import_site(site: SiteImport) -> Dict[str, Any]: """Import site by running the import_site workflow. @@ -90,7 +91,7 @@ class RouterImportModel(BaseModel): router_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None -@router.post("/routers", status_code=status.HTTP_201_CREATED, tags=["Import"]) +@router.post("/routers", status_code=status.HTTP_201_CREATED) def import_router(router_data: RouterImportModel) -> Dict[str, Any]: """Import a router by running the import_router workflow. diff --git a/gso/main.py b/gso/main.py index 9c8223bb7da91ecc554bea1e38e9faf1e787feb1..e05aac889c02934fb9842afaaeae39c89bb0dce0 100644 --- a/gso/main.py +++ b/gso/main.py @@ -7,7 +7,7 @@ from orchestrator.settings import AppSettings import gso.products # noqa: F401 import gso.workflows # noqa: F401 from gso import load_gso_cli -from gso.api.api_v1.api import api_router +from gso.api import router as api_router def init_gso_app(settings: AppSettings) -> OrchestratorCore: diff --git a/test/test_imports.py b/test/test_imports.py index e89341aa92038f334888e2534742d4c1e4965976..768673bafc5d4d47c7e7c7d835e38ce91ce6998a 100644 --- a/test/test_imports.py +++ b/test/test_imports.py @@ -12,8 +12,8 @@ class TestImportEndpoints: def setup(self, test_client): self.faker = Faker() self.client = test_client - self.site_import_endpoint = "/api/imports/sites" - self.router_import_endpoint = "/api/imports/routers" + self.site_import_endpoint = "/api/v1/imports/sites" + self.router_import_endpoint = "/api/v1/imports/routers" self.site_data = { "site_name": self.faker.name(), "site_city": self.faker.city(),