63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
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},
|
|
'location': {'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'])
|