---
# Copyright 2017-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.

{{- if .Values.kpi_exporter.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ template "kpi-exporter.fullname" . }}
  labels:
    release: {{ .Release.Name }}
spec:
  replicas: {{ .Values.kpi_exporter.replicas }}
  selector:
    matchLabels:
      name: {{ template "kpi-exporter.fullname" . }}
      release: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app: kpi-exporter
        release: {{ .Release.Name }}
    spec:
      containers:
        - name: kpi-exporter
          image:  "{{ .Values.global.registry }}{{ .Values.images.kpi_exporter.repository }}:{{ tpl .Values.images.kpi_exporter.tag . }}"
          imagePullPolicy: "{{ .Values.images.kpi_exporter.pullPolicy }}"
          args: ["-broker={{ .Values.kpi_exporter.kpi_broker }}"]
          ports:
            - containerPort: 8080
              port: 8080
              protocol: TCP
          volumeMounts:
            - name: exporter-config
              mountPath: /etc/config/conf.yaml
              subPath: conf.yaml
      volumes:
        - name: exporter-config
          configMap:
            name: {{ template "kpi-exporter.fullname" . }}
{{- end }}
