---
# Copyright 2018-present Open Networking Foundation
# Copyright 2018 Intel Corporation
#
# 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: v1
kind: Service
metadata:
  name: mme
spec:
  selector:
    app: mme
  clusterIP: None
  ports:
  - name: s11
    port: {{ .Values.mme.ports.s11 }}
    protocol: UDP
  - name: s1ap
    port: {{ .Values.mme.ports.s1ap }}
    protocol: TCP
  - name: s6a
    port: {{ .Values.mme.ports.s6a }}
    protocol: TCP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mme
  labels:
    app: mme
spec:
  replicas: {{ .Values.mme.replicas }}
  selector:
    matchLabels:
      app: mme
  serviceName: "mme"
  template:
    metadata:
      labels:
        app: mme
    spec:
      terminationGracePeriodSeconds: 1
      initContainers:
      - name: init-mme
        image: {{ .Values.mme.images.init }}
        command: [ "sh", "-c"]
        securityContext:
          privileged: true
          capabilities:
            add:
              - NET_ADMIN
        args:
        - until nslookup {{ .Values.hss_hostname }}; do echo waiting for hss; sleep 2; done;
          iptables -A OUTPUT -p sctp --sport {{ .Values.mme.ports.s1ap }} --chunk-types any ABORT -j DROP;
      containers:
      - name: mme
        image: {{ .Values.mme.images.mme }}
        imagePullPolicy: Always
        env:
          - name: SGW_S11_IP
            value: {{ .Values.spgwc_hostname }}
          - name: MME_ETH0_IP
            valueFrom:
              fieldRef:
                fieldPath: status.podIP
          - name: ENB_S1AP_IP
            value: {{ .Values.mme.enb_s1ap_ip }}
          - name: ENB_S1AP_PORT
            value: "{{ .Values.mme.ports.s1ap }}"   #ng4t uses 32767
          - name: CONNECT_PEER
            value: hss-0.{{ .Values.hss_hostname }}.{{ .Values.namespace }}.svc.cluster.local
          - name: VAR_HSS_REALM
            value: {{ .Values.hss_hostname }}.{{ .Values.namespace }}.svc.cluster.local
          - name: HSS_S6A_IP
            value: hss-0.{{ .Values.hss_hostname }}.{{ .Values.namespace }}.svc.cluster.local
          - name: HSS_PORT
            value: "{{ .Values.mme.ports.s6a }}"
        stdin: true
        tty: true
        #command: [ "sleep", "3600"]
        resources:
          limits:
            cpu: {{ .Values.mme.resources.cpu }}
            memory: {{ .Values.mme.resources.mem }}
        volumeMounts:
        - name: mme-script
          mountPath: /opt/c3po/mme/bin/launch.sh
          subPath: launch.sh
        - name: mme-config
          mountPath: /etc/mme/conf
      volumes:
      - name: mme-script
        configMap:
          name: mme
          defaultMode: 493
      - name: mme-config
        configMap:
          name: mme
          defaultMode: 420
