Commit 70448860 authored by Hines, Jesse's avatar Hines, Jesse
Browse files

List systems

parent 60eceb48
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -255,6 +255,7 @@ COOLING_CEP_FIELD_SELECTORS = {


class SystemInfo(BaseModel):
  name: str
  peak_flops: float
  peak_power: float
  g_flops_w_peak: float
+7 −2
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ from .config import AppDeps
from .service import (
    run_simulation, query_sims, query_cooling_sim_cdu, query_scheduler_sim_jobs,
    query_scheduler_sim_system, query_scheduler_sim_power_history, query_cooling_sim_cep,
    get_system_info,
    get_systems, get_system_info,
)

router = APIRouter(tags=["simulation"])
@@ -212,6 +212,11 @@ def scheduler_system(*,
    return result


@router.get("/system-info/{system}", response_model=SystemInfo)
@router.get("/system/list", response_model=list[SystemInfo])
def system_list():
    return get_systems()


@router.get("/system/{system}", response_model=SystemInfo)
def system_info(system: str):
    return get_system_info(system = system)
+11 −1
Original line number Diff line number Diff line
@@ -698,11 +698,21 @@ def build_scheduler_sim_power_history_query(*,
    )


@functools.cache
def get_systems():
    from raps.system_config import list_systems
    return [get_system_info(s) for s in list_systems()]


@functools.cache
def get_system_info(system: str):
    from raps.system_config import list_systems
    from raps import Engine, SingleSimConfig
    from raps.stats import get_gauge_limits
    if system not in list_systems():
        raise HTTPException(status_code=404, detail=f"System {system} not found")
    engine = Engine(SingleSimConfig(system = system))
    return engine.get_gauge_limits()
    return {
        "name": system,
        **get_gauge_limits(engine),
    }