mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-10-15 03:02:49 +03:00
Split config.py into multiple files (#14038)
* Replace logging.warn with logging.warning * Install config global state early * Split config.py into more manageable pieces
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field, ValidationInfo, model_validator
|
||||
from typing_extensions import Self
|
||||
|
||||
from frigate.const import FREQUENCY_STATS_POINTS
|
||||
|
||||
from .base import FrigateBaseModel
|
||||
from .env import EnvString
|
||||
|
||||
__all__ = ["MqttConfig"]
|
||||
|
||||
|
||||
class MqttConfig(FrigateBaseModel):
|
||||
enabled: bool = Field(default=True, title="Enable MQTT Communication.")
|
||||
host: str = Field(default="", title="MQTT Host")
|
||||
port: int = Field(default=1883, title="MQTT Port")
|
||||
topic_prefix: str = Field(default="frigate", title="MQTT Topic Prefix")
|
||||
client_id: str = Field(default="frigate", title="MQTT Client ID")
|
||||
stats_interval: int = Field(
|
||||
default=60, ge=FREQUENCY_STATS_POINTS, title="MQTT Camera Stats Interval"
|
||||
)
|
||||
user: Optional[EnvString] = Field(default=None, title="MQTT Username")
|
||||
password: Optional[EnvString] = Field(
|
||||
default=None, title="MQTT Password", validate_default=True
|
||||
)
|
||||
tls_ca_certs: Optional[str] = Field(default=None, title="MQTT TLS CA Certificates")
|
||||
tls_client_cert: Optional[str] = Field(
|
||||
default=None, title="MQTT TLS Client Certificate"
|
||||
)
|
||||
tls_client_key: Optional[str] = Field(default=None, title="MQTT TLS Client Key")
|
||||
tls_insecure: Optional[bool] = Field(default=None, title="MQTT TLS Insecure")
|
||||
|
||||
@model_validator(mode="after")
|
||||
def user_requires_pass(self, info: ValidationInfo) -> Self:
|
||||
if (self.user is None) != (self.password is None):
|
||||
raise ValueError("Password must be provided with username.")
|
||||
return self
|
||||
Reference in New Issue
Block a user