mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-05 23:01:15 +02:00
Put all schemas in the same module.
This commit is contained in:
1 parent
81439c750a
commit
eeaf10b418
99 files changed
+228
-5187
No files matched your search
@@ -25,22 +25,21 @@ from typing import List, Union
|
||||
from uuid import UUID
|
||||
|
||||
from gns3server.controller import Controller
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server.endpoints import schemas
|
||||
from gns3server import schemas
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
responses = {
|
||||
404: {"model": ErrorMessage, "description": "Compute not found"}
|
||||
404: {"model": schemas.ErrorMessage, "description": "Compute not found"}
|
||||
}
|
||||
|
||||
|
||||
@router.post("",
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
response_model=schemas.Compute,
|
||||
responses={404: {"model": ErrorMessage, "description": "Could not connect to compute"},
|
||||
409: {"model": ErrorMessage, "description": "Could not create compute"},
|
||||
401: {"model": ErrorMessage, "description": "Invalid authentication for compute"}})
|
||||
responses={404: {"model": schemas.ErrorMessage, "description": "Could not connect to compute"},
|
||||
409: {"model": schemas.ErrorMessage, "description": "Could not create compute"},
|
||||
401: {"model": schemas.ErrorMessage, "description": "Invalid authentication for compute"}})
|
||||
async def create_compute(compute_data: schemas.ComputeCreate):
|
||||
"""
|
||||
Create a new compute on the controller.
|
||||
|
||||
@@ -26,8 +26,7 @@ from gns3server.config import Config
|
||||
from gns3server.controller import Controller
|
||||
from gns3server.version import __version__
|
||||
from gns3server.controller.controller_error import ControllerError, ControllerForbiddenError
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server.endpoints import schemas
|
||||
from gns3server import schemas
|
||||
|
||||
|
||||
import logging
|
||||
@@ -38,7 +37,7 @@ router = APIRouter()
|
||||
|
||||
@router.post("/shutdown",
|
||||
status_code=status.HTTP_204_NO_CONTENT,
|
||||
responses={403: {"model": ErrorMessage, "description": "Server shutdown not allowed"}})
|
||||
responses={403: {"model": schemas.ErrorMessage, "description": "Server shutdown not allowed"}})
|
||||
async def shutdown():
|
||||
"""
|
||||
Shutdown the local server
|
||||
@@ -85,7 +84,7 @@ def version():
|
||||
@router.post("/version",
|
||||
response_model=schemas.Version,
|
||||
response_model_exclude_defaults=True,
|
||||
responses={409: {"model": ErrorMessage, "description": "Invalid version"}})
|
||||
responses={409: {"model": schemas.ErrorMessage, "description": "Invalid version"}})
|
||||
def check_version(version: schemas.Version):
|
||||
"""
|
||||
Check if version is the same as the server.
|
||||
|
||||
@@ -25,18 +25,17 @@ from typing import List
|
||||
from uuid import UUID
|
||||
|
||||
from gns3server.controller import Controller
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server.endpoints.schemas.drawings import Drawing
|
||||
from gns3server import schemas
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
responses = {
|
||||
404: {"model": ErrorMessage, "description": "Project or drawing not found"}
|
||||
404: {"model": schemas.ErrorMessage, "description": "Project or drawing not found"}
|
||||
}
|
||||
|
||||
|
||||
@router.get("",
|
||||
response_model=List[Drawing],
|
||||
response_model=List[schemas.Drawing],
|
||||
response_model_exclude_unset=True)
|
||||
async def get_drawings(project_id: UUID):
|
||||
"""
|
||||
@@ -49,9 +48,9 @@ async def get_drawings(project_id: UUID):
|
||||
|
||||
@router.post("",
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
response_model=Drawing,
|
||||
response_model=schemas.Drawing,
|
||||
responses=responses)
|
||||
async def create_drawing(project_id: UUID, drawing_data: Drawing):
|
||||
async def create_drawing(project_id: UUID, drawing_data: schemas.Drawing):
|
||||
"""
|
||||
Create a new drawing.
|
||||
"""
|
||||
@@ -62,7 +61,7 @@ async def create_drawing(project_id: UUID, drawing_data: Drawing):
|
||||
|
||||
|
||||
@router.get("/{drawing_id}",
|
||||
response_model=Drawing,
|
||||
response_model=schemas.Drawing,
|
||||
response_model_exclude_unset=True,
|
||||
responses=responses)
|
||||
async def get_drawing(project_id: UUID, drawing_id: UUID):
|
||||
@@ -76,10 +75,10 @@ async def get_drawing(project_id: UUID, drawing_id: UUID):
|
||||
|
||||
|
||||
@router.put("/{drawing_id}",
|
||||
response_model=Drawing,
|
||||
response_model=schemas.Drawing,
|
||||
response_model_exclude_unset=True,
|
||||
responses=responses)
|
||||
async def update_drawing(project_id: UUID, drawing_id: UUID, drawing_data: Drawing):
|
||||
async def update_drawing(project_id: UUID, drawing_id: UUID, drawing_data: schemas.Drawing):
|
||||
"""
|
||||
Update a drawing.
|
||||
"""
|
||||
|
||||
@@ -23,7 +23,7 @@ from fastapi import APIRouter
|
||||
from fastapi.encoders import jsonable_encoder
|
||||
|
||||
from gns3server.controller import Controller
|
||||
from gns3server.endpoints.schemas.gns3vm import GNS3VM
|
||||
from gns3server import schemas
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -48,7 +48,7 @@ async def get_vms(engine: str):
|
||||
return vms
|
||||
|
||||
|
||||
@router.get("", response_model=GNS3VM)
|
||||
@router.get("", response_model=schemas.GNS3VM)
|
||||
async def get_gns3vm_settings():
|
||||
"""
|
||||
Return the GNS3 VM settings.
|
||||
@@ -57,8 +57,8 @@ async def get_gns3vm_settings():
|
||||
return Controller.instance().gns3vm.__json__()
|
||||
|
||||
|
||||
@router.put("", response_model=GNS3VM, response_model_exclude_unset=True)
|
||||
async def update_gns3vm_settings(gns3vm_data: GNS3VM):
|
||||
@router.put("", response_model=schemas.GNS3VM, response_model_exclude_unset=True)
|
||||
async def update_gns3vm_settings(gns3vm_data: schemas.GNS3VM):
|
||||
"""
|
||||
Update the GNS3 VM settings.
|
||||
"""
|
||||
|
||||
@@ -32,8 +32,7 @@ from gns3server.controller import Controller
|
||||
from gns3server.controller.controller_error import ControllerError
|
||||
from gns3server.controller.link import Link
|
||||
from gns3server.utils.http_client import HTTPClient
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server.endpoints import schemas
|
||||
from gns3server import schemas
|
||||
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -41,7 +40,7 @@ log = logging.getLogger(__name__)
|
||||
router = APIRouter()
|
||||
|
||||
responses = {
|
||||
404: {"model": ErrorMessage, "description": "Could not find project or link"}
|
||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or link"}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,8 +69,8 @@ async def get_links(project_id: UUID):
|
||||
@router.post("",
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
response_model=schemas.Link,
|
||||
responses={404: {"model": ErrorMessage, "description": "Could not find project"},
|
||||
409: {"model": ErrorMessage, "description": "Could not create link"}})
|
||||
responses={404: {"model": schemas.ErrorMessage, "description": "Could not find project"},
|
||||
409: {"model": schemas.ErrorMessage, "description": "Could not create link"}})
|
||||
async def create_link(project_id: UUID, link_data: schemas.Link):
|
||||
"""
|
||||
Create a new link.
|
||||
|
||||
@@ -34,8 +34,7 @@ from gns3server.controller.project import Project
|
||||
from gns3server.utils import force_unix_path
|
||||
from gns3server.utils.http_client import HTTPClient
|
||||
from gns3server.controller.controller_error import ControllerForbiddenError
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server.endpoints import schemas
|
||||
from gns3server import schemas
|
||||
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -80,7 +79,7 @@ class NodeConcurrency(APIRoute):
|
||||
router = APIRouter(route_class=NodeConcurrency)
|
||||
|
||||
responses = {
|
||||
404: {"model": ErrorMessage, "description": "Could not find project or node"}
|
||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or node"}
|
||||
}
|
||||
|
||||
|
||||
@@ -105,8 +104,8 @@ async def dep_node(node_id: UUID, project: Project = Depends(dep_project)):
|
||||
@router.post("",
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
response_model=schemas.Node,
|
||||
responses={404: {"model": ErrorMessage, "description": "Could not find project"},
|
||||
409: {"model": ErrorMessage, "description": "Could not create node"}})
|
||||
responses={404: {"model": schemas.ErrorMessage, "description": "Could not find project"},
|
||||
409: {"model": schemas.ErrorMessage, "description": "Could not create node"}})
|
||||
async def create_node(node_data: schemas.Node, project: Project = Depends(dep_project)):
|
||||
"""
|
||||
Create a new node.
|
||||
@@ -212,7 +211,7 @@ async def update_node(node_data: schemas.NodeUpdate, node: Node = Depends(dep_no
|
||||
@router.delete("/{node_id}",
|
||||
status_code=status.HTTP_204_NO_CONTENT,
|
||||
responses={**responses,
|
||||
409: {"model": ErrorMessage, "description": "Cannot delete node"}})
|
||||
409: {"model": schemas.ErrorMessage, "description": "Cannot delete node"}})
|
||||
async def delete_node(node_id: UUID, project: Project = Depends(dep_project)):
|
||||
"""
|
||||
Delete a node from a project.
|
||||
|
||||
@@ -37,8 +37,7 @@ from typing import List, Optional
|
||||
from uuid import UUID
|
||||
from pathlib import Path
|
||||
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server.endpoints import schemas
|
||||
from gns3server import schemas
|
||||
from gns3server.controller import Controller
|
||||
from gns3server.controller.project import Project
|
||||
from gns3server.controller.controller_error import ControllerError, ControllerForbiddenError
|
||||
@@ -51,7 +50,7 @@ from gns3server.config import Config
|
||||
router = APIRouter()
|
||||
|
||||
responses = {
|
||||
404: {"model": ErrorMessage, "description": "Could not find project"}
|
||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project"}
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +82,7 @@ def get_projects():
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
response_model=schemas.Project,
|
||||
response_model_exclude_unset=True,
|
||||
responses={409: {"model": ErrorMessage, "description": "Could not create project"}})
|
||||
responses={409: {"model": schemas.ErrorMessage, "description": "Could not create project"}})
|
||||
async def create_project(project_data: schemas.ProjectCreate):
|
||||
"""
|
||||
Create a new project.
|
||||
@@ -145,7 +144,7 @@ def get_project_stats(project: Project = Depends(dep_project)):
|
||||
status_code=status.HTTP_204_NO_CONTENT,
|
||||
responses={
|
||||
**responses,
|
||||
409: {"model": ErrorMessage, "description": "Could not close project"}
|
||||
409: {"model": schemas.ErrorMessage, "description": "Could not close project"}
|
||||
})
|
||||
async def close_project(project: Project = Depends(dep_project)):
|
||||
"""
|
||||
@@ -160,7 +159,7 @@ async def close_project(project: Project = Depends(dep_project)):
|
||||
response_model=schemas.Project,
|
||||
responses={
|
||||
**responses,
|
||||
409: {"model": ErrorMessage, "description": "Could not open project"}
|
||||
409: {"model": schemas.ErrorMessage, "description": "Could not open project"}
|
||||
})
|
||||
async def open_project(project: Project = Depends(dep_project)):
|
||||
"""
|
||||
@@ -176,7 +175,7 @@ async def open_project(project: Project = Depends(dep_project)):
|
||||
response_model=schemas.Project,
|
||||
responses={
|
||||
**responses,
|
||||
409: {"model": ErrorMessage, "description": "Could not load project"}
|
||||
409: {"model": schemas.ErrorMessage, "description": "Could not load project"}
|
||||
})
|
||||
async def load_project(path: str = Body(..., embed=True)):
|
||||
"""
|
||||
@@ -346,7 +345,7 @@ async def import_project(project_id: UUID, request: Request, path: Optional[Path
|
||||
response_model=schemas.Project,
|
||||
responses={
|
||||
**responses,
|
||||
409: {"model": ErrorMessage, "description": "Could not duplicate project"}
|
||||
409: {"model": schemas.ErrorMessage, "description": "Could not duplicate project"}
|
||||
})
|
||||
async def duplicate(project_data: schemas.ProjectDuplicate, project: Project = Depends(dep_project)):
|
||||
"""
|
||||
|
||||
@@ -27,14 +27,13 @@ from typing import List
|
||||
from uuid import UUID
|
||||
|
||||
from gns3server.controller.project import Project
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server.endpoints import schemas
|
||||
from gns3server import schemas
|
||||
from gns3server.controller import Controller
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
responses = {
|
||||
404: {"model": ErrorMessage, "description": "Could not find project or snapshot"}
|
||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or snapshot"}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ from fastapi import APIRouter, Request, status
|
||||
from fastapi.responses import FileResponse
|
||||
|
||||
from gns3server.controller import Controller
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server import schemas
|
||||
from gns3server.controller.controller_error import ControllerError, ControllerNotFoundError
|
||||
|
||||
import logging
|
||||
@@ -43,7 +43,7 @@ def get_symbols():
|
||||
|
||||
|
||||
@router.get("/{symbol_id:path}/raw",
|
||||
responses={404: {"model": ErrorMessage, "description": "Could not find symbol"}})
|
||||
responses={404: {"model": schemas.ErrorMessage, "description": "Could not find symbol"}})
|
||||
async def get_symbol(symbol_id: str):
|
||||
"""
|
||||
Download a symbol file.
|
||||
|
||||
@@ -30,15 +30,14 @@ from fastapi.encoders import jsonable_encoder
|
||||
from typing import List
|
||||
from uuid import UUID
|
||||
|
||||
from gns3server.endpoints.schemas.common import ErrorMessage
|
||||
from gns3server.endpoints import schemas
|
||||
from gns3server import schemas
|
||||
from gns3server.controller import Controller
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
responses = {
|
||||
404: {"model": ErrorMessage, "description": "Could not find template"}
|
||||
404: {"model": schemas.ErrorMessage, "description": "Could not find template"}
|
||||
}
|
||||
|
||||
|
||||
@@ -134,7 +133,7 @@ async def duplicate_template(template_id: UUID):
|
||||
@router.post("/projects/{project_id}/templates/{template_id}",
|
||||
response_model=schemas.Node,
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
responses={404: {"model": ErrorMessage, "description": "Could not find project or template"}})
|
||||
responses={404: {"model": schemas.ErrorMessage, "description": "Could not find project or template"}})
|
||||
async def create_node_from_template(project_id: UUID, template_id: UUID, template_usage: schemas.TemplateUsage):
|
||||
"""
|
||||
Create a new node from a template.
|
||||
|
||||
Reference in new issue
Block a user