{{- /*
# Copyright 2020-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
*/ -}}

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deepstream
  labels:
{{ tuple "deepstream" . | include "deepstream.metadata_labels" | indent 4 }}
spec:
  selector:
    matchLabels:
{{ tuple "deepstream" . | include "deepstream.metadata_labels" | indent 6 }}
  template:
    metadata:
      labels:
{{ tuple "deepstream" . | include "deepstream.metadata_labels" | indent 8 }}
    spec:
    {{- if .Values.nodeSelectors.enabled }}
      nodeSelector:
        {{ .Values.nodeSelectors.deepstream.label }}: {{ .Values.nodeSelectors.deepstream.value }}
    {{- end }}
      hostNetwork: true
      containers:
      - name: deepstream
        image: {{ .Values.images.tags.deepstreamTx2 }}
        imagePullPolicy: {{ .Values.images.pullPolicy }}
      {{- if .Values.resources.enabled }}
        resources:
{{ toYaml .Values.resources.deepstream | indent 10 }}
      {{- end }}
        env:
        - name: DISPLAY
          value: {{ .Values.config.deepstream.display.display }}
        volumeMounts:
        - name: configs
          mountPath: /configs
          readOnly: true
        - name: x11-unix
          mountPath: /tmp/.X11-unix
        - name: argus-socket
          mountPath: /tmp/argus_socket
      volumes:
      - name: configs
        configMap:
          defaultMode: 0644
          name: deepstream
      - name: x11-unix
        hostPath:
          path: /tmp/.X11-unix
      - name: argus-socket
        hostPath:
          path: /tmp/argus_socket
