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

1#!/usr/bin/env python3 

2""" 

3Power API for iLO hosts. 

4Provides power consumption information 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 

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

15 

16 

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

21 

22 # Convert PowerInfo dataclass to dict for JSON serialization 

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

24 

25 return webapi.success_response(data) 

26 

27 

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) 

32 

33 if info: 

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

35 

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