2024-05-01 13:25:07 +03:00

32 lines
1.0 KiB
Python

from typing import Iterable
import pySMART
import api
class Monitor:
def __init__(self, device_names: Iterable[str]):
self._monitored_devices: list[str] = []
for name in device_names:
self._monitored_devices.append(name)
async def initialize(self) -> None:
for name in self._monitored_devices:
device = pySMART.Device(name)
if device.interface == None:
raise RuntimeError(f"Storage device {name} not found.")
async def poll(self) -> list[api.MonitoredStorage]:
devices = []
for name in self._monitored_devices:
device = pySMART.Device(name)
if device.interface == None:
devices.append(api.MonitoredStorage(name=name, smart_pass=False, present=False))
continue
smart_pass = True if device.assessment == "PASS" else False
devices.append(api.MonitoredStorage(name=name, smart_pass=smart_pass, present=True))
return devices