70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
from fastapi import FastAPI
|
|
from pydantic import BaseModel, Field
|
|
from typing import List, Optional, Any
|
|
|
|
app = FastAPI()
|
|
|
|
# Pydantic-Modelle für die Struktur
|
|
class AffectedFunction(BaseModel):
|
|
function: str
|
|
critical: int
|
|
impactDesc: str
|
|
outage: str # "none"|"partial"|"full"
|
|
hasMaintenance: bool
|
|
|
|
class AppStatusEntry(BaseModel):
|
|
outage: str = "none"
|
|
hasMaintenance: bool = False
|
|
hasSubComponentMaintenance: bool = False
|
|
affectedFunctions: List[AffectedFunction] = Field(default_factory=list)
|
|
|
|
class AppStatus(BaseModel):
|
|
erezept: Optional[AppStatusEntry] = None
|
|
epa: Optional[AppStatusEntry] = None
|
|
kim: Optional[AppStatusEntry] = None
|
|
wanda: Optional[AppStatusEntry] = None
|
|
ogd: Optional[AppStatusEntry] = None
|
|
vsdm: Optional[AppStatusEntry] = None
|
|
tianschluss: Optional[AppStatusEntry] = None
|
|
|
|
class StatusModel(BaseModel):
|
|
appStatus: AppStatus
|
|
cause: List[Any] = Field(default_factory=list)
|
|
|
|
# Initialer Status mit einer Störung bei erezept
|
|
status_data = StatusModel(
|
|
appStatus=AppStatus(
|
|
erezept=AppStatusEntry(
|
|
outage="partial",
|
|
hasMaintenance=False,
|
|
hasSubComponentMaintenance=False,
|
|
affectedFunctions=[
|
|
AffectedFunction(
|
|
function="Signatur",
|
|
critical=1,
|
|
impactDesc="Signatur ist zeitweise nicht möglich",
|
|
outage="partial",
|
|
hasMaintenance=False
|
|
)
|
|
]
|
|
),
|
|
epa=AppStatusEntry(),
|
|
kim=AppStatusEntry(),
|
|
wanda=AppStatusEntry(),
|
|
ogd=AppStatusEntry(),
|
|
vsdm=AppStatusEntry(),
|
|
tianschluss=AppStatusEntry()
|
|
),
|
|
cause=[]
|
|
)
|
|
|
|
@app.get("/lageapi/v2/tilage", response_model=StatusModel)
|
|
def get_tilage():
|
|
return status_data
|
|
|
|
@app.post("/lageapi/v2/tilage", response_model=StatusModel)
|
|
def set_tilage(new_status: StatusModel):
|
|
global status_data
|
|
status_data = new_status
|
|
return status_data
|
|
|