From 80d3349ce0edad88013bf22e417c3cf8b4ba951c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Thu, 24 Aug 2023 16:11:08 +0200 Subject: [PATCH] add stub api for machines --- pkgs/clan-cli/clan_cli/webui/app.py | 3 +- .../clan_cli/webui/routers/machines.py | 65 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 pkgs/clan-cli/clan_cli/webui/routers/machines.py diff --git a/pkgs/clan-cli/clan_cli/webui/app.py b/pkgs/clan-cli/clan_cli/webui/app.py index 52de7cc1..7ad39bbb 100644 --- a/pkgs/clan-cli/clan_cli/webui/app.py +++ b/pkgs/clan-cli/clan_cli/webui/app.py @@ -1,7 +1,8 @@ from fastapi import FastAPI -from .routers import health, root +from .routers import health, machines, root app = FastAPI() app.include_router(health.router) +app.include_router(machines.router) app.include_router(root.router) diff --git a/pkgs/clan-cli/clan_cli/webui/routers/machines.py b/pkgs/clan-cli/clan_cli/webui/routers/machines.py new file mode 100644 index 00000000..69cd4231 --- /dev/null +++ b/pkgs/clan-cli/clan_cli/webui/routers/machines.py @@ -0,0 +1,65 @@ +from enum import Enum + +from fastapi import APIRouter +from pydantic import BaseModel, Field + +router = APIRouter() + + +class Status(Enum): + ONLINE = "online" + OFFLINE = "offline" + + +class Machine(BaseModel): + name: str + status: Status + + +class MachinesResponse(BaseModel): + machines: list[Machine] + + +class MachineResponse(BaseModel): + machine: Machine + + +class Config(BaseModel): + pass + + +class ConfigResponse(BaseModel): + config: Config + + +class Schema(BaseModel): + pass + + +class SchemaResponse(BaseModel): + schema_: Schema = Field(alias="schema") + + +@router.get("/api/machines") +async def list_machines() -> MachinesResponse: + return MachinesResponse(machines=[]) + + +@router.get("/api/machines/{machine}") +async def get_machine(machine: str) -> MachineResponse: + return MachineResponse(machine=Machine(name=machine, status=Status.ONLINE)) + + +@router.get("/api/machines/{machine}/config") +async def get_machine_config(machine: str) -> ConfigResponse: + return ConfigResponse(config=Config()) + + +@router.post("/api/machines/{machine}/config") +async def set_machine_config(machine: str, config: Config) -> ConfigResponse: + return ConfigResponse(config=config) + + +@router.get("/api/machines/{machine}/schema") +async def get_machine_schema(machine: str) -> SchemaResponse: + return SchemaResponse(schema=Schema())