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

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kpi-exporter
  labels:
    release: {{ .Release.Name }}
spec:
  replicas: {{ .Values.nem_voltha_kpi_exporter_replicas }}
  template:
    metadata:
      labels:
        app: kpi-exporter
        release: {{ .Release.Name }}
    spec:
      containers:
        - name: kpi-exporter
          image:  "{{ .Values.global.registry }}{{ .Values.images.voltha_kpi_exporter.repository }}:{{ tpl .Values.images.voltha_kpi_exporter.tag . }}"
          imagePullPolicy: "{{ .Values.images.voltha_kpi_exporter.pullPolicy }}"
          args: ["-broker={{ .Values.args.voltha_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: exporter-configmap
