{{- /*
# 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: v1
kind: ConfigMap
metadata:
  name: deepstream
  labels:
{{ tuple "deepstream" . | include "deepstream.metadata_labels" | indent 4 }}
data:
  main_config.txt: |
{{ tuple "config/_main_config.txt.tpl" . | include "deepstream.template" | indent 4 }}
  amqp_config.txt: |
{{ tuple "config/_amqp_config.txt.tpl" . | include "deepstream.template" | indent 4 }}
  infer_config.txt: |
{{ .Files.Get "files/infer_config.txt" | indent 4 }}
  msg_config.txt: |
{{ .Files.Get "files/msg_config.txt" | indent 4 }}
  tracker_config.yml: |
{{ .Files.Get "files/tracker_config.yml" | indent 4 }}
