Files
nextjs-python-web-template/pkgs/clan-cli/clan_cli/webui/routers/machines.py
Johannes Kirschbauer f0bc59a1a2 add cors to rest api
2023-08-25 12:42:20 +02:00

59 lines
1.6 KiB
Python

from typing import Annotated
from fastapi import APIRouter, Body
from ...machines.create import create_machine as _create_machine
from ...machines.list import list_machines as _list_machines
from ..schemas import (
Config,
ConfigResponse,
Machine,
MachineCreate,
MachineResponse,
MachinesResponse,
Schema,
SchemaResponse,
Status,
)
router = APIRouter()
@router.get("/api/machines")
async def list_machines() -> MachinesResponse:
machines = []
for m in _list_machines():
machines.append(Machine(name=m, status=Status.UNKNOWN))
return MachinesResponse(machines=machines)
@router.post("/api/machines", status_code=201)
async def create_machine(machine: Annotated[MachineCreate, Body()]) -> MachineResponse:
_create_machine(machine.name)
return MachineResponse(machine=Machine(name=machine.name, status=Status.UNKNOWN))
@router.get("/api/machines/{name}")
async def get_machine(name: str) -> MachineResponse:
print("TODO")
return MachineResponse(machine=Machine(name=name, status=Status.UNKNOWN))
@router.get("/api/machines/{name}/config")
async def get_machine_config(name: str) -> ConfigResponse:
return ConfigResponse(config=Config())
@router.put("/api/machines/{name}/config")
async def set_machine_config(
name: str, config: Annotated[Config, Body()]
) -> ConfigResponse:
print("TODO")
return ConfigResponse(config=config)
@router.get("/api/machines/{name}/schema")
async def get_machine_schema(name: str) -> SchemaResponse:
print("TODO")
return SchemaResponse(schema=Schema())