TrueChartsClone/charts/incubator/frigate/templates/_configmap.tpl

503 lines
14 KiB
Smarty

{{/* Define the configmap */}}
{{- define "frigate.configmap" -}}
{{- $configName := printf "%s-frigate-config" (include "tc.common.names.fullname" .) }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $configName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
config.yml: |
database:
path: /db/frigate.db
mqtt:
{{- include "frigate.mqtt" .Values.frigate.mqtt | indent 6 }}
{{- if and .Values.frigate.detectors.render_config .Values.frigate.detectors.config }}
detectors:
{{- include "frigate.detectors" .Values.frigate.detectors | indent 6 }}
{{- end }}
{{- if .Values.frigate.model.render_config }}
model:
{{- include "frigate.model" .Values.frigate.model | indent 6 }}
{{- end }}
{{- if .Values.frigate.logger.render_config }}
logger:
{{- include "frigate.logger" .Values.frigate.logger | indent 6 }}
{{- end }}
{{- if .Values.frigate.birdseye.render_config }}
birdseye:
{{- include "frigate.birdseye" .Values.frigate.birdseye | indent 6 }}
{{- end }}
{{- if .Values.frigate.ffmpeg.render_config }}
ffmpeg:
{{- include "frigate.ffmpeg" .Values.frigate.ffmpeg | indent 6 }}
{{- end }}
{{- if .Values.frigate.detect.render_config }}
detect:
{{- include "frigate.detect" .Values.frigate.detect | indent 6 }}
{{- end -}}
{{- if .Values.frigate.objects.render_config }}
objects:
{{- include "frigate.objects" .Values.frigate.objects | indent 6 }}
{{- end }}
{{- if .Values.frigate.motion.render_config }}
motion:
{{- include "frigate.motion" .Values.frigate.motion | indent 6 }}
{{- end }}
{{- if .Values.frigate.record.render_config }}
record:
{{- include "frigate.record" .Values.frigate.record | indent 6 }}
{{- end }}
{{- if .Values.frigate.snapshots.render_config }}
snapshots:
{{- include "frigate.snapshots" .Values.frigate.snapshots | indent 6 }}
{{- end }}
{{- if .Values.frigate.rtmp.render_config }}
rtmp:
{{- include "frigate.rtmp" .Values.frigate.rtmp | indent 6 }}
{{- end }}
{{- if .Values.frigate.live.render_config }}
live:
{{- include "frigate.live" .Values.frigate.live | indent 6 }}
{{- end }}
{{- if .Values.frigate.timestamp_style.render_config }}
timestamp_style:
{{- include "frigate.timestamp_style" .Values.frigate.timestamp_style | indent 6 }}
{{- end }}
{{- $cameras := .Values.frigate.cameras }}
cameras:
{{- range $cam := $cameras }}
{{ $cam.camera_name | required "You need to provide a camera name" }}:
ffmpeg:
inputs:
{{- range $input := $cam.ffmpeg.inputs }}
- path: {{ $input.path | required "You need to provide a path" }}
roles:
{{- range $role := $input.roles }}
- {{ $role }}
{{- else -}}
{{- fail "You need to provide roles" -}}
{{- end -}}
{{- include "frigate.ffmpeg" $input | indent 14 }}
{{- end -}} {{/* End range $cam.ffmpeg.inputs */}}
{{- include "frigate.ffmpeg" $cam.ffmpeg | indent 10 }}
{{- with $cam.best_image_timeout }}
best_image_timeout: {{ . }}
{{- end -}}
{{- with $cam.zones }}
zones:
{{- range $zone := . }}
{{ $zone.name | required "You have to specify a zone name" }}:
coordinates: {{ required "You have to specify coordinates" .coordinates }}
{{- with $zone.objects }}
objects:
{{- range $obj := . }}
- {{ $obj }}
{{- end -}}
{{- end -}}
{{- with $zone.filters }}
filters:
{{- range $filter := . }}
{{ $filter.object | required "You have to specify an object" }}:
{{- with $filter.min_area }}
min_area: {{ . }}
{{- end -}}
{{- with $filter.max_area }}
max_area: {{ . }}
{{- end -}}
{{- with $filter.threshold }}
threshold: {{ . }}
{{- end -}}
{{- end -}} {{/* end range filters */}}
{{- end -}} {{/* end with filter */}}
{{- end -}} {{/* end range zones */}}
{{- end -}} {{/* end with zones */}}
{{- if $cam.mqtt.render_config -}}
{{- with $cam.mqtt }}
mqtt:
enabled: {{ ternary "True" "False" .enabled }}
timestamp: {{ ternary "True" "False" .timestamp }}
bounding_box: {{ ternary "True" "False" .bounding_box }}
crop: {{ ternary "True" "False" .crop }}
{{- with .height }}
height: {{ . }}
{{- end -}}
{{- with .quality }}
quality: {{ . }}
{{- end -}}
{{- with .required_zones }}
required_zones:
{{- range $zone := . }}
- {{ $zone }}
{{- end -}}
{{- end -}}
{{- end -}} {{/* end with mqtt */}}
{{- end -}} {{/* end if mqtt.render_config */}}
{{- if $cam.ui.render_config -}}
{{- with $cam.ui }}
ui:
{{- if not (kindIs "invalid" .order) }}
order: {{ .order }}
{{- end }}
dashboard: {{ ternary "True" "False" .dashboard }}
{{- end -}} {{/* end with ui */}}
{{- end -}} {{/* end if ui.render_config */}}
{{- end -}} {{/* end range cameras */}}
{{- end }}
{{- define "frigate.ffmpeg" -}}
{{- $ffmpeg := . -}}
{{- with $ffmpeg.global_args }}
global_args: {{ . }}
{{- end -}}
{{- with $ffmpeg.input_args }}
input_args: {{ . }}
{{- end -}}
{{- with $ffmpeg.hwaccel_args }}
hwaccel_args: {{ . }}
{{- end -}}
{{- if $ffmpeg.output_args -}}
{{- if or $ffmpeg.output_args.detect $ffmpeg.output_args.record $ffmpeg.output_args.rtmp }}
output_args:
{{- with $ffmpeg.output_args.detect }}
detect: {{ . }}
{{- end -}}
{{- with $ffmpeg.output_args.record }}
record: {{ . }}
{{- end -}}
{{- with $ffmpeg.output_args.rtmp }}
rtmp: {{ . }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "frigate.detect" -}}
{{- $detect := . }}
enabled: {{ ternary "True" "False" $detect.enabled }}
{{- with $detect.width }}
width: {{ . }}
{{- end -}}
{{- with $detect.height }}
height: {{ . }}
{{- end -}}
{{- with $detect.fps }}
fps: {{ . }}
{{- end -}}
{{- with $detect.max_disappeared }}
max_disappeared: {{ . }}
{{- end -}}
{{- if or (not (kindIs "invalid" $detect.stationary.interval)) $detect.stationary.threshold $detect.stationary.set_max_frames }}
stationary:
{{- if not (kindIs "invalid" $detect.stationary.interval) }} {{/* invalid kind means its empty (0 is not empty) */}}
interval: {{ $detect.stationary.interval }}
{{- end -}}
{{- with $detect.stationary.threshold }}
threshold: {{ . }}
{{- end -}}
{{- if (hasKey $detect.stationary "max_frames") }}
{{- if or $detect.stationary.max_frames.default $detect.stationary.max_frames.objects }}
max_frames:
{{- with $detect.stationary.max_frames.default }}
default: {{ . }}
{{- end -}}
{{- with $detect.stationary.max_frames.objects }}
objects:
{{- range $obj := . }}
{{ $obj.object | required "You need to provide an object" }}: {{ $obj.frames | required "You need to provide frames" }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "frigate.motion" -}}
{{- $motion := . -}}
{{- with $motion.threshold }}
threshold: {{ . }}
{{- end -}}
{{- with $motion.contour_area }}
contour_area: {{ . }}
{{- end -}}
{{- with $motion.delta_alpha }}
delta_alpha: {{ . }}
{{- end -}}
{{- with $motion.frame_alpha }}
frame_alpha: {{ . }}
{{- end -}}
{{- with $motion.frame_height }}
frame_height: {{ . }}
{{- end -}}
{{- with $motion.mask }}
mask: {{ . }}
{{- end }}
improve_contrast: {{ ternary "True" "False" $motion.improve_contrast }}
{{- with $motion.mqtt_off_delay }}
mqtt_off_delay: {{ . }}
{{- end -}}
{{- end -}}
{{- define "frigate.record" -}}
{{- $record := . }}
enabled: {{ ternary "True" "False" $record.enabled }}
{{- with $record.expire_interval }}
expire_interval: {{ . }}
{{- end -}}
{{- if $record.retain.render_config }}
retain:
{{- if not (kindIs "invalid" $record.retain.days) }}
days: {{ $record.retain.days }}
{{- end -}}
{{- with $record.retain.mode }}
mode: {{ . }}
{{- end -}}
{{- end -}}
{{- if $record.events.render_config }}
events:
{{- if not (kindIs "invalid" $record.events.pre_capture) }}
pre_capture: {{ $record.events.pre_capture }}
{{- end -}}
{{- if not (kindIs "invalid" $record.events.post_capture) }}
post_capture: {{ $record.events.post_capture }}
{{- end -}}
{{- with $record.events.objects }}
objects:
{{- range $obj := . }}
- {{ $obj }}
{{- end -}}
{{- end -}}
{{- with $record.events.required_zones }}
required_zones:
{{- range $zone := . }}
- {{ $zone }}
{{- end -}}
{{- end -}}
{{- if $record.events.retain.render_config }}
retain:
default: {{ $record.events.retain.default | required "You need to provide default retain days" }}
{{- with $record.events.retain.mode }}
mode: {{ . }}
{{- end -}}
{{- with $record.events.retain.objects }}
objects:
{{- range $obj := . }}
{{ $obj.object | required "You need to provide an object" }}: {{ $obj.days | required "You need to provide default retain days" }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "frigate.objects" -}}
{{- $objects := . -}}
{{- with $objects.track }}
track:
{{- range $track := . }}
- {{ $track }}
{{- end -}}
{{- end -}}
{{- with $objects.mask }}
mask: {{ . }}
{{- end -}}
{{- with $objects.filters }}
filters:
{{- range $filter := . }}
{{ $filter.object | required "You need to provide an object" }}:
{{- with $filter.min_area }}
min_area: {{ . }}
{{- end -}}
{{- with $filter.max_area }}
max_area: {{ . }}
{{- end -}}
{{- with $filter.min_ratio }}
min_ratio: {{ . }}
{{- end -}}
{{- with $filter.max_ratio }}
max_ratio: {{ . }}
{{- end -}}
{{- with $filter.min_score }}
min_score: {{ . }}
{{- end -}}
{{- with $filter.threshold }}
threshold: {{ . }}
{{- end -}}
{{- with $filter.mask }}
mask: {{ . }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "frigate.birdseye" -}}
{{- $birdseye := . }}
enabled: {{ ternary "True" "False" $birdseye.enabled }}
{{- with $birdseye.width }}
width: {{ . }}
{{- end -}}
{{- with $birdseye.height }}
height: {{ . }}
{{- end -}}
{{- with $birdseye.quality }}
quality: {{ . }}
{{- end -}}
{{- with $birdseye.mode }}
mode: {{ . }}
{{- end -}}
{{- end -}}
{{- define "frigate.timestamp_style" -}}
{{- $timestamp_style := . -}}
{{- with $timestamp_style.position }}
position: {{ . }}
{{- end -}}
{{- with $timestamp_style.format }}
format: {{ . }}
{{- end -}}
{{- if $timestamp_style.color.render_config }}
color:
red: {{ $timestamp_style.color.red }}
green: {{ $timestamp_style.color.green }}
blue: {{ $timestamp_style.color.blue }}
{{- end -}}
{{- with $timestamp_style.thickness }}
thickness: {{ . }}
{{- end -}}
{{- with $timestamp_style.effect }}
effect: {{ $timestamp_style.effect }}
{{- end -}}
{{- end -}}
{{- define "frigate.live" -}}
{{- $live := . -}}
{{- with $live.height }}
height: {{ . }}
{{- end -}}
{{- with $live.quality }}
quality: {{ . }}
{{- end -}}
{{- end -}}
{{- define "frigate.rtmp" -}}
{{- $rtmp := . }}
enabled: {{ ternary "True" "False" $rtmp.enabled }}
{{- end -}}
{{- define "frigate.snapshots" -}}
{{- $snapshots := . }}
enabled: {{ ternary "True" "False" $snapshots.enabled }}
clean_copy: {{ ternary "True" "False" $snapshots.clean_copy }}
timestamp: {{ ternary "True" "False" $snapshots.timestamp }}
bounding_box: {{ ternary "True" "False" $snapshots.bounding_box }}
crop: {{ ternary "True" "False" $snapshots.crop }}
{{- with $snapshots.height }}
height: {{ . }}
{{- end -}}
{{- with $snapshots.required_zones }}
required_zones:
{{- range $zone := . }}
- {{ $zone }}
{{- end -}}
{{- end -}}
{{- if $snapshots.retain.render_config }}
retain:
default: {{ $snapshots.retain.default | required "You need to provide default retain days" }}
{{- with $snapshots.retain.objects }}
objects:
{{- range $obj := . }}
{{ $obj.object | required "You need to provide an object" }}: {{ $obj.days | required "You need to provide default retain days" }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "frigate.detectors" -}}
{{- $detectors := . -}}
{{- range $detector := $detectors.config }}
{{ $detector.name | required "You need to provide a detector name" }}:
type: {{ $detector.type | required "You need to provide a detector type" }}
{{- with $detector.device }}
device: {{ . }}
{{- end -}}
{{- with $detector.num_threads }}
num_threads: {{ . }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "frigate.model" -}}
{{ $model := . }}
width: {{ $model.width | required "You need to provide a model width" }}
height: {{ $model.height | required "You need to provide a model height" }}
{{- with $model.path }}
path: {{ . }}
{{- end -}}
{{- with $model.labelmap_path }}
labelmap_path: {{ . }}
{{- end -}}
{{- with $model.labelmap }}
labelmap:
{{- range $lmap := . }}
{{ $lmap.model | required "You need to provide a labelmap model" }}: {{ $lmap.name | required "You need to provide a labelmap name" }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "frigate.logger" -}}
{{- $logger := . }}
default: {{ $logger.default }}
{{- with $logger.logs }}
logs:
{{- range $log := . }}
{{ $log.component | required "You need to provide a logger cmponent" }}: {{ $log.verbosity | required "You need to provide logger verbosity" }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "frigate.mqtt" -}}
{{- $mqtt := . }}
host: {{ required "You need to provide an MQTT host" $mqtt.host }}
{{- with $mqtt.port }}
port: {{ . }}
{{- end -}}
{{- with $mqtt.topic_prefix }}
topic_prefix: {{ . }}
{{- end -}}
{{- with $mqtt.client_id }}
client_id: {{ . }}
{{- end -}}
{{- if not (kindIs "invalid" $mqtt.stats_interval) }}
stats_interval: {{ $mqtt.stats_interval }}
{{- end -}}
{{- with $mqtt.user }}
user: {{ . }}
{{- end -}}
{{- with $mqtt.password }}
password: {{ . }}
{{- end -}}
{{- end -}}