prepare config for healthchecks integration

This commit is contained in:
Alex Tau 2025-08-13 16:59:23 +03:00
parent 4558cf9e6f
commit c01ab8303c
8 changed files with 89 additions and 34 deletions

View file

@ -5,6 +5,7 @@ from typing import Optional
from alt_utils import NestedDeserializableDataclass
from . import enums
from .alert_channels import AlertChannelsConfig
from .checks.cpu import CpuCheckConfig
from .checks.net import NetCheckConfig
from .checks.ram import RamCheckConfig
@ -21,16 +22,10 @@ class ChecksConfig(NestedDeserializableDataclass):
net: NetCheckConfig = field(default_factory=NetCheckConfig)
@dataclass
class TelegramConfig:
creds: str
room_id: int
@dataclass
class Config(NestedDeserializableDataclass):
checks: ChecksConfig
telegram: TelegramConfig
alert_channels: AlertChannelsConfig
enabled_check_sets: list[enums.CheckSet] = field(default_factory=list)
log_level: enums.LogLevelName = enums.LogLevelName.INFO

View file

@ -0,0 +1,28 @@
from dataclasses import dataclass, field
from typing import Optional
from alt_utils import NestedDeserializableDataclass
@dataclass
class TelegramConfig:
creds: str
room_id: int
@dataclass
class HealthchecksConfig:
pinging_keys: str | dict[str, str]
def __post_init__(self):
lines = self.pinging_keys.split()
self.pinging_keys = {}
for l in lines:
slug, key = l.split(":")
self.pinging_keys[slug] = key
@dataclass
class AlertChannelsConfig(NestedDeserializableDataclass):
telegram: Optional[TelegramConfig] = None
healthchecks: Optional[HealthchecksConfig] = None