from .config import ConfigUnit from typing import Optional class ServicesListConfig(ConfigUnit): NAME = 'services_list' @classmethod def schema(cls) -> Optional[dict]: return { 'type': 'list', 'empty': False, 'schema': { 'type': 'string' } } class LinuxBoardsConfig(ConfigUnit): NAME = 'linux_boards' @classmethod def schema(cls) -> Optional[dict]: return { 'type': 'dict', 'schema': { 'mdns': {'type': 'string', 'required': True}, 'board': {'type': 'string', 'required': True}, 'network': { 'type': 'list', 'required': True, 'empty': False, 'allowed': ['wifi', 'ethernet'] }, 'ram': {'type': 'integer', 'required': True}, 'online': {'type': 'boolean', 'required': True}, # optional 'services': { 'type': 'list', 'empty': False, 'allowed': ServicesListConfig().get() }, 'ext_hdd': { 'type': 'list', 'schema': { 'type': 'dict', 'schema': { 'mountpoint': {'type': 'string', 'required': True}, 'size': {'type': 'integer', 'required': True} } }, }, } } def get_board_disks(self, name: str) -> list[dict]: return self[name]['ext_hdd'] def get_board_disks_count(self, name: str) -> int: return len(self[name]['ext_hdd'])