COMAC-109 Add support of openmme

The old mme is enabled by default.
To use openmme, set mme.type to openmme.

Change-Id: Id1029236af82f8f1abde7d25cee8cc70adfb8691
diff --git a/mcord-release/mcord-services/templates/statefulset-mme.yaml b/mcord-release/mcord-services/templates/statefulset-mme.yaml
new file mode 100644
index 0000000..f2ece70
--- /dev/null
+++ b/mcord-release/mcord-services/templates/statefulset-mme.yaml
@@ -0,0 +1,198 @@
+---
+# 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.
+
+{{- if eq .Values.mme.type "openmme" }}
+
+{{- $releaseName := .Release.Name }}
+{{- $namespace := .Values.global.namespace }}
+{{- $name := .Values.mme.name }}
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ $releaseName }}-{{ $name }}
+  namespace: {{ $namespace }}
+---
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: {{ $releaseName }}-{{ $name }}
+  namespace: {{ $namespace }}
+rules:
+  - apiGroups:
+      - ""
+      - extensions
+      - batch
+      - apps
+    verbs:
+      - get
+      - list
+    resources:
+      - daemonsets
+      - jobs
+      - pods
+      - services
+      - endpoints
+---
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: {{ $releaseName }}-{{ $name }}
+  namespace: {{ $namespace }}
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: Role
+  name: {{ $releaseName }}-{{ $name }}
+subjects:
+- kind: ServiceAccount
+  name: {{ $releaseName }}-{{ $name }}
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: {{ $name }}
+  namespace: {{ $namespace }}
+  labels:
+    app: {{ $name }}
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: {{ $name }}
+  serviceName: {{ $name | quote }}
+  template:
+    metadata:
+      labels:
+        app: {{ $name }}
+    spec:
+      serviceAccountName: {{ $releaseName }}-{{ $name }}
+      initContainers:
+      - name: mme-dep-check
+        image: {{ .Values.mme.images.tags.dep_check | quote }}
+        imagePullPolicy: {{ .Values.mme.images.pullPolicy }}
+        securityContext:
+          allowPrivilegeEscalation: false
+          readOnlyRootFilesystem: false
+          runAsUser: 0
+        env:
+          - name: POD_NAME
+            valueFrom:
+              fieldRef:
+                apiVersion: v1
+                fieldPath: metadata.name
+          - name: NAMESPACE
+            valueFrom:
+              fieldRef:
+                apiVersion: v1
+                fieldPath: metadata.namespace
+          - name: PATH
+            value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/
+          - name: COMMAND
+            value: "echo done"
+          - name: DEPENDENCY_POD_JSON
+            value: '[{"labels": {"app": {{ .Values.spgwc.name | quote }}}, "requireSameNode": false}, {"labels": {"app": {{ .Values.hss.name | quote }}}, "requireSameNode": false}]'
+          # add dependency job for make_certs.sh
+        command:
+          - kubernetes-entrypoint
+        volumeMounts:
+          []
+      - name: mme-init
+        image: {{ .Values.mme.images.tags.mme | quote }}
+        imagePullPolicy: {{ .Values.mme.images.pullPolicy }}
+        command: ["/opt/mme/scripts/mme-init.sh"]
+        env:
+        - name: MME_LOCAL_IP
+          valueFrom:
+            fieldRef:
+              fieldPath: status.podIP
+        volumeMounts:
+        - name: scripts
+          mountPath: /opt/mme/scripts/mme-init.sh
+          subPath: mme-init.sh
+        - name: configs
+          mountPath: /opt/mme/config
+        - name: shared-data
+          mountPath: /opt/mme/config/shared
+      containers:
+      - name: mme-app
+        image: {{ .Values.mme.images.tags.mme | quote }}
+        imagePullPolicy: {{ .Values.mme.images.pullPolicy }}
+        command: ["bash", "-xc"]
+        args:
+        - /opt/mme/scripts/mme-run.sh mme-app
+        volumeMounts:
+        - name: scripts
+          mountPath: /opt/mme/scripts/mme-run.sh
+          subPath: mme-run.sh
+        - name: shared-data
+          mountPath: /opt/mme/config/shared
+        - name: shared-app
+          mountPath: /tmp
+      - name: s1ap-app
+        image: {{ .Values.mme.images.tags.mme | quote }}
+        imagePullPolicy: {{ .Values.mme.images.pullPolicy }}
+        command: ["bash", "-xc"]
+        args:
+        - /opt/mme/scripts/mme-run.sh s1ap-app
+        volumeMounts:
+        - name: scripts
+          mountPath: /opt/mme/scripts/mme-run.sh
+          subPath: mme-run.sh
+        - name: shared-data
+          mountPath: /opt/mme/config/shared
+        - name: shared-app
+          mountPath: /tmp
+      - name: s6a-app
+        image: {{ .Values.mme.images.tags.mme | quote }}
+        imagePullPolicy: {{ .Values.mme.images.pullPolicy }}
+        command: ["bash", "-xc"]
+        args:
+        - /opt/mme/scripts/mme-run.sh s6a-app
+        volumeMounts:
+        - name: scripts
+          mountPath: /opt/mme/scripts/mme-run.sh
+          subPath: mme-run.sh
+        - name: shared-data
+          mountPath: /opt/mme/config/shared
+        - name: shared-app
+          mountPath: /tmp
+      - name: s11-app
+        image: {{ .Values.mme.images.tags.mme | quote }}
+        imagePullPolicy: {{ .Values.mme.images.pullPolicy }}
+        command: ["bash", "-xc"]
+        args:
+        - /opt/mme/scripts/mme-run.sh s11-app
+        volumeMounts:
+        - name: scripts
+          mountPath: /opt/mme/scripts/mme-run.sh
+          subPath: mme-run.sh
+        - name: shared-data
+          mountPath: /opt/mme/config/shared
+        - name: shared-app
+          mountPath: /tmp
+      volumes:
+      - name: scripts
+        configMap:
+          name: {{ $name }}
+          defaultMode: 493
+      - name: configs
+        configMap:
+          name: {{ $name }}
+          defaultMode: 420
+      - name: shared-data
+        emptyDir: {}
+      - name: shared-app
+        emptyDir: {}
+{{- end }}