Coverage for src / server_list / spec / webapi / power.py: 50%
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"""
3Power API for iLO hosts.
4Provides power consumption information 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
14power_api = flask.Blueprint("power_api", __name__)
17@power_api.route("/power", methods=["GET"])
18def get_all_power():
19 """Get power consumption information for all hosts."""
20 power_info_map = data_collector.get_all_power_info()
22 # Convert PowerInfo dataclass to dict for JSON serialization
23 data = {host: dataclasses.asdict(info) for host, info in power_info_map.items()}
25 return webapi.success_response(data)
28@power_api.route("/power/<host>", methods=["GET"])
29def get_host_power(host: str):
30 """Get power consumption information for a specific host."""
31 info = data_collector.get_power_info(host)
33 if info:
34 return webapi.success_response(dataclasses.asdict(info))
36 return webapi.error_response(f"No power data for host: {host}")