# Copyright 2022-2024 Open Networking Foundation (ONF) and the ONF Contributors
#
# 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: "{{ .Chart.Name }}"
  labels:
    release: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: "{{ .Chart.Name }}"
  template:
    metadata:
      labels:
        app: "{{ .Chart.Name }}"
    spec:
      containers:
      - env:
        - name: POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: VOLTHA_HOST
          value: "$(NAMESPACE)-voltha-api.$(NAMESPACE).svc.cluster.local"
        - name: VOLTHA_PORT
          value: "55555"
        - name: KV_STORE_TYPE
          value: "{{ .Values.services.kvstore.type }}"
        - name: KV_STORE_HOST
          value: "{{ .Values.services.kvstore.address }}"
        - name: KV_STORE_PORT
          value: "{{ .Values.services.kvstore.port }}"
        - name: KAFKA_ADAPTER_HOST
          value: "{{ tpl .Values.services.kafka.cluster.address . }}"
        - name: KAFKA_ADAPTER_PORT
          value: "9092"
        - name: LOG_LEVEL
          value: .Values.global.log_level
        image: '{{ tpl .Values.images.voltha_go_controller.registry . }}{{ tpl .Values.images.voltha_go_controller.repository . }}:{{ tpl ( tpl .Values.images.voltha_go_controller.tag . ) . }}'
        imagePullPolicy: {{ tpl .Values.images.voltha_go_controller.pullPolicy . }}
        name: voltha-go-controller
        ports:
        - containerPort: {{ .Values.voltha_go_controller.sshPort }}
          name: ssh-port
        - containerPort: {{ .Values.voltha_go_controller.uiPort }}
          name: ui-port
          protocol: "{{ .Values.voltha_go_controller.uiProtocol }}"
      restartPolicy: "Always"
