mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-03 01:35:22 +03:00
Move existing checks to own functions
This commit is contained in:
parent
9b5c6bea56
commit
58041cb9ab
@ -786,6 +786,56 @@ class LoggerConfig(FrigateBaseModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def verify_config_roles(camera_config: CameraConfig) -> None:
|
||||||
|
"""Verify that roles are setup in the config correctly."""
|
||||||
|
assigned_roles = list(
|
||||||
|
set([r for i in camera_config.ffmpeg.inputs for r in i.roles])
|
||||||
|
)
|
||||||
|
|
||||||
|
if camera_config.record.enabled and not "record" in assigned_roles:
|
||||||
|
raise ValueError(
|
||||||
|
f"Camera {camera_config.name} has record enabled, but record is not assigned to an input."
|
||||||
|
)
|
||||||
|
|
||||||
|
if camera_config.rtmp.enabled and not "rtmp" in assigned_roles:
|
||||||
|
raise ValueError(
|
||||||
|
f"Camera {camera_config.name} has rtmp enabled, but rtmp is not assigned to an input."
|
||||||
|
)
|
||||||
|
|
||||||
|
if camera_config.restream.enabled and not "restream" in assigned_roles:
|
||||||
|
raise ValueError(
|
||||||
|
f"Camera {camera_config.name} has restream enabled, but restream is not assigned to an input."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def verify_old_retain_config(camera_config: CameraConfig) -> None:
|
||||||
|
"""Leave log if old retain_days is used."""
|
||||||
|
if not camera_config.record.retain_days is None:
|
||||||
|
logger.warning(
|
||||||
|
"The 'retain_days' config option has been DEPRECATED and will be removed in a future version. Please use the 'days' setting under 'retain'"
|
||||||
|
)
|
||||||
|
if camera_config.record.retain.days == 0:
|
||||||
|
camera_config.record.retain.days = camera_config.record.retain_days
|
||||||
|
|
||||||
|
|
||||||
|
def verify_recording_retention(camera_config: CameraConfig) -> None:
|
||||||
|
"""Verify that recording retention modes are ranked correctly."""
|
||||||
|
rank_map = {
|
||||||
|
RetainModeEnum.all: 0,
|
||||||
|
RetainModeEnum.motion: 1,
|
||||||
|
RetainModeEnum.active_objects: 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
camera_config.record.retain.days != 0
|
||||||
|
and rank_map[camera_config.record.retain.mode]
|
||||||
|
> rank_map[camera_config.record.events.retain.mode]
|
||||||
|
):
|
||||||
|
logger.warning(
|
||||||
|
f"{camera_config.name}: Recording retention is configured for {camera_config.record.retain.mode} and event retention is configured for {camera_config.record.events.retain.mode}. The more restrictive retention policy will be applied."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class FrigateConfig(FrigateBaseModel):
|
class FrigateConfig(FrigateBaseModel):
|
||||||
mqtt: MqttConfig = Field(title="MQTT Configuration.")
|
mqtt: MqttConfig = Field(title="MQTT Configuration.")
|
||||||
database: DatabaseConfig = Field(
|
database: DatabaseConfig = Field(
|
||||||
@ -927,47 +977,10 @@ class FrigateConfig(FrigateBaseModel):
|
|||||||
**camera_config.motion.dict(exclude_unset=True),
|
**camera_config.motion.dict(exclude_unset=True),
|
||||||
)
|
)
|
||||||
|
|
||||||
# check runtime config
|
verify_config_roles(camera_config)
|
||||||
assigned_roles = list(
|
verify_old_retain_config(camera_config)
|
||||||
set([r for i in camera_config.ffmpeg.inputs for r in i.roles])
|
verify_recording_retention(camera_config)
|
||||||
)
|
|
||||||
if camera_config.record.enabled and not "record" in assigned_roles:
|
|
||||||
raise ValueError(
|
|
||||||
f"Camera {name} has record enabled, but record is not assigned to an input."
|
|
||||||
)
|
|
||||||
|
|
||||||
if camera_config.rtmp.enabled and not "rtmp" in assigned_roles:
|
|
||||||
raise ValueError(
|
|
||||||
f"Camera {name} has rtmp enabled, but rtmp is not assigned to an input."
|
|
||||||
)
|
|
||||||
|
|
||||||
if camera_config.restream.enabled and not "restream" in assigned_roles:
|
|
||||||
raise ValueError(
|
|
||||||
f"Camera {name} has restream enabled, but restream is not assigned to an input."
|
|
||||||
)
|
|
||||||
|
|
||||||
# backwards compatibility for retain_days
|
|
||||||
if not camera_config.record.retain_days is None:
|
|
||||||
logger.warning(
|
|
||||||
"The 'retain_days' config option has been DEPRECATED and will be removed in a future version. Please use the 'days' setting under 'retain'"
|
|
||||||
)
|
|
||||||
if camera_config.record.retain.days == 0:
|
|
||||||
camera_config.record.retain.days = camera_config.record.retain_days
|
|
||||||
|
|
||||||
# warning if the higher level record mode is potentially more restrictive than the events
|
|
||||||
rank_map = {
|
|
||||||
RetainModeEnum.all: 0,
|
|
||||||
RetainModeEnum.motion: 1,
|
|
||||||
RetainModeEnum.active_objects: 2,
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
camera_config.record.retain.days != 0
|
|
||||||
and rank_map[camera_config.record.retain.mode]
|
|
||||||
> rank_map[camera_config.record.events.retain.mode]
|
|
||||||
):
|
|
||||||
logger.warning(
|
|
||||||
f"{name}: Recording retention is configured for {camera_config.record.retain.mode} and event retention is configured for {camera_config.record.events.retain.mode}. The more restrictive retention policy will be applied."
|
|
||||||
)
|
|
||||||
# generate the ffmpeg commands
|
# generate the ffmpeg commands
|
||||||
camera_config.create_ffmpeg_cmds()
|
camera_config.create_ffmpeg_cmds()
|
||||||
config.cameras[name] = camera_config
|
config.cameras[name] = camera_config
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user