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