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

1#!/usr/bin/env python3 

2""" 

3Host info API. 

4Provides host information (uptime, CPU/memory usage) via REST API from SQLite cache. 

5""" 

6 

7import dataclasses 

8 

9import flask 

10 

11import server_list.spec.data_collector as data_collector 

12import server_list.spec.webapi as webapi 

13 

14uptime_api = flask.Blueprint("uptime_api", __name__) 

15 

16 

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() 

21 

22 # Convert HostInfo dataclass to dict for JSON serialization 

23 data = {host: dataclasses.asdict(info) for host, info in host_info_map.items()} 

24 

25 return webapi.success_response(data) 

26 

27 

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) 

32 

33 if info: 

34 return webapi.success_response(dataclasses.asdict(info)) 

35 

36 return webapi.error_response(f"No host data for: {host}")