assign roles when single input and consolidate validation

This commit is contained in:
Blake Blackshear
2021-10-16 07:46:39 -05:00
parent f738275d21
commit 86a741b6e6
2 changed files with 21 additions and 24 deletions

View File

@@ -504,6 +504,10 @@ class CameraConfig(FrigateBaseModel):
for idx, (name, z) in enumerate(config["zones"].items())
}
# add roles to the input if there is only one
if len(config["ffmpeg"]["inputs"]) == 1:
config["ffmpeg"]["inputs"][0]["roles"] = ["record", "rtmp", "detect"]
super().__init__(**config)
@property
@@ -798,6 +802,23 @@ class FrigateConfig(FrigateBaseModel):
raise ValueError("Zones cannot share names with cameras")
return v
@validator("cameras")
def ensure_cameras_are_not_missing_roles(cls, v: Dict[str, CameraConfig]):
for name, camera in v.items():
assigned_roles = list(
set([r for i in camera.ffmpeg.inputs for r in i.roles])
)
if camera.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.rtmp.enabled and not "rtmp" in assigned_roles:
raise ValueError(
f"Camera {name} has rtmp enabled, but rtmp is not assigned to an input."
)
return v
@classmethod
def parse_file(cls, config_file):
with open(config_file) as f: