# Copyright 2019-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.
{{- $set_log_level := tpl .Values.rw_core.log_level . | upper }}
{{- $log_level := 3 }}
{{- if eq $set_log_level "DEBUG" }}
{{- $log_level = 0 }}
{{- else if eq $set_log_level "INFO" }}
{{- $log_level = 1 }}
{{- else if eq $set_log_level "WARN" }}
{{- $log_level = 2 }}
{{- else if eq $set_log_level "ERROR" }}
{{- $log_level = 3 }}
{{- else if eq $set_log_level "PANIC" }}
{{- $log_level = 4 }}
{{- else if eq $set_log_level "FATAL" }}
{{- $log_level = 5 }}
{{- else }}
{{- $log_level = 3 }}
{{- end }}

---
apiVersion: v1
kind: Service
metadata:
  name: voltha-ro-core
spec:
  ports:
    - name: grpc
      port: 50057
  clusterIP: None
  selector:
    app: ro-core

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: voltha-ro-core
  serviceAccountName: {{ .Values.serviceaccount }}
spec:
  replicas: {{ .Values.replicas.ro_core }}
  selector:
    matchLabels:
      app: ro-core
  serviceName: voltha-ro-core
  podManagementPolicy: Parallel
  template:
    metadata:
      labels:
        app: ro-core
        app.kubernetes.io/name: "read-only-core"
        app.kubernetes.io/version: {{ quote .Chart.AppVersion }}
        app.kubernetes.io/component: "core"
        app.kubernetes.io/part-of: "voltha"
        app.kubernetes.io/managed-by: {{ quote .Release.Service }}
        helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
      annotations:
        cni: "calico"
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - topologyKey: "kubernetes.io/hostname"
              labelSelector:
                matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - ro-core
      serviceAccountName: {{ .Values.serviceaccount }}
      containers:
        - name: voltha
          image: {{ tpl .Values.images.ro_core.registry . }}{{ tpl .Values.images.ro_core.repository . }}:{{ tpl ( tpl .Values.images.ro_core.tag . ) . }}
          imagePullPolicy: {{ tpl .Values.images.ro_core.pullPolicy . }}
          env:
            - name: NAMESPACE
              value: {{ quote .Release.Namespace }}
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
          args:
            - "/app/ro_core"
            - "-kv_store_type=etcd"
            - "-kv_store_host={{ .Values.services.etcd.service }}"
            - "-kv_store_port={{ .Values.services.etcd.port }}"
            - "-grpc_host=$(POD_IP)"
            - "-grpc_port=50057"
            - "-banner=true"
            - "-ro_core_topic=rocore"
            - "-log_level={{ $log_level }}"
          ports:
            - containerPort: 50057
              name: grpc-port
