This commit is contained in:
Maxim Devaev 2024-07-27 15:26:26 +03:00
parent eb07a7e558
commit 64cebcc721
2 changed files with 25 additions and 17 deletions

View File

@ -82,6 +82,7 @@ tox: testenv
-t $(TESTENV_IMAGE) bash -c " \ -t $(TESTENV_IMAGE) bash -c " \
cp -a /src/testenv/.ssl/nginx /etc/kvmd/nginx/ssl \ cp -a /src/testenv/.ssl/nginx /etc/kvmd/nginx/ssl \
&& cp -a /src/testenv/.ssl/vnc /etc/kvmd/vnc/ssl \ && cp -a /src/testenv/.ssl/vnc /etc/kvmd/vnc/ssl \
&& cp /src/testenv/platform /usr/share/kvmd \
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \ && cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \ && cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
&& cp /usr/share/kvmd/configs.default/kvmd/*.secret /etc/kvmd \ && cp /usr/share/kvmd/configs.default/kvmd/*.secret /etc/kvmd \

View File

@ -62,12 +62,13 @@ class HwInfoSubmanager(BaseInfoSubmanager):
async def get_state(self) -> dict: async def get_state(self) -> dict:
( (
base, serial, base,
(model, video, board), serial,
platform,
throttling, throttling,
cpu_percent, cpu_percent,
cpu_temp, cpu_temp,
(mem_percent, mem_total, mem_available), mem,
) = await asyncio.gather( ) = await asyncio.gather(
self.__read_dt_file("model"), self.__read_dt_file("model"),
self.__read_dt_file("serial-number"), self.__read_dt_file("serial-number"),
@ -82,9 +83,7 @@ class HwInfoSubmanager(BaseInfoSubmanager):
"type": "rpi", "type": "rpi",
"base": base, "base": base,
"serial": serial, "serial": serial,
"model": model, **platform, # type: ignore
"video": video,
"board": board,
}, },
"health": { "health": {
"temp": { "temp": {
@ -93,11 +92,7 @@ class HwInfoSubmanager(BaseInfoSubmanager):
"cpu": { "cpu": {
"percent": cpu_percent, "percent": cpu_percent,
}, },
"mem": { "mem": mem,
"percent": mem_percent,
"total": mem_total,
"available": mem_available,
},
"throttling": throttling, "throttling": throttling,
}, },
} }
@ -123,7 +118,7 @@ class HwInfoSubmanager(BaseInfoSubmanager):
return None return None
return self.__dt_cache[name] return self.__dt_cache[name]
async def __read_platform_file(self) -> tuple[(str | None), (str | None), (str | None)]: async def __read_platform_file(self) -> dict:
try: try:
text = await aiotools.read_file(self.__platform_path) text = await aiotools.read_file(self.__platform_path)
parsed: dict[str, str] = {} parsed: dict[str, str] = {}
@ -132,10 +127,14 @@ class HwInfoSubmanager(BaseInfoSubmanager):
if row: if row:
(key, value) = row.split("=", 1) (key, value) = row.split("=", 1)
parsed[key.strip()] = value.strip() parsed[key.strip()] = value.strip()
return (parsed["PIKVM_MODEL"], parsed["PIKVM_VIDEO"], parsed["PIKVM_BOARD"]) return {
"model": parsed["PIKVM_MODEL"],
"video": parsed["PIKVM_VIDEO"],
"board": parsed["PIKVM_BOARD"],
}
except Exception: except Exception:
get_logger(0).exception("Can't read device model") get_logger(0).exception("Can't read device model")
return (None, None, None) return {"model": None, "video": None, "board": None}
async def __get_cpu_temp(self) -> (float | None): async def __get_cpu_temp(self) -> (float | None):
temp_path = f"{env.SYSFS_PREFIX}/sys/class/thermal/thermal_zone0/temp" temp_path = f"{env.SYSFS_PREFIX}/sys/class/thermal/thermal_zone0/temp"
@ -164,13 +163,21 @@ class HwInfoSubmanager(BaseInfoSubmanager):
get_logger(0).error("Can't get CPU percent: %s", err) get_logger(0).error("Can't get CPU percent: %s", err)
return None return None
async def __get_mem(self) -> (tuple[float, int, int] | tuple[None, None, None]): async def __get_mem(self) -> dict:
try: try:
st = psutil.virtual_memory() st = psutil.virtual_memory()
return (st.percent, st.total, st.available) return {
"percent": st.percent,
"total": st.total,
"available": st.available,
}
except Exception as err: except Exception as err:
get_logger(0).error("Can't get memory info: %s", err) get_logger(0).error("Can't get memory info: %s", err)
return (None, None, None) return {
"percent": None,
"total": None,
"available": None,
}
async def __get_throttling(self) -> (dict | None): async def __get_throttling(self) -> (dict | None):
# https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=147781&start=50#p972790 # https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=147781&start=50#p972790