import json from dataclasses import dataclass from alt_utils import NestedDeserializableDataclass from alerting.enum import Severity from misc.common import CONFIG_FILE @dataclass class MatrixConfig: homeserver: str user_id: str device_id: str access_token: str room_id: str @dataclass class CheckDockerRegistryConfig: hub_url: str images: list[str] @dataclass class CheckRaidConfig: lvs: list[str] @dataclass class CheckWearoutDiskConfig: name: str severity: Severity @dataclass class CheckWearoutConfig(NestedDeserializableDataclass): disks: list[CheckWearoutDiskConfig] @dataclass class CheckLoginConfig: hostname: str @dataclass class ChecksConfig(NestedDeserializableDataclass): docker_registry: CheckDockerRegistryConfig raid: CheckRaidConfig wearout: CheckWearoutConfig login: CheckLoginConfig @dataclass class Config(NestedDeserializableDataclass): matrix: MatrixConfig checks: ChecksConfig def get_config() -> Config: with open(CONFIG_FILE) as f: cfg_dict = json.load(f) cfg = Config.from_dict(cfg_dict) return cfg