---
# 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: ConfigMap
metadata:
  name: {{ .Values.mme.name }}
data:
  launch.sh: |
    #!/bin/bash

    cd /opt/c3po/mme/bin
    cp /etc/mme/conf/{vbsm_cfg.txt,vbfd.conf} .

    # from vbsm_cfg.txt
    SGW_S11_IP=${SGW_S11_IP:-sgw.localdomain}
    ENB_S1AP_IP=${ENB_S1AP_IP:-enb1.localdomain}
    ENB_S1AP_PORT=${ENB_S1AP_PORT:-36412}
    MME_ETH0_IP=${MME_ETH0_IP:-0.0.0.0}

    # from vbfd.conf
    HSS_CONNECT_PEER=${HSS_CONNECT_PEER:-hss.localdomain}
    HSS_S6A_IP=${HSS_S6A_IP:-hss.localdomain}
    HSS_PORT=${HSS_PORT:-3868}
    VAR_HSS_REALM=${VAR_HSS_REALM:-openair4G.eur}

    sed -i "s/SGW_S11_IP/$(dig $SGW_S11_IP +short)/g" vbsm_cfg.txt
    sed -i "s/ENB_S1AP_IP/$ENB_S1AP_IP/g" vbsm_cfg.txt
    sed -i "s/ENB_S1AP_PORT/$ENB_S1AP_PORT/g" vbsm_cfg.txt
    sed -i "s/MME_ETH0_IP/$MME_ETH0_IP/g" vbsm_cfg.txt
    sed -i "s/VAR_HSS_HOST/$HSS_CONNECT_PEER/g" vbsm_cfg.txt
    sed -i "s/VAR_HSS_REALM/$VAR_HSS_REALM/g" vbsm_cfg.txt

    MME_HOST=$(hostname)
    MME_DOMAIN=$(dnsdomainname)
    sed -i "s/HSS_CONNECT_PEER/$HSS_CONNECT_PEER/g" vbfd.conf
    sed -i "s/HSS_S6A_IP/$HSS_S6A_IP/g" vbfd.conf
    sed -i "s/HSS_PORT/$HSS_PORT/g" vbfd.conf
    sed -i "s/MME_IDENTITY/$MME_HOST.$MME_DOMAIN/g" vbfd.conf
    sed -i "s/MME_REALM/$MME_DOMAIN/g" vbfd.conf
    sed -i "s/MME_HOST/$MME_HOST/g" vbfd.conf

    # generate the certs
    ./make_certs.sh $MME_HOST $MME_DOMAIN

    # finally, launch
    ./vb_acc
  vbfd.conf: |
    # -------- Test configuration ---------

    # Identity = "<diameter_host>.<diameter_realm>";
    Identity = "MME_IDENTITY";
    Realm = "MME_REALM";
    # Port = 3868;
    # SecPort = 3869;

    ConnectPeer = "HSS_CONNECT_PEER" { ConnectTo = "HSS_S6A_IP"; No_TLS; port = HSS_PORT; };

    # TLS_Cred = "<diameter_host>.cert.pem", "<diameter_host>.key.pem";
    TLS_Cred = "MME_HOST.cert.pem",
        "MME_HOST.key.pem";
    TLS_CA = "cacert.pem";

    LoadExtension = "/usr/local/lib/freeDiameter/dict_3gpp2_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_draftload_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_etsi283034_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4004_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4006bis_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4072_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4590_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5447_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5580_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5777_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5778_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6734_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6942_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7155_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7683_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7944_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29061_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29128_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29154_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29173_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29212_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29214_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29215_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29217_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29229_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29272_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29273_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29329_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29336_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29337_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29338_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29343_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29344_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29345_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29368_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29468_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts32299_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6as6d.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6c.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6t.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_SGd.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_T6aT6bT7.fdx";
  vbsm_cfg.txt: |
    # Configuration file for MME

    #####  NOTE: Please Do NOT change the order of the parameters #####

    # EGTP related
    VBSM_EG_DFLT_PORT                2123                     # EGTP Default port
    VBSM_EG_NONDFLT_PORT             2124                     # EGTP Non Default port
    VBSM_EG_S10_NONDFLT_PORT         2125                     # EGTP Non Default
    VBSM_EG_S3_NONDFLT_PORT          2126                     # EGTP Non Default port for S3 interface towards SGSN
                                                              # port for S10
    VBSM_EG_DFLT_HOST_NAME           "sutlej.ccin.ccpu.com"   # EGTP host name

    # E-NodeB related
    VBSM_ENB_ADDR_1                  "ENB_S1AP_IP"      # IP address of eNodeB
    VBSM_ENB_PORT_1                  "ENB_S1AP_PORT"    # eNodeB port
    #VBSM_ENB_ADDR_2                  "172.26.20.180"    # IP address of eNodeB
    #VBSM_ENB_PORT_2                  36422              # eNodeB port

    # MME related
    VBSM_MME_IPADDR                  "MME_ETH0_IP"    # MME IP address
    VBSM_MME_S1AP_IPADDR             "MME_ETH0_IP"    # MME IP address associated with the S1AP interface
    VBSM_MME_EGTP_IPADDR             "MME_ETH0_IP"    # MME IP address associated with the EGTP interface
    VBSM_MME_SCTP_PORT               36412              # MME SCTP port

    VBSM_SGW_IPADDR                  "SGW_S11_IP"   # SGW IP address
    VBSM_PGW_IPADDR                  "192.168.1.105"    # PDN-GW IP address

    VBSM_UE_NUM                      1000             # Support 1000 UE's
    VBSM_SCTP_UDP_SERV_TYPE          0              #service type,default 0 SCTP

    # Debug mask to be set; each represent
    #different debug masks to be set (1 and 0 to unset)
    #in the form |LVB_DBGMASK_INFO|LVB_DBGMASK_ERROR|LVB_DBGMASK_TRC|LVB_DBGMASK_MEM

    VBSM_MME_DBG_MASK                1111
    VBSM_DBG_MASK                    1111
    VBSM_NW_INIATED_DETACH_TIMER     1000

    VBSM_MCC_DIG1         2
    VBSM_MCC_DIG2         0
    VBSM_MCC_DIG3         8

    VBSM_MNC_DIG1         0
    VBSM_MNC_DIG2         1
    VBSM_MNC_DIG3         -1

    # Target PLMN ID format [ MCC + MNC], + is concatination operator
    # If MNC has two digits, the last charater shall be 'f'
    # Valid Configurations: 11223f, 112345.
    VBSM_TARGET_MME_PLMN_ID          31310f
    VBSM_TARGET_MME_IP_ADDR          "192.25.1.100"

    VBSM_T3412                        32

    VBSM_SGSN_IP_ADDR                "192.25.1.195"


    VBSM_SGSN_PLMN_ID        31311f

    VBSM_FD_CFG  "vbfd.conf"
    VBSM_HSS_HOST "VAR_HSS_HOST"
    VBSM_HSS_REALM "VAR_HSS_REALM"

    # set VBSM_DISABLE_EPC_DNS 0 - enable DNS,  1 - disable DNS
    VBSM_DISABLE_EPC_DNS 1
    VBSM_DISABLE_EIA0 1
    VBSM_REL_CAP 1
    VBSM_MME_NAME "vmmestandalone"
    VBSM_S1C_SCTP_INSTREAMS 10
    VBSM_S1C_SCTP_OUTSTREAMS 10
    VBSM_MAX_ENB  2
    VBSM_NO_OFGUMMEIS 1
    VBSM_MMECODE  1
    VBSM_MMEGRPID 1
    VBSM_NO_OF_TAI 1
    VBSM_TAI_LIST    {{"{{1,2,0,8,0,1,1}}"}}

    VBSM_SMS_ROUTER_HOST "smsrouter.test3gpp.net"
    VBSM_SMS_ROUTER_REALM "test3gpp.net"
