Coverage for src / server_list / spec / webapi / uptime.py: 100%
16 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-31 11:45 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-31 11:45 +0000
1#!/usr/bin/env python3
2"""
3Host info API.
4Provides host information (uptime, CPU/memory usage) via REST API from SQLite cache.
5"""
7import dataclasses
9import flask
11import server_list.spec.data_collector as data_collector
12import server_list.spec.webapi as webapi
14uptime_api = flask.Blueprint("uptime_api", __name__)
17@uptime_api.route("/uptime", methods=["GET"])
18def get_all_uptime():
19 """Get host information for all hosts."""
20 host_info_map = data_collector.get_all_host_info()
22 # Convert HostInfo dataclass to dict for JSON serialization
23 data = {host: dataclasses.asdict(info) for host, info in host_info_map.items()}
25 return webapi.success_response(data)
28@uptime_api.route("/uptime/<host>", methods=["GET"])
29def get_host_uptime(host: str):
30 """Get host information for a specific host."""
31 info = data_collector.get_host_info(host)
33 if info:
34 return webapi.success_response(dataclasses.asdict(info))
36 return webapi.error_response(f"No host data for: {host}")