mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
remove side effects from password substitution
This commit is contained in:
parent
8d01cc4807
commit
ab93cae4c0
@ -58,7 +58,7 @@ class MqttConfig(BaseModel):
|
|||||||
def validate_password(cls, v, values):
|
def validate_password(cls, v, values):
|
||||||
if (v is None) != (values["user"] is None):
|
if (v is None) != (values["user"] is None):
|
||||||
raise ValueError("Password must be provided with username.")
|
raise ValueError("Password must be provided with username.")
|
||||||
return v if v is None else v.format(**FRIGATE_ENV_VARS)
|
return v
|
||||||
|
|
||||||
|
|
||||||
class RetainConfig(BaseModel):
|
class RetainConfig(BaseModel):
|
||||||
@ -328,10 +328,6 @@ class CameraInput(BaseModel):
|
|||||||
default_factory=list, title="FFmpeg input arguments."
|
default_factory=list, title="FFmpeg input arguments."
|
||||||
)
|
)
|
||||||
|
|
||||||
@validator("path")
|
|
||||||
def sub_env_vars(cls, v):
|
|
||||||
return v.format(**FRIGATE_ENV_VARS)
|
|
||||||
|
|
||||||
|
|
||||||
class CameraFfmpegConfig(FfmpegConfig):
|
class CameraFfmpegConfig(FfmpegConfig):
|
||||||
inputs: List[CameraInput] = Field(title="Camera inputs.")
|
inputs: List[CameraInput] = Field(title="Camera inputs.")
|
||||||
@ -665,6 +661,12 @@ class FrigateConfig(BaseModel):
|
|||||||
def runtime_config(self) -> FrigateConfig:
|
def runtime_config(self) -> FrigateConfig:
|
||||||
"""Merge camera config with globals."""
|
"""Merge camera config with globals."""
|
||||||
config = self.copy(deep=True)
|
config = self.copy(deep=True)
|
||||||
|
|
||||||
|
# MQTT password substitution
|
||||||
|
if config.mqtt.password:
|
||||||
|
config.mqtt.password = config.mqtt.password.format(**FRIGATE_ENV_VARS)
|
||||||
|
|
||||||
|
# Global config to propegate down to camera level
|
||||||
global_config = config.dict(
|
global_config = config.dict(
|
||||||
include={
|
include={
|
||||||
"clips": {"retain"},
|
"clips": {"retain"},
|
||||||
@ -682,6 +684,10 @@ class FrigateConfig(BaseModel):
|
|||||||
merged_config = deep_merge(camera.dict(exclude_unset=True), global_config)
|
merged_config = deep_merge(camera.dict(exclude_unset=True), global_config)
|
||||||
camera_config = CameraConfig.parse_obj({"name": name, **merged_config})
|
camera_config = CameraConfig.parse_obj({"name": name, **merged_config})
|
||||||
|
|
||||||
|
# FFMPEG input substitution
|
||||||
|
for input in camera_config.ffmpeg.inputs:
|
||||||
|
input.path = input.path.format(**FRIGATE_ENV_VARS)
|
||||||
|
|
||||||
# Add default filters
|
# Add default filters
|
||||||
object_keys = camera_config.objects.track
|
object_keys = camera_config.objects.track
|
||||||
if camera_config.objects.filters is None:
|
if camera_config.objects.filters is None:
|
||||||
|
Loading…
Reference in New Issue
Block a user