---
apiVersion: v1
kind: Service
metadata:
  name: mme
spec:
  selector:
    app: mme
  clusterIP: None
  ports:
  - name: s11
    port: 2123
    protocol: UDP
  - name: s1ap
    port: 36412
    protocol: TCP
  - name: s6a
    port: 3868
    protocol: TCP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: {{ .Values.mme.name }}
  labels:
    app: {{ .Values.mme.name }}
spec:
  replicas: 1
  selector:
    matchLabels:
      app: {{ .Values.mme.name }}
  serviceName: {{ .Values.mme.name | quote }}
  template:
    metadata:
      labels:
        app: {{ .Values.mme.name }}
    spec:
      # Insert iptable rules as MME implements a userspace SCTP stack
      initContainers:
      - name: init-mme
        image: {{ .Values.mme.initimage }}
        command: [ "sh", "-c"]
        securityContext:
          capabilities:
            add:
              - NET_ADMIN
        args:
        - iptables -A OUTPUT -p sctp --sport 36412 --chunk-types any ABORT -j DROP;
          until nslookup hss-0.{{ .Values.hss.name }}.{{ .Values.global.namespace }}.{{ .Values.global.fqdn }};
          do echo "waiting for hss"; sleep 2; done;
      containers:
      - name: mme
        image: {{ .Values.mme.image | quote }}
        imagePullPolicy: {{ .Values.global.imagepullpolicy }}
        env:
          - name: SGW_S11_IP
            value: cp-0.cp
          - name: MME_ETH0_IP
            valueFrom:
              fieldRef:
                fieldPath: status.podIP
          - name: ENB_S1AP_IP
            value: {{ .Values.enb.host | quote }}
          - name: ENB_S1AP_PORT
            value: {{ .Values.enb.port | quote }}
          - name: HSS_CONNECT_PEER
            value: hss-0.{{ .Values.hss.name }}.{{ .Values.global.namespace }}.{{ .Values.global.fqdn }}
          - name: VAR_HSS_REALM
            value: {{ .Values.hss.name }}.{{ .Values.global.namespace }}.{{ .Values.global.fqdn }}
          - name: HSS_S6A_IP
            value: hss-0.{{ .Values.hss.name }}.{{ .Values.global.namespace }}.{{ .Values.global.fqdn }}
          - name: HSS_PORT
            value: "3868"
        stdin: true
        tty: true
        #command: [ "sleep", "3600"]
        resources:
          limits:
            cpu: {{ .Values.mme.cpu | quote }}
            memory: {{ .Values.mme.memory }}
        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: {{ .Values.mme.name }}
          defaultMode: 493
      - name: mme-config
        configMap:
          name: {{ .Values.mme.name }}
          defaultMode: 420
