---
# Copyright 2017-2023 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.
{{- $log_level := tpl .Values.log_level . | lower }}

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ template "bbsim.fullname" . }}
  namespace: {{ .Release.Namespace }}
  labels:
    app: "bbsim"
    name: {{ template "bbsim.name" . }}
    chart: {{ template "bbsim.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: "bbsim"
      name: {{ template "bbsim.name" . }}
      release: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app: "bbsim"
        name: {{ template "bbsim.name" . }}
        release: {{ .Release.Name }}
        app.kubernetes.io/name: "bbsim"
        app.kubernetes.io/version: {{ quote .Chart.AppVersion }}
        app.kubernetes.io/component: "device-emulator"
        app.kubernetes.io/part-of: "voltha"
        app.kubernetes.io/managed-by: {{ quote .Release.Service }}
        helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
    spec:
      serviceAccount: {{ .Values.serviceAccountName }}
      serviceAccountName: {{ .Values.serviceAccountName }}
      containers:
        - name: {{ .Chart.Name }}
          image: '{{ tpl .Values.images.bbsim.registry . }}{{ tpl .Values.images.bbsim.repository . }}:{{ tpl ( tpl .Values.images.bbsim.tag . ) . }}'
          imagePullPolicy: {{ tpl .Values.images.bbsim.pullPolicy . }}
          securityContext:
            privileged: {{ .Values.privileged }}
          livenessProbe:
            exec:
              command:
              - bbsimctl
              - olt
              - get
            initialDelaySeconds: 5
            periodSeconds: 30
            timeoutSeconds: 5
          readinessProbe:
            httpGet:
              path: /v2/cfg
              port: {{ .Values.bbsim_sadis_port }}
              httpHeaders:
            initialDelaySeconds: 5
            periodSeconds: 30
            timeoutSeconds: 5
          command: [
            "/app/bbsim",
            "-openolt_address", "0.0.0.0:{{ .Values.olt_tcp_port }}",
            "-dmi_server_address", ":{{ .Values.bbsim_dmi_port}}",
            "-olt_id", "{{ .Values.olt_id }}",
            "-nni", "{{ .Values.nni }}",
            "-nni_speed", "{{ .Values.nni_speed }}",
            "-pon", "{{ .Values.pon }}",
            "-onu", "{{ .Values.onu }}",
            "-uni", "{{ .Values.uni }}",
            "-pots", "{{ .Values.pots }}",
            "-omccVersion", "{{ .Values.omccVersion }}",
            "-nni_dhcp_trap_vid", "{{ .Values.nni_dhcp_trap_vid }}",
            "-bp_format", "{{ .Values.bp_format }}",
            "-oltRebootDelay", "{{ .Values.oltRebootDelay }}",
            "-logLevel", "{{ $log_level }}",
            "-delay", "{{ .Values.delay }}",
            "-services", "configs/services.yaml",
            {{ if .Values.ponPortsConfig -}}
            "-pon_port_config_file", "configs/pon-config.yaml",
            {{ end -}}
            "-rest_api_address", ":{{ .Values.bbsim_rest_port }}",
            "-ca", "{{ .Values.controlledActivation }}",
            "-omci_response_rate", "{{ .Values.omci_response_rate }}",
            {{ if .Values.injectOmciUnknownMe }}
            "-injectOmciUnknownMe",
            {{ end -}}
            {{ if .Values.injectOmciUnknownAttributes }}
            "-injectOmciUnknownAttributes",
            {{ end -}}
            {{ if .Values.enableEvents -}}
            "-enableEvents",
            "-kafkaAddress", "{{ .Values.kafkaAddress }}",
            {{ end -}}
            {{ if .Values.enablePerf -}}
            "-enableperf",
            {{ end -}}
            "-kafkaEventTopic", "{{ .Values.kafkaEventTopic }}",
            {{ if .Values.authRetry -}}
            "-authRetry",
            {{ end -}}
            {{ if .Values.dhcpRetry -}}
            "-dhcpRetry",
            {{ end -}}
          ]
          ports:
            - name: "bbsim-{{ .Values.olt_id }}"
              containerPort: {{ .Values.olt_tcp_port }}
              protocol: TCP
            - name: "bbsim-{{ .Values.olt_id }}-api"
              containerPort: {{ .Values.bbsim_api_port }}
              protocol: TCP
            - name: "bbsim-{{ .Values.olt_id }}-sadis"
              containerPort: {{ .Values.bbsim_sadis_port }}
              protocol: TCP
            - name: "bbsim-{{ .Values.olt_id }}-rest"
              containerPort: {{ .Values.bbsim_rest_port }}
              protocol: TCP
            - name: "bbsim-{{ .Values.olt_id }}-dmi"
              containerPort: {{ .Values.bbsim_dmi_port }}
              protocol: TCP
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          resources:
{{ toYaml .Values.resources | indent 12 }}
          volumeMounts:
            - name: bbsim-services-config
              mountPath: /app/configs/services.yaml
              subPath: services.yaml
            - name: bbsim-pon-ports-config
              mountPath: /app/configs/pon-config.yaml
              subPath: pon-config.yaml
      volumes:
        - name: bbsim-services-config
          configMap:
            name: bbsim-services-{{ .Values.olt_id }}
            items:
              - key: bbsimServicesConfig
                path: services.yaml
        - name: bbsim-pon-ports-config
          configMap:
            name: bbsim-pon-ports-{{ .Values.olt_id }}
            items:
              - key: bbsimPonPortsConfig
                path: pon-config.yaml
    {{- with .Values.nodeSelector }}
      nodeSelector:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.affinity }}
      affinity:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.tolerations }}
      tolerations:
{{ toYaml . | indent 8 }}
    {{- end }}
