{{/*
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.
*/}}

{{ tuple "accelleran-cu" . | include "accelleran-cu.service_account" }}

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: accelleran-cu
  labels:
{{ tuple "accelleran-cu" . | include "accelleran-cu.metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.config.vran.replicas }}
  selector:
    matchLabels:
{{ tuple "accelleran-cu" . | include "accelleran-cu.metadata_labels" | indent 6 }}
  serviceName: "accelleran-cu"
  template:
    metadata:
      labels:
{{ tuple "accelleran-cu" . | include "accelleran-cu.metadata_labels" | indent 8 }}
    spec:
      terminationGracePeriodSeconds: 1
    {{- if .Values.nodeSelectors.enabled }}
      nodeSelector:
        {{ .Values.nodeSelectors.accelleranCU.label }}: {{ .Values.nodeSelectors.accelleranCU.value }}
    {{- end }}
      serviceAccountName: accelleran-cu
      initContainers:
      - name: cu-init
        image: {{ .Values.images.tags.initCU }}
        imagePullPolicy: {{ .Values.images.pullPolicy }}
        securityContext:
          privileged: true
          runAsUser: 0
        command: [ "sh",  "-c"]
        args:
        - >
          iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP;
          if chroot /mnt/host-rootfs modinfo nf_conntrack_proto_sctp > /dev/null 2>&1; then \
              chroot /mnt/host-rootfs modprobe nf_conntrack_proto_sctp; \
          fi; \
        volumeMounts:
        - name: host-rootfs
          mountPath: /mnt/host-rootfs
      containers:
      - name: nats
        image: {{ .Values.images.tags.nats }}
        imagePullPolicy: {{ .Values.images.pullPolicy }}
        securityContext:
          capabilities:
            add:
              - NET_ADMIN
              - IPC_LOCK
        stdin: true
        tty: true
        env:
        - name: NATS_SERVICE_NAME
          value: {{ .Values.config.nats.serviceName }}
        command: [ "sh", "-c"]
        args:
        - gnatsd -DV -c /etc/gnatsd.conf;
      {{- if .Values.resources.enabled }}
        resources:
{{ toYaml .Values.resources.accelleranCU | indent 10 }}
      {{- end }}
      - name: redis
        image: {{ .Values.images.tags.redis }}
        imagePullPolicy: {{ .Values.images.pullPolicy }}
        securityContext:
          capabilities:
            add:
              - NET_ADMIN
              - IPC_LOCK
        stdin: true
        tty: true
        command: ["sh", "-c"]
        args:
        # FIXME: Redis can't support with dns resolution, can't set hostname at here.
        - (sleep 5; redis-cli -h localhost -p {{ .Values.config.vran.ports.redis.port }} set NATS_SERVICE_URL "nat://{{ .Values.config.nats.ip }}:{{ .Values.config.vran.ports.nats.port }}";) &
          /usr/local/bin/redis-server
      {{- if .Values.resources.enabled }}
        resources:
{{ toYaml .Values.resources.accelleranCU | indent 10 }}
      {{- end }}
      - name: vran-l3
        image: {{ .Values.images.tags.vranL3 }}
        imagePullPolicy: {{ .Values.images.pullPolicy }}
        securityContext:
          capabilities:
            add:
            - NET_ADMIN
            - IPC_LOCK
            - SYS_NICE
        stdin: true
        tty: true
        env:
          - name: MME_IP
            value: {{ .Values.config.mme.ip }}
        command: ["sh", "-c"]
        args:
        - sqlite3 /mnt/app/datastore.db "update cellS1apConfig set enbSctpPort={{ .Values.config.vran.ports.s1ap.port }};";
          sqlite3 /mnt/app/datastoreRemRw.db "update FapServiceFapControlLteGateway set S1SigLinkPort={{ .Values.config.mme.s1apPort }};";
          sqlite3 /mnt/app/datastoreRemRw.db "update FapServiceCellConfigLteEpcPlmnList set PLMNID={{ .Values.config.epc.plmnId }};";
          sqlite3 /mnt/app/datastore.db "insert into enbSctpSocketInterface ('interfaceName') values ('{{ .Values.config.vran.socketInterface }}');";
          sqlite3 /mnt/app/datastore.db "update logging set severity=7 where id=25;";
{{- if .Values.config.progran.enabled }}
          sqlite3 /mnt/app/datastore.db "update featureActivation set mmeSlicingEnabled=1;";
          sqlite3 /mnt/app/datastore.db "update featureActivation set ranSlicingEnabled=1;";
          sqlite3 /mnt/app/datastore.db "insert into pranServerAddress (pranServerIpAddress,pranServerPort) values ('{{ .Values.config.progran.ip }}', {{ .Values.config.progran.port }});";
{{- end}}
          sleep 10;
          /l3/l3start;
        volumeMounts:
        - name: bbu-config
          mountPath: /mnt/app/bootstrap.txt
          subPath: bootstrap.txt
      {{- if .Values.resources.enabled }}
        resources:
{{ toYaml .Values.resources.accelleranCU | indent 10 }}
      {{- end }}
      volumes:
        - name: bbu-config
          configMap:
            name: accelleran-cu-config
            items:
              - key: bootstrap.txt
                path: bootstrap.txt
        - name: host-rootfs
          hostPath:
            path: /
