updating helm/docker files and database config files
authorChen, Jackie (jv246a) <jv246a@att.com>
Tue, 19 Jan 2021 19:59:43 +0000 (14:59 -0500)
committerZhe Huang <zhehuang@research.att.com>
Fri, 29 Jan 2021 18:26:16 +0000 (18:26 +0000)
Change-Id: I0190970f39afdc0313205d88d9055001f3f095ed
Signed-off-by: Chen, Jackie <jv246a@att.com>
90 files changed:
.gitignore
a1-mediator-vth/helm/a1-mediator-vth/templates/deployment.yaml
a1-policy-manager-vth/helm/a1-policy-manager-vth/templates/deployment.yaml
a1-policy-manager-vth/helm/a1-policy-manager-vth/values.yaml
a1-sdnc-vth/helm/a1-sdnc-vth/templates/deployment.yaml
a1-sdnc-vth/helm/a1-sdnc-vth/values.yaml
dmaap-vth/config.ini
dmaap-vth/helm/dmaap-vth/templates/deployment.yaml
dmaap-vth/helm/dmaap-vth/values.yaml
oran-ric-test-head/helm/ric-test-head/templates/deployment.yaml
oran-ric-test-head/helm/ric-test-head/values.yaml
oran-ric-test-head/mock_server/index.js [deleted file]
oran-ric-test-head/mock_server/package.json [deleted file]
otf-camunda/helm/otf-camunda/templates/deployment.yaml
otf-camunda/helm/otf-camunda/values.yaml
otf-camunda/src/main/resources/application.yaml
otf-frontend/Dockerfile
otf-frontend/addPug.js [new file with mode: 0644]
otf-frontend/client/src/app/layout/modeler/modeler.component.ts
otf-frontend/client/src/app/shared/modules/alert-snackbar/alert-snackbar.module.ts
otf-frontend/helm/otf-frontend/templates/deployment.yaml
otf-frontend/helm/otf-frontend/templates/secret.yaml
otf-frontend/helm/otf-frontend/values.yaml
otf-frontend/ng-add-pug-loader.js [new file with mode: 0644]
otf-frontend/package.json
otf-frontend/server/src/lib/mongoose.js
otf-helm/otf/.helmignore [deleted file]
otf-helm/otf/Chart.yaml
otf-helm/otf/charts/databases/charts/mongodb/scripts/groups.json [deleted file]
otf-helm/otf/charts/databases/charts/mongodb/scripts/init_db.sh [deleted file]
otf-helm/otf/charts/databases/charts/mongodb/scripts/users.json [deleted file]
otf-helm/otf/charts/databases/charts/mongodb/templates/configmap.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mongodb/templates/deployment.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mongodb/templates/ingress.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mongodb/templates/secret.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mongodb/templates/service.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mysqldb/scripts/init_db.sh [deleted file]
otf-helm/otf/charts/databases/charts/mysqldb/templates/configmap.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mysqldb/templates/deployment.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mysqldb/templates/ingress.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mysqldb/templates/secret.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mysqldb/templates/service.yaml [deleted file]
otf-helm/otf/charts/databases/charts/mysqldb/values.yaml [deleted file]
otf-helm/otf/charts/databases/mongodb/.helmignore [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/Chart.yaml [moved from otf-helm/otf/charts/databases/charts/mongodb/Chart.yaml with 57% similarity]
otf-helm/otf/charts/databases/mongodb/OWNERS [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/README.md [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/files/docker-entrypoint-initdb.d/README.md [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/files/docker-entrypoint-initdb.d/one.js [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/NOTES.txt [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/_helpers.tpl [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/configmap.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/deployment-standalone.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/ingress.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/initialization-configmap.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/poddisruptionbudget-arbiter-rs.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/poddisruptionbudget-secondary-rs.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/prometheus-alerting-rule.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/prometheus-service-monitor.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/pvc-standalone.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/secrets.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/statefulset-arbiter-rs.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/statefulset-primary-rs.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/statefulset-secondary-rs.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/svc-headless-rs.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/svc-primary-rs.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/templates/svc-standalone.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/values-production.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/values.schema.json [new file with mode: 0644]
otf-helm/otf/charts/databases/mongodb/values.yaml [moved from otf-helm/otf/charts/databases/charts/mongodb/values.yaml with 95% similarity]
otf-helm/otf/charts/databases/mysqldb/.helmignore [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/Chart.yaml [moved from otf-helm/otf/charts/databases/charts/mysqldb/Chart.yaml with 73% similarity]
otf-helm/otf/charts/databases/mysqldb/README.md [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/docker-entrypoint-initdb.d/mysql_engine_7.10.0.sql [moved from otf-helm/otf/charts/databases/charts/mysqldb/scripts/mysql_engine_7.10.0.sql with 97% similarity]
otf-helm/otf/charts/databases/mysqldb/docker-entrypoint-initdb.d/mysql_identity_7.10.0.sql [moved from otf-helm/otf/charts/databases/charts/mysqldb/scripts/mysql_identity_7.10.0.sql with 96% similarity]
otf-helm/otf/charts/databases/mysqldb/templates/NOTES.txt [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/_helpers.tpl [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/configurationFiles-configmap.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/deployment.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/initializationFiles-configmap.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/pvc.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/secrets.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/serviceaccount.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/servicemonitor.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/svc.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/tests/test-configmap.yaml [new file with mode: 0644]
otf-helm/otf/charts/databases/mysqldb/templates/tests/test.yaml [new file with mode: 0644]
otf-helm/otf/values/development.yaml [deleted file]
otf-helm/otf/values/values.yaml [deleted file]
otf-helm/readme.md

index 62c8935..0327119 100644 (file)
@@ -1 +1,11 @@
-.idea/
\ No newline at end of file
+.idea/
+-*.swp
+-**/*.swp
+-*.sw*
+-**/node_modules/*
+-*.pyc
+-__pycache__/
+-*.log
+-.env
+-*.tgz
+-*.lock
\ No newline at end of file
index afb1dec..08de1a0 100644 (file)
@@ -26,6 +26,10 @@ spec:
         app: {{ .Values.appName}}\r
         version: {{.Values.version}}\r
     spec:\r
+      {{ if .Values.pullSecret }}\r
+      imagePullSecrets:\r
+        - name: {{ .Values.pullSecret }}\r
+      {{ end }}    \r
       serviceAccount: default\r
       volumes:\r
       - name: {{ .Values.appName}}-cert-volume\r
@@ -54,7 +58,7 @@ spec:
         ports:\r
         - name: http\r
           containerPort: 5000\r
-          nodePort: {{.Values.nodePort}}\r
+#          nodePort: {{.Values.nodePort}}\r
           protocol: TCP\r
 #        {{ if eq .Values.env "st"}} TODO UNCOMMENT FOR ORAN?\r
 #        resources:\r
index 89d053d..9b5eaab 100644 (file)
@@ -26,6 +26,10 @@ spec:
         app: {{ .Values.appName}}\r
         version: {{.Values.version}}\r
     spec:\r
+      {{ if .Values.pullSecret }}\r
+      imagePullSecrets:\r
+        - name: {{ .Values.pullSecret }}\r
+      {{ end }}\r
       serviceAccount: default\r
       volumes:\r
       - name: {{ .Values.appName}}-cert-volume\r
@@ -54,7 +58,7 @@ spec:
         ports:\r
         - name: http\r
           containerPort: 6000\r
-          nodePort: {{.Values.nodePort}}\r
+#          nodePort: {{.Values.nodePort}}\r
           protocol: TCP\r
 #        {{ if eq .Values.env "st"}} TODO UNCOMMENT FOR ORAN?\r
 #        resources:\r
index e0424e7..19a99cb 100644 (file)
@@ -7,6 +7,7 @@ nodePort: 32330
 replicas: 1\r
 health : /otf/vth/oran/a1/v1/health\r
 sharedCert: otf-cert-secret-builder\r
+#pullSecret: ""\r
 pvc:\r
   dev: org-oran-otf-dev-logs-pv\r
   prod: org-oran-otf-prod-logs-pv\r
@@ -19,5 +20,5 @@ proxy:
   http: \r
   https: \r
 api:\r
-  base_url: http://njcdtl08rg9907.itservices.sbc.com\r
+  base_url: ""\r
   port: 3000\r
index ec08ac3..43fd64f 100644 (file)
@@ -26,6 +26,10 @@ spec:
         app: {{ .Values.appName}}\r
         version: {{.Values.version}}\r
     spec:\r
+      {{ if .Values.pullSecret }}\r
+      imagePullSecrets:\r
+        - name: {{ .Values.pullSecret }}\r
+      {{ end }}\r
       serviceAccount: default\r
       volumes:\r
       - name: {{ .Values.appName}}-cert-volume\r
@@ -54,7 +58,7 @@ spec:
         ports:\r
         - name: http\r
           containerPort: 6001\r
-          nodePort: {{.Values.nodePort}}\r
+#          nodePort: {{.Values.nodePort}}\r
           protocol: TCP\r
 #        {{ if eq .Values.env "st"}} TODO UNCOMMENT FOR ORAN?\r
 #        resources:\r
index 4cfff81..834f41b 100644 (file)
@@ -7,6 +7,7 @@ nodePort: 32331
 replicas: 1\r
 health : /otf/vth/oran/a1/v1/health\r
 sharedCert: otf-cert-secret-builder\r
+#pullSecret: ""\r
 pvc:\r
   dev: org-oran-otf-dev-logs-pv\r
   prod: org-oran-otf-prod-logs-pv\r
index 9c5f7d4..fc34675 100644 (file)
@@ -1,9 +1,9 @@
 [auth]\r
-auth_enabled= true\r
+auth_enabled= false\r
 username = %(USER)s\r
 password = %(PW)s\r
 [resource]\r
-proxy_enabled = true\r
+proxy_enabled = false\r
 https_proxy= %(HTTPS)s\r
 http_proxy= %(HTTP)s\r
 base_address = %(BASE_URL)s\r
index f78b5c8..375335e 100644 (file)
@@ -26,6 +26,10 @@ spec:
         app: {{ .Values.appName}}\r
         version: {{.Values.version}}\r
     spec:\r
+      {{ if .Values.pullSecret }}\r
+      imagePullSecrets:\r
+        - name: {{ .Values.pullSecret }}\r
+      {{ end }}\r
       serviceAccount: default\r
       volumes:\r
       - name: {{ .Values.appName}}-cert-volume\r
@@ -44,7 +48,7 @@ spec:
         ports:\r
         - name: http\r
           containerPort: 5000\r
-          nodePort: {{.Values.nodePort}}\r
+#          nodePort: {{.Values.nodePort}}\r
           protocol: TCP\r
         env:\r
         - name: NAMESPACE\r
index 73c63aa..8a4f7f6 100644 (file)
@@ -7,6 +7,7 @@ nodePort: 32324
 replicas: 1\r
 health : /otf/vth/oran/dmaap/v1/health\r
 sharedCert: otf-cert-secret-builder\r
+#spullSecret: ""\r
 pvc:\r
   dev: org-oran-otf-dev-logs-pv\r
   prod: org-oran-otf-prod-logs-pv\r
index 4c38c37..dc0b012 100644 (file)
@@ -26,6 +26,10 @@ spec:
         app: {{ .Values.appName}}\r
         version: {{.Values.version}}\r
     spec:\r
+      {{ if .Values.pullSecret }}\r
+      imagePullSecrets:\r
+        - name: {{ .Values.pullSecret }}\r
+      {{ end }}\r
       serviceAccount: default\r
       volumes:\r
       - name: {{ .Values.appName}}-cert-volume\r
@@ -40,12 +44,12 @@ spec:
       {{ if or (eq .Values.env "st") (eq .Values.env "prod-dr")}}\r
       {{else}}\r
       - name: logging-pvc\r
-        persistentVolumeClaim:\r
-          {{if eq .Values.env "prod"}}\r
-          claimName: {{ .Values.pvc.prod | quote }}\r
-          {{ else }}\r
-          claimName: {{ .Values.pvc.dev | quote }}\r
-          {{ end }}\r
+        persistentVolumeClaim:\r
+          {{if eq .Values.env "prod"}}\r
+          claimName: {{ .Values.pvc.prod | quote }}\r
+          {{ else }}\r
+          claimName: {{ .Values.pvc.dev | quote }}\r
+          {{ end }}\r
       {{end}}\r
       containers:\r
       - name: {{ .Values.appName}}\r
@@ -54,7 +58,7 @@ spec:
         ports:\r
         - name: http\r
           containerPort: 5000\r
-          nodePort: {{.Values.nodePort}}\r
+          nodePort: {{.Values.nodePort}}\r
           protocol: TCP\r
         {{ if eq .Values.env "st"}}\r
         resources:\r
index 6c5d067..e0084c4 100644 (file)
@@ -7,6 +7,7 @@ nodePort: 32323
 replicas: 1\r
 health : /otf/vth/oran/v1/health\r
 sharedCert: otf-cert-secret-builder\r
+# pullSecret: ""\r
 pvc:\r
   dev: org-oran-otf-dev-logs-pv\r
   prod: org-oran-otf-prod-logs-pv\r
diff --git a/oran-ric-test-head/mock_server/index.js b/oran-ric-test-head/mock_server/index.js
deleted file mode 100644 (file)
index d915ef9..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
-#                                                                              #\r
-#   Licensed under the Apache License, Version 2.0 (the "License");            #\r
-#   you may not use this file except in compliance with the License.           #\r
-#   You may obtain a copy of the License at                                    #\r
-#                                                                              #\r
-#       http://www.apache.org/licenses/LICENSE-2.0                             #\r
-#                                                                              #\r
-#   Unless required by applicable law or agreed to in writing, software        #\r
-#   distributed under the License is distributed on an "AS IS" BASIS,          #\r
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #\r
-#   See the License for the specific language governing permissions and        #\r
-#   limitations under the License.                                             #\r
-##############################################################################*/\r
-\r
-const express = require('express')\r
-const app = express()\r
-const port = 3000\r
-\r
-app.get('/', (req, res) => res.send('Hello World!'))\r
-\r
-app.get('/appmgr/ric/v1/health/ready',function(req,res){\r
-    res.sendStatus(200)\r
-})\r
-\r
-app.get('/appmgr/ric/v1/health/alive',function(req,res){\r
-    res.sendStatus(200)\r
-})\r
-\r
-app.get('/appmgr/ric/v1/xapps',function(req,res){\r
-    res.status(200)\r
-    res.send([{"name":"admin-xapp","status":"deployed","version":"1.0","instances":null},{"name":"mcxapp","status":"deployed","version":"1.0","instances":[{"name":"mcxapp-649d7494-h5tjb","status":"running","ip":"service-ricxapp-mcxapp-rmr.ricxapp","port":4560,"txMessages":null,"rxMessages":["RIC_SUB_RESP","RIC_SUB_FAILURE","RIC_SUB_DEL_RESP","RIC_SUB_DEL_FAILURE","RIC_INDICATION"]}]},{"name":"ueec","status":"deployed","version":"1.0","instances":[{"name":"ueec-6675694b75-jtnz6","status":"running","ip":"service-ricxapp-ueec-rmr.ricxapp","port":4560,"txMessages":["RIC_SUB_REQ","RIC_SUB_DEL_REQ"],"rxMessages":["RIC_SUB_RESP","RIC_SUB_FAILURE","RIC_SUB_DEL_RESP","RIC_SUB_DEL_FAILURE","RIC_INDICATION"]}]}])\r
-})\r
-\r
-app.post('/appmgr/ric/v1/xapps', function(req,res){\r
-    res.statusMessage = 'Created'\r
-    res.status(201)\r
-    res.send({"result_output":{"name":"anr","status":"deployed","version":"1.0","instances":[{"name":"anr-7d4c47b4bb-jlslm","status":"running","ip":"service-ricxapp-anr-rmr.ricxapp","port":4560,"txMessages":null,"rxMessages":["RIC_SGNB_ADDITION_REQ","RIC_RRC_TRANSFER"]}]}})\r
-})\r
-\r
-app.delete('/appmgr/ric/v1/xapps/:name',function(req,res){\r
-    res.sendStatus(204)\r
-})\r
-\r
-app.listen(port, () => console.log(`Example app listening on port ${port}!`))\r
-\r
diff --git a/oran-ric-test-head/mock_server/package.json b/oran-ric-test-head/mock_server/package.json
deleted file mode 100644 (file)
index da4a9fc..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{\r
-  "name": "mock_server",\r
-  "version": "1.0.0",\r
-  "description": "mock server for RIC",\r
-  "main": "index.js",\r
-  "scripts": {\r
-    "test": "echo \"Error: no test specified\" && exit 1"\r
-  },\r
-  "author": "",\r
-  "license": "Apache-2.0",\r
-  "dependencies": {\r
-    "express": "^4.17.1"\r
-  }\r
-}\r
index 89f751e..c2deb26 100644 (file)
@@ -8,13 +8,15 @@ metadata:
     version: {{.Values.version}}\r
 spec:\r
   revisionHistoryLimit: 1\r
-  minReadySeconds: 10\r
-  strategy:\r
+  #minReadySeconds: 10\r
+  #strategy:\r
   # indicate which strategy we want for rolling update\r
-    type: RollingUpdate\r
-    rollingUpdate:\r
-      maxSurge: 3\r
-      maxUnavailable: 1\r
+  #  type: RollingUpdate\r
+  #  rollingUpdate:\r
+  #    maxSurge: 3\r
+  #    maxUnavailable: 1\r
+  #serviceName: camundaServiceName\r
+  serviceName: camunda-service-name\r
   replicas: {{ .Values.replicas}}\r
   selector:\r
     matchLabels:\r
@@ -26,11 +28,16 @@ spec:
         app: {{ .Values.appName}}\r
         version: {{.Values.version}}\r
     spec:\r
+      {{ if .Values.pullSecret }}\r
+      imagePullSecrets:\r
+        - name: {{ .Values.pullSecret }}\r
+      {{ end }}\r
       serviceAccount: default\r
       volumes:\r
       - name: {{ .Values.appName}}-aaf-volume\r
         secret:\r
           secretName: {{.Values.sharedSecret}}\r
+          optional: true\r
       - name: {{ .Values.appName}}-keyfile-volume\r
         secret:\r
           secretName: {{.Values.sharedSecret}}\r
@@ -53,80 +60,80 @@ spec:
             {{ end }}\r
           - key: private_key\r
             path: {{ .Values.Secret.privateKey.name }}\r
-      - name: {{.Values.appName}}-config-volume\r
-        configMap:\r
-          name: {{.Values.appName}}-config\r
-          items:\r
-          - key: router_config\r
-            path: config.ini\r
+#      - name: {{.Values.appName}}-config-volume\r
+#        configMap:\r
+#          name: {{.Values.appName}}-config\r
+#          items:\r
+#          - key: router_config\r
+#            path: config.ini\r
       {{ if or (eq .Values.env "st") (eq .Values.env "prod-dr")}}\r
       {{else}}\r
-      - name: logging-pvc\r
-        persistentVolumeClaim:\r
-          {{if eq .Values.env "prod"}}\r
-          claimName: {{ .Values.pvc.prod | quote }}\r
-          {{ else }}\r
-          claimName: {{ .Values.pvc.dev | quote }}\r
-          {{ end }}\r
+      #- name: logging-pvc\r
+      #  persistentVolumeClaim:\r
+      #    {{if eq .Values.env "prod"}}\r
+      #    claimName: {{ .Values.pvc.prod | quote }}\r
+      #    {{ else }}\r
+      #    claimName: {{ .Values.pvc.dev | quote }}\r
+      #    {{ end }}\r
       {{end}}\r
       containers:\r
-      - name: mysql-router\r
-        image: {{ .Values.otf.camunda.router.image }}\r
-        imagePullPolicy: Always\r
-        ports:\r
-        - name: http\r
-          containerPort: {{ .Values.otf.camunda.router.port }}\r
-          protocol: TCP\r
-        {{ if eq .Values.env "st"}}\r
-        resources:\r
-          limits:\r
-            memory: "1Gi"\r
-            cpu: "500m"\r
-          requests:\r
-            memory: "512Mi"\r
-            cpu: "100m"\r
-        {{else}}\r
-        resources:\r
-          limits:\r
-            memory: "4Gi"\r
-            cpu: "2"\r
-          requests:\r
-            memory: "2Gi"\r
-            cpu: "1"\r
-        {{end}}\r
-        args: ["--config=/opt/config/config.ini"]\r
-        lifecycle:\r
-          preStop:\r
-            exec:\r
-              command: ["/bin/sh", "-c", {{ "sleep 0" | replace "0" (.Values.terminationGracePeriodSeconds | toString) | quote}} ]\r
-        volumeMounts:\r
-        - name: {{.Values.appName}}-config-volume\r
-          mountPath: /opt/config\r
+#      - name: mysql-router\r
+#        image: {{ .Values.otf.camunda.router.image }}\r
+#        imagePullPolicy: Always\r
+#        ports:\r
+#        - name: http\r
+#          containerPort: {{ .Values.otf.camunda.router.port }}\r
+#          protocol: TCP\r
+        #{{ if eq .Values.env "st"}}\r
+        #resources:\r
+        #  limits:\r
+        #    memory: "1Gi"\r
+        #    cpu: "500m"\r
+        #  requests:\r
+        #    memory: "512Mi"\r
+        #    cpu: "100m"\r
+        #{{else}}\r
+        #resources:\r
+        #  limits:\r
+        #    memory: "1Gi"\r
+        #    cpu: "500m"\r
+        #  requests:\r
+        #    memory: "512Mi"\r
+        #    cpu: "100m"\r
+        #{{end}}\r
+#        args: ["--config=/opt/config/config.ini"]\r
+#        lifecycle:\r
+#          preStop:\r
+#            exec:\r
+#              command: ["/bin/sh", "-c", {{ "sleep 0" | replace "0" (.Values.terminationGracePeriodSeconds | toString) | quote}} ]\r
+        #volumeMounts:\r
+        #- name: {{.Values.appName}}-config-volume\r
+        #  mountPath: /opt/config\r
       - name: {{ .Values.appName}}\r
         image: {{ .Values.image}}\r
         imagePullPolicy: Always\r
         ports:\r
         - name: http\r
           containerPort: {{ .Values.otf.camunda.tcu.port }}\r
-          nodePort: {{.Values.nodePort}}\r
+          #nodePort: {{.Values.nodePort}}\r
           protocol: TCP\r
-        {{ if eq .Values.env "st"}}\r
-        resources:\r
-          limits:\r
-            memory: "6Gi"\r
-            cpu: "2.8"\r
-          requests:\r
-            memory: "2Gi"\r
-            cpu: "1.5"\r
-        {{else}}\r
-        resources:\r
-          limits:\r
-            memory: "10Gi"\r
-            cpu: "6"\r
-          requests:\r
-            memory: "4Gi"\r
-            cpu: "2"\r
-        {{end}}\r
+        #{{ if eq .Values.env "st"}}\r
+        #resources:\r
+        #  limits:\r
+        #    memory: "6Gi"\r
+        #    cpu: "2.8"\r
+        #  requests:\r
+        #    memory: "2Gi"\r
+        #    cpu: "1.5"\r
+        #{{else}}\r
+        #resources:\r
+        #  limits:\r
+        #    memory: "10Gi"\r
+        #    cpu: "6"\r
+        #  requests:\r
+        #    memory: "4Gi"\r
+        #    cpu: "2"\r
+        #{{end}}\r
         env:\r
         - name: ENV\r
           {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
@@ -153,59 +160,95 @@ spec:
         - name: OTF_MONGO_USERNAME\r
           valueFrom:\r
             secretKeyRef:\r
-              name: {{ .Values.appName}}\r
-              key: mongo_username\r
-              optional: true\r
+              name: {{ .Values.one_click.mongo.secret_name}}\r
+              key: mongodb-username\r
+              optional: false\r
+          #valueFrom:\r
+          #  secretKeyRef:\r
+          #    name: {{ .Values.appName}}\r
+          #    key: mongo_username\r
+          #    optional: true\r
         - name: OTF_MONGO_PASSWORD\r
           valueFrom:\r
             secretKeyRef:\r
-              name: {{ .Values.appName}}\r
-              key: mongo_password\r
-              optional: true\r
+              name: {{ .Values.one_click.mongo.secret_name}}\r
+              key: mongodb-password\r
+              optional: false\r
+          #valueFrom:\r
+          #  secretKeyRef:\r
+          #    name: {{ .Values.appName}}\r
+          #    key: mongo_password\r
+          #    optional: true\r
         - name: OTF_MONGO_HOSTS\r
-          {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
-          value: {{ .Values.otf.mongo.prod.host | quote }}\r
-          {{ else if eq  .Values.env "st" }}\r
-          value: {{ .Values.otf.mongo.st.host | quote }}\r
-          {{ else }}\r
-          value: {{.Values.otf.mongo.dev.host | quote }}\r
-          {{ end }}\r
+          value: {{ .Values.one_click.mongo.ip | quote }}\r
+          # {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
+          # value: {{ .Values.otf.mongo.prod.host | quote }}\r
+          # {{ else if eq  .Values.env "st" }}\r
+          # value: {{ .Values.otf.mongo.st.host | quote }}\r
+          # {{ else }}\r
+          # value: {{.Values.otf.mongo.dev.host | quote }}\r
+          # {{ end }}\r
         - name: OTF_MONGO_REPLICASET\r
-          {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
-          value: {{ .Values.otf.mongo.prod.replicaSet | quote }}\r
-          {{ else if eq .Values.env "st"}}\r
-          value: {{ .Values.otf.mongo.st.replicaSet | quote }}\r
-          {{ else }}\r
-          value: {{ .Values.otf.mongo.dev.replicaSet | quote }}\r
-          {{ end }}\r
+          #value: {{ .Values.one_click.mongo.replicaset | quote }}\r
+          valueFrom:\r
+            secretKeyRef:\r
+              name: {{ .Values.one_click.mongo.secret_name}}\r
+              key: mongodb-replicaSet\r
+              optional: false\r
+          # {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
+          # value: {{ .Values.otf.mongo.prod.replicaSet | quote }}\r
+          # {{ else if eq .Values.env "st"}}\r
+          # value: {{ .Values.otf.mongo.st.replicaSet | quote }}\r
+          # {{ else }}\r
+          # value: {{ .Values.otf.mongo.dev.replicaSet | quote }}\r
+          # {{ end }}\r
         - name: OTF_MONGO_DATABASE\r
-          {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
-          value: {{ .Values.otf.mongo.prod.database | quote }}\r
-          {{else if  eq .Values.env "st"}}\r
-          value: {{ .Values.otf.mongo.st.database | quote }}\r
-          {{ else }}\r
-          value: {{ .Values.otf.mongo.dev.database | quote }}\r
-          {{ end }}\r
+          #value: {{ .Values.one_click.mongo.database | quote }}\r
+          valueFrom:\r
+            secretKeyRef:\r
+              name: {{ .Values.one_click.mongo.secret_name}}\r
+              key: mongodb-database\r
+              optional: false\r
+          # {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
+          # value: {{ .Values.otf.mongo.prod.database | quote }}\r
+          # {{else if  eq .Values.env "st"}}\r
+          # value: {{ .Values.otf.mongo.st.database | quote }}\r
+          # {{ else }}\r
+          # value: {{ .Values.otf.mongo.dev.database | quote }}\r
+          # {{ end }}\r
         - name: OTF_CAMUNDA_DB_URL\r
-          {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
-          value: {{ .Values.otf.camunda.db.prod.url}}\r
-          {{else if  eq .Values.env "st"}}\r
-          value: {{ .Values.otf.camunda.db.st.url}}\r
-          {{ else }}\r
-          value: {{ .Values.otf.camunda.db.dev.url}}\r
-          {{ end }}\r
+          #{{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
+          #value: {{ .Values.otf.camunda.db.prod.url}}\r
+          #{{else if  eq .Values.env "st"}}\r
+          #value: {{ .Values.otf.camunda.db.st.url}}\r
+          #{{ else }}\r
+          #value: {{ .Values.otf.camunda.db.dev.url}}\r
+          #{{ end }}\r
+          value: {{ .Values.one_click.mysql.ip | quote }}\r
         - name: OTF_CAMUNDA_DB_USERNAME\r
+          #value: {{ .Values.otf.camunda.db.username}}\r
           valueFrom:\r
             secretKeyRef:\r
-              name: {{ .Values.appName}}\r
-              key: camunda_db_username\r
-              optional: true\r
+              name: {{ .Values.one_click.mysql.secret_name}}\r
+              key: mysql-username\r
+              optional: false\r
+          #valueFrom:\r
+          #  secretKeyRef:\r
+          #    name: {{ .Values.appName}}\r
+          #    key: camunda_db_username\r
+          #    optional: true\r
         - name: OTF_CAMUNDA_DB_PASSWORD\r
+          #value: {{ .Values.otf.camunda.db.password}}\r
           valueFrom:\r
             secretKeyRef:\r
-              name: {{ .Values.appName}}\r
-              key: camunda_db_password\r
-              optional: true\r
+              name: {{ .Values.one_click.mysql.secret_name}}\r
+              key: mysql-password\r
+              optional: false\r
+          #valueFrom:\r
+          #  secretKeyRef:\r
+          #    name: {{ .Values.appName}}\r
+          #    key: camunda_db_password\r
+          #    optional: true\r
         - name: AAF_PERM_TYPE\r
           {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
           value: {{ .Values.aafPermType.prod | quote }}\r
@@ -285,14 +328,14 @@ spec:
           mountPath: /opt/cert\r
         {{ if or (eq .Values.env "st") (eq .Values.env "prod-dr")}}\r
         {{else}}\r
-        - name: logging-pvc\r
-          mountPath: "/otf/logs"\r
+        #- name: logging-pvc\r
+        #  mountPath: "/otf/logs"\r
         {{end}}   \r
         livenessProbe:\r
           httpGet:\r
             path: /otf/health/v1\r
             port: http\r
-            scheme: HTTPS\r
+            scheme: HTTP\r
             httpHeaders:\r
             - name: X-Custom-Header\r
               value: Alive\r
@@ -303,7 +346,7 @@ spec:
           httpGet:\r
             path: /otf/health/v1\r
             port: http\r
-            scheme: HTTPS\r
+            scheme: HTTP\r
             httpHeaders:\r
             - name: X-Custom-Header\r
               value: Ready\r
index cbd86f0..0c2edff 100644 (file)
@@ -11,8 +11,8 @@ env: dev
 otf:\r
   mongo:\r
     dev:\r
-      host: localhost:27017,localhost:27017,localhost:27017\r
-      replicaSet: mongoOTF\r
+      host: 10.0.136.214:27017\r
+      replicaSet: rs0\r
       database: otf\r
     st:\r
       host: localhost:27017,localhost:27017,localhost:27017\r
@@ -22,8 +22,8 @@ otf:
       host: localhost:18720,localhost:18720,localhost:18720\r
       replicaSet: otf-rs-prod2\r
       database: otf\r
-    username: "test"\r
-    password: "test"\r
+    username: otfuser\r
+    password: Today.123\r
   camunda:\r
     executors_active:\r
       dev: true\r
@@ -34,13 +34,13 @@ otf:
       port: 8443\r
     db:\r
       dev:\r
-        url: localhost:3306/otf-camunda\r
+        url: 10.0.172.107:3306/otf_camunda\r
       st:\r
         url: localhost:3306/otf_st-camunda\r
       prod:\r
         url: localhost:3306/otf-camunda\r
-      username: username\r
-      password: password\r
+      username: otfuser\r
+      password: Today.123\r
     router:\r
       config:\r
         dev: mysqlRouterConfig-dev.ini\r
@@ -62,6 +62,7 @@ cadiHostname:
 \r
   \r
 # Secret related information.\r
+#pullSecret: ""\r
 sharedSecret: otf-aaf-credential-generator\r
 sharedCert: otf-cert-secret-builder\r
 cert:\r
@@ -84,3 +85,17 @@ pvc:
   dev: org-oran-otf-dev-logs-pv\r
   prod: org-oran-otf-prod-logs-pv\r
 \r
+one_click:\r
+  enabled: false\r
+  mongo:\r
+    replicaset: "!"\r
+    database: "!"\r
+    secret_name: "!"\r
+    ip: "!"\r
+    username: "!"\r
+    password: "!"\r
+  mysql:\r
+    ip: "!"\r
+    secret_name: "!"\r
+    username: "!"\r
+    password: "!"
\ No newline at end of file
index bf92302..617b9e3 100644 (file)
@@ -25,7 +25,7 @@ otf:
       username: ${OTF_CAMUNDA_DB_USERNAME}\r
       password: ${OTF_CAMUNDA_DB_PASSWORD}\r
   cadi:\r
-    enabled: true\r
+    enabled: false\r
     aaf-mech-id: ${AAF_ID}\r
     aaf-mech-password: ${AAF_MECH_PASSWORD}\r
     aaf-perm-type: ${AAF_PERM_TYPE}\r
@@ -51,10 +51,10 @@ otf:
     password: ${OTF_MONGO_PASSWORD}\r
     replica-set: ${OTF_MONGO_REPLICASET}\r
     database: ${OTF_MONGO_DATABASE}\r
-  ssl:\r
-    key-store-type: 'PKCS12'\r
-    keystore-path: ${OTF_CERT_PATH}\r
-    keystore-password: ${OTF_CERT_PASS}\r
+  ssl:\r
+    key-store-type: 'PKCS12'\r
+    keystore-path: ${OTF_CERT_PATH}\r
+    keystore-password: ${OTF_CERT_PASS}\r
 \r
 #https://stackoverflow.com/questions/50387638/spring-boot-jersey-type-filter-bad-request-400-for-service-consumes-multipar/50423639#50423639\r
 spring.jersey.filter.order: -100000\r
@@ -64,11 +64,11 @@ server:
   port.http: 8000\r
   tomcat.max-threads: 800\r
 #  ssl:\r
-    key-store-type: 'PKCS12'\r
-    key-store: ${OTF_CERT_PATH}\r
-    key-store-password: ${OTF_CERT_PASS}\r
+    key-store-type: 'PKCS12'\r
+    key-store: ${OTF_CERT_PATH}\r
+    key-store-password: ${OTF_CERT_PASS}\r
 security:\r
-  https-only: true\r
+  https-only: false\r
   require-ssl: false\r
   server.port: 8443\r
   server.port.http: 8080\r
index de31829..df4dbfc 100644 (file)
@@ -18,7 +18,7 @@ ENV ENV=development
 ENV NAMESPACE=namespace\r
 ENV APP_NAME=otf-frontend\r
 ENV APP_VERSION=1.0\r
-ENV OTF_URL=https://loaclhost:32524/\r
+ENV OTF_URL=https://localhost:32524/\r
 ENV OTF_EMAIL=email@email.com\r
 ENV AUTHENTICATION_SECRET=/ytoYB+iD5HUuDLmeqStcoUPwqw=\r
 ENV SERVICEAPI_URL=https://localhost:32303/otf/api/\r
@@ -34,11 +34,22 @@ ENV MONGO_REPLICASET=rs0
 ENV MONGO_USERNAME=username\r
 ENV MONGO_PASSWORD=password\r
 \r
+RUN npm config set unsafe-perm true\r
+RUN npm cache clean --force\r
+RUN npm config set registry https://registry.npmjs.org/\r
+RUN node -v\r
+\r
 COPY . /home/node\r
 WORKDIR /home/node\r
 \r
 RUN mkdir -p /otf/logs\r
 \r
+#RUN npm install webpack\r
+#RUN npm install webpack webpack-dev-server \r
+RUN npm i -g webpack\r
+RUN npm i -g webpack-dev-server\r
+RUN npm i -g --unsafe-perm @angular/cli@6.2.9 \r
+RUN npm install --save-dev @angular-devkit/build-angular\r
 RUN npm install --unsafe-perm\r
 RUN npm run-script build\r
 \r
diff --git a/otf-frontend/addPug.js b/otf-frontend/addPug.js
new file mode 100644 (file)
index 0000000..bb0f5e2
--- /dev/null
@@ -0,0 +1,15 @@
+const fs = require('fs');
+const { execSync } = require('child_process');
+const path = './ng-add-pug-loader.js';
+
+try {
+    if (!fs.existsSync(path)) {
+        console.log('ng add ng-cli-pug-loader@0.1.7')
+        execSync('ng add ng-cli-pug-loader@0.1.7');
+    }
+    console.log('node ' + path);
+    execSync('node ' + path);
+
+} catch (err) {
+    console.log(err);
+}
index c090769..977a845 100644 (file)
@@ -705,15 +705,8 @@ export class ModelerComponent implements OnInit {
   //Get the xml of the default bpmn file\r
   async getDefaultFlow() {\r
     return new Promise((resolve, reject) => {\r
-      this._fileTransfer.get('5d0a5357e6624a3ef0d16164').subscribe(\r
-        data => {\r
-          let bpmn = new Buffer(data as Buffer);\r
-          resolve(bpmn.toString());\r
-        },\r
-        err => {\r
-          this.errorPopup(err.toString());\r
-          reject(err);\r
-        }\r
+    resolve(\r
+    '<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions targetNamespace="http://bpmn.io/schema/bpmn" ><bpmn:process id="" isExecutable="true"><bpmn:startEvent id="StartEvent_1" /></bpmn:process><bpmndi:BPMNDiagram id="BPMNDiagram_1"><bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1ai7kus"><bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"><dc:Bounds x="179" y="159" width="36" height="36" /></bpmndi:BPMNShape></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></bpmn:definitions>'\r
       );\r
     });\r
   }\r
index 5910877..090b5ec 100644 (file)
@@ -26,6 +26,7 @@ import { MatSnackBarModule, MatIconModule} from '@angular/material';
     MatIconModule\r
   ],\r
   declarations: [AlertSnackbarComponent],\r
+  exports: [AlertSnackbarComponent],\r
   entryComponents: [AlertSnackbarComponent]\r
 })\r
 export class AlertSnackbarModule { }\r
index 4d6c3e8..70cbeb5 100644 (file)
@@ -9,12 +9,12 @@ metadata:
 spec:\r
   revisionHistoryLimit: 1   # keep one replica set to allow rollback\r
   minReadySeconds: 10\r
-  strategy:\r
-    # indicate which strategy we want for rolling update\r
-    type: RollingUpdate\r
-    rollingUpdate:\r
-      maxSurge: 1\r
-      maxUnavailable: 1\r
+  strategy:\r
+    # indicate which strategy we want for rolling update\r
+    type: RollingUpdate\r
+    rollingUpdate:\r
+      maxSurge: 1\r
+      maxUnavailable: 1\r
   {{if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
   replicas: {{ .Values.replicas.prod}}\r
   {{ else if  eq .Values.env "st"}}\r
@@ -32,6 +32,10 @@ spec:
         app: {{ .Values.appName}}\r
         version: {{.Values.version}}\r
     spec:\r
+      {{ if .Values.pullSecret }}\r
+      imagePullSecrets:\r
+        - name: {{ .Values.pullSecret }}\r
+      {{ end }}\r
       serviceAccount: default\r
       volumes:\r
       - name: {{ .Values.appName}}-cert-volume\r
@@ -48,27 +52,28 @@ spec:
         image: {{ .Values.image}}\r
         imagePullPolicy: Always\r
         ports:\r
-        - name: https\r
-          containerPort: 443\r
-          nodePort: {{.Values.nodePort}}\r
+        - name: http\r
+          containerPort: 80\r
+\r
+          # nodePort: {{.Values.nodePort}}\r
           protocol: TCP\r
-        {{ if eq .Values.env "st"}}\r
-        resources:\r
-          limits:\r
-            memory: "5Gi"\r
-            cpu: "3"\r
-          requests:\r
-            memory: "2Gi"\r
-            cpu: "1"\r
-        {{else}}\r
-        resources:\r
-          limits:\r
-            memory: "10Gi"\r
-            cpu: "6"\r
-          requests:\r
-            memory: "4Gi"\r
-            cpu: "2"\r
-        {{end}}\r
+        {{ if eq .Values.env "st"}}\r
+        resources:\r
+          limits:\r
+            memory: "5Gi"\r
+            cpu: "3"\r
+          requests:\r
+            memory: "2Gi"\r
+            cpu: "1"\r
+        {{else}}\r
+        resources:\r
+          limits:\r
+            memory: "10Gi"\r
+            cpu: "6"\r
+          requests:\r
+            memory: "4Gi"\r
+            cpu: "2"\r
+        {{end}}\r
         env:\r
         - name: ENV\r
           {{ if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
@@ -155,49 +160,66 @@ spec:
               key: aaf_mech_password\r
               optional: true\r
         - name: MONGO_BASEURL\r
-          {{ if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
-          value: {{ .Values.mongo.prod.MONGO_BASEURL | quote}}\r
-          {{ else if eq .Values.env "st" }}\r
-          value: {{ .Values.mongo.st.MONGO_BASEURL | quote}}\r
-          {{ else }}\r
-          value: {{ .Values.mongo.dev.MONGO_BASEURL | quote}}\r
-          {{ end }}\r
+          value: {{ .Values.one_click.mongo.ip | quote }}\r
+        #   {{ if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
+        #   value: {{ .Values.mongo.prod.MONGO_BASEURL | quote}}\r
+        #   {{ else if eq .Values.env "st" }}\r
+        #   value: {{ .Values.mongo.st.MONGO_BASEURL | quote}}\r
+        #   {{ else }}\r
+        #   value: {{ .Values.mongo.dev.MONGO_BASEURL | quote}}\r
+        #   {{ end }}\r
         - name: MONGO_DBOTF\r
-          {{ if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
-          value: {{ .Values.mongo.prod.MONGO_DBOTF | quote }}\r
-          {{ else if eq .Values.env "st" }}\r
-          value: {{ .Values.mongo.st.MONGO_DBOTF | quote }}\r
-          {{ else }}\r
-          value: {{ .Values.mongo.dev.MONGO_DBOTF | quote }}\r
-          {{ end }}\r
+          # value: {{ .Values.one_click.mongo.database | quote }}\r
+          valueFrom:\r
+            secretKeyRef:\r
+              name: {{ .Values.one_click.mongo.secret_name}}\r
+              key: mongodb-database\r
+              optional: false\r
+          # {{ if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
+          # value: {{ .Values.mongo.prod.MONGO_DBOTF | quote }}\r
+          # {{ else if eq .Values.env "st" }}\r
+          # value: {{ .Values.mongo.st.MONGO_DBOTF | quote }}\r
+          # {{ else }}\r
+          # value: {{ .Values.mongo.dev.MONGO_DBOTF | quote }}\r
+          # {{ end }}\r
         - name: MONGO_REPLICASET\r
-          {{ if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
-          value: {{ .Values.mongo.prod.MONGO_REPLICASET | quote }}\r
-          {{ else if eq .Values.env "st" }}\r
-          value: {{ .Values.mongo.st.MONGO_REPLICASET | quote }}\r
-          {{ else }}\r
-          value: {{ .Values.mongo.dev.MONGO_REPLICASET | quote }}\r
-          {{ end }}\r
+          # value: {{ .Values.one_click.mongo.replicaset | quote }}\r
+          valueFrom:\r
+            secretKeyRef:\r
+              name: {{ .Values.one_click.mongo.secret_name}}\r
+              key: mongodb-replicaSet\r
+              optional: false\r
+          # {{ if or (eq .Values.env "prod") (eq .Values.env "prod-dr")}}\r
+          # value: {{ .Values.mongo.prod.MONGO_REPLICASET | quote }}\r
+          # {{ else if eq .Values.env "st" }}\r
+          # value: {{ .Values.mongo.st.MONGO_REPLICASET | quote }}\r
+          # {{ else }}\r
+          # value: {{ .Values.mongo.dev.MONGO_REPLICASET | quote }}\r
+          # {{ end }}\r
         - name: MONGO_USERNAME\r
+          #value: root\r
+          #value: otfuser\r
           valueFrom:\r
             secretKeyRef:\r
-              name: {{ .Values.appName}}\r
-              key: mongo_username\r
-              optional: true\r
+              name: {{ .Values.one_click.mongo.secret_name}}\r
+              key: mongodb-username\r
+              optional: false\r
         - name: MONGO_PASSWORD\r
+          #value: otf.123\r
+          #value: Today.123\r
           valueFrom:\r
             secretKeyRef:\r
-              name: {{ .Values.appName}}\r
-              key: mongo_password\r
-              optional: true\r
+              name: {{ .Values.one_click.mongo.secret_name}}\r
+              key: mongodb-password\r
+              optional: false\r
         volumeMounts:\r
         - name: {{.Values.appName}}-cert-volume\r
           mountPath: /home/node/server/config/cert/\r
         livenessProbe:\r
           httpGet:\r
             path: {{ .Values.healthEndpoint }}\r
-            port: https\r
-            scheme: HTTPS\r
+            port: 80\r
+            scheme: HTTP\r
             httpHeaders:\r
               - name: X-Custom-Header\r
                 value: Alive\r
@@ -207,8 +229,8 @@ spec:
         readinessProbe:\r
           httpGet:\r
             path: {{ .Values.healthEndpoint }}\r
-            port: https\r
-            scheme: HTTPS\r
+            port: 80\r
+            scheme: HTTP\r
             httpHeaders:\r
               - name: X-Custom-Header\r
                 value: Ready\r
index 175427c..fcca0f8 100644 (file)
@@ -1,9 +1,20 @@
 apiVersion: v1\r
-kind: Secret\r
+kind: Service\r
 metadata:\r
-  name: {{ .Values.appName}}\r
-type: Opaque\r
-data:\r
-  mongo_username: {{ .Values.mongo.username | b64enc}}\r
-  mongo_password: {{ .Values.mongo.password | b64enc}}\r
-  authentication_secret: {{.Values.AUTHENTICATION_SECRET | b64enc}}\r
+  name: {{ .Values.appName }}\r
+  namespace: {{ .Values.namespace }}\r
+  labels:\r
+    app: {{ .Values.appName }}\r
+    version: {{ .Values.version }}\r
+  # annotations:\r
+  #   service.beta.kubernetes.io/azure-load-balancer-internal: "true"\r
+spec:\r
+  type: LoadBalancer\r
+  ports:\r
+  - name: https\r
+    protocol: TCP\r
+    port: 80\r
+    # nodePort: {{ .Values.nodePort }}\r
+  selector:\r
+    app: {{ .Values.appName }}\r
+    version: {{ .Values.version }}\r
index 571d323..829b81a 100644 (file)
@@ -1,5 +1,6 @@
 appName: otf-frontend\r
 version: 0.0.4-SNAPSHOT\r
+#pullSecret: ""\r
 image: otf-frontend\r
 namespace: \r
 nodePort: 32524\r
@@ -33,19 +34,19 @@ camundaApi:
     CAMUNDAAPI_URL: "https://localhost:31313/"\r
 mongo:\r
   prod:\r
-    MONGO_BASEURL: "localhost:18720,localhost:18720,localhost:18720/"\r
+    MONGO_BASEURL: "localhost:27017/"\r
     MONGO_DBOTF: "otf"\r
-    MONGO_REPLICASET: "otf-rs-prod2"\r
+    MONGO_REPLICASET: "rs0"\r
   st:\r
-    MONGO_BASEURL: "localhost:27017,localhost:27017,localhost:27017/"\r
+    MONGO_BASEURL: "localhost:27017"\r
     MONGO_DBOTF: "otf_st"\r
-    MONGO_REPLICASET: "mongoOTF"\r
+    MONGO_REPLICASET: "rs0"\r
   dev:\r
-    MONGO_BASEURL: "localhost:27017,localhost:27017,localhost:27017/"\r
+    MONGO_BASEURL: "localhost:27017"\r
     MONGO_DBOTF: "otf"\r
-    MONGO_REPLICASET: "mongoOTF"\r
-  username: ""\r
-  password: ""\r
+    MONGO_REPLICASET: "rs0"\r
+  username: "!"\r
+  password: "!"\r
 otf:\r
   OTF_EMAIL: "OTF_NO-REPLY@localhost.com"\r
   OTF_URL:\r
@@ -57,3 +58,13 @@ sharedSecret: otf-aaf-credential-generator
 sharedCert: otf-cert-secret-builder\r
 \r
 healthEndpoint: otf/api/health/v1\r
+\r
+one_click:\r
+  enabled: false\r
+  mongo:\r
+    replicaset: rs0\r
+    database: otf\r
+    secret_name: mongo-mongodb\r
+    ip: 10.0.51.84:27017\r
+    username: "!"\r
+    password: "!"\r
diff --git a/otf-frontend/ng-add-pug-loader.js b/otf-frontend/ng-add-pug-loader.js
new file mode 100644 (file)
index 0000000..086f8d7
--- /dev/null
@@ -0,0 +1,26 @@
+/**
+ * Adds the pug-loader inside Angular CLI's webpack config, if not there yet.
+ * @see https://github.com/danguilherme/ng-cli-pug-loader
+ */
+const fs = require('fs');
+const commonCliConfig = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/common.js';
+const pugRules = ` { test: /\.(pug|jade)$/, exclude: /\.(include|partial)\.(pug|jade)$/, use: [ { loader: 'apply-loader' }, { loader: 'pug-loader' } ] }, { test: /\.(include|partial)\.(pug|jade)$/, loader: 'pug-loader' },`;
+
+fs.readFile(commonCliConfig, (err, data) => {
+  if (err) throw err;
+
+  const configText = data.toString();
+  // make sure we don't add the rule if it already exists
+  if (configText.indexOf(pugRules) > -1) { return; }
+
+  // Insert the pug webpack rule
+  const position = configText.indexOf('rules: [') + 8;
+  const output = [configText.slice(0, position), pugRules, configText.slice(position)].join('');
+  const file = fs.openSync(commonCliConfig, 'r+');
+  fs.writeFile(file, output, error => {
+    if (error)
+      console.error("An error occurred while overwriting Angular CLI's Webpack config");
+
+    fs.close(file, () => {});
+  });
+});
index c952d06..7a9b0b3 100644 (file)
@@ -8,7 +8,7 @@
   ],\r
   "bugs": "lol",\r
   "licenses": [\r
-    "TBD"\r
+    {}\r
   ],\r
   "authors": "Raj Patel",\r
   "contributors": [\r
   "scripts": {\r
     "ng": "ng",\r
     "start": "node server/src/app.js",\r
+    "test": "npm run mocha -s",\r
     "debug": "node server/src/app.js",\r
     "build": "ng build --prod --output-path ./client/dist/ --build-optimizer=false",\r
-    "gitbuild": "ng build --prod --base-href /start-angular/SB-Admin-BS4-Angular-6/master/dist/",\r
-    "test": "ng test",\r
+    "gitbuild": "ng build build --prod --base-href /start-angular/SB-Admin-BS4-Angular-6/master/dist/",\r
+    "eslint": "eslint server/src/. server/test/. --config server/config/.eslintrc.json",\r
+    "clean": "shx rm -rf server/test/data/",\r
+    "mocha": "npm run clean & SET NODE_ENV=test & mocha server/test/ --recursive --exit",\r
     "test-ci": "TEST_CI=true ng test",\r
-    "lint": "ng lint",\r
-    "e2e": "ng e2e",\r
-    "postinstall": "ng add ng-cli-pug-loader@0.1.7 && node ./ng-add-pug-loader.js && node ./ng-add-pug-loader.js && node ./ng-add-pug-loader.js"\r
+    "lint": "ng build lint",\r
+    "e2e": "ng build e2e",\r
+    "webdriver": "cd ./node_modules/protractor && npm i webdriver-manager@latest && node bin/webdriver-manager update",\r
+    "preinstall": "npm i rimraf && rimraf node_modules/protractor/node_modules/webdriver-manager",\r
+    "postinstall": "node addPug.js && node ./addPug.js"\r
   },\r
   "directories": {\r
     "lib": "server/src/feathers"\r
     "request": "^2.88.0",\r
     "request-promise": "^4.2.2",\r
     "shx": "^0.3.2",\r
-    "ts-node": "^5.0.1",\r
+    "ts-node": "~5.0.1",\r
     "tslint": "~5.9.1",\r
-    "typescript": "^2.8.4"\r
+    "typescript": "^2.9.2"\r
+  },\r
+  "browser": {\r
+    "fs": false,\r
+    "path": false,\r
+    "crypto": false,\r
+    "stream": false,\r
+    "http": false,\r
+    "tls": false,\r
+    "zlib": false,\r
+    "https": false,\r
+    "net": false\r
   }\r
-}\r
+}
\ No newline at end of file
index a8d5b9d..4bba26d 100644 (file)
@@ -18,7 +18,7 @@ const mongoose = require('mongoose');
 \r
 module.exports = function (app) {\r
        const mongoData = app.get('mongo');\r
-       const connectionString = 'mongodb://' + mongoData.username + ':' + mongoData.password + '@' + mongoData.baseUrl + mongoData.dbOtf + '?replicaSet=' + mongoData.replicaSet;\r
+       const connectionString = 'mongodb://' + mongoData.username + ':' + mongoData.password + '@' + mongoData.baseUrl + '/' + mongoData.dbOtf + '?replicaSet=' + mongoData.replicaSet;\r
 \r
        mongoose.connect(connectionString, { useNewUrlParser: true }).then(null, error => {\r
                console.log('caught', error.message);\r
diff --git a/otf-helm/otf/.helmignore b/otf-helm/otf/.helmignore
deleted file mode 100644 (file)
index 05d5aab..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# Patterns to ignore when building packages.\r
-# This supports shell glob matching, relative path matching, and\r
-# negation (prefixed with !). Only one pattern per line.\r
-.DS_Store\r
-# Common VCS dirs\r
-.git/\r
-.gitignore\r
-.bzr/\r
-.bzrignore\r
-.hg/\r
-.hgignore\r
-.svn/\r
-# Common backup files\r
-*.swp\r
-*.bak\r
-*.tmp\r
-*~\r
-# Various IDEs\r
-.project\r
-.idea/\r
-*.tmproj\r
-.vscode/\r
index 4a2cd62..d1eda9c 100644 (file)
@@ -18,4 +18,4 @@ version: 1.0
 \r
 # This is the version number of the application being deployed. This version number should be\r
 # incremented each time you make changes to the application.\r
-appVersion: 0.0.1\r
+appVersion: Camille.2.1\r
diff --git a/otf-helm/otf/charts/databases/charts/mongodb/scripts/groups.json b/otf-helm/otf/charts/databases/charts/mongodb/scripts/groups.json
deleted file mode 100644 (file)
index 257d37b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-{\r
-    "_id" : ObjectId("5bdb2bdbd6b0d1f97953fbd7"),\r
-    "ownerId" : ObjectId("5b9bf50008a8133dc84c1496"),\r
-    "groupName" : "otf-public-dev",\r
-    "groupDescription" : "The OTF public group used in the dev environment.",\r
-    "parentGroupId" : null,\r
-    "members" : [ \r
-        {\r
-            "roles" : [ \r
-                "admin"\r
-            ],\r
-            "userId" : ObjectId("5b9bf50008a8133dc84c1496")\r
-        }\r
-    ],\r
-    "roles" : [ \r
-        {\r
-            "permissions" : [ \r
-                "read", \r
-                "write", \r
-                "execute", \r
-                "delete", \r
-                "management"\r
-            ],\r
-            "roleName" : "admin"\r
-        }, \r
-        {\r
-            "permissions" : [ \r
-                "read"\r
-            ],\r
-            "roleName" : "user"\r
-        }, \r
-        {\r
-            "permissions" : [ \r
-                "read", \r
-                "write", \r
-                "execute", \r
-                "delete"\r
-            ],\r
-            "roleName" : "developer"\r
-        }\r
-    ],\r
-    "mechanizedIds" : [ \r
-    ],\r
-    "_class" : "com.att.otf.api.domain.Group",\r
-    "updatedAt" : ISODate("2020-05-05T21:58:56.381Z")\r
-}
\ No newline at end of file
diff --git a/otf-helm/otf/charts/databases/charts/mongodb/scripts/init_db.sh b/otf-helm/otf/charts/databases/charts/mongodb/scripts/init_db.sh
deleted file mode 100644 (file)
index a3ebcde..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash\r
-\r
-sleep 10;\r
-mongoimport -c=users -d=otf --mode=upsert --username=otfuser --password=Today.123 --file=/data/scripts/users.json\r
-mongoimport -c=users -d=otf --mode=upsert --username=otfuser --password=Today.123 --file=/data/scripts/groups.json\r
diff --git a/otf-helm/otf/charts/databases/charts/mongodb/scripts/users.json b/otf-helm/otf/charts/databases/charts/mongodb/scripts/users.json
deleted file mode 100644 (file)
index 059f9b2..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{\r
-    "_id" : ObjectId("5b9bf50008a8133dc84c1496"),\r
-    "permissions" : [ \r
-        "admin"\r
-    ],\r
-    "firstName" : "Admin",\r
-    "lastName" : "Admin",\r
-    "email" : "admin@test.com",\r
-    "password" : "$2a$13$TZQCQrG6LuNdHgpEXB9YgOfaYZC7xG2E3ICE9lO/0Y9rh5gPdbQWu",\r
-    "groups" : [ \r
-        {\r
-            "permissions" : [ \r
-                "admin"\r
-            ],\r
-            "groupId" : ObjectId("5bdb2bdbd6b0d1f97953fbd7")\r
-        }\r
-    ],\r
-    "createdAt" : ISODate("2020-05-05T12:13:05.176Z"),\r
-    "updatedAt" : ISODate("2020-05-05T20:40:16.591Z"),\r
-    "_class" : "com.att.otf.api.domain.User",\r
-    "favorites" : {\r
-        "testDefinitions" : [ \r
-        ]\r
-    },\r
-    "enabled" : true,\r
-    "defaultGroup" : ObjectId("5bdb2bdbd6b0d1f97953fbd7"),\r
-    "defaultGroupEnabled" : true\r
-}
\ No newline at end of file
diff --git a/otf-helm/otf/charts/databases/charts/mongodb/templates/configmap.yaml b/otf-helm/otf/charts/databases/charts/mongodb/templates/configmap.yaml
deleted file mode 100644 (file)
index eefbba9..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: v1\r
-kind: ConfigMap\r
-metadata:\r
-  name : {{ .Values.global.mongodb.appName }}-init-scripts\r
-\r
-data:\r
-  {{- $files := .Files }}\r
-  {{- range $key, $value := .Files }}\r
-  {{- if hasPrefix "scripts/" $key }} {{/* only when in scripts/ */}}\r
-  {{ $key | trimPrefix "scripts/" }}: {{ $files.Get $key | quote }} {{/* adapt $key as desired */}}\r
-  {{- end }}\r
-  {{- end }}\r
diff --git a/otf-helm/otf/charts/databases/charts/mongodb/templates/deployment.yaml b/otf-helm/otf/charts/databases/charts/mongodb/templates/deployment.yaml
deleted file mode 100644 (file)
index 78f2e5c..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-apiVersion: extensions/v1beta1\r
-kind: Deployment\r
-metadata:\r
-  name: {{ .Values.global.mongodb.appName }}\r
-  namespace: {{.Values.global.mongodb.namespace }}\r
-  labels:\r
-    app: {{ .Values.global.mongodb.appName }}\r
-    version: {{.Values.global.mongodb.version }}\r
-spec:\r
-  revisionHistoryLimit: 1   # keep one replica set to allow rollback\r
-  minReadySeconds: 10\r
-  strategy:\r
-  # indicate which strategy we want for rolling update\r
-    type: RollingUpdate\r
-    rollingUpdate:\r
-      maxSurge: 1\r
-      maxUnavailable: 1\r
-  replicas: {{ .Values.global.mongodb.replicas }}\r
-  selector:\r
-    matchLabels:\r
-      app: {{ .Values.global.mongodb.appName }}\r
-      version: {{.Values.global.mongodb.version }}\r
-  template:\r
-    metadata:\r
-      labels:\r
-        app: {{ .Values.global.mongodb.appName }}\r
-        version: {{.Values.global.mongodb.version }}\r
-    spec:\r
-      serviceAccount: default\r
-      containers:\r
-      - name: {{ .Values.global.mongodb.appName }}\r
-        image: {{ .Values.global.mongodb.image.registry }}/{{ .Values.global.mongodb.image.repository }}\r
-        imagePullPolicy: Always               \r
-        env:\r
-        - name: MONGODB_PASSWORD\r
-          valueFrom:\r
-            secretKeyRef:\r
-              name : {{ .Values.global.mongodb.appName }}\r
-              key: mongo_password\r
-        - name: MONGODB_ROOT_PASSWORD\r
-          valueFrom:\r
-            secretKeyRef:\r
-              name : {{ .Values.global.mongodb.appName }}\r
-              key: mongo_root_password\r
-        - name: MONGODB_USERNAME\r
-          value: {{ .Values.global.mongodb.mongodbUsername | quote }}\r
-        - name: MONGODB_DATABASE\r
-          value: {{ .Values.global.mongodb.mongodbDatabase | quote }}\r
-        ports:\r
-        - name: mongodb\r
-          containerPort: 27017\r
-          hostPort: 27017\r
-        resources:\r
-          limits: \r
-            memory: {{ .Values.global.mongodb.resources.limits.memory }}\r
-            cpu: {{ .Values.global.mongodb.resources.limits.cpu }}\r
-          requests:\r
-            memory: {{ .Values.global.mongodb.resources.requests.memory }}\r
-            cpu: {{ .Values.global.mongodb.resources.requests.cpu }}\r
-        lifecycle:\r
-          postStart:\r
-            exec:\r
-              command: ["/bin/bash", "-c", "cd data/scripts;./init_db.sh"]\r
-        volumeMounts:\r
-           - name: custom-init-scripts\r
-             mountPath: /data/scripts\r
-      volumes:\r
-        - name: custom-init-scripts\r
-          configMap:\r
-            name: {{  .Values.global.mongodb.appName }}-init-scripts\r
-            defaultMode: 0755\r
-      restartPolicy: Always\r
diff --git a/otf-helm/otf/charts/databases/charts/mongodb/templates/ingress.yaml b/otf-helm/otf/charts/databases/charts/mongodb/templates/ingress.yaml
deleted file mode 100644 (file)
index 6accedb..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# Need Updates to configure the connectivity when we deploy other microservices to connect to mongodb\r
-\r
-apiVersion: extensions/v1beta1\r
-kind: Ingress\r
-metadata:\r
-  name: {{ .Values.global.mongodb.appName }}\r
-  namespace: {{.Values.global.mongodb.namespace }}\r
-  labels:\r
-    app: {{ .Values.global.mongodb.appName }}\r
-    version: {{.Values.global.mongodb.version }}\r
-  annotations:\r
-    kubernetes.io/ingress.class: nginx\r
-    nginx.ingress.kubernetes.io/ssl-redirect: "true"\r
-    nginx.ingress.kubernetes.io/rewrite-target: /$1\r
-    nginx.ingress.kubernetes.io/configuration-snippet: |\r
-      proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;\r
-      grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;\r
-spec:\r
-  tls:\r
-  - hosts:\r
-    - {{ .Values.global.mongodb.nodeApi.host }}\r
-    secretName: {{.Values.global.mongodb.certName }}\r
-  rules:\r
-  - host: {{ .Values.global.mongodb.nodeApi.host }}\r
-    http:\r
-      paths:\r
-      - path: /mongodb/(.*)\r
-        backend:\r
-          serviceName: {{ .Values.global.mongodb.appName }}\r
-          servicePort: {{ .Values.global.mongodb.port }}\r
diff --git a/otf-helm/otf/charts/databases/charts/mongodb/templates/secret.yaml b/otf-helm/otf/charts/databases/charts/mongodb/templates/secret.yaml
deleted file mode 100644 (file)
index f450e74..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-apiVersion: v1\r
-kind: Secret\r
-metadata:\r
-  name: {{ .Values.global.mongodb.appName }}\r
-type: opaque\r
-data:\r
-  mongo_root_password: {{ .Values.global.mongodb.mongodbRootPassword  | b64enc }}\r
-  mongo_password: {{ .Values.global.mongodb.mongodbPassword  | b64enc }}\r
diff --git a/otf-helm/otf/charts/databases/charts/mongodb/templates/service.yaml b/otf-helm/otf/charts/databases/charts/mongodb/templates/service.yaml
deleted file mode 100644 (file)
index c72af9b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-apiVersion: v1\r
-kind: Service\r
-metadata:\r
-  name: {{ .Values.global.mongodb.appName }}\r
-  namespace: {{ .Values.global.mongodb.namespace }}\r
-  labels:\r
-    app: {{ .Values.global.mongodb.appName }}\r
-    version: {{ .Values.global.mongodb.version }}\r
-  annotations:\r
-    service.beta.kubernetes.io/azure-load-balancer-internal: "true"\r
-spec:\r
-  type: LoadBalancer\r
-  ports:\r
-  - port: {{ .Values.global.mongodb.port }}\r
-    protocol: TCP\r
-    targetPort: {{ .Values.global.mongodb.targetPort }}\r
-  selector:\r
-    app: {{ .Values.global.mongodb.appName }}\r
-    version: {{ .Values.global.mongodb.version }}\r
diff --git a/otf-helm/otf/charts/databases/charts/mysqldb/scripts/init_db.sh b/otf-helm/otf/charts/databases/charts/mysqldb/scripts/init_db.sh
deleted file mode 100644 (file)
index 9b748ca..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash\r
-\r
-sleep 20;\r
-mysql -u otfuser otf_camunda -pToday.123 < /data/scripts/mysql_engine_7.10.0.sql\r
-mysql -u otfuser otf_camunda -pToday.123 < /data/scripts/mysql_identity_7.10.0.sql\r
-\r
diff --git a/otf-helm/otf/charts/databases/charts/mysqldb/templates/configmap.yaml b/otf-helm/otf/charts/databases/charts/mysqldb/templates/configmap.yaml
deleted file mode 100644 (file)
index 858345f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: v1\r
-kind: ConfigMap\r
-metadata:\r
-  name : {{ .Values.global.mysqldb.appName }}-init-scripts\r
-\r
-data:\r
-  {{- $files := .Files }}\r
-  {{- range $key, $value := .Files }}\r
-  {{- if hasPrefix "scripts/" $key }} {{/* only when in scripts/ */}}\r
-  {{ $key | trimPrefix "scripts/" }}: {{ $files.Get $key | quote }} {{/* adapt $key as desired */}}\r
-  {{- end }}\r
-  {{- end }}\r
diff --git a/otf-helm/otf/charts/databases/charts/mysqldb/templates/deployment.yaml b/otf-helm/otf/charts/databases/charts/mysqldb/templates/deployment.yaml
deleted file mode 100644 (file)
index 41f8d33..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-apiVersion: apps/v1\r
-kind: Deployment\r
-\r
-metadata:\r
-  name: {{ .Values.global.mysqldb.appName }}\r
-  namespace: {{.Values.global.mysqldb.namespace }}\r
-  labels:\r
-    app: {{ .Values.global.mysqldb.appName }}\r
-    version: {{.Values.global.mysqldb.version }}\r
-    \r
-spec:\r
-  strategy:\r
-   # indicate which strategy we want for rolling update\r
-    type: RollingUpdate\r
-    rollingUpdate:\r
-      maxSurge: 1\r
-      maxUnavailable: 1\r
-  replicas: {{ .Values.global.mysqldb.replicas }}\r
-  selector:\r
-    matchLabels:\r
-      app: {{ .Values.global.mysqldb.appName }}\r
-      version: {{.Values.global.mysqldb.version }}\r
-  template:\r
-    metadata:\r
-      labels:\r
-        app: {{ .Values.global.mysqldb.appName }}\r
-        version: {{.Values.global.mysqldb.version }}\r
-    spec:\r
-      serviceAccountName: default\r
-      containers:\r
-      - name: {{ .Values.global.mysqldb.appName }}\r
-        image: "{{ .Values.image }}:{{ .Values.imageTag }}"\r
-        image: {{ .Values.global.mysqldb.image.image }}:{{ .Values.global.mysqldb.image.tag }}\r
-        imagePullPolicy: Always\r
-        resources:\r
-          limits: \r
-            memory: {{ .Values.global.mysqldb.resources.limits.memory }}\r
-            cpu: {{ .Values.global.mysqldb.resources.limits.cpu }}\r
-          requests:\r
-            memory: {{ .Values.global.mysqldb.resources.requests.memory }}\r
-            cpu: {{ .Values.global.mysqldb.resources.requests.cpu }}\r
-        env:\r
-        - name: MYSQL_ROOT_PASSWORD\r
-          valueFrom:\r
-            secretKeyRef:\r
-              name: {{ .Values.global.mysqldb.appName }}\r
-              key: mysql_root_password\r
-        - name: MYSQL_PASSWORD\r
-          valueFrom:\r
-            secretKeyRef:\r
-              name: {{ .Values.global.mysqldb.appName }}\r
-              key: mysql_password\r
-        - name: MYSQL_USER\r
-          value: {{ .Values.global.mysqldb.mysqlUser | quote }}\r
-        - name: MYSQL_DATABASE\r
-          value: {{ .Values.global.mysqldb.mysqlDatabase | quote }}\r
-        - name: TZ\r
-          value: {{ .Values.timezone }}\r
-        ports:\r
-        - name: {{ .Values.global.mysqldb.appName }}\r
-          containerPort: 3306\r
-        livenessProbe:\r
-          exec:\r
-            command:\r
-            - sh\r
-            - -c\r
-            - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"\r
-          initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}\r
-          periodSeconds: {{ .Values.livenessProbe.periodSeconds }}\r
-          timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}\r
-          successThreshold: {{ .Values.livenessProbe.successThreshold }}\r
-          failureThreshold: {{ .Values.livenessProbe.failureThreshold }}\r
-        readinessProbe:\r
-          exec:\r
-            command:\r
-            - sh\r
-            - -c\r
-            - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"\r
-          initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}\r
-          periodSeconds: {{ .Values.readinessProbe.periodSeconds }}\r
-          timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}\r
-          successThreshold: {{ .Values.readinessProbe.successThreshold }}\r
-          failureThreshold: {{ .Values.readinessProbe.failureThreshold }}\r
-        lifecycle:\r
-          postStart:\r
-            exec:\r
-              command: ["/bin/bash", "-c", "cd data/scripts;./init_db.sh"]\r
-        volumeMounts:\r
-           - name: custom-init-scripts\r
-             mountPath: /data/scripts\r
-      volumes:\r
-        - name: custom-init-scripts\r
-          configMap:\r
-            name: {{  .Values.global.mysqldb.appName }}-init-scripts\r
-            defaultMode: 0755\r
-      restartPolicy: Always\r
\r
diff --git a/otf-helm/otf/charts/databases/charts/mysqldb/templates/ingress.yaml b/otf-helm/otf/charts/databases/charts/mysqldb/templates/ingress.yaml
deleted file mode 100644 (file)
index 4abb02c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# Need Updates to configure the connectivity when we deploy other microservices to connect to mysqldb\r
-\r
-apiVersion: extensions/v1beta1\r
-kind: Ingress\r
-metadata:\r
-  name: {{ .Values.global.mysqldb.appName }}\r
-  namespace: {{.Values.global.mysqldb.namespace }}\r
-  labels:\r
-    app: {{ .Values.global.mysqldb.appName }}\r
-    version: {{.Values.global.mysqldb.version }}\r
-  annotations:\r
-    kubernetes.io/ingress.class: nginx\r
-    nginx.ingress.kubernetes.io/ssl-redirect: "true"\r
-    nginx.ingress.kubernetes.io/rewrite-target: /$1\r
-    nginx.ingress.kubernetes.io/configuration-snippet: |\r
-      proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;\r
-      grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;\r
-spec:\r
-  tls:\r
-  - hosts:\r
-    - {{ .Values.global.mysqldb.nodeApi.host }}\r
-    secretName: {{.Values.global.mysqldb.certName }}\r
-  rules:\r
-  - host: {{ .Values.global.mysqldb.nodeApi.host }}\r
-    http:\r
-      paths:\r
-      - path: /mysqldb/(.*)\r
-        backend:\r
-          serviceName: {{ .Values.global.mysqldb.appName }}\r
-          servicePort: {{ .Values.global.mysqldb.port }}
\ No newline at end of file
diff --git a/otf-helm/otf/charts/databases/charts/mysqldb/templates/secret.yaml b/otf-helm/otf/charts/databases/charts/mysqldb/templates/secret.yaml
deleted file mode 100644 (file)
index 80834a7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-apiVersion: v1\r
-kind: Secret\r
-metadata:\r
-  name: {{ .Values.global.mysqldb.appName }}\r
-type: opaque\r
-data:\r
-  mysql_root_password: {{ .Values.global.mysqldb.mysqlRootPassword  | b64enc }}\r
-  mysql_password: {{ .Values.global.mysqldb.mysqlPassword  | b64enc }}\r
diff --git a/otf-helm/otf/charts/databases/charts/mysqldb/templates/service.yaml b/otf-helm/otf/charts/databases/charts/mysqldb/templates/service.yaml
deleted file mode 100644 (file)
index 7a9c79a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-apiVersion: v1\r
-kind: Service\r
-metadata:\r
-  name: {{ .Values.global.mysqldb.appName }}\r
-  namespace: {{ .Values.global.mysqldb.namespace }}\r
-  labels:\r
-    app: {{ .Values.global.mysqldb.appName }}\r
-    version: {{ .Values.global.mysqldb.version }}\r
-  annotations:\r
-    service.beta.kubernetes.io/azure-load-balancer-internal: "true"\r
-spec:\r
-  type: LoadBalancer\r
-  ports:\r
-  - port: {{ .Values.global.mysqldb.port }}\r
-    protocol: TCP\r
-    targetPort: {{ .Values.global.mysqldb.targetPort }}\r
-  selector:\r
-    app: {{ .Values.global.mysqldb.appName }}\r
-    version: {{ .Values.global.mysqldb.version }}\r
diff --git a/otf-helm/otf/charts/databases/charts/mysqldb/values.yaml b/otf-helm/otf/charts/databases/charts/mysqldb/values.yaml
deleted file mode 100644 (file)
index 1c0457b..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-# Values yaml file for reference from the github. - currently not used.\r
-\r
-## mysql image version\r
-## ref: https://hub.docker.com/r/library/mysql/tags/\r
-##\r
-image: "mysql"\r
-imageTag: "5.7.26"\r
-\r
-strategy:\r
-  type: Recreate\r
-\r
-busybox:\r
-  image: "busybox"\r
-  tag: "1.29.3"\r
-\r
-testFramework:\r
-  enabled: true\r
-  image: "dduportal/bats"\r
-  tag: "0.4.0"\r
-\r
-## Specify password for root user\r
-##\r
-## Default: random 10 character string\r
-# mysqlRootPassword: testing\r
-\r
-## Create a database user\r
-##\r
-# mysqlUser:\r
-## Default: random 10 character string\r
-# mysqlPassword:\r
-\r
-## Allow unauthenticated access, uncomment to enable\r
-##\r
-# mysqlAllowEmptyPassword: true\r
-\r
-## Create a database\r
-##\r
-# mysqlDatabase:\r
-\r
-## Specify an imagePullPolicy (Required)\r
-## It's recommended to change this to 'Always' if the image tag is 'latest'\r
-## ref: http://kubernetes.io/docs/user-guide/images/#updating-images\r
-##\r
-imagePullPolicy: IfNotPresent\r
-\r
-## Additionnal arguments that are passed to the MySQL container.\r
-## For example use --default-authentication-plugin=mysql_native_password if older clients need to\r
-## connect to a MySQL 8 instance.\r
-args: []\r
-\r
-extraVolumes: |\r
-  # - name: extras\r
-  #   emptyDir: {}\r
-\r
-extraVolumeMounts: |\r
-  # - name: extras\r
-  #   mountPath: /usr/share/extras\r
-  #   readOnly: true\r
-\r
-extraInitContainers: |\r
-  # - name: do-something\r
-  #   image: busybox\r
-  #   command: ['do', 'something']\r
-\r
-# Optionally specify an array of imagePullSecrets.\r
-# Secrets must be manually created in the namespace.\r
-# ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\r
-# imagePullSecrets:\r
-  # - name: myRegistryKeySecretName\r
-\r
-## Node selector\r
-## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\r
-nodeSelector: {}\r
-\r
-## Affinity\r
-## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\r
-affinity: {}\r
-\r
-## Tolerations for pod assignment\r
-## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\r
-##\r
-tolerations: []\r
-\r
-livenessProbe:\r
-  initialDelaySeconds: 30\r
-  periodSeconds: 10\r
-  timeoutSeconds: 5\r
-  successThreshold: 1\r
-  failureThreshold: 3\r
-\r
-readinessProbe:\r
-  initialDelaySeconds: 5\r
-  periodSeconds: 10\r
-  timeoutSeconds: 1\r
-  successThreshold: 1\r
-  failureThreshold: 3\r
-\r
-## Persist data to a persistent volume\r
-persistence:\r
-  enabled: true\r
-  ## database data Persistent Volume Storage Class\r
-  ## If defined, storageClassName: <storageClass>\r
-  ## If set to "-", storageClassName: "", which disables dynamic provisioning\r
-  ## If undefined (the default) or set to null, no storageClassName spec is\r
-  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on\r
-  ##   GKE, AWS & OpenStack)\r
-  ##\r
-  # storageClass: "-"\r
-  accessMode: ReadWriteOnce\r
-  size: 8Gi\r
-  annotations: {}\r
-\r
-## Use an alternate scheduler, e.g. "stork".\r
-## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\r
-##\r
-# schedulerName:\r
-\r
-## Security context\r
-securityContext:\r
-  enabled: false\r
-  runAsUser: 999\r
-  fsGroup: 999\r
-\r
-## Configure resource requests and limits\r
-## ref: http://kubernetes.io/docs/user-guide/compute-resources/\r
-##\r
-resources:\r
-  requests:\r
-    memory: 256Mi\r
-    cpu: 100m\r
-\r
-# Custom mysql configuration files path\r
-configurationFilesPath: /etc/mysql/conf.d/\r
-\r
-# Custom mysql configuration files used to override default mysql settings\r
-configurationFiles: {}\r
-#  mysql.cnf: |-\r
-#    [mysqld]\r
-#    skip-name-resolve\r
-#    ssl-ca=/ssl/ca.pem\r
-#    ssl-cert=/ssl/server-cert.pem\r
-#    ssl-key=/ssl/server-key.pem\r
-\r
-# Custom mysql init SQL files used to initialize the database\r
-initializationFiles: {}\r
-#  first-db.sql: |-\r
-#    CREATE DATABASE IF NOT EXISTS first DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;\r
-#  second-db.sql: |-\r
-#    CREATE DATABASE IF NOT EXISTS second DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;\r
-\r
-metrics:\r
-  enabled: false\r
-  image: prom/mysqld-exporter\r
-  imageTag: v0.10.0\r
-  imagePullPolicy: IfNotPresent\r
-  resources: {}\r
-  annotations: {}\r
-    # prometheus.io/scrape: "true"\r
-    # prometheus.io/port: "9104"\r
-  livenessProbe:\r
-    initialDelaySeconds: 15\r
-    timeoutSeconds: 5\r
-  readinessProbe:\r
-    initialDelaySeconds: 5\r
-    timeoutSeconds: 1\r
-  flags: []\r
-  serviceMonitor:\r
-    enabled: false\r
-    additionalLabels: {}\r
-\r
-## Configure the service\r
-## ref: http://kubernetes.io/docs/user-guide/services/\r
-service:\r
-  annotations: {}\r
-  ## Specify a service type\r
-  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types\r
-  type: ClusterIP\r
-  port: 3306\r
-  # nodePort: 32000\r
-  # loadBalancerIP:\r
-\r
-## Pods Service Account\r
-## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\r
-serviceAccount:\r
-  ## Specifies whether a ServiceAccount should be created\r
-  ##\r
-  create: false\r
-  ## The name of the ServiceAccount to use.\r
-  ## If not set and create is true, a name is generated using the mariadb.fullname template\r
-  # name:\r
-\r
-ssl:\r
-  enabled: false\r
-  secret: mysql-ssl-certs\r
-  certificates:\r
-#  - name: mysql-ssl-certs\r
-#    ca: |-\r
-#      -----BEGIN CERTIFICATE-----\r
-#      ...\r
-#      -----END CERTIFICATE-----\r
-#    cert: |-\r
-#      -----BEGIN CERTIFICATE-----\r
-#      ...\r
-#      -----END CERTIFICATE-----\r
-#    key: |-\r
-#      -----BEGIN RSA PRIVATE KEY-----\r
-#      ...\r
-#      -----END RSA PRIVATE KEY-----\r
-\r
-## Populates the 'TZ' system timezone environment variable\r
-## ref: https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html\r
-##\r
-## Default: nil (mysql will use image's default timezone, normally UTC)\r
-## Example: 'Australia/Sydney'\r
-# timezone:\r
-\r
-# Deployment Annotations\r
-deploymentAnnotations: {}\r
-\r
-# To be added to the database server pod(s)\r
-podAnnotations: {}\r
-podLabels: {}\r
-\r
-## Set pod priorityClassName\r
-# priorityClassName: {}\r
-\r
-\r
-## Init container resources defaults\r
-initContainer:\r
-  resources:\r
-    requests:\r
-      memory: 10Mi\r
-      cpu: 10m\r
diff --git a/otf-helm/otf/charts/databases/mongodb/.helmignore b/otf-helm/otf/charts/databases/mongodb/.helmignore
new file mode 100644 (file)
index 0000000..6b8710a
--- /dev/null
@@ -0,0 +1 @@
+.git
@@ -1,20 +1,19 @@
-apiVersion: v1\r
-name: mongodb\r
-version: 7.8.10\r
-appVersion: 4.2.6\r
-# The mongodb chart is deprecated and no longer maintained. For details deprecation, see the PROCESSES.md file.\r
-deprecated: true\r
-description: DEPRECATED NoSQL document-oriented database that stores JSON-like documents with dynamic schemas, simplifying the integration of data in content-driven applications.\r
-keywords:\r
-- mongodb\r
-- database\r
-- nosql\r
-- cluster\r
-- replicaset\r
-- replication\r
-home: https://mongodb.org\r
-icon: https://bitnami.com/assets/stacks/mongodb/img/mongodb-stack-220x234.png\r
-sources:\r
-- https://github.com/bitnami/bitnami-docker-mongodb\r
-maintainers: []\r
-engine: gotpl\r
+apiVersion: v1
+appVersion: 4.2.4
+deprecated: true
+description: DEPRECATED NoSQL document-oriented database that stores JSON-like documents
+  with dynamic schemas, simplifying the integration of data in content-driven applications.
+engine: gotpl
+home: https://mongodb.org
+icon: https://bitnami.com/assets/stacks/mongodb/img/mongodb-stack-220x234.png
+keywords:
+- mongodb
+- database
+- nosql
+- cluster
+- replicaset
+- replication
+name: mongodb
+sources:
+- https://github.com/bitnami/bitnami-docker-mongodb
+version: 7.8.10
diff --git a/otf-helm/otf/charts/databases/mongodb/OWNERS b/otf-helm/otf/charts/databases/mongodb/OWNERS
new file mode 100644 (file)
index 0000000..f87e010
--- /dev/null
@@ -0,0 +1,16 @@
+approvers:
+- prydonius
+- tompizmor
+- sameersbn
+- carrodher
+- javsalgar
+- juan131
+- miguelaeh
+reviewers:
+- prydonius
+- tompizmor
+- sameersbn
+- carrodher
+- javsalgar
+- juan131
+- miguelaeh
diff --git a/otf-helm/otf/charts/databases/mongodb/README.md b/otf-helm/otf/charts/databases/mongodb/README.md
new file mode 100644 (file)
index 0000000..0d592d5
--- /dev/null
@@ -0,0 +1,336 @@
+# MongoDB
+
+[MongoDB](https://www.mongodb.com/) is a cross-platform document-oriented database. Classified as a NoSQL database, MongoDB eschews the traditional table-based relational database structure in favor of JSON-like documents with dynamic schemas, making the integration of data in certain types of applications easier and faster.
+
+## This Helm chart is deprecated
+
+Given the [`stable` deprecation timeline](https://github.com/helm/charts#deprecation-timeline), the Bitnami maintained MongoDB Helm chart is now located at [bitnami/charts](https://github.com/bitnami/charts/).
+
+The Bitnami repository is already included in the Hubs and we will continue providing the same cadence of updates, support, etc that we've been keeping here these years. Installation instructions are very similar, just adding the _bitnami_ repo and using it during the installation (`bitnami/<chart>` instead of `stable/<chart>`)
+
+```bash
+$ helm repo add bitnami https://charts.bitnami.com/bitnami
+$ helm install my-release bitnami/<chart>           # Helm 3
+$ helm install --name my-release bitnami/<chart>    # Helm 2
+```
+
+To update an exisiting _stable_ deployment with a chart hosted in the bitnami repository you can execute
+
+```bash
+$ helm repo add bitnami https://charts.bitnami.com/bitnami
+$ helm upgrade my-release bitnami/<chart>
+```
+
+Issues and PRs related to the chart itself will be redirected to `bitnami/charts` GitHub repository. In the same way, we'll be happy to answer questions related to this migration process in [this issue](https://github.com/helm/charts/issues/20969) created as a common place for discussion.
+
+## TL;DR;
+
+```bash
+$ helm install my-release stable/mongodb
+```
+
+## Introduction
+
+This chart bootstraps a [MongoDB](https://github.com/bitnami/bitnami-docker-mongodb) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
+
+Bitnami charts can be used with [Kubeapps](https://kubeapps.com/) for deployment and management of Helm Charts in clusters. This chart has been tested to work with NGINX Ingress, cert-manager, fluentd and Prometheus on top of the [BKPR](https://kubeprod.io/).
+
+## Prerequisites
+
+- Kubernetes 1.12+
+- Helm 2.11+ or Helm 3.0-beta3+
+- PV provisioner support in the underlying infrastructure
+- ReadWriteMany volumes for deployment scaling
+
+## Installing the Chart
+
+To install the chart with the release name `my-release`:
+
+```bash
+$ helm install my-release stable/mongodb
+```
+
+The command deploys MongoDB on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.
+
+> **Tip**: List all releases using `helm list`
+
+## Uninstalling the Chart
+
+To uninstall/delete the `my-release` deployment:
+
+```bash
+$ helm delete my-release
+```
+
+The command removes all the Kubernetes components associated with the chart and deletes the release.
+
+## Parameters
+
+The following table lists the configurable parameters of the MongoDB chart and their default values.
+
+| Parameter                                          | Description                                                                                                                                               | Default                                                  |
+|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------|
+| `global.imageRegistry`                             | Global Docker image registry                                                                                                                              | `nil`                                                    |
+| `global.imagePullSecrets`                          | Global Docker registry secret names as an array                                                                                                           | `[]` (does not add image pull secrets to deployed pods)  |
+| `global.storageClass`                              | Global storage class for dynamic provisioning                                                                                                             | `nil`                                                    |
+| `image.registry`                                   | MongoDB image registry                                                                                                                                    | `docker.io`                                              |
+| `image.repository`                                 | MongoDB Image name                                                                                                                                        | `bitnami/mongodb`                                        |
+| `image.tag`                                        | MongoDB Image tag                                                                                                                                         | `{TAG_NAME}`                                             |
+| `image.pullPolicy`                                 | Image pull policy                                                                                                                                         | `IfNotPresent`                                           |
+| `image.pullSecrets`                                | Specify docker-registry secret names as an array                                                                                                          | `[]` (does not add image pull secrets to deployed pods)  |
+| `image.debug`                                      | Specify if debug logs should be enabled                                                                                                                   | `false`                                                  |
+| `nameOverride`                                     | String to partially override mongodb.fullname template with a string (will prepend the release name)                                                      | `nil`                                                    |
+| `fullnameOverride`                                 | String to fully override mongodb.fullname template with a string                                                                                          | `nil`                                                    |
+| `volumePermissions.enabled`                        | Enable init container that changes volume permissions in the data directory (for cases where the default k8s `runAsUser` and `fsUser` values do not work) | `false`                                                  |
+| `volumePermissions.image.registry`                 | Init container volume-permissions image registry                                                                                                          | `docker.io`                                              |
+| `volumePermissions.image.repository`               | Init container volume-permissions image name                                                                                                              | `bitnami/minideb`                                        |
+| `volumePermissions.image.tag`                      | Init container volume-permissions image tag                                                                                                               | `buster`                                                 |
+| `volumePermissions.image.pullPolicy`               | Init container volume-permissions image pull policy                                                                                                       | `Always`                                                 |
+| `volumePermissions.resources`                      | Init container resource requests/limit                                                                                                                    | `nil`                                                    |
+| `clusterDomain`                                    | Default Kubernetes cluster domain                                                                                                                         | `cluster.local`                                          |
+| `usePassword`                                      | Enable password authentication                                                                                                                            | `true`                                                   |
+| `existingSecret`                                   | Existing secret with MongoDB credentials                                                                                                                  | `nil`                                                    |
+| `mongodbRootPassword`                              | MongoDB admin password                                                                                                                                    | `random alphanumeric string (10)`                        |
+| `mongodbUsername`                                  | MongoDB custom user (mandatory if `mongodbDatabase` is set)                                                                                               | `nil`                                                    |
+| `mongodbPassword`                                  | MongoDB custom user password                                                                                                                              | `random alphanumeric string (10)`                        |
+| `mongodbDatabase`                                  | Database to create                                                                                                                                        | `nil`                                                    |
+| `mongodbEnableIPv6`                                | Switch to enable/disable IPv6 on MongoDB                                                                                                                  | `false`                                                  |
+| `mongodbDirectoryPerDB`                            | Switch to enable/disable DirectoryPerDB on MongoDB                                                                                                        | `false`                                                  |
+| `mongodbSystemLogVerbosity`                        | MongoDB system log verbosity level                                                                                                                        | `0`                                                      |
+| `mongodbDisableSystemLog`                          | Whether to disable MongoDB system log or not                                                                                                              | `false`                                                  |
+| `mongodbExtraFlags`                                | MongoDB additional command line flags                                                                                                                     | `[]`                                                     |
+| `service.name`                                     | Kubernetes service name                                                                                                                                   | `nil`                                                    |
+| `service.annotations`                              | Kubernetes service annotations, evaluated as a template                                                                                                   | `{}`                                                     |
+| `service.type`                                     | Kubernetes Service type                                                                                                                                   | `ClusterIP`                                              |
+| `service.clusterIP`                                | Static clusterIP or None for headless services                                                                                                            | `nil`                                                    |
+| `service.port`                                     | MongoDB service port                                                                                                                                      | `27017`                                                  |
+| `service.nodePort`                                 | Port to bind to for NodePort service type                                                                                                                 | `nil`                                                    |
+| `service.loadBalancerIP`                           | Static IP Address to use for LoadBalancer service type                                                                                                    | `nil`                                                    |
+| `service.externalIPs`                              | External IP list to use with ClusterIP service type                                                                                                       | `[]`                                                     |
+| `service.loadBalancerSourceRanges`                 | List of IP ranges allowed access to load balancer (if supported)                                                                                          | `[]` (does not add IP range restrictions to the service) |
+| `replicaSet.enabled`                               | Switch to enable/disable replica set configuration                                                                                                        | `false`                                                  |
+| `replicaSet.name`                                  | Name of the replica set                                                                                                                                   | `rs0`                                                    |
+| `replicaSet.useHostnames`                          | Enable DNS hostnames in the replica set config                                                                                                            | `true`                                                   |
+| `replicaSet.key`                                   | Key used for authentication in the replica set                                                                                                            | `random alphanumeric string (10)`                        |
+| `replicaSet.replicas.secondary`                    | Number of secondary nodes in the replica set                                                                                                              | `1`                                                      |
+| `replicaSet.replicas.arbiter`                      | Number of arbiter nodes in the replica set                                                                                                                | `1`                                                      |
+| `replicaSet.pdb.enabled`                           | Switch to enable/disable Pod Disruption Budget                                                                                                            | `true`                                                   |
+| `replicaSet.pdb.minAvailable.secondary`            | PDB (min available) for the MongoDB Secondary nodes                                                                                                       | `1`                                                      |
+| `replicaSet.pdb.minAvailable.arbiter`              | PDB (min available) for the MongoDB Arbiter nodes                                                                                                         | `1`                                                      |
+| `replicaSet.pdb.maxUnavailable.secondary`          | PDB (max unavailable) for the MongoDB Secondary nodes                                                                                                     | `nil`                                                    |
+| `replicaSet.pdb.maxUnavailable.arbiter`            | PDB (max unavailable) for the MongoDB Arbiter nodes                                                                                                       | `nil`                                                    |
+| `annotations`                                      | Annotations to be added to the deployment or statefulsets                                                                                                 | `{}`                                                     |
+| `labels`                                           | Additional labels for the deployment or statefulsets                                                                                                      | `{}`                                                     |
+| `podAnnotations`                                   | Annotations to be added to pods                                                                                                                           | `{}`                                                     |
+| `podLabels`                                        | Additional labels for the pod(s).                                                                                                                         | `{}`                                                     |
+| `resources`                                        | Pod resources                                                                                                                                             | `{}`                                                     |
+| `resourcesArbiter`                                 | Pod resources for arbiter when replica set is enabled                                                                                                     | `{}`                                                     |
+| `priorityClassName`                                | Pod priority class name                                                                                                                                   | ``                                                       |
+| `extraEnvVars`                                     | Array containing extra env vars to be added to all pods in the cluster (evaluated as a template)                                                          | `nil`                                                    |
+| `nodeSelector`                                     | Node labels for pod assignment                                                                                                                            | `{}`                                                     |
+| `affinity`                                         | Affinity for pod assignment                                                                                                                               | `{}`                                                     |
+| `affinityArbiter`                                  | Affinity for arbiter pod assignment                                                                                                                       | `{}`                                                     |
+| `tolerations`                                      | Toleration labels for pod assignment                                                                                                                      | `{}`                                                     |
+| `updateStrategy`                                   | Statefulsets update strategy policy                                                                                                                       | `RollingUpdate`                                          |
+| `securityContext.enabled`                          | Enable security context                                                                                                                                   | `true`                                                   |
+| `securityContext.fsGroup`                          | Group ID for the container                                                                                                                                | `1001`                                                   |
+| `securityContext.runAsUser`                        | User ID for the container                                                                                                                                 | `1001`                                                   |
+| `schedulerName`                                    | Name of the k8s scheduler (other than default)                                                                                                            | `nil`                                                    |
+| `sidecars`                                         | Add additional containers to pod                                                                                                                          | `[]`                                                     |
+| `extraVolumes`                                     | Add additional volumes to deployment                                                                                                                      | `[]`                                                     |
+| `extraVolumeMounts`                                | Add additional volumes mounts to pod                                                                                                                      | `[]`                                                     |
+| `sidecarsArbiter`                                  | Add additional containers to arbiter pod                                                                                                                  | `[]`                                                     |
+| `extraVolumesArbiter`                              | Add additional volumes to arbiter deployment                                                                                                              | `[]`                                                     |
+| `extraVolumeMountsArbiter`                         | Add additional volumes mounts to arbiter pod                                                                                                              | `[]`                                                     |
+| `persistence.enabled`                              | Use a PVC to persist data                                                                                                                                 | `true`                                                   |
+| `persistence.mountPath`                            | Path to mount the volume at                                                                                                                               | `/bitnami/mongodb`                                       |
+| `persistence.subPath`                              | Subdirectory of the volume to mount at                                                                                                                    | `""`                                                     |
+| `persistence.storageClass`                         | Storage class of backing PVC                                                                                                                              | `nil` (uses alpha storage class annotation)              |
+| `persistence.accessModes`                          | Use volume as ReadOnly or ReadWrite                                                                                                                       | `[ReadWriteOnce]`                                        |
+| `persistence.size`                                 | Size of data volume                                                                                                                                       | `8Gi`                                                    |
+| `persistence.annotations`                          | Persistent Volume annotations                                                                                                                             | `{}`                                                     |
+| `persistence.existingClaim`                        | Name of an existing PVC to use (avoids creating one if this is given)                                                                                     | `nil`                                                    |
+| `useStatefulSet`                                   | Set to true to use StatefulSet instead of Deployment even when replicaSet.enalbed=false                                                                   | `nil`                                                    |
+| `extraInitContainers`                              | Additional init containers as a string to be passed to the `tpl` function                                                                                 | `{}`                                                     |
+| `livenessProbe.enabled`                            | Enable/disable the Liveness probe                                                                                                                         | `true`                                                   |
+| `livenessProbe.initialDelaySeconds`                | Delay before liveness probe is initiated                                                                                                                  | `30`                                                     |
+| `livenessProbe.periodSeconds`                      | How often to perform the probe                                                                                                                            | `10`                                                     |
+| `livenessProbe.timeoutSeconds`                     | When the probe times out                                                                                                                                  | `5`                                                      |
+| `livenessProbe.successThreshold`                   | Minimum consecutive successes for the probe to be considered successful after having failed.                                                              | `1`                                                      |
+| `livenessProbe.failureThreshold`                   | Minimum consecutive failures for the probe to be considered failed after having succeeded.                                                                | `6`                                                      |
+| `readinessProbe.enabled`                           | Enable/disable the Readiness probe                                                                                                                        | `true`                                                   |
+| `readinessProbe.initialDelaySeconds`               | Delay before readiness probe is initiated                                                                                                                 | `5`                                                      |
+| `readinessProbe.periodSeconds`                     | How often to perform the probe                                                                                                                            | `10`                                                     |
+| `readinessProbe.timeoutSeconds`                    | When the probe times out                                                                                                                                  | `5`                                                      |
+| `readinessProbe.failureThreshold`                  | Minimum consecutive failures for the probe to be considered failed after having succeeded.                                                                | `6`                                                      |
+| `readinessProbe.successThreshold`                  | Minimum consecutive successes for the probe to be considered successful after having failed.                                                              | `1`                                                      |
+| `initConfigMap.name`                               | Custom config map with init scripts                                                                                                                       | `nil`                                                    |
+| `configmap`                                        | MongoDB configuration file to be used                                                                                                                     | `nil`                                                    |
+| `ingress.enabled`                                  | Enable ingress controller resource                                                                                                                        | `false`                                                  |
+| `ingress.certManager`                              | Add annotations for cert-manager                                                                                                                          | `false`                                                  |
+| `ingress.annotations`                              | Ingress annotations                                                                                                                                       | `[]`                                                     |
+| `ingress.hosts[0].name`                            | Hostname to your MongoDB installation                                                                                                                     | `mongodb.local`                                          |
+| `ingress.hosts[0].path`                            | Path within the url structure                                                                                                                             | `/`                                                      |
+| `ingress.tls[0].hosts[0]`                          | TLS hosts                                                                                                                                                 | `mongodb.local`                                          |
+| `ingress.tls[0].secretName`                        | TLS Secret (certificates)                                                                                                                                 | `mongodb.local-tls`                                      |
+| `ingress.secrets[0].name`                          | TLS Secret Name                                                                                                                                           | `nil`                                                    |
+| `ingress.secrets[0].certificate`                   | TLS Secret Certificate                                                                                                                                    | `nil`                                                    |
+| `ingress.secrets[0].key`                           | TLS Secret Key                                                                                                                                            | `nil`                                                    |
+| `metrics.enabled`                                  | Start a side-car prometheus exporter                                                                                                                      | `false`                                                  |
+| `metrics.image.registry`                           | MongoDB exporter image registry                                                                                                                           | `docker.io`                                              |
+| `metrics.image.repository`                         | MongoDB exporter image name                                                                                                                               | `bitnami/mongodb-exporter`                               |
+| `metrics.image.tag`                                | MongoDB exporter image tag                                                                                                                                | `{TAG_NAME}`                                             |
+| `metrics.image.pullPolicy`                         | Image pull policy                                                                                                                                         | `Always`                                                 |
+| `metrics.image.pullSecrets`                        | Specify docker-registry secret names as an array                                                                                                          | `[]` (does not add image pull secrets to deployed pods)  |
+| `metrics.podAnnotations.prometheus.io/scrape`      | Additional annotations for Metrics exporter pod                                                                                                           | `true`                                                   |
+| `metrics.podAnnotations.prometheus.io/port`        | Additional annotations for Metrics exporter pod                                                                                                           | `"9216"`                                                 |
+| `metrics.extraArgs`                                | String with extra arguments for the MongoDB Exporter                                                                                                      | ``                                                       |
+| `metrics.resources`                                | Exporter resource requests/limit                                                                                                                          | `{}`                                                     |
+| `metrics.serviceMonitor.enabled`                   | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator                                                                              | `false`                                                  |
+| `metrics.serviceMonitor.namespace`                 | Optional namespace which Prometheus is running in                                                                                                         | `nil`                                                    |
+| `metrics.serviceMonitor.additionalLabels`          | Used to pass Labels that are required by the Installed Prometheus Operator                                                                                | `{}`                                                     |
+| `metrics.serviceMonitor.relabellings`              | Specify Metric Relabellings to add to the scrape endpoint                                                                                                 | `nil`                                                    |
+| `metrics.serviceMonitor.alerting.rules`            | Define individual alerting rules as required                                                                                                              | `{}`                                                     |
+| `metrics.serviceMonitor.alerting.additionalLabels` | Used to pass Labels that are required by the Installed Prometheus Operator                                                                                | `{}`                                                     |
+| `metrics.livenessProbe.enabled`                    | Enable/disable the Liveness Check of Prometheus metrics exporter                                                                                          | `false`                                                  |
+| `metrics.livenessProbe.initialDelaySeconds`        | Initial Delay for Liveness Check of Prometheus metrics exporter                                                                                           | `15`                                                     |
+| `metrics.livenessProbe.periodSeconds`              | How often to perform Liveness Check of Prometheus metrics exporter                                                                                        | `5`                                                      |
+| `metrics.livenessProbe.timeoutSeconds`             | Timeout for Liveness Check of Prometheus metrics exporter                                                                                                 | `5`                                                      |
+| `metrics.livenessProbe.failureThreshold`           | Failure Threshold for Liveness Check of Prometheus metrics exporter                                                                                       | `3`                                                      |
+| `metrics.livenessProbe.successThreshold`           | Success Threshold for Liveness Check of Prometheus metrics exporter                                                                                       | `1`                                                      |
+| `metrics.readinessProbe.enabled`                   | Enable/disable the Readiness Check of Prometheus metrics exporter                                                                                         | `false`                                                  |
+| `metrics.readinessProbe.initialDelaySeconds`       | Initial Delay for Readiness Check of Prometheus metrics exporter                                                                                          | `5`                                                      |
+| `metrics.readinessProbe.periodSeconds`             | How often to perform Readiness Check of Prometheus metrics exporter                                                                                       | `5`                                                      |
+| `metrics.readinessProbe.timeoutSeconds`            | Timeout for Readiness Check of Prometheus metrics exporter                                                                                                | `1`                                                      |
+| `metrics.readinessProbe.failureThreshold`          | Failure Threshold for Readiness Check of Prometheus metrics exporter                                                                                      | `3`                                                      |
+| `metrics.readinessProbe.successThreshold`          | Success Threshold for Readiness Check of Prometheus metrics exporter                                                                                      | `1`                                                      |
+
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
+
+```bash
+$ helm install my-release \
+  --set mongodbRootPassword=secretpassword,mongodbUsername=my-user,mongodbPassword=my-password,mongodbDatabase=my-database \
+    stable/mongodb
+```
+
+The above command sets the MongoDB `root` account password to `secretpassword`. Additionally, it creates a standard database user named `my-user`, with the password `my-password`, who has access to a database named `my-database`.
+
+Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
+
+```bash
+$ helm install my-release -f values.yaml stable/mongodb
+```
+
+> **Tip**: You can use the default [values.yaml](values.yaml)
+
+## Configuration and installation details
+
+### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/)
+
+It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.
+
+Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.
+
+### Production configuration and horizontal scaling
+
+This chart includes a `values-production.yaml` file where you can find some parameters oriented to production configuration in comparison to the regular `values.yaml`. You can use this file instead of the default one.
+
+- Switch to enable/disable replica set configuration:
+```diff
+- replicaSet.enabled: false
++ replicaSet.enabled: true
+```
+
+- Start a side-car prometheus exporter:
+```diff
+- metrics.enabled: false
++ metrics.enabled: true
+```
+
+- Enable/disable the Liveness Check of Prometheus metrics exporter:
+```diff
+- metrics.livenessProbe.enabled: false
++ metrics.livenessProbe.enabled: true
+```
+
+- Enable/disable the Readiness Check of Prometheus metrics exporter:
+```diff
+- metrics.readinessProbe.enabled: false
++ metrics.readinessProbe.enabled: true
+```
+
+To horizontally scale this chart, you can use the `--replicas` flag to modify the number of secondary nodes in your MongoDB replica set.
+
+### Replication
+
+You can start the MongoDB chart in replica set mode with the following parameter: `replicaSet.enabled=true`
+
+Some characteristics of this chart are:
+
+- Each of the participants in the replication has a fixed stateful set so you always know where to find the primary, secondary or arbiter nodes.
+- The number of secondary and arbiter nodes can be scaled out independently.
+- Easy to move an application from using a standalone MongoDB server to use a replica set.
+
+### Initialize a fresh instance
+
+The [Bitnami MongoDB](https://github.com/bitnami/bitnami-docker-mongodb) image allows you to use your custom scripts to initialize a fresh instance. In order to execute the scripts, they must be located inside the chart folder `files/docker-entrypoint-initdb.d` so they can be consumed as a ConfigMap.
+Also you can create a custom config map and give it via `initConfigMap`(check options for more details).
+
+The allowed extensions are `.sh`, and `.js`.
+
+## Persistence
+
+The [Bitnami MongoDB](https://github.com/bitnami/bitnami-docker-mongodb) image stores the MongoDB data and configurations at the `/bitnami/mongodb` path of the container.
+
+The chart mounts a [Persistent Volume](http://kubernetes.io/docs/user-guide/persistent-volumes/) at this location. The volume is created using dynamic volume provisioning.
+
+### Adjust permissions of persistent volume mountpoint
+
+As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
+
+By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
+As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
+
+You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
+
+## Upgrading
+
+### To 7.0.0
+From this version, the way of setting the ingress rules has changed. Instead of using `ingress.paths` and `ingress.hosts` as separate objects, you should now define the rules as objects inside the `ingress.hosts` value, for example:
+
+```yaml
+ingress:
+  hosts:
+  - name: mongodb.local
+    path: /
+```
+
+### To 6.0.0
+
+From this version, `mongodbEnableIPv6` is set to `false` by default in order to work properly in most k8s clusters, if you want to use IPv6 support, you need to set this variable to `true` by adding `--set mongodbEnableIPv6=true` to your `helm` command.
+You can find more information in the [`bitnami/mongodb` image README](https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md).
+
+### To 5.0.0
+
+When enabling replicaset configuration, backwards compatibility is not guaranteed unless you modify the labels used on the chart's statefulsets.
+Use the workaround below to upgrade from versions previous to 5.0.0. The following example assumes that the release name is `my-release`:
+
+```console
+$ kubectl delete statefulset my-release-mongodb-arbiter my-release-mongodb-primary my-release-mongodb-secondary --cascade=false
+```
+
+## Configure Ingress
+MongoDB can exposed externally using an Ingress controller. To do so, it's necessary to:
+
+- Install the MongoDB chart setting the parameter `ingress.enabled=true`.
+- Create a ConfigMap to map the external port to use and the internal service/port where to redirect the requests (see https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md for more information).
+
+For instance, if you installed the MongoDB chart in the `default` namespace, you can install the [stable/nginx-ingress chart](https://github.com/helm/charts/tree/master/stable/nginx-ingress) setting the "tcp" parameter in the **values.yaml** used to install the chart as shown below:
+
+```yaml
+...
+
+tcp:
+  27017: "default/mongodb:27017"
+```
diff --git a/otf-helm/otf/charts/databases/mongodb/files/docker-entrypoint-initdb.d/README.md b/otf-helm/otf/charts/databases/mongodb/files/docker-entrypoint-initdb.d/README.md
new file mode 100644 (file)
index 0000000..a929990
--- /dev/null
@@ -0,0 +1,3 @@
+You can copy here your custom .sh, or .js file so they are executed during the first boot of the image.
+
+More info in the [bitnami-docker-mongodb](https://github.com/bitnami/bitnami-docker-mongodb#initializing-a-new-instance) repository.
\ No newline at end of file
diff --git a/otf-helm/otf/charts/databases/mongodb/files/docker-entrypoint-initdb.d/one.js b/otf-helm/otf/charts/databases/mongodb/files/docker-entrypoint-initdb.d/one.js
new file mode 100644 (file)
index 0000000..825148e
--- /dev/null
@@ -0,0 +1,6 @@
+sleep(12000);
+use admin;
+db.createUser({user: "otfuser", pwd: "Today.123", roles: [ { role: "readWrite", db: "test" } ]})
+use otf;
+db.users.insert({"permissions":["user"], "enabled":true, "password":"$2a$14$QWEuhquhhT.1dtVsmXq0QOxOMSmInjvQtr43Jbyz07nEeTbABdwqa", "firstName":"username", "lastname":"username", "email":"username", "isVerified":true})
+db.users.insert({"permissions":["admin"], "enabled":true, "password":"$2a$14$QWEuhquhhT.1dtVsmXq0QOxOMSmInjvQtr43Jbyz07nEeTbABdwqa", "firstName":"otf", "lastname":"user", "email":"otfuser@email.com", "isVerified":true})
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/NOTES.txt b/otf-helm/otf/charts/databases/mongodb/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..7145f73
--- /dev/null
@@ -0,0 +1,96 @@
+This Helm chart is deprecated
+
+Given the `stable` deprecation timeline (https://github.com/helm/charts#deprecation-timeline), the Bitnami maintained Helm chart is now located at bitnami/charts (https://github.com/bitnami/charts/).
+
+The Bitnami repository is already included in the Hubs and we will continue providing the same cadence of updates, support, etc that we've been keeping here these years. Installation instructions are very similar, just adding the _bitnami_ repo and using it during the installation (`bitnami/<chart>` instead of `stable/<chart>`)
+
+```bash
+$ helm repo add bitnami https://charts.bitnami.com/bitnami
+$ helm install my-release bitnami/<chart>           # Helm 3
+$ helm install --name my-release bitnami/<chart>    # Helm 2
+```
+
+To update an exisiting _stable_ deployment with a chart hosted in the bitnami repository you can execute
+
+```bash
+$ helm repo add bitnami https://charts.bitnami.com/bitnami
+$ helm upgrade my-release bitnami/<chart>
+```
+
+Issues and PRs related to the chart itself will be redirected to `bitnami/charts` GitHub repository. In the same way, we'll be happy to answer questions related to this migration process in this issue (https://github.com/helm/charts/issues/20969) created as a common place for discussion.
+
+{{- if contains .Values.service.type "LoadBalancer" }}
+{{- if not .Values.mongodbRootPassword }}
+-------------------------------------------------------------------------------
+ WARNING
+
+    By specifying "service.type=LoadBalancer" and not specifying "mongodbRootPassword"
+    you have most  likely exposed the MongoDB service externally without any
+    authentication mechanism.
+
+    For security reasons, we strongly suggest that you switch to "ClusterIP" or
+    "NodePort". As alternative, you can also specify a valid password on the
+    "mongodbRootPassword" parameter.
+
+-------------------------------------------------------------------------------
+{{- end }}
+{{- end }}
+
+** Please be patient while the chart is being deployed **
+
+MongoDB can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster:
+
+    {{ template "mongodb.serviceName" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}
+
+{{ if .Values.usePassword -}}
+
+To get the root password run:
+
+    export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mongodb.fullname" . }} -o jsonpath="{.data.mongodb-root-password}" | base64 --decode)
+
+{{- end }}
+{{- if and .Values.mongodbUsername .Values.mongodbDatabase }}
+{{- if .Values.mongodbPassword }}
+
+To get the password for "{{ .Values.mongodbUsername }}" run:
+
+    export MONGODB_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mongodb.fullname" . }} -o jsonpath="{.data.mongodb-password}" | base64 --decode)
+
+{{- end }}
+{{- end }}
+
+To connect to your database run the following command:
+
+    kubectl run --namespace {{ .Release.Namespace }} {{ template "mongodb.fullname" . }}-client --rm --tty -i --restart='Never' --image {{ template "mongodb.image" . }} --command -- mongo admin --host {{ template "mongodb.serviceName" . }} {{- if .Values.usePassword }} --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD{{- end }}
+
+To connect to your database from outside the cluster execute the following commands:
+
+{{- if contains "NodePort" .Values.service.type }}
+
+    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
+    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "mongodb.serviceName" . }})
+    mongo --host $NODE_IP --port $NODE_PORT {{- if .Values.usePassword }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}
+
+{{- else if contains "LoadBalancer" .Values.service.type }}
+
+  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "mongodb.serviceName" . }}'
+
+    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "mongodb.serviceName" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
+    mongo --host $SERVICE_IP --port {{ .Values.service.port }} {{- if .Values.usePassword }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}
+
+{{- else if contains "ClusterIP" .Values.service.type }}
+
+    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "mongodb.serviceName" . }} {{ .Values.service.port }}:{{ .Values.service.port }} &
+    mongo --host 127.0.0.1 {{- if .Values.usePassword }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}
+
+{{- end }}
+
+{{- include "mongodb.validateValues" . -}}
+
+{{- if and (contains "bitnami/" .Values.image.repository) (not (.Values.image.tag | toString | regexFind "-r\\d+$|sha256:")) }}
+
+WARNING: Rolling tag detected ({{ .Values.image.repository }}:{{ .Values.image.tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.
++info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/
+
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/_helpers.tpl b/otf-helm/otf/charts/databases/mongodb/templates/_helpers.tpl
new file mode 100644 (file)
index 0000000..47f1bb2
--- /dev/null
@@ -0,0 +1,252 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "mongodb.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Renders a value that contains template.
+Usage:
+{{ include "mongodb.tplValue" ( dict "value" .Values.path.to.the.Value "context" $) }}
+*/}}
+{{- define "mongodb.tplValue" -}}
+    {{- if typeIs "string" .value }}
+        {{- tpl .value .context }}
+    {{- else }}
+        {{- tpl (.value | toYaml) .context }}
+    {{- end }}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "mongodb.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "mongodb.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create the name for the admin secret.
+*/}}
+{{- define "mongodb.adminSecret" -}}
+    {{- if .Values.auth.existingAdminSecret -}}
+        {{- .Values.auth.existingAdminSecret -}}
+    {{- else -}}
+        {{- template "mongodb.fullname" . -}}-admin
+    {{- end -}}
+{{- end -}}
+
+{{/*
+Create the name for the key secret.
+*/}}
+{{- define "mongodb.keySecret" -}}
+    {{- if .Values.auth.existingKeySecret -}}
+        {{- .Values.auth.existingKeySecret -}}
+    {{- else -}}
+        {{- template "mongodb.fullname" . -}}-keyfile
+    {{- end -}}
+{{- end -}}
+
+{{/*
+Return the proper MongoDB image name
+*/}}
+{{- define "mongodb.image" -}}
+{{- $registryName := .Values.image.registry -}}
+{{- $repositoryName := .Values.image.repository -}}
+{{- $tag := .Values.image.tag | toString -}}
+{{/*
+Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
+but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
+Also, we can't use a single if because lazy evaluation is not an option
+*/}}
+{{- if .Values.global }}
+    {{- if .Values.global.imageRegistry }}
+        {{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
+    {{- else -}}
+        {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
+    {{- end -}}
+{{- else -}}
+    {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the proper image name (for the metrics image)
+*/}}
+{{- define "mongodb.metrics.image" -}}
+{{- $registryName := .Values.metrics.image.registry -}}
+{{- $repositoryName := .Values.metrics.image.repository -}}
+{{- $tag := .Values.metrics.image.tag | toString -}}
+{{/*
+Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
+but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
+Also, we can't use a single if because lazy evaluation is not an option
+*/}}
+{{- if .Values.global }}
+    {{- if .Values.global.imageRegistry }}
+        {{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
+    {{- else -}}
+        {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
+    {{- end -}}
+{{- else -}}
+    {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
+{{- end -}}
+{{- end -}}
+
+
+{{/*
+Return the proper Docker Image Registry Secret Names
+*/}}
+{{- define "mongodb.imagePullSecrets" -}}
+{{/*
+Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
+but Helm 2.9 and 2.10 does not support it, so we need to implement this if-else logic.
+Also, we can not use a single if because lazy evaluation is not an option
+*/}}
+{{- if .Values.global }}
+{{- if .Values.global.imagePullSecrets }}
+imagePullSecrets:
+{{- range .Values.global.imagePullSecrets }}
+  - name: {{ . }}
+{{- end }}
+{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
+imagePullSecrets:
+{{- range .Values.image.pullSecrets }}
+  - name: {{ . }}
+{{- end }}
+{{- range .Values.metrics.image.pullSecrets }}
+  - name: {{ . }}
+{{- end }}
+{{- range .Values.volumePermissions.image.pullSecrets }}
+  - name: {{ . }}
+{{- end }}
+{{- end -}}
+{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
+imagePullSecrets:
+{{- range .Values.image.pullSecrets }}
+  - name: {{ . }}
+{{- end }}
+{{- range .Values.metrics.image.pullSecrets }}
+  - name: {{ . }}
+{{- end }}
+{{- range .Values.volumePermissions.image.pullSecrets }}
+  - name: {{ . }}
+{{- end }}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the proper image name (for the init container volume-permissions image)
+*/}}
+{{- define "mongodb.volumePermissions.image" -}}
+{{- $registryName := .Values.volumePermissions.image.registry -}}
+{{- $repositoryName := .Values.volumePermissions.image.repository -}}
+{{- $tag := .Values.volumePermissions.image.tag | toString -}}
+{{/*
+Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
+but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
+Also, we can't use a single if because lazy evaluation is not an option
+*/}}
+{{- if .Values.global }}
+    {{- if .Values.global.imageRegistry }}
+        {{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
+    {{- else -}}
+        {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
+    {{- end -}}
+{{- else -}}
+    {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Compile all warnings into a single message, and call fail.
+*/}}
+{{- define "mongodb.validateValues" -}}
+{{- $messages := list -}}
+{{- $messages := append $messages (include "mongodb.validateValues.mongodbCustomDatabase" .) -}}
+{{- $messages := without $messages "" -}}
+{{- $message := join "\n" $messages -}}
+
+{{- if $message -}}
+{{-   printf "\nVALUES VALIDATION:\n%s" $message | fail -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Validate values of MongoDB - both mongodbUsername and mongodbDatabase are necessary
+to create a custom user and database during 1st initialization
+*/}}
+{{- define "mongodb.validateValues.mongodbCustomDatabase" -}}
+{{- if or (and .Values.mongodbUsername (not .Values.mongodbDatabase)) (and (not .Values.mongodbUsername) .Values.mongodbDatabase) }}
+mongodb: mongodbUsername, mongodbDatabase
+    Both mongodbUsername and mongodbDatabase must be provided to create
+    a custom user and database during 1st initialization.
+    Please set both of them (--set mongodbUsername="xxxx",mongodbDatabase="yyyy")
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return  the proper Storage Class
+*/}}
+{{- define "mongodb.storageClass" -}}
+{{/*
+Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
+but Helm 2.9 and 2.10 does not support it, so we need to implement this if-else logic.
+*/}}
+{{- if .Values.global -}}
+    {{- if .Values.global.storageClass -}}
+        {{- if (eq "-" .Values.global.storageClass) -}}
+            {{- printf "storageClassName: \"\"" -}}
+        {{- else }}
+            {{- printf "storageClassName: %s" .Values.global.storageClass -}}
+        {{- end -}}
+    {{- else -}}
+        {{- if .Values.persistence.storageClass -}}
+              {{- if (eq "-" .Values.persistence.storageClass) -}}
+                  {{- printf "storageClassName: \"\"" -}}
+              {{- else }}
+                  {{- printf "storageClassName: %s" .Values.persistence.storageClass -}}
+              {{- end -}}
+        {{- end -}}
+    {{- end -}}
+{{- else -}}
+    {{- if .Values.persistence.storageClass -}}
+        {{- if (eq "-" .Values.persistence.storageClass) -}}
+            {{- printf "storageClassName: \"\"" -}}
+        {{- else }}
+            {{- printf "storageClassName: %s" .Values.persistence.storageClass -}}
+        {{- end -}}
+    {{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Returns the proper Service name depending if an explicit service name is set
+in the values file. If the name is not explicitly set it will take the "mongodb.fullname"
+*/}}
+{{- define "mongodb.serviceName" -}}
+  {{- if .Values.service.name -}}
+    {{ .Values.service.name }}
+  {{- else -}}
+    {{ template "mongodb.fullname" .}}
+  {{- end -}}
+{{- end -}}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/configmap.yaml b/otf-helm/otf/charts/databases/mongodb/templates/configmap.yaml
new file mode 100644 (file)
index 0000000..b87bb1e
--- /dev/null
@@ -0,0 +1,15 @@
+{{- if .Values.configmap }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+  name: {{ template "mongodb.fullname" . }}
+  namespace: {{.Values.namespace }}
+data:
+  mongodb.conf: |-
+{{ toYaml .Values.configmap | indent 4 }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/deployment-standalone.yaml b/otf-helm/otf/charts/databases/mongodb/templates/deployment-standalone.yaml
new file mode 100644 (file)
index 0000000..08cc6e2
--- /dev/null
@@ -0,0 +1,305 @@
+{{- if not .Values.replicaSet.enabled }}
+apiVersion: apps/v1
+kind: {{ if .Values.useStatefulSet }}{{ "StatefulSet" }}{{- else }}{{ "Deployment" }}{{- end }}
+metadata:
+  name: {{ template "mongodb.fullname" . }}
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- with .Values.labels }}
+{{ toYaml . | indent 4 }}
+    {{- end }}
+  {{- with .Values.annotations }}
+  annotations:
+{{ toYaml . | indent 4 }}
+  {{- end }}
+spec:
+  {{- if .Values.useStatefulSet }}
+  serviceName: {{ template "mongodb.serviceName" . }}
+  updateStrategy:
+  {{- else }}
+  strategy:
+  {{- end }}
+    type: {{ .Values.updateStrategy.type }}
+    {{- if (eq "Recreate" .Values.updateStrategy.type) }}
+    rollingUpdate: null
+    {{- end }}
+  selector:
+    matchLabels:
+      app: {{ template "mongodb.name" . }}
+      release: "{{ .Release.Name }}"
+  template:
+    metadata:
+      labels:
+        app: {{ template "mongodb.name" . }}
+        release: "{{ .Release.Name }}"
+        chart: {{ template "mongodb.chart" . }}
+      {{- if .Values.podLabels }}
+{{ toYaml .Values.podLabels | indent 8 }}
+      {{- end }}
+      {{- if or .Values.podAnnotations .Values.metrics.enabled }}
+      annotations:
+{{- if .Values.podAnnotations }}
+{{ toYaml .Values.podAnnotations | indent 8 }}
+{{- end }}
+{{- if .Values.metrics.enabled }}
+{{ toYaml .Values.metrics.podAnnotations | indent 8 }}
+{{- end }}
+      {{- end }}
+    spec:
+      {{- if .Values.schedulerName }}
+      schedulerName: "{{ .Values.schedulerName }}"
+      {{- end }}
+      {{- if .Values.priorityClassName }}
+      priorityClassName: {{ .Values.priorityClassName }}
+      {{- end }}
+      {{- if .Values.securityContext.enabled }}
+      securityContext:
+        fsGroup: {{ .Values.securityContext.fsGroup }}
+      {{- end }}
+      {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+      {{- end -}}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+      {{- end }}
+      {{- if .Values.tolerations }}
+      tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
+      {{- end }}
+{{- include "mongodb.imagePullSecrets" . | indent 6 }}
+      initContainers:
+      {{- if .Values.extraInitContainers }}
+{{ tpl .Values.extraInitContainers . | indent 6}}
+      {{- end }}
+      {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
+      - name: volume-permissions
+        image: {{ template "mongodb.volumePermissions.image" . }}
+        imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
+        command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
+        securityContext:
+          runAsUser: 0
+        resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
+        volumeMounts:
+        - name: data
+          mountPath: {{ .Values.persistence.mountPath }}
+      {{- end }}
+      containers:
+      - name: {{ template "mongodb.fullname" . }}
+        image: {{ template "mongodb.image" . }}
+        imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
+        {{- if .Values.securityContext.enabled }}
+        securityContext:
+          runAsNonRoot: true
+          runAsUser: {{ .Values.securityContext.runAsUser }}
+        {{- end }}
+        env:
+        {{- if .Values.image.debug}}
+        - name: BITNAMI_DEBUG
+          value: "true"
+        {{- end }}
+        {{- if .Values.usePassword }}
+        {{- if and .Values.mongodbUsername .Values.mongodbDatabase }}
+        - name: MONGODB_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+              key: mongodb-password
+        {{- end }}
+        - name: MONGODB_ROOT_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+              key: mongodb-root-password
+        {{- end }}
+        {{- if .Values.mongodbUsername }}
+        - name: MONGODB_USERNAME
+          value: {{ .Values.mongodbUsername | quote }}
+        {{- end }}
+        - name: MONGODB_SYSTEM_LOG_VERBOSITY
+          value: {{ .Values.mongodbSystemLogVerbosity | quote }}
+        - name: MONGODB_DISABLE_SYSTEM_LOG
+          {{- if .Values.mongodbDisableSystemLog }}
+          value: "yes"
+          {{- else }}
+          value: "no"
+          {{- end }}
+        {{- if .Values.mongodbDatabase }}
+        - name: MONGODB_DATABASE
+          value: {{ .Values.mongodbDatabase | quote }}
+        {{- end }}
+        - name: MONGODB_ENABLE_IPV6
+        {{- if .Values.mongodbEnableIPv6 }}
+          value: "yes"
+        {{- else }}
+          value: "no"
+        {{- end }}
+        - name: MONGODB_ENABLE_DIRECTORY_PER_DB
+        {{- if .Values.mongodbDirectoryPerDB }}
+          value: "yes"
+        {{- else }}
+          value: "no"
+        {{- end }}
+        {{- if .Values.mongodbExtraFlags }}
+        - name: MONGODB_EXTRA_FLAGS
+          value: {{ .Values.mongodbExtraFlags | join " " | quote }}
+        {{- end }}
+        {{- if .Values.extraEnvVars }}
+        {{- include "mongodb.tplValue" ( dict "value" .Values.extraEnvVars "context" $ ) | nindent 8 }}
+        {{- end }}
+        ports:
+        - name: mongodb
+          containerPort: 27017
+        {{- if .Values.livenessProbe.enabled }}
+        livenessProbe:
+          exec:
+            command:
+            - mongo
+            - --eval
+            - "db.adminCommand('ping')"
+          initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
+          periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
+          timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
+          successThreshold: {{ .Values.livenessProbe.successThreshold }}
+          failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
+        {{- end }}
+        {{- if .Values.readinessProbe.enabled }}
+        readinessProbe:
+          exec:
+            command:
+            - mongo
+            - --eval
+            - "db.adminCommand('ping')"
+          initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
+          timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
+          successThreshold: {{ .Values.readinessProbe.successThreshold }}
+          failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
+        {{- end }}
+        volumeMounts:
+        - name: data
+          mountPath: {{ .Values.persistence.mountPath }}
+          subPath: {{ .Values.persistence.subPath }}
+        {{- if  or (.Files.Glob "files/docker-entrypoint-initdb.d/*[sh|js|json]") (.Values.initConfigMap) }}
+        - name: custom-init-scripts
+          mountPath: /docker-entrypoint-initdb.d
+        {{- end }}
+        {{- if .Values.configmap }}
+        - name: config
+          mountPath: /opt/bitnami/mongodb/conf/mongodb.conf
+          subPath: mongodb.conf
+        {{- end }}
+        {{- if .Values.extraVolumeMounts }}
+{{ toYaml .Values.extraVolumeMounts | indent 8}}
+        {{- end }}
+        resources:
+{{ toYaml .Values.resources | indent 10 }}
+{{- if .Values.metrics.enabled }}
+      - name: metrics
+        image: {{ template "mongodb.metrics.image" . }}
+        imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
+        {{- if .Values.securityContext.enabled }}
+        securityContext:
+          runAsNonRoot: true
+          runAsUser: {{ .Values.securityContext.runAsUser }}
+        {{- end }}
+        env:
+        {{- if .Values.usePassword }}
+        - name: MONGODB_ROOT_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+              key: mongodb-root-password
+        command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://root:${MONGODB_ROOT_PASSWORD}@localhost:{{ .Values.service.port }}/admin {{ .Values.metrics.extraArgs }}' ]
+        {{- else }}
+        command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://localhost:{{ .Values.service.port }} {{ .Values.metrics.extraArgs }}' ]
+        {{- end }}
+        ports:
+        - name: metrics
+          containerPort: 9216
+        {{- if .Values.metrics.livenessProbe.enabled }}
+        livenessProbe:
+          httpGet:
+            path: /metrics
+            port: metrics
+          initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }}
+          periodSeconds: {{ .Values.metrics.readinessProbe.periodSeconds }}
+          timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }}
+          failureThreshold: {{ .Values.metrics.livenessProbe.failureThreshold }}
+          successThreshold: {{ .Values.metrics.livenessProbe.successThreshold }}
+        {{- end }}
+        {{- if .Values.metrics.readinessProbe.enabled }}
+        readinessProbe:
+          httpGet:
+            path: /metrics
+            port: metrics
+          initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }}
+          periodSeconds: {{ .Values.metrics.readinessProbe.periodSeconds }}
+          timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }}
+          failureThreshold: {{ .Values.metrics.readinessProbe.failureThreshold }}
+          successThreshold: {{ .Values.metrics.readinessProbe.successThreshold }}
+        {{- end }}
+        resources:
+{{ toYaml .Values.metrics.resources | indent 10 }}
+{{- end }}
+{{- if .Values.sidecars }}
+{{ toYaml .Values.sidecars | indent 6 }}
+{{- end }}
+      volumes:
+      {{- if (.Files.Glob "files/docker-entrypoint-initdb.d/*[sh|js|json]") }}
+      - name: custom-init-scripts
+        configMap:
+          name: {{ template "mongodb.fullname" . }}-init-scripts
+      {{- end }}
+      {{- if (.Values.initConfigMap) }}
+      - name: custom-init-scripts
+        configMap:
+          name: {{ .Values.initConfigMap.name }}
+      {{- end }}
+      - name: data
+      {{- if not .Values.useStatefulSet }}
+      {{- if .Values.persistence.enabled }}
+        persistentVolumeClaim:
+          claimName: {{ if .Values.persistence.existingClaim }}{{ .Values.persistence.existingClaim }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+
+      {{- else }}
+        emptyDir: {}
+      {{- end -}}
+      {{- end -}}
+      {{- if .Values.configmap }}
+      - name: config
+        configMap:
+          name: {{ template "mongodb.fullname" . }}
+      {{- end }}
+      {{- if .Values.extraVolumes }}
+{{ toYaml .Values.extraVolumes | indent 6}}
+      {{- end }}
+{{- if .Values.useStatefulSet }}
+{{- if .Values.persistence.enabled }}
+  volumeClaimTemplates:
+    - metadata:
+        name: data
+        annotations:
+        {{- range $key, $value := .Values.persistence.annotations }}
+          {{ $key }}: "{{ $value }}"
+        {{- end }}
+      spec:
+        accessModes:
+        {{- range .Values.persistence.accessModes }}
+          - {{ . | quote }}
+        {{- end }}
+        resources:
+          requests:
+            storage: {{ .Values.persistence.size | quote }}
+        {{ include "mongodb.storageClass" . }}
+{{- else }}
+        - name: data
+          emptyDir: {}
+{{- end }}
+{{- end }}
+{{- end -}}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/ingress.yaml b/otf-helm/otf/charts/databases/mongodb/templates/ingress.yaml
new file mode 100644 (file)
index 0000000..2d1bfda
--- /dev/null
@@ -0,0 +1,34 @@
+{{- if .Values.ingress.enabled }}
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+  name: {{ template "mongodb.fullname" . }}
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+  annotations:
+    {{- if .Values.ingress.certManager }}
+    kubernetes.io/tls-acme: "true"
+    {{- end }}
+    {{- range $key, $value := .Values.ingress.annotations }}
+    {{ $key }}: {{ $value | quote }}
+    {{- end }}
+spec:
+  rules:
+  {{- range .Values.ingress.hosts }}
+  - host: {{ .name }}
+    http:
+      paths:
+      - path: {{ default "/" .path }}
+        backend:
+          serviceName: {{ template "mongodb.serviceName" $ }}
+          servicePort: mongodb
+  {{- end }}
+  {{- if .Values.ingress.tls }}
+  tls:
+{{ toYaml .Values.ingress.tls | indent 4 }}
+  {{- end }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/initialization-configmap.yaml b/otf-helm/otf/charts/databases/mongodb/templates/initialization-configmap.yaml
new file mode 100644 (file)
index 0000000..34a854d
--- /dev/null
@@ -0,0 +1,14 @@
+{{ if  (.Files.Glob "files/docker-entrypoint-initdb.d/*[sh|js|json]") }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "mongodb.fullname" . }}-init-scripts
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    release: {{ .Release.Name | quote }}
+    heritage: {{ .Release.Service | quote }}
+data:
+{{ tpl (.Files.Glob "files/docker-entrypoint-initdb.d/*[sh|js|json]").AsConfig . | indent 2 }}
+{{ end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/poddisruptionbudget-arbiter-rs.yaml b/otf-helm/otf/charts/databases/mongodb/templates/poddisruptionbudget-arbiter-rs.yaml
new file mode 100644 (file)
index 0000000..d5d5089
--- /dev/null
@@ -0,0 +1,28 @@
+{{- if and .Values.replicaSet.enabled .Values.replicaSet.pdb.enabled }}
+apiVersion: policy/v1beta1
+kind: PodDisruptionBudget
+metadata:
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+  name: {{ template "mongodb.fullname" . }}-arbiter
+  namespace: {{.Values.namespace }}
+spec:
+  {{- if .Values.replicaSet.pdb.minAvailable }}
+  {{- if .Values.replicaSet.pdb.minAvailable.arbiter }}
+  minAvailable: {{ .Values.replicaSet.pdb.minAvailable.arbiter }}
+  {{- end }}
+  {{- end }}
+  {{- if .Values.replicaSet.pdb.maxUnavailable }}
+  {{- if .Values.replicaSet.pdb.maxUnavailable.arbiter }}
+  maxUnavailable: {{ .Values.replicaSet.pdb.maxUnavailable.arbiter }}
+  {{- end }}
+  {{- end }}
+  selector:
+    matchLabels:
+      app: {{ template "mongodb.name" . }}
+      release: {{ .Release.Name }}
+      component: arbiter
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/poddisruptionbudget-secondary-rs.yaml b/otf-helm/otf/charts/databases/mongodb/templates/poddisruptionbudget-secondary-rs.yaml
new file mode 100644 (file)
index 0000000..6cadc60
--- /dev/null
@@ -0,0 +1,28 @@
+{{- if and .Values.replicaSet.enabled .Values.replicaSet.pdb.enabled }}
+apiVersion: policy/v1beta1
+kind: PodDisruptionBudget
+metadata:
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+  name: {{ template "mongodb.fullname" . }}-secondary
+  namespace: {{.Values.namespace }}
+spec:
+  {{- if .Values.replicaSet.pdb.minAvailable }}
+  {{- if .Values.replicaSet.pdb.minAvailable.secondary }}
+  minAvailable: {{ .Values.replicaSet.pdb.minAvailable.secondary }}
+  {{- end }}
+  {{- end }}
+  {{- if .Values.replicaSet.pdb.maxUnavailable }}
+  {{- if .Values.replicaSet.pdb.maxUnavailable.secondary }}
+  maxUnavailable: {{ .Values.replicaSet.pdb.maxUnavailable.secondary }}
+  {{- end }}
+  {{- end }}
+  selector:
+    matchLabels:
+      app: {{ template "mongodb.name" . }}
+      release: {{ .Release.Name }}
+      component: secondary
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/prometheus-alerting-rule.yaml b/otf-helm/otf/charts/databases/mongodb/templates/prometheus-alerting-rule.yaml
new file mode 100644 (file)
index 0000000..84f5a53
--- /dev/null
@@ -0,0 +1,18 @@
+{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled .Values.metrics.serviceMonitor.alerting.rules }}
+apiVersion: monitoring.coreos.com/v1
+kind: PrometheusRule
+metadata:
+  name: {{ template "mongodb.fullname" . }}
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+    {{- if .Values.metrics.serviceMonitor.alerting.additionalLabels }}
+{{ toYaml .Values.metrics.serviceMonitor.alerting.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  groups:
+{{ toYaml .Values.metrics.serviceMonitor.alerting.rules | indent 4 }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/prometheus-service-monitor.yaml b/otf-helm/otf/charts/databases/mongodb/templates/prometheus-service-monitor.yaml
new file mode 100644 (file)
index 0000000..17e8bf6
--- /dev/null
@@ -0,0 +1,36 @@
+{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ template "mongodb.fullname" . }}
+  {{- if .Values.metrics.serviceMonitor.namespace }}
+  #namespace: {{ .Values.metrics.serviceMonitor.namespace }}
+  namespace: {{.Values.namespace }}
+  {{- end }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+    {{- if .Values.metrics.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  endpoints:
+  - interval: 30s
+    port: metrics
+    {{- if .Values.metrics.serviceMonitor.relabellings }}
+    metricRelabelings:
+{{ toYaml .Values.metrics.serviceMonitor.relabellings | indent 4 }}
+    {{- end }}
+  jobLabel: {{ template "mongodb.fullname" . }}
+  namespaceSelector:
+    matchNames:
+    - "{{ $.Release.Namespace }}"
+  selector:
+    matchLabels:
+      app: {{ template "mongodb.name" . }}
+      chart: {{ template "mongodb.chart" . }}
+      release: "{{ .Release.Name }}"
+      heritage: "{{ .Release.Service }}"
+{{- end }}      
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/pvc-standalone.yaml b/otf-helm/otf/charts/databases/mongodb/templates/pvc-standalone.yaml
new file mode 100644 (file)
index 0000000..d37e897
--- /dev/null
@@ -0,0 +1,21 @@
+{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (not .Values.replicaSet.enabled) (not .Values.useStatefulSet) }}
+kind: PersistentVolumeClaim
+apiVersion: v1
+metadata:
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+  name: {{ template "mongodb.fullname" . }}
+  namespace: {{.Values.namespace }}
+spec:
+  accessModes:
+  {{- range .Values.persistence.accessModes }}
+    - {{ . | quote }}
+  {{- end }}
+  resources:
+    requests:
+      storage: {{ .Values.persistence.size | quote }}
+  {{ include "mongodb.storageClass" . }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/secrets.yaml b/otf-helm/otf/charts/databases/mongodb/templates/secrets.yaml
new file mode 100644 (file)
index 0000000..c57ea21
--- /dev/null
@@ -0,0 +1,38 @@
+{{ if and .Values.usePassword (not .Values.existingSecret) -}}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ template "mongodb.fullname" . }}
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+type: Opaque
+data:
+  {{- if .Values.mongodbRootPassword }}
+  mongodb-root-password:  {{ .Values.mongodbRootPassword | b64enc | quote }}
+  {{- else }}
+  mongodb-root-password: {{ randAlphaNum 10 | b64enc | quote }}
+  {{- end }}
+  {{- if and .Values.mongodbUsername .Values.mongodbDatabase }}
+  {{- if .Values.mongodbPassword }}
+  mongodb-password:  {{ .Values.mongodbPassword | b64enc | quote }}
+  {{- else }}
+  mongodb-password: {{ randAlphaNum 10 | b64enc | quote }}
+  {{- end }}
+  {{- end }}
+  {{- if .Values.replicaSet.enabled }}
+  {{- if .Values.replicaSet.key }}
+  mongodb-replica-set-key:  {{ .Values.replicaSet.key | b64enc | quote }}
+  {{- else }}
+  mongodb-replica-set-key: {{ randAlphaNum 10 | b64enc | quote }}
+  {{- end }}
+  {{- end }}
+{{- end }}
+  mongodb-ip: {{ .Values.mongodbIP | b64enc | quote }}
+  mongodb-username: {{ .Values.mongodbUsername | b64enc | quote }}
+  mongodb-password: {{ .Values.mongodbPassword | b64enc | quote }}
+  mongodb-replicaSet: {{ .Values.replicaSet.name | b64enc | quote}}
+  mongodb-database: {{ .Values.mongodbDatabase | b64enc | quote}}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/statefulset-arbiter-rs.yaml b/otf-helm/otf/charts/databases/mongodb/templates/statefulset-arbiter-rs.yaml
new file mode 100644 (file)
index 0000000..a8498d9
--- /dev/null
@@ -0,0 +1,188 @@
+{{- if .Values.replicaSet.enabled }}
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: {{ template "mongodb.fullname" . }}-arbiter
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+    {{- with .Values.labels }}
+{{ toYaml . | indent 4 }}
+    {{- end }}
+  {{- with .Values.annotations }}
+  annotations:
+{{ toYaml . | indent 4 }}
+  {{- end }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ template "mongodb.name" . }}
+      release: {{ .Release.Name }}
+      component: arbiter
+  serviceName: {{ template "mongodb.fullname" . }}-headless
+  replicas: {{ .Values.replicaSet.replicas.arbiter }}
+  updateStrategy:
+    type: {{ .Values.updateStrategy.type }}
+    {{- if (eq "Recreate" .Values.updateStrategy.type) }}
+    rollingUpdate: null
+    {{- end }}
+  template:
+    metadata:
+      labels:
+        app: {{ template "mongodb.name" . }}
+        chart: {{ template "mongodb.chart" . }}
+        release: {{ .Release.Name }}
+        component: arbiter
+      {{- if .Values.podLabels }}
+{{ toYaml .Values.podLabels | indent 8 }}
+      {{- end }}
+      {{- if .Values.podAnnotations }}
+      annotations:
+{{ toYaml .Values.podAnnotations | indent 8 }}
+      {{- end }}
+    spec:
+      {{- if .Values.schedulerName }}
+      schedulerName: "{{ .Values.schedulerName }}"
+      {{- end }}
+      {{- if .Values.priorityClassName }}
+      priorityClassName: {{ .Values.priorityClassName }}
+      {{- end }}
+      {{- if .Values.securityContext.enabled }}
+      securityContext:
+        fsGroup: {{ .Values.securityContext.fsGroup }}
+      {{- end }}
+      {{- if .Values.affinityArbiter }}
+      affinity:
+{{ toYaml .Values.affinityArbiter | indent 8 }}
+      {{- end -}}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+      {{- end }}
+      {{- if .Values.tolerations }}
+      tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
+      {{- end }}
+{{- include "mongodb.imagePullSecrets" . | indent 6 }}
+      {{- if .Values.extraInitContainers }}
+      initContainers:
+{{ tpl .Values.extraInitContainers . | indent 6}}
+      {{- end }}
+      containers:
+        - name: {{ template "mongodb.name" . }}-arbiter
+          image: {{ template "mongodb.image" . }}
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          {{- if .Values.securityContext.enabled }}
+          securityContext:
+            runAsNonRoot: true
+            runAsUser: {{ .Values.securityContext.runAsUser }}
+          {{- end }}
+          ports:
+          - containerPort: {{ .Values.service.port }}
+            name: mongodb
+          env:
+          {{- if .Values.image.debug}}
+          - name: BITNAMI_DEBUG
+            value: "true"
+          {{- end }}
+          - name: MONGODB_SYSTEM_LOG_VERBOSITY
+            value: {{ .Values.mongodbSystemLogVerbosity | quote }}
+          - name: MONGODB_DISABLE_SYSTEM_LOG
+            {{- if .Values.mongodbDisableSystemLog }}
+            value: "yes"
+            {{- else }}
+            value: "no"
+            {{- end }}
+          - name: MONGODB_POD_NAME
+            valueFrom:
+              fieldRef:
+                fieldPath: metadata.name
+          - name: MONGODB_REPLICA_SET_MODE
+            value: "arbiter"
+          - name: MONGODB_PRIMARY_HOST
+            value: {{ template "mongodb.fullname" . }}
+          - name: MONGODB_REPLICA_SET_NAME
+            value: {{ .Values.replicaSet.name | quote }}
+            {{- if .Values.replicaSet.useHostnames }}
+          - name: MONGODB_ADVERTISED_HOSTNAME
+            value: "$(MONGODB_POD_NAME).{{ template "mongodb.fullname" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}"
+            {{- end }}
+            {{- if .Values.usePassword }}
+          - name: MONGODB_PRIMARY_ROOT_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-root-password
+          - name: MONGODB_REPLICA_SET_KEY
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-replica-set-key
+            {{- end }}
+          - name: MONGODB_ENABLE_IPV6
+          {{- if .Values.mongodbEnableIPv6 }}
+            value: "yes"
+          {{- else }}
+            value: "no"
+          {{- end }}
+          - name: MONGODB_ENABLE_DIRECTORY_PER_DB
+          {{- if .Values.mongodbDirectoryPerDB }}
+            value: "yes"
+          {{- else }}
+            value: "no"
+          {{- end }}
+          {{- if .Values.mongodbExtraFlags }}
+          - name: MONGODB_EXTRA_FLAGS
+            value: {{ .Values.mongodbExtraFlags | join " " | quote }}
+          {{- end }}
+          {{- if .Values.extraEnvVars }}
+          {{- include "mongodb.tplValue" ( dict "value" .Values.extraEnvVars "context" $ ) | nindent 10 }}
+          {{- end }}
+          {{- if .Values.livenessProbe.enabled }}
+          livenessProbe:
+            tcpSocket:
+              port: mongodb
+            initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
+            successThreshold: {{ .Values.livenessProbe.successThreshold }}
+            failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
+          {{- end }}
+          {{- if .Values.readinessProbe.enabled }}
+          readinessProbe:
+            tcpSocket:
+              port: mongodb
+            initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
+            successThreshold: {{ .Values.readinessProbe.successThreshold }}
+            failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
+          {{- end }}
+          volumeMounts:
+          {{- if .Values.configmap }}
+            - name: config
+              mountPath: /opt/bitnami/mongodb/conf/mongodb.conf
+              subPath: mongodb.conf
+          {{- end }}
+          resources:
+{{ toYaml .Values.resourcesArbiter | indent 12 }}
+{{- if .Values.extraVolumeMountsArbiter }}
+          volumeMounts:
+{{ toYaml .Values.extraVolumeMountsArbiter | indent 12}}
+{{- end }}
+{{- if .Values.sidecarsArbiter }}
+{{ toYaml .Values.sidecarsArbiter | indent 8 }}
+{{- end }}
+      volumes:
+      {{- if .Values.configmap }}
+        - name: config
+          configMap:
+            name: {{ template "mongodb.fullname" . }}
+      {{- end }}
+      {{- if .Values.extraVolumesArbiter }}
+{{ toYaml .Values.extraVolumesArbiter | indent 8 }}
+      {{- end }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/statefulset-primary-rs.yaml b/otf-helm/otf/charts/databases/mongodb/templates/statefulset-primary-rs.yaml
new file mode 100644 (file)
index 0000000..6ef1d55
--- /dev/null
@@ -0,0 +1,308 @@
+{{- if .Values.replicaSet.enabled }}
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: {{ template "mongodb.fullname" . }}-primary
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+    {{- with .Values.labels }}
+{{ toYaml . | indent 4 }}
+    {{- end }}
+  {{- with .Values.annotations }}
+  annotations:
+{{ toYaml . | indent 4 }}
+  {{- end }}
+spec:
+  serviceName: {{ template "mongodb.fullname" . }}-headless
+  replicas: 1
+  updateStrategy:
+    type: {{ .Values.updateStrategy.type }}
+    {{- if (eq "Recreate" .Values.updateStrategy.type) }}
+    rollingUpdate: null
+    {{- end }}
+  selector:
+    matchLabels:
+      app: {{ template "mongodb.name" . }}
+      release: {{ .Release.Name }}
+      component: primary
+  template:
+    metadata:
+      labels:
+        app: {{ template "mongodb.name" . }}
+        chart: {{ template "mongodb.chart" . }}
+        release: {{ .Release.Name }}
+        component: primary
+      {{- if .Values.podLabels }}
+{{ toYaml .Values.podLabels | indent 8 }}
+      {{- end }}
+      {{- if or .Values.podAnnotations .Values.metrics.enabled }}
+      annotations:
+{{- if .Values.podAnnotations }}
+{{ toYaml .Values.podAnnotations | indent 8 }}
+{{- end }}
+{{- if .Values.metrics.enabled }}
+{{ toYaml .Values.metrics.podAnnotations | indent 8 }}
+{{- end }}
+      {{- end }}
+    spec:
+      {{- if .Values.schedulerName }}
+      schedulerName: "{{ .Values.schedulerName }}"
+      {{- end }}
+      {{- if .Values.priorityClassName }}
+      priorityClassName: {{ .Values.priorityClassName }}
+      {{- end }}
+      {{- if .Values.securityContext.enabled }}
+      securityContext:
+        fsGroup: {{ .Values.securityContext.fsGroup }}
+      {{- end }}
+      {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+      {{- end -}}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+      {{- end }}
+      {{- if .Values.tolerations }}
+      tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
+      {{- end }}
+{{- include "mongodb.imagePullSecrets" . | indent 6 }}
+      initContainers:
+      {{- if .Values.extraInitContainers }}
+{{ tpl .Values.extraInitContainers . | indent 6}}
+      {{- end }}
+      {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
+      - name: volume-permissions
+        image: {{ template "mongodb.volumePermissions.image" . }}
+        imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
+        command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
+        securityContext:
+          runAsUser: 0
+        resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
+        volumeMounts:
+        - name: datadir
+          mountPath: {{ .Values.persistence.mountPath }}
+      {{- end }}
+      containers:
+        - name: {{ template "mongodb.name" . }}-primary
+          image: {{ template "mongodb.image" . }}
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          {{- if .Values.securityContext.enabled }}
+          securityContext:
+            runAsNonRoot: true
+            runAsUser: {{ .Values.securityContext.runAsUser }}
+          {{- end }}
+          ports:
+          - containerPort: {{ .Values.service.port }}
+            name: mongodb
+          env:
+          {{- if .Values.image.debug}}
+          - name: BITNAMI_DEBUG
+            value: "true"
+          {{- end }}
+          - name: MONGODB_SYSTEM_LOG_VERBOSITY
+            value: {{ .Values.mongodbSystemLogVerbosity | quote }}
+          - name: MONGODB_DISABLE_SYSTEM_LOG
+            {{- if .Values.mongodbDisableSystemLog }}
+            value: "yes"
+            {{- else }}
+            value: "no"
+            {{- end }}
+          - name: MONGODB_POD_NAME
+            valueFrom:
+              fieldRef:
+                fieldPath: metadata.name
+          - name: MONGODB_REPLICA_SET_MODE
+            value: "primary"
+          - name: MONGODB_REPLICA_SET_NAME
+            value: {{ .Values.replicaSet.name | quote }}
+            {{- if .Values.replicaSet.useHostnames }}
+          - name: MONGODB_ADVERTISED_HOSTNAME
+            value: "$(MONGODB_POD_NAME).{{ template "mongodb.fullname" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}"
+            {{- end }}
+          {{- if .Values.mongodbUsername }}
+          - name: MONGODB_USERNAME
+            value: {{ .Values.mongodbUsername | quote }}
+          {{- end }}
+          {{- if .Values.mongodbDatabase }}
+          - name: MONGODB_DATABASE
+            value: {{ .Values.mongodbDatabase | quote }}
+          {{- end }}
+            {{- if .Values.usePassword }}
+            {{- if and .Values.mongodbUsername .Values.mongodbDatabase }}
+          - name: MONGODB_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-password
+            {{- end }}
+          - name: MONGODB_ROOT_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-root-password
+          - name: MONGODB_REPLICA_SET_KEY
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-replica-set-key
+            {{- end }}
+          - name: MONGODB_ENABLE_IPV6
+          {{- if .Values.mongodbEnableIPv6 }}
+            value: "yes"
+          {{- else }}
+            value: "no"
+          {{- end }}
+          - name: MONGODB_ENABLE_DIRECTORY_PER_DB
+          {{- if .Values.mongodbDirectoryPerDB }}
+            value: "yes"
+          {{- else }}
+            value: "no"
+          {{- end }}
+          {{- if .Values.mongodbExtraFlags }}
+          - name: MONGODB_EXTRA_FLAGS
+            value: {{ .Values.mongodbExtraFlags | join " " | quote }}
+          {{- end }}
+          {{- if .Values.extraEnvVars }}
+          {{- include "mongodb.tplValue" ( dict "value" .Values.extraEnvVars "context" $ ) | nindent 10 }}
+          {{- end }}
+          {{- if .Values.livenessProbe.enabled }}
+          livenessProbe:
+            exec:
+              command:
+                - pgrep
+                - mongod
+            initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
+            successThreshold: {{ .Values.livenessProbe.successThreshold }}
+            failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
+          {{- end }}
+          {{- if .Values.readinessProbe.enabled }}
+          readinessProbe:
+            exec:
+              command:
+                - mongo
+                - --eval
+                - "db.adminCommand('ping')"
+            initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
+            successThreshold: {{ .Values.readinessProbe.successThreshold }}
+            failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
+          {{- end }}
+          volumeMounts:
+            - name: datadir
+              mountPath: {{ .Values.persistence.mountPath }}
+              subPath: {{ .Values.persistence.subPath }}
+            {{- if  or (.Files.Glob "files/docker-entrypoint-initdb.d/*[sh|js|json]") (.Values.initConfigMap) }}
+            - name: custom-init-scripts
+              mountPath: /docker-entrypoint-initdb.d
+            {{- end }}
+            {{- if .Values.configmap }}
+            - name: config
+              mountPath: /opt/bitnami/mongodb/conf/mongodb.conf
+              subPath: mongodb.conf
+            {{- end }}
+          {{- if .Values.extraVolumeMounts }}
+{{ toYaml .Values.extraVolumeMounts | indent 12}}
+          {{- end }}
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+{{- if .Values.metrics.enabled }}
+        - name: metrics
+          image: {{ template "mongodb.metrics.image" . }}
+          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
+          {{- if .Values.securityContext.enabled }}
+          securityContext:
+            runAsNonRoot: true
+            runAsUser: {{ .Values.securityContext.runAsUser }}
+          {{- end }}
+          env:
+          {{- if .Values.usePassword }}
+          - name: MONGODB_ROOT_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-root-password
+          command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://root:${MONGODB_ROOT_PASSWORD}@localhost:{{ .Values.service.port }}/admin {{ .Values.metrics.extraArgs }}' ]
+          {{- else }}
+          command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://localhost:{{ .Values.service.port }} {{ .Values.metrics.extraArgs }}' ]
+          {{- end }}
+          ports:
+          - name: metrics
+            containerPort: 9216
+          {{- if .Values.metrics.livenessProbe.enabled }}
+          livenessProbe:
+            httpGet:
+              path: /metrics
+              port: metrics
+            initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.metrics.livenessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }}
+            failureThreshold: {{ .Values.metrics.livenessProbe.failureThreshold }}
+            successThreshold: {{ .Values.metrics.livenessProbe.successThreshold }}
+          {{- end }}
+          {{- if .Values.metrics.readinessProbe.enabled }}
+          readinessProbe:
+            httpGet:
+              path: /metrics
+              port: metrics
+            initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.metrics.readinessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }}
+            failureThreshold: {{ .Values.metrics.readinessProbe.failureThreshold }}
+            successThreshold: {{ .Values.metrics.readinessProbe.successThreshold }}
+          {{- end }}
+          resources:
+{{ toYaml .Values.metrics.resources | indent 12 }}
+{{- end }}
+{{- if .Values.sidecars }}
+{{ toYaml .Values.sidecars | indent 8 }}
+{{- end }}
+      volumes:
+        {{- if (.Files.Glob "files/docker-entrypoint-initdb.d/*[sh|js|json]") }}
+        - name: custom-init-scripts
+          configMap:
+            name: {{ template "mongodb.fullname" . }}-init-scripts
+        {{- end }}
+        {{- if (.Values.initConfigMap) }}
+        - name: custom-init-scripts
+          configMap:
+            name: {{ .Values.initConfigMap.name }}
+        {{- end }}
+        {{- if .Values.configmap }}
+        - name: config
+          configMap:
+            name: {{ template "mongodb.fullname" . }}
+        {{- end }}
+        {{- if .Values.extraVolumes }}
+{{ toYaml .Values.extraVolumes | indent 8}}
+        {{- end }}
+{{- if .Values.persistence.enabled }}
+  volumeClaimTemplates:
+    - metadata:
+        name: datadir
+        annotations:
+        {{- range $key, $value := .Values.persistence.annotations }}
+          {{ $key }}: "{{ $value }}"
+        {{- end }}
+      spec:
+        accessModes:
+        {{- range .Values.persistence.accessModes }}
+          - {{ . | quote }}
+        {{- end }}
+        resources:
+          requests:
+            storage: {{ .Values.persistence.size | quote }}
+        {{ include "mongodb.storageClass" . }}
+{{- else }}
+        - name: datadir
+          emptyDir: {}
+{{- end }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/statefulset-secondary-rs.yaml b/otf-helm/otf/charts/databases/mongodb/templates/statefulset-secondary-rs.yaml
new file mode 100644 (file)
index 0000000..21212f0
--- /dev/null
@@ -0,0 +1,282 @@
+{{- if .Values.replicaSet.enabled }}
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: {{ template "mongodb.fullname" . }}-secondary
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    heritage: {{ .Release.Service }}
+    release: {{ .Release.Name }}
+    {{- with .Values.labels }}
+{{ toYaml . | indent 4 }}
+    {{- end }}
+  {{- with .Values.annotations }}
+  annotations:
+{{ toYaml . | indent 4 }}
+  {{- end }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ template "mongodb.name" . }}
+      release: {{ .Release.Name }}
+      component: secondary
+  podManagementPolicy: "Parallel"
+  serviceName: {{ template "mongodb.fullname" . }}-headless
+  replicas: {{ .Values.replicaSet.replicas.secondary }}
+  updateStrategy:
+    type: {{ .Values.updateStrategy.type }}
+    {{- if (eq "Recreate" .Values.updateStrategy.type) }}
+    rollingUpdate: null
+    {{- end }}
+  template:
+    metadata:
+      labels:
+        app: {{ template "mongodb.name" . }}
+        chart: {{ template "mongodb.chart" . }}
+        release: {{ .Release.Name }}
+        component: secondary
+      {{- if .Values.podLabels }}
+{{ toYaml .Values.podLabels | indent 8 }}
+      {{- end }}
+      {{- if or .Values.podAnnotations .Values.metrics.enabled }}
+      annotations:
+{{- if .Values.podAnnotations }}
+{{ toYaml .Values.podAnnotations | indent 8 }}
+{{- end }}
+{{- if .Values.metrics.enabled }}
+{{ toYaml .Values.metrics.podAnnotations | indent 8 }}
+{{- end }}
+      {{- end }}
+    spec:
+      {{- if .Values.schedulerName }}
+      schedulerName: "{{ .Values.schedulerName }}"
+      {{- end }}
+      {{- if .Values.priorityClassName }}
+      priorityClassName: {{ .Values.priorityClassName }}
+      {{- end }}
+      {{- if .Values.securityContext.enabled }}
+      securityContext:
+        fsGroup: {{ .Values.securityContext.fsGroup }}
+      {{- end }}
+      {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+      {{- end -}}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+      {{- end }}
+      {{- if .Values.tolerations }}
+      tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
+      {{- end }}
+{{- include "mongodb.imagePullSecrets" . | indent 6 }}
+      initContainers:
+      {{- if .Values.extraInitContainers }}
+{{ tpl .Values.extraInitContainers . | indent 6}}
+      {{- end }}
+      {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
+      - name: volume-permissions
+        image: {{ template "mongodb.volumePermissions.image" . }}
+        imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
+        command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
+        securityContext:
+          runAsUser: 0
+        resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
+        volumeMounts:
+        - name: datadir
+          mountPath: {{ .Values.persistence.mountPath }}
+      {{- end }}
+      containers:
+        - name: {{ template "mongodb.name" . }}-secondary
+          image: {{ template "mongodb.image" . }}
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          {{- if .Values.securityContext.enabled }}
+          securityContext:
+            runAsNonRoot: true
+            runAsUser: {{ .Values.securityContext.runAsUser }}
+          {{- end }}
+          ports:
+          - containerPort: {{ .Values.service.port }}
+            name: mongodb
+          env:
+          {{- if .Values.image.debug}}
+          - name: BITNAMI_DEBUG
+            value: "true"
+          {{- end }}
+          - name: MONGODB_SYSTEM_LOG_VERBOSITY
+            value: {{ .Values.mongodbSystemLogVerbosity | quote }}
+          - name: MONGODB_DISABLE_SYSTEM_LOG
+            {{- if .Values.mongodbDisableSystemLog }}
+            value: "yes"
+            {{- else }}
+            value: "no"
+            {{- end }}
+          - name: MONGODB_POD_NAME
+            valueFrom:
+              fieldRef:
+                fieldPath: metadata.name
+          - name: MONGODB_REPLICA_SET_MODE
+            value: "secondary"
+          - name: MONGODB_PRIMARY_HOST
+            value: {{ template "mongodb.fullname" . }}
+          - name: MONGODB_REPLICA_SET_NAME
+            value: {{ .Values.replicaSet.name | quote }}
+            {{- if .Values.replicaSet.useHostnames }}
+          - name: MONGODB_ADVERTISED_HOSTNAME
+            value: "$(MONGODB_POD_NAME).{{ template "mongodb.fullname" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}"
+            {{- end }}
+            {{- if .Values.usePassword }}
+          - name: MONGODB_PRIMARY_ROOT_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-root-password
+          - name: MONGODB_REPLICA_SET_KEY
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-replica-set-key
+            {{- end }}
+          - name: MONGODB_ENABLE_IPV6
+          {{- if .Values.mongodbEnableIPv6 }}
+            value: "yes"
+          {{- else }}
+            value: "no"
+          {{- end }}
+          - name: MONGODB_ENABLE_DIRECTORY_PER_DB
+          {{- if .Values.mongodbDirectoryPerDB }}
+            value: "yes"
+          {{- else }}
+            value: "no"
+          {{- end }}
+          {{- if .Values.mongodbExtraFlags }}
+          - name: MONGODB_EXTRA_FLAGS
+            value: {{ .Values.mongodbExtraFlags | join " " | quote }}
+          {{- end }}
+          {{- if .Values.extraEnvVars }}
+          {{- include "mongodb.tplValue" ( dict "value" .Values.extraEnvVars "context" $ ) | nindent 10 }}
+          {{- end }}
+          {{- if .Values.livenessProbe.enabled }}
+          livenessProbe:
+            exec:
+              command:
+                - pgrep
+                - mongod
+            initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
+            successThreshold: {{ .Values.livenessProbe.successThreshold }}
+            failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
+          {{- end }}
+          {{- if .Values.readinessProbe.enabled }}
+          readinessProbe:
+            exec:
+              command:
+                - mongo
+                - --eval
+                - "db.adminCommand('ping')"
+            initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
+            successThreshold: {{ .Values.readinessProbe.successThreshold }}
+            failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
+          {{- end }}
+          volumeMounts:
+            - name: datadir
+              mountPath: {{ .Values.persistence.mountPath }}
+              subPath: {{ .Values.persistence.subPath }}
+            {{- if .Values.configmap }}
+            - name: config
+              mountPath: /opt/bitnami/mongodb/conf/mongodb.conf
+              subPath: mongodb.conf
+            {{- end }}
+          {{- if .Values.extraVolumeMounts }}
+{{ toYaml .Values.extraVolumeMounts | indent 12}}
+          {{- end }}
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+{{- if .Values.metrics.enabled }}
+        - name: metrics
+          image: {{ template "mongodb.metrics.image" . }}
+          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
+          {{- if .Values.securityContext.enabled }}
+          securityContext:
+            runAsNonRoot: true
+            runAsUser: {{ .Values.securityContext.runAsUser }}
+          {{- end }}
+          env:
+          {{- if .Values.usePassword }}
+          - name: MONGODB_ROOT_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
+                key: mongodb-root-password
+          command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://root:${MONGODB_ROOT_PASSWORD}@localhost:{{ .Values.service.port }}/admin {{ .Values.metrics.extraArgs }}' ]
+          {{- else }}
+          command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://localhost:{{ .Values.service.port }} {{ .Values.metrics.extraArgs }}' ]
+          {{- end }}
+          ports:
+          - name: metrics
+            containerPort: 9216
+          {{- if .Values.metrics.livenessProbe.enabled }}
+          livenessProbe:
+            httpGet:
+              path: /metrics
+              port: metrics
+            initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.metrics.livenessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }}
+            failureThreshold: {{ .Values.metrics.livenessProbe.failureThreshold }}
+            successThreshold: {{ .Values.metrics.livenessProbe.successThreshold }}
+          {{- end }}
+          {{- if .Values.metrics.readinessProbe.enabled }}
+          readinessProbe:
+            httpGet:
+              path: /metrics
+              port: metrics
+            initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }}
+            periodSeconds: {{ .Values.metrics.readinessProbe.periodSeconds }}
+            timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }}
+            failureThreshold: {{ .Values.metrics.readinessProbe.failureThreshold }}
+            successThreshold: {{ .Values.metrics.readinessProbe.successThreshold }}
+          {{- end }}
+          resources:
+{{ toYaml .Values.metrics.resources | indent 12 }}
+{{- end }}
+{{- if .Values.sidecars }}
+{{ toYaml .Values.sidecars | indent 8 }}
+{{- end }}
+      volumes:
+        {{- if .Values.configmap }}
+        - name: config
+          configMap:
+            name: {{ template "mongodb.fullname" . }}
+        {{- end }}
+        {{- if .Values.extraVolumes }}
+{{ toYaml .Values.extraVolumes | indent 8}}
+        {{- end }}
+{{- if .Values.persistence.enabled }}
+  volumeClaimTemplates:
+    - metadata:
+        name: datadir
+        annotations:
+        {{- range $key, $value := .Values.persistence.annotations }}
+          {{ $key }}: "{{ $value }}"
+        {{- end }}
+      spec:
+        accessModes:
+        {{- range .Values.persistence.accessModes }}
+          - {{ . | quote }}
+        {{- end }}
+        resources:
+          requests:
+            storage: {{ .Values.persistence.size | quote }}
+        {{ include "mongodb.storageClass" . }}
+{{- else }}
+        - name: datadir
+          emptyDir: {}
+{{- end }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/svc-headless-rs.yaml b/otf-helm/otf/charts/databases/mongodb/templates/svc-headless-rs.yaml
new file mode 100644 (file)
index 0000000..a850752
--- /dev/null
@@ -0,0 +1,24 @@
+{{- if .Values.replicaSet.enabled }}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "mongodb.fullname" . }}-headless
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+{{- with .Values.service.annotations }}
+  annotations: {{ tpl (toYaml .) $ | nindent 4 }}
+{{- end }}
+spec:
+  type: ClusterIP
+  clusterIP: None
+  ports:
+  - name: mongodb
+    port: {{ .Values.service.port }}
+  selector:
+    app: {{ template "mongodb.name" . }}
+    release: {{ .Release.Name }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/svc-primary-rs.yaml b/otf-helm/otf/charts/databases/mongodb/templates/svc-primary-rs.yaml
new file mode 100644 (file)
index 0000000..b4d5d9d
--- /dev/null
@@ -0,0 +1,45 @@
+{{- if .Values.replicaSet.enabled }}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "mongodb.serviceName" . }}
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+{{- with .Values.service.annotations }}
+  annotations: {{ tpl (toYaml .) $ | nindent 4 }}
+{{- end }}
+spec:
+  type: {{ .Values.service.type }}
+  {{- if and (eq .Values.service.type "ClusterIP") .Values.service.clusterIP }}
+  clusterIP: {{ .Values.service.clusterIP }}
+  {{- end }}
+  {{- if and (eq .Values.service.type "LoadBalancer") .Values.service.loadBalancerIP }}
+  loadBalancerIP: {{ .Values.service.loadBalancerIP }}
+  {{- end }}
+  {{- if .Values.service.externalIPs }}
+  externalIPs: {{ toYaml .Values.service.externalIPs | nindent 4 }}
+  {{- end }}
+  {{- if .Values.service.loadBalancerSourceRanges }}
+  loadBalancerSourceRanges: {{- toYaml .Values.service.loadBalancerSourceRanges | nindent 4 }}
+  {{- end }}
+  ports:
+  - name: mongodb
+    port: {{ .Values.service.port }}
+    targetPort: mongodb
+{{- if .Values.service.nodePort }}
+    nodePort: {{ .Values.service.nodePort }}
+{{- end }}
+{{- if .Values.metrics.enabled }}
+  - name: metrics
+    port: 9216
+    targetPort: metrics
+{{- end }}
+  selector:
+    app: {{ template "mongodb.name" . }}
+    release: "{{ .Release.Name }}"
+    component: primary
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/templates/svc-standalone.yaml b/otf-helm/otf/charts/databases/mongodb/templates/svc-standalone.yaml
new file mode 100644 (file)
index 0000000..fbff42a
--- /dev/null
@@ -0,0 +1,44 @@
+{{- if not .Values.replicaSet.enabled }}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "mongodb.serviceName" . }}
+  namespace: {{.Values.namespace }}
+  labels:
+    app: {{ template "mongodb.name" . }}
+    chart: {{ template "mongodb.chart" . }}
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+{{- with .Values.service.annotations }}
+  annotations: {{ tpl (toYaml .) $ | nindent 4 }}
+{{- end }}
+spec:
+  type: {{ .Values.service.type }}
+  {{- if and (eq .Values.service.type "ClusterIP") .Values.service.clusterIP }}
+  clusterIP: {{ .Values.service.clusterIP }}
+  {{- end }}
+  {{- if and (eq .Values.service.type "LoadBalancer") .Values.service.loadBalancerIP }}
+  loadBalancerIP: {{ .Values.service.loadBalancerIP }}
+  {{- end }}
+  {{- if .Values.service.externalIPs }}
+  externalIPs: {{ toYaml .Values.service.externalIPs | nindent 4 }}
+  {{- end }}
+  {{- if .Values.service.loadBalancerSourceRanges }}
+  loadBalancerSourceRanges: {{- toYaml .Values.service.loadBalancerSourceRanges | nindent 4 }}
+  {{- end }}
+  ports:
+  - name: mongodb
+    port: {{ .Values.service.port }}
+    targetPort: mongodb
+{{- if .Values.service.nodePort }}
+    nodePort: {{ .Values.service.nodePort }}
+{{- end }}
+{{- if .Values.metrics.enabled }}
+  - name: metrics
+    port: 9216
+    targetPort: metrics
+{{- end }}
+  selector:
+    app: {{ template "mongodb.name" . }}
+    release: "{{ .Release.Name }}"
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mongodb/values-production.yaml b/otf-helm/otf/charts/databases/mongodb/values-production.yaml
new file mode 100644 (file)
index 0000000..f2c31ed
--- /dev/null
@@ -0,0 +1,506 @@
+## Global Docker image parameters
+## Please, note that this will override the image parameters, including dependencies, configured to use the global value
+## Current available global Docker image parameters: imageRegistry and imagePullSecrets
+##
+# global:
+#   imageRegistry: myRegistryName
+#   imagePullSecrets:
+#     - myRegistryKeySecretName
+#   storageClass: myStorageClass
+
+image:
+  ## Bitnami MongoDB registry
+  ##
+  registry: docker.io
+  ## Bitnami MongoDB image name
+  ##
+  repository: bitnami/mongodb
+  ## Bitnami MongoDB image tag
+  ## ref: https://hub.docker.com/r/bitnami/mongodb/tags/
+  ##
+  tag: 4.2.4-debian-10-r0
+  ## Specify a imagePullPolicy
+  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+  ##
+  pullPolicy: IfNotPresent
+  ## Optionally specify an array of imagePullSecrets.
+  ## Secrets must be manually created in the namespace.
+  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+  ##
+  # pullSecrets:
+  #   - myRegistryKeySecretName
+
+  ## Set to true if you would like to see extra information on logs
+  ## It turns on Bitnami debugging in minideb-extras-base
+  ## ref:  https://github.com/bitnami/minideb-extras-base
+  debug: false
+
+## String to partially override mongodb.fullname template (will maintain the release name)
+##
+# nameOverride:
+
+## String to fully override mongodb.fullname template
+##
+# fullnameOverride:
+
+# Add custom extra environment variables to all the MongoDB containers
+# extraEnvVars:
+
+## Init containers parameters:
+## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
+##
+volumePermissions:
+  enabled: false
+  image:
+    registry: docker.io
+    repository: bitnami/minideb
+    tag: buster
+    pullPolicy: Always
+    ## Optionally specify an array of imagePullSecrets.
+    ## Secrets must be manually created in the namespace.
+    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+    ##
+    # pullSecrets:
+    #   - myRegistryKeySecretName
+  resources: {}
+
+## Enable authentication
+## ref: https://docs.mongodb.com/manual/tutorial/enable-authentication/
+#
+usePassword: true
+# existingSecret: name-of-existing-secret
+
+## MongoDB admin password
+## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#setting-the-root-password-on-first-run
+##
+# mongodbRootPassword:
+
+## MongoDB custom user and database
+## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#creating-a-user-and-database-on-first-run
+##
+# mongodbUsername: username
+# mongodbPassword: password
+# mongodbDatabase: database
+
+## Whether enable/disable IPv6 on MongoDB
+## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#enabling/disabling-ipv6
+##
+mongodbEnableIPv6: false
+
+## Whether enable/disable DirectoryPerDB on MongoDB
+## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#enabling/disabling-directoryperdb
+##
+mongodbDirectoryPerDB: false
+
+## MongoDB System Log configuration
+## ref: https://github.com/bitnami/bitnami-docker-mongodb#configuring-system-log-verbosity-level
+##
+mongodbSystemLogVerbosity: 0
+mongodbDisableSystemLog: false
+
+## MongoDB additional command line flags
+##
+## Can be used to specify command line flags, for example:
+##
+## mongodbExtraFlags:
+##  - "--wiredTigerCacheSizeGB=2"
+mongodbExtraFlags: []
+
+## Pod Security Context
+## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
+##
+securityContext:
+  enabled: true
+  fsGroup: 1001
+  runAsUser: 1001
+
+## Kubernetes Cluster Domain
+clusterDomain: cluster.local
+
+## Kubernetes service type
+service:
+  ## Specify an explicit service name.
+  # name: svc-mongo
+  ## Provide any additional annotations which may be required.
+  ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart
+  annotations: {}
+  type: ClusterIP
+  # clusterIP: None
+  port: 27017
+
+  ## Specify the nodePort value for the LoadBalancer and NodePort service types.
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+  ##
+  # nodePort:
+
+  ## Specify the externalIP value ClusterIP service type.
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
+  # externalIPs: []
+
+  ## Specify the loadBalancerIP value for LoadBalancer service types.
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
+  ##
+  # loadBalancerIP:
+
+  ## Specify the loadBalancerSourceRanges value for LoadBalancer service types.
+  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
+  ##
+  # loadBalancerSourceRanges: []
+
+## Use StatefulSet instead of Deployment when deploying standalone
+useStatefulSet: false
+
+## Setting up replication
+## ref: https://github.com/bitnami/bitnami-docker-mongodb#setting-up-a-replication
+#
+replicaSet:
+  ## Whether to create a MongoDB replica set for high availability or not
+  enabled: true
+  useHostnames: true
+
+  ## Name of the replica set
+  ##
+  name: rs0
+
+  ## Key used for replica set authentication
+  ##
+  # key: key
+
+  ## Number of replicas per each node type
+  ##
+  replicas:
+    secondary: 1
+    arbiter: 1
+
+  ## Pod Disruption Budget
+  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
+  pdb:
+    enabled: true
+    minAvailable:
+      secondary: 1
+      arbiter: 1
+    # maxUnavailable:
+      # secondary: 1
+      # arbiter: 1
+
+# Annotations to be added to the deployment or statefulsets
+annotations: {}
+
+# Additional labels to apply to the deployment or statefulsets
+labels: {}
+
+# Annotations to be added to MongoDB pods
+podAnnotations: {}
+
+# Additional pod labels to apply
+podLabels: {}
+
+## Use an alternate scheduler, e.g. "stork".
+## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
+##
+# schedulerName:
+
+## Configure resource requests and limits
+## ref: http://kubernetes.io/docs/user-guide/compute-resources/
+##
+resources: {}
+# Define separate resources per arbiter, which are less then primary or secondary
+# used only when replica set is enabled
+resourcesArbiter: {}
+# limits:
+#   cpu: 500m
+#   memory: 512Mi
+# requests:
+#   cpu: 100m
+#   memory: 256Mi
+
+## Pod priority
+## https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
+# priorityClassName: ""
+
+## Node selector
+## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
+nodeSelector: {}
+
+## Affinity
+## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
+affinity: {}
+# Define separate affinity for arbiter pod
+affinityArbiter: {}
+
+## Tolerations
+## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
+tolerations: []
+
+## Add sidecars to the pod
+##
+## For example:
+## sidecars:
+##   - name: your-image-name
+##     image: your-image
+##     imagePullPolicy: Always
+##     ports:
+##       - name: portname
+##         containerPort: 1234
+sidecars: []
+## Array to add extra volumes
+##
+extraVolumes: []
+## Array to add extra mounts (normally used with extraVolumes)
+##
+extraVolumeMounts: []
+
+## Add sidecars to the arbiter pod
+# used only when replica set is enabled
+##
+## For example:
+## sidecars:
+##   - name: your-image-name
+##     image: your-image
+##     imagePullPolicy: Always
+##     ports:
+##       - name: portname
+##         containerPort: 1234
+sidecarsArbiter: []
+## Array to add extra volumes to the arbiter
+# used only when replica set is enabled
+##
+extraVolumesArbiter: []
+## Array to add extra mounts (normally used with extraVolumes) to the arbiter
+# used only when replica set is enabled
+##
+extraVolumeMountsArbiter: []
+
+## updateStrategy for MongoDB Primary, Secondary and Arbitrer statefulsets
+## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
+updateStrategy:
+  type: RollingUpdate
+
+## Enable persistence using Persistent Volume Claims
+## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
+##
+persistence:
+  enabled: true
+  ## A manually managed Persistent Volume and Claim
+  ## Requires persistence.enabled: true
+  ## If defined, PVC must be created manually before volume will be bound
+  ##
+  # existingClaim:
+
+  ## The path the volume will be mounted at, useful when using different
+  ## MongoDB images.
+  ##
+  mountPath: /bitnami/mongodb
+
+  ## The subdirectory of the volume to mount to, useful in dev environments
+  ## and one PV for multiple services.
+  ##
+  subPath: ""
+
+  ## mongodb data Persistent Volume Storage Class
+  ## If defined, storageClassName: <storageClass>
+  ## If set to "-", storageClassName: "", which disables dynamic provisioning
+  ## If undefined (the default) or set to null, no storageClassName spec is
+  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
+  ##   GKE, AWS & OpenStack)
+  ##
+  # storageClass: "-"
+  accessModes:
+    - ReadWriteOnce
+  size: 8Gi
+  annotations: {}
+
+## Configure the ingress resource that allows you to access the
+## MongoDB installation. Set up the URL
+## ref: http://kubernetes.io/docs/user-guide/ingress/
+##
+ingress:
+  ## Set to true to enable ingress record generation
+  enabled: false
+
+  ## Set this to true in order to add the corresponding annotations for cert-manager
+  certManager: false
+
+  ## Ingress annotations done as key:value pairs
+  ## For a full list of possible ingress annotations, please see
+  ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
+  ##
+  ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set
+  ## If certManager is set to true, annotation kubernetes.io/tls-acme: "true" will automatically be set
+  annotations:
+  #  kubernetes.io/ingress.class: nginx
+
+  ## The list of hostnames to be covered with this ingress record.
+  ## Most likely this will be just one host, but in the event more hosts are needed, this is an array
+  hosts:
+  - name: mongodb.local
+    path: /
+
+  ## The tls configuration for the ingress
+  ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
+  tls:
+  - hosts:
+      - mongodb.local
+    secretName: mongodb.local-tls
+
+  secrets:
+  ## If you're providing your own certificates, please use this to add the certificates as secrets
+  ## key and certificate should start with -----BEGIN CERTIFICATE----- or
+  ## -----BEGIN RSA PRIVATE KEY-----
+  ##
+  ## name should line up with a tlsSecret set further up
+  ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set
+  ##
+  ## It is also possible to create and manage the certificates outside of this helm chart
+  ## Please see README.md for more information
+  # - name: airflow.local-tls
+  #   key:
+  #   certificate:
+
+## Configure the options for init containers to be run before the main app containers
+## are started. All init containers are run sequentially and must exit without errors
+## for the next one to be started.
+## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+# extraInitContainers: |
+#   - name: do-something
+#     image: busybox
+#     command: ['do', 'something']
+
+## Configure extra options for liveness and readiness probes
+## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)
+livenessProbe:
+  enabled: true
+  initialDelaySeconds: 30
+  periodSeconds: 10
+  timeoutSeconds: 5
+  failureThreshold: 6
+  successThreshold: 1
+readinessProbe:
+  enabled: true
+  initialDelaySeconds: 5
+  periodSeconds: 10
+  timeoutSeconds: 5
+  failureThreshold: 6
+  successThreshold: 1
+
+# Define custom config map with init scripts
+initConfigMap: {}
+#  name: "init-config-map"
+
+## Entries for the MongoDB config file. For documentation of all options, see:
+##   http://docs.mongodb.org/manual/reference/configuration-options/
+##
+configmap:
+#  # where and how to store data.
+#  storage:
+#    dbPath: /bitnami/mongodb/data/db
+#    journal:
+#      enabled: true
+#    directoryPerDB: false
+#  # where to write logging data.
+#  systemLog:
+#    destination: file
+#    quiet: false
+#    logAppend: true
+#    logRotate: reopen
+#    path: /opt/bitnami/mongodb/logs/mongodb.log
+#    verbosity: 0
+#  # network interfaces
+#  net:
+#    port: 27017
+#    unixDomainSocket:
+#      enabled: true
+#      pathPrefix: /opt/bitnami/mongodb/tmp
+#    ipv6: false
+#    bindIpAll: true
+#  # replica set options
+#  #replication:
+#    #replSetName: replicaset
+#    #enableMajorityReadConcern: true
+#  # process management options
+#  processManagement:
+#     fork: false
+#     pidFilePath: /opt/bitnami/mongodb/tmp/mongodb.pid
+#  # set parameter options
+#  setParameter:
+#     enableLocalhostAuthBypass: true
+#  # security options
+#  security:
+#    authorization: disabled
+#    #keyFile: /opt/bitnami/mongodb/conf/keyfile
+
+## Prometheus Exporter / Metrics
+##
+metrics:
+  enabled: true
+
+  image:
+    registry: docker.io
+    repository: bitnami/mongodb-exporter
+    tag: 0.10.0-debian-10-r41
+    pullPolicy: IfNotPresent
+    ## Optionally specify an array of imagePullSecrets.
+    ## Secrets must be manually created in the namespace.
+    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+    ##
+    # pullSecrets:
+    #   - myRegistryKeySecretName
+
+  ## String with extra arguments to the metrics exporter
+  ## ref: https://github.com/percona/mongodb_exporter/blob/master/mongodb_exporter.go
+  extraArgs: ""
+
+  ## Metrics exporter resource requests and limits
+  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  ##
+  # resources: {}
+
+  ## Metrics exporter liveness and readiness probes
+  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)
+  livenessProbe:
+    enabled: true
+    initialDelaySeconds: 15
+    periodSeconds: 5
+    timeoutSeconds: 5
+    failureThreshold: 3
+    successThreshold: 1
+  readinessProbe:
+    enabled: true
+    initialDelaySeconds: 5
+    periodSeconds: 5
+    timeoutSeconds: 1
+    failureThreshold: 3
+    successThreshold: 1
+
+  ## Metrics exporter pod Annotation
+  podAnnotations:
+    prometheus.io/scrape: "true"
+    prometheus.io/port: "9216"
+
+  ## Prometheus Service Monitor
+  ## ref: https://github.com/coreos/prometheus-operator
+  ##      https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md
+  serviceMonitor:
+    ## If the operator is installed in your cluster, set to true to create a Service Monitor Entry
+    enabled: false
+
+    ## Specify a namespace if needed
+    # namespace: monitoring
+
+    ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
+    additionalLabels: {}
+
+    ## Specify Metric Relabellings to add to the scrape endpoint
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
+    # relabellings:
+
+    alerting:
+      ## Define individual alerting rules as required
+      ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#rulegroup
+      ##      https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
+      rules: {}
+
+      ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Prometheus Rules to work with
+      ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
+      additionalLabels: {}
diff --git a/otf-helm/otf/charts/databases/mongodb/values.schema.json b/otf-helm/otf/charts/databases/mongodb/values.schema.json
new file mode 100644 (file)
index 0000000..9bf39e5
--- /dev/null
@@ -0,0 +1,147 @@
+{
+  "$schema": "http://json-schema.org/schema#",
+  "type": "object",
+  "properties": {
+    "usePassword": {
+      "type": "boolean",
+      "title": "Enable password authentication",
+      "form": true
+    },
+    "mongodbRootPassword": {
+      "type": "string",
+      "title": "MongoDB admin password",
+      "form": true,
+      "description": "Defaults to a random 10-character alphanumeric string if not set",
+      "hidden": {
+        "condition": false,
+        "value": "usePassword"
+      }
+    },
+    "mongodbDatabase": {
+      "type": "string",
+      "title": "MongoDB custom database",
+      "description": "Name of the custom database to be created during the 1st initialization of MongoDB",
+      "form": true
+    },
+    "mongodbUsername": {
+      "type": "string",
+      "title": "MongoDB custom user",
+      "description": "Name of the custom user to be created during the 1st initialization of MongoDB. This user only has permissions on the MongoDB custom database",
+      "form": true
+    },
+    "mongodbPassword": {
+      "type": "string",
+      "title": "Password for MongoDB custom user",
+      "form": true,
+      "description": "Defaults to a random 10-character alphanumeric string if not set",
+      "hidden": {
+        "condition": false,
+        "value": "usePassword"
+      }
+    },
+    "replicaSet": {
+      "type": "object",
+      "title": "Replicaset configuration",
+      "form": true,
+      "properties": {
+        "enabled": {
+          "type": "boolean",
+          "form": true,
+          "title": "Enable replicaset configuration"
+        },
+        "replicas": {
+          "type": "object",
+          "title": "Number of replicas",
+          "form": true,
+          "hidden": {
+            "condition": false,
+            "value": "replicaSet.enabled"
+          },
+          "properties": {
+            "secondary": {
+              "type": "integer",
+              "title": "Secondary node replicas",
+              "description": "Number of secondary node replicas to deploy",
+              "form": true
+            },
+            "arbiter": {
+              "type": "integer",
+              "title": "Arbiter node replicas",
+              "description": "Number of arbiter node replicas to deploy",
+              "form": true
+            }
+          }
+        }
+      }
+    },
+    "persistence": {
+      "type": "object",
+      "title": "Persistence configuration",
+      "form": true,
+      "properties": {
+        "enabled": {
+          "type": "boolean",
+          "form": true,
+          "title": "Enable persistence",
+          "description": "Enable persistence using Persistent Volume Claims"
+        },
+        "size": {
+          "type": "string",
+          "title": "Persistent Volume Size",
+          "form": true,
+          "render": "slider",
+          "sliderMin": 1,
+          "sliderMax": 100,
+          "sliderUnit": "Gi",
+          "hidden": {
+            "condition": false,
+            "value": "persistence.enabled"
+          }
+        }
+      }
+    },
+    "volumePermissions": {
+      "type": "object",
+      "hidden": {
+        "condition": false,
+        "value": "persistence.enabled"
+      },
+      "properties": {
+        "enabled": {
+          "type": "boolean",
+          "form": true,
+          "title": "Enable Init Containers",
+          "description": "Use an init container to set required folder permissions on the data volume before mounting it in the final destination"
+        }
+      }
+    },
+    "metrics": {
+      "type": "object",
+      "form": true,
+      "title": "Prometheus metrics details",
+      "properties": {
+        "enabled": {
+          "type": "boolean",
+          "title": "Create Prometheus metrics exporter",
+          "description": "Create a side-car container to expose Prometheus metrics",
+          "form": true
+        },
+        "serviceMonitor": {
+          "type": "object",
+          "properties": {
+            "enabled": {
+              "type": "boolean",
+              "title": "Create Prometheus Operator ServiceMonitor",
+              "description": "Create a ServiceMonitor to track metrics using Prometheus Operator",
+              "form": true,
+              "hidden": {
+                "condition": false,
+                "value": "metrics.enabled"
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
-# Values yaml file for reference from the github. - currently not used.\r
-\r
-## Global Docker image parameters\r
-## Please, note that this will override the image parameters, including dependencies, configured to use the global value\r
-## Current available global Docker image parameters: imageRegistry and imagePullSecrets\r
-##\r
-# global:\r
-#   imageRegistry: myRegistryName\r
-#   imagePullSecrets:\r
-#     - myRegistryKeySecretName\r
-#   storageClass: myStorageClass\r
-\r
-image:\r
-  ## Bitnami MongoDB registry\r
-  ##\r
-  registry: docker.io\r
-  ## Bitnami MongoDB image name\r
-  ##\r
-  repository: bitnami/mongodb\r
-  ## Bitnami MongoDB image tag\r
-  ## ref: https://hub.docker.com/r/bitnami/mongodb/tags/\r
-  ##\r
-  tag: 4.2.6-debian-10-r18\r
-  ## Specify a imagePullPolicy\r
-  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\r
-  ##\r
-  pullPolicy: IfNotPresent\r
-  ## Optionally specify an array of imagePullSecrets.\r
-  ## Secrets must be manually created in the namespace.\r
-  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\r
-  ##\r
-  # pullSecrets:\r
-  #   - myRegistryKeySecretName\r
-\r
-  ## Set to true if you would like to see extra information on logs\r
-  ## It turns on Bitnami debugging in minideb-extras-base\r
-  ## ref:  https://github.com/bitnami/minideb-extras-base\r
-  debug: false\r
-\r
-## String to partially override mongodb.fullname template (will maintain the release name)\r
-##\r
-# nameOverride: otf-mongo\r
-\r
-## String to fully override mongodb.fullname template\r
-##\r
-# fullnameOverride:\r
-\r
-## Init containers parameters:\r
-## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.\r
-##\r
-volumePermissions:\r
-  enabled: false\r
-  image:\r
-    registry: docker.io\r
-    repository: bitnami/minideb\r
-    tag: buster\r
-    pullPolicy: Always\r
-    ## Optionally specify an array of imagePullSecrets.\r
-    ## Secrets must be manually created in the namespace.\r
-    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\r
-    ##\r
-    # pullSecrets:\r
-    #   - myRegistryKeySecretName\r
-  resources: {}\r
-\r
-## Enable authentication\r
-## ref: https://docs.mongodb.com/manual/tutorial/enable-authentication/\r
-#\r
-usePassword: true\r
-# existingSecret: name-of-existing-secret\r
-\r
-## MongoDB admin password\r
-## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#setting-the-root-password-on-first-run\r
-##\r
-mongodbRootPassword: otf.123\r
-\r
-## MongoDB custom user and database\r
-## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#creating-a-user-and-database-on-first-run\r
-##\r
-mongodbUsername: otfuser\r
-mongodbPassword: Today.123\r
-mongodbDatabase: otf\r
-\r
-## Whether enable/disable IPv6 on MongoDB\r
-## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#enabling/disabling-ipv6\r
-##\r
-mongodbEnableIPv6: false\r
-\r
-## Whether enable/disable DirectoryPerDB on MongoDB\r
-## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#enabling/disabling-directoryperdb\r
-##\r
-mongodbDirectoryPerDB: false\r
-\r
-## MongoDB System Log configuration\r
-## ref: https://github.com/bitnami/bitnami-docker-mongodb#configuring-system-log-verbosity-level\r
-##\r
-mongodbSystemLogVerbosity: 0\r
-mongodbDisableSystemLog: false\r
-\r
-## MongoDB additional command line flags\r
-##\r
-## Can be used to specify command line flags, for example:\r
-##\r
-## mongodbExtraFlags:\r
-##  - "--wiredTigerCacheSizeGB=2"\r
-mongodbExtraFlags: []\r
-\r
-## Pod Security Context\r
-## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\r
-##\r
-securityContext:\r
-  enabled: true\r
-  fsGroup: 1001\r
-  runAsUser: 1001\r
-\r
-## Kubernetes Cluster Domain\r
-clusterDomain: cluster.local\r
-\r
-## Kubernetes service type\r
-service:\r
-  ## Specify an explicit service name.\r
-  # name: svc-mongo\r
-  ## Provide any additional annotations which may be required.\r
-  ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart\r
-  annotations: {}\r
-  type: ClusterIP\r
-  # clusterIP: None\r
-  port: 27017\r
-\r
-  ## Specify the nodePort value for the LoadBalancer and NodePort service types.\r
-  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\r
-  ##\r
-  # nodePort:\r
-\r
-  ## Specify the externalIP value ClusterIP service type.\r
-  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips\r
-  # externalIPs: []\r
-\r
-  ## Specify the loadBalancerIP value for LoadBalancer service types.\r
-  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer\r
-  ##\r
-  # loadBalancerIP:\r
-\r
-  ## Specify the loadBalancerSourceRanges value for LoadBalancer service types.\r
-  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\r
-  ##\r
-  # loadBalancerSourceRanges: []\r
-\r
-# Add custom extra environment variables to all the MongoDB containers\r
-# extraEnvVars:\r
-\r
-## Use StatefulSet instead of Deployment when deploying standalone\r
-useStatefulSet: false\r
-\r
-## Setting up replication\r
-## ref: https://github.com/bitnami/bitnami-docker-mongodb#setting-up-a-replication\r
-#\r
-replicaSet:\r
-  ## Whether to create a MongoDB replica set for high availability or not\r
-  enabled: false\r
-  useHostnames: true\r
-\r
-  ## Name of the replica set\r
-  ##\r
-  # name: mongoOTF\r
-\r
-  ## Key used for replica set authentication\r
-  ##\r
-  # key: key\r
-\r
-  ## Number of replicas per each node type\r
-  ##\r
-  replicas:\r
-    secondary: 1\r
-    arbiter: 1\r
-\r
-  ## Pod Disruption Budget\r
-  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/\r
-  pdb:\r
-    enabled: true\r
-    minAvailable:\r
-      primary: 1\r
-      secondary: 1\r
-      arbiter: 1\r
-    # maxUnavailable:\r
-      # primary: 1\r
-      # secondary: 1\r
-      # arbiter: 1\r
-\r
-# Annotations to be added to the deployment or statefulsets\r
-annotations: {}\r
-\r
-# Additional labels to apply to the deployment or statefulsets\r
-labels: {}\r
-\r
-# Annotations to be added to MongoDB pods\r
-podAnnotations: {}\r
-\r
-# Additional pod labels to apply\r
-podLabels: {}\r
-\r
-## Use an alternate scheduler, e.g. "stork".\r
-## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\r
-##\r
-# schedulerName:\r
-\r
-## Configure resource requests and limits\r
-## ref: http://kubernetes.io/docs/user-guide/compute-resources/\r
-##\r
-resources: {}\r
-# Define separate resources per arbiter, which are less then primary or secondary\r
-# used only when replica set is enabled\r
-resourcesArbiter: {}\r
-# limits:\r
-#   cpu: 500m\r
-#   memory: 512Mi\r
-# requests:\r
-#   cpu: 100m\r
-#   memory: 256Mi\r
-\r
-## Pod priority\r
-## https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\r
-# priorityClassName: ""\r
-\r
-## Node selector\r
-## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\r
-nodeSelector: {}\r
-\r
-## Affinity\r
-## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\r
-affinity: {}\r
-# Define separate affinity for arbiter pod\r
-affinityArbiter: {}\r
-\r
-## Tolerations\r
-## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\r
-tolerations: []\r
-\r
-## updateStrategy for MongoDB Primary, Secondary and Arbitrer statefulsets\r
-## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\r
-updateStrategy:\r
-  type: RollingUpdate\r
-\r
-## Add sidecars to the pod\r
-##\r
-## For example:\r
-## sidecars:\r
-##   - name: your-image-name\r
-##     image: your-image\r
-##     imagePullPolicy: Always\r
-##     ports:\r
-##       - name: portname\r
-##         containerPort: 1234\r
-sidecars: []\r
-## Array to add extra volumes\r
-##\r
-extraVolumes: []\r
-## Array to add extra mounts (normally used with extraVolumes)\r
-##\r
-extraVolumeMounts: []\r
-\r
-## Add sidecars to the arbiter pod\r
-# used only when replica set is enabled\r
-##\r
-## For example:\r
-## sidecars:\r
-##   - name: your-image-name\r
-##     image: your-image\r
-##     imagePullPolicy: Always\r
-##     ports:\r
-##       - name: portname\r
-##         containerPort: 1234\r
-sidecarsArbiter: []\r
-## Array to add extra volumes to the arbiter\r
-# used only when replica set is enabled\r
-##\r
-extraVolumesArbiter: []\r
-## Array to add extra mounts (normally used with extraVolumes) to the arbiter\r
-# used only when replica set is enabled\r
-##\r
-extraVolumeMountsArbiter: []\r
-\r
-## Enable persistence using Persistent Volume Claims\r
-## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\r
-##\r
-persistence:\r
-  enabled: true\r
-  ## A manually managed Persistent Volume and Claim\r
-  ## Requires persistence.enabled: true\r
-  ## If defined, PVC must be created manually before volume will be bound\r
-  ##\r
-  # existingClaim:\r
-\r
-  ## The path the volume will be mounted at, useful when using different\r
-  ## MongoDB images.\r
-  ##\r
-  mountPath: /bitnami/mongodb\r
-\r
-  ## The subdirectory of the volume to mount to, useful in dev environments\r
-  ## and one PV for multiple services.\r
-  ##\r
-  subPath: ""\r
-\r
-  ## mongodb data Persistent Volume Storage Class\r
-  ## If defined, storageClassName: <storageClass>\r
-  ## If set to "-", storageClassName: "", which disables dynamic provisioning\r
-  ## If undefined (the default) or set to null, no storageClassName spec is\r
-  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on\r
-  ##   GKE, AWS & OpenStack)\r
-  ##\r
-  # storageClass: "-"\r
-  accessModes:\r
-    - ReadWriteOnce\r
-  size: 8Gi\r
-  annotations: {}\r
-\r
-## Configure the ingress resource that allows you to access the\r
-## MongoDB installation. Set up the URL\r
-## ref: http://kubernetes.io/docs/user-guide/ingress/\r
-##\r
-ingress:\r
-  ## Set to true to enable ingress record generation\r
-  enabled: false\r
-\r
-  ## Set this to true in order to add the corresponding annotations for cert-manager\r
-  certManager: false\r
-\r
-  ## Ingress annotations done as key:value pairs\r
-  ## For a full list of possible ingress annotations, please see\r
-  ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md\r
-  ##\r
-  ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set\r
-  ## If certManager is set to true, annotation kubernetes.io/tls-acme: "true" will automatically be set\r
-  annotations:\r
-  #  kubernetes.io/ingress.class: nginx\r
-\r
-  ## The list of hostnames to be covered with this ingress record.\r
-  ## Most likely this will be just one host, but in the event more hosts are needed, this is an array\r
-  hosts:\r
-  - name: mongodb.local\r
-    path: /\r
-\r
-  ## The tls configuration for the ingress\r
-  ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls\r
-  tls:\r
-  - hosts:\r
-      - mongodb.local\r
-    secretName: mongodb.local-tls\r
-\r
-  secrets:\r
-  ## If you're providing your own certificates, please use this to add the certificates as secrets\r
-  ## key and certificate should start with -----BEGIN CERTIFICATE----- or\r
-  ## -----BEGIN RSA PRIVATE KEY-----\r
-  ##\r
-  ## name should line up with a tlsSecret set further up\r
-  ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set\r
-  ##\r
-  ## It is also possible to create and manage the certificates outside of this helm chart\r
-  ## Please see README.md for more information\r
-  # - name: airflow.local-tls\r
-  #   key:\r
-  #   certificate:\r
-\r
-## Configure the options for init containers to be run before the main app containers\r
-## are started. All init containers are run sequentially and must exit without errors\r
-## for the next one to be started.\r
-## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\r
-# extraInitContainers: |\r
-#   - name: do-something\r
-#     image: busybox\r
-#     command: ['do', 'something']\r
-\r
-## Configure extra options for liveness and readiness probes\r
-## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)\r
-livenessProbe:\r
-  enabled: true\r
-  initialDelaySeconds: 30\r
-  periodSeconds: 10\r
-  timeoutSeconds: 5\r
-  failureThreshold: 6\r
-  successThreshold: 1\r
-readinessProbe:\r
-  enabled: true\r
-  initialDelaySeconds: 5\r
-  periodSeconds: 10\r
-  timeoutSeconds: 5\r
-  failureThreshold: 6\r
-  successThreshold: 1\r
-\r
-# Define custom config map with init scripts\r
-initConfigMap: {}\r
-#  name: "init-config-map"\r
-\r
-## Entries for the MongoDB config file. For documentation of all options, see:\r
-##   http://docs.mongodb.org/manual/reference/configuration-options/\r
-##\r
-configmap:\r
-#  # where and how to store data.\r
-#  storage:\r
-#    dbPath: /bitnami/mongodb/data/db\r
-#    journal:\r
-#      enabled: true\r
-#    directoryPerDB: false\r
-#  # where to write logging data.\r
-#  systemLog:\r
-#    destination: file\r
-#    quiet: false\r
-#    logAppend: true\r
-#    logRotate: reopen\r
-#    path: /opt/bitnami/mongodb/logs/mongodb.log\r
-#    verbosity: 0\r
-#  # network interfaces\r
-#  net:\r
-#    port: 27017\r
-#    unixDomainSocket:\r
-#      enabled: true\r
-#      pathPrefix: /opt/bitnami/mongodb/tmp\r
-#    ipv6: false\r
-#    bindIpAll: true\r
-#  # replica set options\r
-#  #replication:\r
-#    #replSetName: replicaset\r
-#    #enableMajorityReadConcern: true\r
-#  # process management options\r
-#  processManagement:\r
-#     fork: false\r
-#     pidFilePath: /opt/bitnami/mongodb/tmp/mongodb.pid\r
-#  # set parameter options\r
-#  setParameter:\r
-#     enableLocalhostAuthBypass: true\r
-#  # security options\r
-#  security:\r
-#    authorization: disabled\r
-#    #keyFile: /opt/bitnami/mongodb/conf/keyfile\r
-\r
-## Prometheus Exporter / Metrics\r
-##\r
-metrics:\r
-  enabled: false\r
-\r
-  image:\r
-    registry: docker.io\r
-    repository: bitnami/mongodb-exporter\r
-    tag: 0.10.0-debian-10-r41\r
-    pullPolicy: IfNotPresent\r
-    ## Optionally specify an array of imagePullSecrets.\r
-    ## Secrets must be manually created in the namespace.\r
-    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\r
-    ##\r
-    # pullSecrets:\r
-    #   - myRegistryKeySecretName\r
-\r
-  ## String with extra arguments to the metrics exporter\r
-  ## ref: https://github.com/percona/mongodb_exporter/blob/master/mongodb_exporter.go\r
-  extraArgs: ""\r
-\r
-  ## Metrics exporter resource requests and limits\r
-  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\r
-  ##\r
-  # resources: {}\r
-\r
-  ## Metrics exporter liveness and readiness probes\r
-  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)\r
-  livenessProbe:\r
-    enabled: false\r
-    initialDelaySeconds: 15\r
-    periodSeconds: 5\r
-    timeoutSeconds: 5\r
-    failureThreshold: 3\r
-    successThreshold: 1\r
-  readinessProbe:\r
-    enabled: false\r
-    initialDelaySeconds: 5\r
-    periodSeconds: 5\r
-    timeoutSeconds: 1\r
-    failureThreshold: 3\r
-    successThreshold: 1\r
-\r
-  ## Metrics exporter pod Annotation\r
-  podAnnotations:\r
-    prometheus.io/scrape: "true"\r
-    prometheus.io/port: "9216"\r
-\r
-  ## Prometheus Service Monitor\r
-  ## ref: https://github.com/coreos/prometheus-operator\r
-  ##      https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md\r
-  serviceMonitor:\r
-    ## If the operator is installed in your cluster, set to true to create a Service Monitor Entry\r
-    enabled: false\r
-\r
-    ## Specify a namespace if needed\r
-    # namespace: monitoring\r
-\r
-    ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with\r
-    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\r
-    additionalLabels: {}\r
-\r
-    ## Specify Metric Relabellings to add to the scrape endpoint\r
-    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint\r
-    # relabellings:\r
-\r
-    alerting:\r
-      ## Define individual alerting rules as required\r
-      ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#rulegroup\r
-      ##      https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/\r
-      rules: {}\r
-\r
-      ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Prometheus Rules to work with\r
-      ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\r
-      additionalLabels: {}\r
+## Global Docker image parameters
+## Please, note that this will override the image parameters, including dependencies, configured to use the global value
+## Current available global Docker image parameters: imageRegistry and imagePullSecrets
+##
+# global:
+#   imageRegistry: myRegistryName
+#   imagePullSecrets:
+#     - myRegistryKeySecretName
+#   storageClass: myStorageClass
+namespace: 
+image:
+  ## Bitnami MongoDB registry
+  ##
+  registry: docker.io
+  ## Bitnami MongoDB image name
+  ##
+  repository: bitnami/mongodb
+  ## Bitnami MongoDB image tag
+  ## ref: https://hub.docker.com/r/bitnami/mongodb/tags/
+  ##
+  tag: 4.2.4-debian-10-r0
+  #tag: 4.1.13-debian-9-r74
+  ## Specify a imagePullPolicy
+  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+  ##
+  pullPolicy: IfNotPresent
+  ## Optionally specify an array of imagePullSecrets.
+  ## Secrets must be manually created in the namespace.
+  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+  ##
+  # pullSecrets:
+  #   - myRegistryKeySecretName
+
+  ## Set to true if you would like to see extra information on logs
+  ## It turns on Bitnami debugging in minideb-extras-base
+  ## ref:  https://github.com/bitnami/minideb-extras-base
+  debug: false
+
+## String to partially override mongodb.fullname template (will maintain the release name)
+##
+# nameOverride:
+
+## String to fully override mongodb.fullname template
+##
+# fullnameOverride:
+
+## Init containers parameters:
+## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
+##
+volumePermissions:
+  enabled: false
+  image:
+    registry: docker.io
+    repository: bitnami/minideb
+    tag: buster
+    pullPolicy: Always
+    ## Optionally specify an array of imagePullSecrets.
+    ## Secrets must be manually created in the namespace.
+    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+    ##
+    # pullSecrets:
+    #   - myRegistryKeySecretName
+  resources: {}
+
+## Enable authentication
+## ref: https://docs.mongodb.com/manual/tutorial/enable-authentication/
+#
+usePassword: true
+# existingSecret: mongodb
+
+## MongoDB admin password
+## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#setting-the-root-password-on-first-run
+##
+mongodbRootPassword: otf.123
+
+## MongoDB custom user and database
+## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#creating-a-user-and-database-on-first-run
+##
+mongodbUsername: otfuser
+mongodbPassword: Today.123
+mongodbDatabase: otf
+mongodbIP: ""
+
+## Whether enable/disable IPv6 on MongoDB
+## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#enabling/disabling-ipv6
+##
+mongodbEnableIPv6: false
+
+## Whether enable/disable DirectoryPerDB on MongoDB
+## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#enabling/disabling-directoryperdb
+##
+mongodbDirectoryPerDB: false
+
+## MongoDB System Log configuration
+## ref: https://github.com/bitnami/bitnami-docker-mongodb#configuring-system-log-verbosity-level
+##
+mongodbSystemLogVerbosity: 0
+mongodbDisableSystemLog: false
+
+## MongoDB additional command line flags
+##
+## Can be used to specify command line flags, for example:
+##
+## mongodbExtraFlags:
+##  - "--wiredTigerCacheSizeGB=2"
+mongodbExtraFlags: ["--bind_ip 0.0.0.0"]
+
+## Pod Security Context
+## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
+##
+securityContext:
+  enabled: true
+  fsGroup: 1001
+  runAsUser: 1001
+
+## Kubernetes Cluster Domain
+clusterDomain: cluster.local
+
+## Kubernetes service type
+service:
+  ## Specify an explicit service name.
+  # name: svc-mongo
+  ## Provide any additional annotations which may be required.
+  ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart
+  annotations: {}
+  type: ClusterIP
+  # clusterIP: None
+  port: 27017
+
+  ## Specify the nodePort value for the LoadBalancer and NodePort service types.
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+  ##
+  # nodePort:
+
+  ## Specify the externalIP value ClusterIP service type.
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
+  # externalIPs: []
+
+  ## Specify the loadBalancerIP value for LoadBalancer service types.
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
+  ##
+  # loadBalancerIP:
+
+  ## Specify the loadBalancerSourceRanges value for LoadBalancer service types.
+  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
+  ##
+  # loadBalancerSourceRanges: []
+
+# Add custom extra environment variables to all the MongoDB containers
+# extraEnvVars:
+
+## Use StatefulSet instead of Deployment when deploying standalone
+useStatefulSet: false
+
+## Setting up replication
+## ref: https://github.com/bitnami/bitnami-docker-mongodb#setting-up-a-replication
+#
+replicaSet:
+  ## Whether to create a MongoDB replica set for high availability or not
+  enabled: true
+  useHostnames: false
+
+  ## Name of the replica set
+  ##
+  name: rs0
+
+  ## Key used for replica set authentication
+  ##
+  # key: key
+
+  ## Number of replicas per each node type
+  ##
+  replicas:
+    secondary: 1
+    arbiter: 1
+
+  ## Pod Disruption Budget
+  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
+  pdb:
+    enabled: true
+    minAvailable:
+      primary: 1
+      secondary: 1
+      arbiter: 1
+    # maxUnavailable:
+      # primary: 1
+      # secondary: 1
+      # arbiter: 1
+
+# Annotations to be added to the deployment or statefulsets
+annotations: {}
+
+# Additional labels to apply to the deployment or statefulsets
+labels: {}
+
+# Annotations to be added to MongoDB pods
+podAnnotations: {}
+
+# Additional pod labels to apply
+podLabels: {}
+
+## Use an alternate scheduler, e.g. "stork".
+## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
+##
+# schedulerName:
+
+## Configure resource requests and limits
+## ref: http://kubernetes.io/docs/user-guide/compute-resources/
+##
+resources: {}
+# Define separate resources per arbiter, which are less then primary or secondary
+# used only when replica set is enabled
+resourcesArbiter: {}
+# limits:
+#   cpu: 500m
+#   memory: 512Mi
+# requests:
+#   cpu: 100m
+#   memory: 256Mi
+
+## Pod priority
+## https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
+# priorityClassName: ""
+
+## Node selector
+## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
+nodeSelector: {}
+
+## Affinity
+## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
+affinity: {}
+# Define separate affinity for arbiter pod
+affinityArbiter: {}
+
+## Tolerations
+## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
+tolerations: []
+
+## updateStrategy for MongoDB Primary, Secondary and Arbitrer statefulsets
+## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
+updateStrategy:
+  type: RollingUpdate
+
+## Add sidecars to the pod
+##
+## For example:
+## sidecars:
+##   - name: your-image-name
+##     image: your-image
+##     imagePullPolicy: Always
+##     ports:
+##       - name: portname
+##         containerPort: 1234
+sidecars: []
+## Array to add extra volumes
+##
+extraVolumes: []
+## Array to add extra mounts (normally used with extraVolumes)
+##
+extraVolumeMounts: []
+
+## Add sidecars to the arbiter pod
+# used only when replica set is enabled
+##
+## For example:
+## sidecars:
+##   - name: your-image-name
+##     image: your-image
+##     imagePullPolicy: Always
+##     ports:
+##       - name: portname
+##         containerPort: 1234
+sidecarsArbiter: []
+## Array to add extra volumes to the arbiter
+# used only when replica set is enabled
+##
+extraVolumesArbiter: []
+## Array to add extra mounts (normally used with extraVolumes) to the arbiter
+# used only when replica set is enabled
+##
+extraVolumeMountsArbiter: []
+
+## Enable persistence using Persistent Volume Claims
+## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
+##
+persistence:
+  enabled: true
+  ## A manually managed Persistent Volume and Claim
+  ## Requires persistence.enabled: true
+  ## If defined, PVC must be created manually before volume will be bound
+  ##
+  # existingClaim:
+
+  ## The path the volume will be mounted at, useful when using different
+  ## MongoDB images.
+  ##
+  mountPath: /bitnami/mongodb
+
+  ## The subdirectory of the volume to mount to, useful in dev environments
+  ## and one PV for multiple services.
+  ##
+  subPath: ""
+
+  ## mongodb data Persistent Volume Storage Class
+  ## If defined, storageClassName: <storageClass>
+  ## If set to "-", storageClassName: "", which disables dynamic provisioning
+  ## If undefined (the default) or set to null, no storageClassName spec is
+  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
+  ##   GKE, AWS & OpenStack)
+  ##
+  # storageClass: "-"
+  accessModes:
+    - ReadWriteOnce
+  size: 8Gi
+  annotations: {}
+
+## Configure the ingress resource that allows you to access the
+## MongoDB installation. Set up the URL
+## ref: http://kubernetes.io/docs/user-guide/ingress/
+##
+ingress:
+  ## Set to true to enable ingress record generation
+  enabled: false
+
+  ## Set this to true in order to add the corresponding annotations for cert-manager
+  certManager: false
+
+  ## Ingress annotations done as key:value pairs
+  ## For a full list of possible ingress annotations, please see
+  ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
+  ##
+  ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set
+  ## If certManager is set to true, annotation kubernetes.io/tls-acme: "true" will automatically be set
+  annotations:
+  #  kubernetes.io/ingress.class: nginx
+
+  ## The list of hostnames to be covered with this ingress record.
+  ## Most likely this will be just one host, but in the event more hosts are needed, this is an array
+  hosts:
+  - name: mongodb.local
+    path: /
+
+  ## The tls configuration for the ingress
+  ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
+  tls:
+  - hosts:
+      - mongodb.local
+    secretName: mongodb.local-tls
+
+  secrets:
+  ## If you're providing your own certificates, please use this to add the certificates as secrets
+  ## key and certificate should start with -----BEGIN CERTIFICATE----- or
+  ## -----BEGIN RSA PRIVATE KEY-----
+  ##
+  ## name should line up with a tlsSecret set further up
+  ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set
+  ##
+  ## It is also possible to create and manage the certificates outside of this helm chart
+  ## Please see README.md for more information
+  # - name: airflow.local-tls
+  #   key:
+  #   certificate:
+
+## Configure the options for init containers to be run before the main app containers
+## are started. All init containers are run sequentially and must exit without errors
+## for the next one to be started.
+## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+# extraInitContainers: |
+#   - name: do-something
+#     image: busybox
+#     command: ['do', 'something']
+
+## Configure extra options for liveness and readiness probes
+## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)
+livenessProbe:
+  enabled: true
+  initialDelaySeconds: 30
+  periodSeconds: 10
+  timeoutSeconds: 5
+  failureThreshold: 6
+  successThreshold: 1
+readinessProbe:
+  enabled: true
+  initialDelaySeconds: 5
+  periodSeconds: 10
+  timeoutSeconds: 5
+  failureThreshold: 6
+  successThreshold: 1
+
+# Define custom config map with init scripts
+initConfigMap: {}
+#  name: "init-config-map"
+
+## Entries for the MongoDB config file. For documentation of all options, see:
+##   http://docs.mongodb.org/manual/reference/configuration-options/
+##
+configmap:
+#  # where and how to store data.
+#  storage:
+#    dbPath: /bitnami/mongodb/data/db
+#    journal:
+#      enabled: true
+#    directoryPerDB: false
+#  # where to write logging data.
+#  systemLog:
+#    destination: file
+#    quiet: false
+#    logAppend: true
+#    logRotate: reopen
+#    path: /opt/bitnami/mongodb/logs/mongodb.log
+#    verbosity: 0
+#  # network interfaces
+#  net:
+#    port: 27017
+#    unixDomainSocket:
+#      enabled: true
+#      pathPrefix: /opt/bitnami/mongodb/tmp
+#    ipv6: false
+#    bindIpAll: true
+#  # replica set options
+#  #replication:
+#    #replSetName: replicaset
+#    #enableMajorityReadConcern: true
+#  # process management options
+#  processManagement:
+#     fork: false
+#     pidFilePath: /opt/bitnami/mongodb/tmp/mongodb.pid
+#  # set parameter options
+#  setParameter:
+#     enableLocalhostAuthBypass: true
+#  # security options
+#  security:
+#    authorization: disabled
+#    #keyFile: /opt/bitnami/mongodb/conf/keyfile
+
+## Prometheus Exporter / Metrics
+##
+metrics:
+  enabled: false
+
+  image:
+    registry: docker.io
+    repository: bitnami/mongodb-exporter
+    tag: 0.10.0-debian-10-r41
+    pullPolicy: IfNotPresent
+    ## Optionally specify an array of imagePullSecrets.
+    ## Secrets must be manually created in the namespace.
+    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+    ##
+    # pullSecrets:
+    #   - myRegistryKeySecretName
+
+  ## String with extra arguments to the metrics exporter
+  ## ref: https://github.com/percona/mongodb_exporter/blob/master/mongodb_exporter.go
+  extraArgs: ""
+
+  ## Metrics exporter resource requests and limits
+  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  ##
+  # resources: {}
+
+  ## Metrics exporter liveness and readiness probes
+  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)
+  livenessProbe:
+    enabled: false
+    initialDelaySeconds: 15
+    periodSeconds: 5
+    timeoutSeconds: 5
+    failureThreshold: 3
+    successThreshold: 1
+  readinessProbe:
+    enabled: false
+    initialDelaySeconds: 5
+    periodSeconds: 5
+    timeoutSeconds: 1
+    failureThreshold: 3
+    successThreshold: 1
+
+  ## Metrics exporter pod Annotation
+  podAnnotations:
+    prometheus.io/scrape: "true"
+    prometheus.io/port: "9216"
+
+  ## Prometheus Service Monitor
+  ## ref: https://github.com/coreos/prometheus-operator
+  ##      https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md
+  serviceMonitor:
+    ## If the operator is installed in your cluster, set to true to create a Service Monitor Entry
+    enabled: false
+
+    ## Specify a namespace if needed
+    # namespace: monitoring
+    namespace: dev
+
+    ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
+    additionalLabels: {}
+
+    ## Specify Metric Relabellings to add to the scrape endpoint
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
+    # relabellings:
+
+    alerting:
+      ## Define individual alerting rules as required
+      ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#rulegroup
+      ##      https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
+      rules: {}
+
+      ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Prometheus Rules to work with
+      ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
+      additionalLabels: {}
diff --git a/otf-helm/otf/charts/databases/mysqldb/.helmignore b/otf-helm/otf/charts/databases/mysqldb/.helmignore
new file mode 100644 (file)
index 0000000..a1c17ae
--- /dev/null
@@ -0,0 +1,2 @@
+.git
+OWNERS
\ No newline at end of file
@@ -1,17 +1,21 @@
-apiVersion: v1\r
-name: mysql\r
-version: 1.6.3\r
-appVersion: 5.7.28\r
-description: Fast, reliable, scalable, and easy to use open-source relational database\r
-  system.\r
-keywords:\r
-- mysql\r
-- database\r
-- sql\r
-home: https://www.mysql.com/\r
-icon: https://www.mysql.com/common/logos/logo-mysql-170x115.png\r
-sources:\r
-- https://github.com/kubernetes/charts\r
-- https://github.com/docker-library/mysql\r
-maintainers:\r
-engine: gotpl\r
+apiVersion: v1
+appVersion: 5.7.30
+description: Fast, reliable, scalable, and easy to use open-source relational database
+  system.
+engine: gotpl
+home: https://www.mysql.com/
+icon: https://www.mysql.com/common/logos/logo-mysql-170x115.png
+keywords:
+- mysql
+- database
+- sql
+maintainers:
+- email: o.with@sportradar.com
+  name: olemarkus
+- email: viglesias@google.com
+  name: viglesiasce
+name: mysql
+sources:
+- https://github.com/kubernetes/charts
+- https://github.com/docker-library/mysql
+version: 1.6.6
diff --git a/otf-helm/otf/charts/databases/mysqldb/README.md b/otf-helm/otf/charts/databases/mysqldb/README.md
new file mode 100644 (file)
index 0000000..dd9a688
--- /dev/null
@@ -0,0 +1,245 @@
+# MySQL
+
+[MySQL](https://MySQL.org) is one of the most popular database servers in the world. Notable users include Wikipedia, Facebook and Google.
+
+## Introduction
+
+This chart bootstraps a single node MySQL deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
+
+## Prerequisites
+
+- Kubernetes 1.10+ with Beta APIs enabled
+- PV provisioner support in the underlying infrastructure
+
+## Installing the Chart
+
+To install the chart with the release name `my-release`:
+
+```bash
+$ helm install --name my-release stable/mysql
+```
+
+The command deploys MySQL on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
+
+By default a random password will be generated for the root user. If you'd like to set your own password change the mysqlRootPassword
+in the values.yaml.
+
+You can retrieve your root password by running the following command. Make sure to replace [YOUR_RELEASE_NAME]:
+
+    printf $(printf '\%o' `kubectl get secret [YOUR_RELEASE_NAME]-mysql -o jsonpath="{.data.mysql-root-password[*]}"`)
+
+> **Tip**: List all releases using `helm list`
+
+## Uninstalling the Chart
+
+To uninstall/delete the `my-release` deployment:
+
+```bash
+$ helm delete --purge my-release
+```
+
+The command removes all the Kubernetes components associated with the chart and deletes the release completely.
+
+## Configuration
+
+The following table lists the configurable parameters of the MySQL chart and their default values.
+
+| Parameter                                    | Description                                                                                  | Default                                              |
+| -------------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
+| `args`                                       | Additional arguments to pass to the MySQL container.                                         | `[]`                                                 |
+| `initContainer.resources`                    | initContainer resource requests/limits                                                       | Memory: `10Mi`, CPU: `10m`                           |
+| `image`                                      | `mysql` image repository.                                                                    | `mysql`                                              |
+| `imageTag`                                   | `mysql` image tag.                                                                           | `5.7.30`                                             |
+| `busybox.image`                              | `busybox` image repository.                                                                  | `busybox`                                            |
+| `busybox.tag`                                | `busybox` image tag.                                                                         | `1.32`                                               |
+| `testFramework.enabled`                      | `test-framework` switch.                                                                     | `true`                                               |
+| `testFramework.image`                        | `test-framework` image repository.                                                           | `bats/bats`                                          |
+| `testFramework.tag`                          | `test-framework` image tag.                                                                  | `1.2.1`                                              |
+| `testFramework.imagePullPolicy`              | `test-framework` image pull policy.                                                          | `IfNotPresent`                                       |
+| `testFramework.securityContext`              | `test-framework` securityContext                                                             | `{}`                                                 |
+| `imagePullPolicy`                            | Image pull policy                                                                            | `IfNotPresent`                                       |
+| `existingSecret`                             | Use Existing secret for Password details                                                     | `nil`                                                |
+| `extraVolumes`                               | Additional volumes as a string to be passed to the `tpl` function                            |                                                      |
+| `extraVolumeMounts`                          | Additional volumeMounts as a string to be passed to the `tpl` function                       |                                                      |
+| `extraInitContainers`                        | Additional init containers as a string to be passed to the `tpl` function                    |                                                      |
+| `extraEnvVars`                               | Additional environment variables as a string to be passed to the `tpl` function              |                                                      |
+| `mysqlRootPassword`                          | Password for the `root` user. Ignored if existing secret is provided                         | Random 10 characters                                 |
+| `mysqlUser`                                  | Username of new user to create.                                                              | `nil`                                                |
+| `mysqlPassword`                              | Password for the new user. Ignored if existing secret is provided                            | Random 10 characters                                 |
+| `mysqlDatabase`                              | Name for new database to create.                                                             | `nil`                                                |
+| `livenessProbe.initialDelaySeconds`          | Delay before liveness probe is initiated                                                     | 30                                                   |
+| `livenessProbe.periodSeconds`                | How often to perform the probe                                                               | 10                                                   |
+| `livenessProbe.timeoutSeconds`               | When the probe times out                                                                     | 5                                                    |
+| `livenessProbe.successThreshold`             | Minimum consecutive successes for the probe to be considered successful after having failed. | 1                                                    |
+| `livenessProbe.failureThreshold`             | Minimum consecutive failures for the probe to be considered failed after having succeeded.   | 3                                                    |
+| `readinessProbe.initialDelaySeconds`         | Delay before readiness probe is initiated                                                    | 5                                                    |
+| `readinessProbe.periodSeconds`               | How often to perform the probe                                                               | 10                                                   |
+| `readinessProbe.timeoutSeconds`              | When the probe times out                                                                     | 1                                                    |
+| `readinessProbe.successThreshold`            | Minimum consecutive successes for the probe to be considered successful after having failed. | 1                                                    |
+| `readinessProbe.failureThreshold`            | Minimum consecutive failures for the probe to be considered failed after having succeeded.   | 3                                                    |
+| `schedulerName`                              | Name of the k8s scheduler (other than default)                                               | `nil`                                                |
+| `persistence.enabled`                        | Create a volume to store data                                                                | true                                                 |
+| `persistence.size`                           | Size of persistent volume claim                                                              | 8Gi RW                                               |
+| `persistence.storageClass`                   | Type of persistent volume claim                                                              | nil                                                  |
+| `persistence.accessMode`                     | ReadWriteOnce or ReadOnly                                                                    | ReadWriteOnce                                        |
+| `persistence.existingClaim`                  | Name of existing persistent volume                                                           | `nil`                                                |
+| `persistence.subPath`                        | Subdirectory of the volume to mount                                                          | `nil`                                                |
+| `persistence.annotations`                    | Persistent Volume annotations                                                                | {}                                                   |
+| `nodeSelector`                               | Node labels for pod assignment                                                               | {}                                                   |
+| `affinity`                                   | Affinity rules for pod assignment                                                            | {}                                                   |
+| `tolerations`                                | Pod taint tolerations for deployment                                                         | {}                                                   |
+| `metrics.enabled`                            | Start a side-car prometheus exporter                                                         | `false`                                              |
+| `metrics.image`                              | Exporter image                                                                               | `prom/mysqld-exporter`                               |
+| `metrics.imageTag`                           | Exporter image                                                                               | `v0.10.0`                                            |
+| `metrics.imagePullPolicy`                    | Exporter image pull policy                                                                   | `IfNotPresent`                                       |
+| `metrics.resources`                          | Exporter resource requests/limit                                                             | `nil`                                                |
+| `metrics.livenessProbe.initialDelaySeconds`  | Delay before metrics liveness probe is initiated                                             | 15                                                   |
+| `metrics.livenessProbe.timeoutSeconds`       | When the probe times out                                                                     | 5                                                    |
+| `metrics.readinessProbe.initialDelaySeconds` | Delay before metrics readiness probe is initiated                                            | 5                                                    |
+| `metrics.readinessProbe.timeoutSeconds`      | When the probe times out                                                                     | 1                                                    |
+| `metrics.flags`                              | Additional flags for the mysql exporter to use                                               | `[]`                                                 |
+| `metrics.serviceMonitor.enabled`             | Set this to `true` to create ServiceMonitor for Prometheus operator                          | `false`                                              |
+| `metrics.serviceMonitor.additionalLabels`    | Additional labels that can be used so ServiceMonitor will be discovered by Prometheus        | `{}`                                                 |
+| `resources`                                  | CPU/Memory resource requests/limits                                                          | Memory: `256Mi`, CPU: `100m`                         |
+| `configurationFiles`                         | List of mysql configuration files                                                            | `nil`                                                |
+| `configurationFilesPath`                     | Path of mysql configuration files                                                            | `/etc/mysql/conf.d/`                                 |
+| `securityContext.enabled`                    | Enable security context (mysql pod)                                                          | `false`                                              |
+| `securityContext.fsGroup`                    | Group ID for the container (mysql pod)                                                       | 999                                                  |
+| `securityContext.runAsUser`                  | User ID for the container (mysql pod)                                                        | 999                                                  |
+| `service.annotations`                        | Kubernetes annotations for mysql                                                             | {}                                                   |
+| `service.type`                               | Kubernetes service type                                                                      | ClusterIP                                            |
+| `service.loadBalancerIP`                     | LoadBalancer service IP                                                                      | `""`                                                 |
+| `serviceAccount.create`                      | Specifies whether a ServiceAccount should be created                                         | `false`                                              |
+| `serviceAccount.name`                        | The name of the ServiceAccount to create                                                     | Generated using the mysql.fullname template          |
+| `ssl.enabled`                                | Setup and use SSL for MySQL connections                                                      | `false`                                              |
+| `ssl.secret`                                 | Name of the secret containing the SSL certificates                                           | mysql-ssl-certs                                      |
+| `ssl.certificates[0].name`                   | Name of the secret containing the SSL certificates                                           | `nil`                                                |
+| `ssl.certificates[0].ca`                     | CA certificate                                                                               | `nil`                                                |
+| `ssl.certificates[0].cert`                   | Server certificate (public key)                                                              | `nil`                                                |
+| `ssl.certificates[0].key`                    | Server key (private key)                                                                     | `nil`                                                |
+| `imagePullSecrets`                           | Name of Secret resource containing private registry credentials                              | `nil`                                                |
+| `initializationFiles`                        | List of SQL files which are run after the container started                                  | `nil`                                                |
+| `timezone`                                   | Container and mysqld timezone (TZ env)                                                       | `nil` (UTC depending on image)                       |
+| `podAnnotations`                             | Map of annotations to add to the pods                                                        | `{}`                                                 |
+| `podLabels`                                  | Map of labels to add to the pods                                                             | `{}`                                                 |
+| `priorityClassName`                          | Set pod priorityClassName                                                                    | `{}`                                                 |
+| `deploymentAnnotations`                     | Map of annotations for deployment                                                            | `{}`                                                 |
+| `strategy`                                   | Update strategy policy                                                                       | `{type: "Recreate"}`                                 |
+
+Some of the parameters above map to the env variables defined in the [MySQL DockerHub image](https://hub.docker.com/_/mysql/).
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
+
+```bash
+$ helm install --name my-release \
+  --set mysqlRootPassword=secretpassword,mysqlUser=my-user,mysqlPassword=my-password,mysqlDatabase=my-database \
+    stable/mysql
+```
+
+The above command sets the MySQL `root` account password to `secretpassword`. Additionally it creates a standard database user named `my-user`, with the password `my-password`, who has access to a database named `my-database`.
+
+Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
+
+```bash
+$ helm install --name my-release -f values.yaml stable/mysql
+```
+
+> **Tip**: You can use the default [values.yaml](values.yaml)
+
+## Persistence
+
+The [MySQL](https://hub.docker.com/_/mysql/) image stores the MySQL data and configurations at the `/var/lib/mysql` path of the container.
+
+By default a PersistentVolumeClaim is created and mounted into that directory. In order to disable this functionality
+you can change the values.yaml to disable persistence and use an emptyDir instead.
+
+> *"An emptyDir volume is first created when a Pod is assigned to a Node, and exists as long as that Pod is running on that node. When a Pod is removed from a node for any reason, the data in the emptyDir is deleted forever."*
+
+**Notice**: You may need to increase the value of `livenessProbe.initialDelaySeconds` when enabling persistence by using PersistentVolumeClaim from PersistentVolume with varying properties. Since its IO performance has impact on the database initialization performance. The default limit for database initialization is `60` seconds (`livenessProbe.initialDelaySeconds` + `livenessProbe.periodSeconds` * `livenessProbe.failureThreshold`). Once such initialization process takes more time than this limit, kubelet will restart the database container, which will interrupt database initialization then causing persisent data in an unusable state.
+
+## Custom MySQL configuration files
+
+The [MySQL](https://hub.docker.com/_/mysql/) image accepts custom configuration files at the path `/etc/mysql/conf.d`. If you want to use a customized MySQL configuration, you can create your alternative configuration files by passing the file contents on the `configurationFiles` attribute. Note that according to the MySQL documentation only files ending with `.cnf` are loaded.
+
+```yaml
+configurationFiles:
+  mysql.cnf: |-
+    [mysqld]
+    skip-host-cache
+    skip-name-resolve
+    sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
+  mysql_custom.cnf: |-
+    [mysqld]
+```
+
+## MySQL initialization files
+
+The [MySQL](https://hub.docker.com/_/mysql/) image accepts *.sh, *.sql and *.sql.gz files at the path `/docker-entrypoint-initdb.d`.
+These files are being run exactly once for container initialization and ignored on following container restarts.
+If you want to use initialization scripts, you can create initialization files by passing the file contents on the `initializationFiles` attribute.
+
+
+```yaml
+initializationFiles:
+  first-db.sql: |-
+    CREATE DATABASE IF NOT EXISTS first DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+  second-db.sql: |-
+    CREATE DATABASE IF NOT EXISTS second DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+```
+
+## SSL
+
+This chart supports configuring MySQL to use [encrypted connections](https://dev.mysql.com/doc/refman/5.7/en/encrypted-connections.html) with TLS/SSL certificates provided by the user. This is accomplished by storing the required Certificate Authority file, the server public key certificate, and the server private key as a Kubernetes secret. The SSL options for this chart support the following use cases:
+
+* Manage certificate secrets with helm
+* Manage certificate secrets outside of helm
+
+## Manage certificate secrets with helm
+
+Include your certificate data in the `ssl.certificates` section. For example:
+
+```
+ssl:
+  enabled: false
+  secret: mysql-ssl-certs
+  certificates:
+  - name: mysql-ssl-certs
+    ca: |-
+      -----BEGIN CERTIFICATE-----
+      ...
+      -----END CERTIFICATE-----
+    cert: |-
+      -----BEGIN CERTIFICATE-----
+      ...
+      -----END CERTIFICATE-----
+    key: |-
+      -----BEGIN RSA PRIVATE KEY-----
+      ...
+      -----END RSA PRIVATE KEY-----
+```
+
+> **Note**: Make sure your certificate data has the correct formatting in the values file.
+
+## Manage certificate secrets outside of helm
+
+1. Ensure the certificate secret exist before installation of this chart.
+2. Set the name of the certificate secret in `ssl.secret`.
+3. Make sure there are no entries underneath `ssl.certificates`.
+
+To manually create the certificate secret from local files you can execute:
+```
+kubectl create secret generic mysql-ssl-certs \
+  --from-file=ca.pem=./ssl/certificate-authority.pem \
+  --from-file=server-cert.pem=./ssl/server-public-key.pem \
+  --from-file=server-key.pem=./ssl/server-private-key.pem
+```
+> **Note**: `ca.pem`, `server-cert.pem`, and `server-key.pem` **must** be used as the key names in this generic secret.
+
+If you are using a certificate your configurationFiles must include the three ssl lines under [mysqld]
+
+```
+[mysqld]
+    ssl-ca=/ssl/ca.pem
+    ssl-cert=/ssl/server-cert.pem
+    ssl-key=/ssl/server-key.pem
+```
---\r
--- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)\r
---\r
--- Licensed under the Apache License, Version 2.0 (the "License");\r
--- you may not use this file except in compliance with the License.\r
--- You may obtain a copy of the License at\r
---\r
---     http://www.apache.org/licenses/LICENSE-2.0\r
---\r
--- Unless required by applicable law or agreed to in writing, software\r
--- distributed under the License is distributed on an "AS IS" BASIS,\r
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
--- See the License for the specific language governing permissions and\r
--- limitations under the License.\r
---\r
-\r
-create table ACT_GE_PROPERTY (\r
-    NAME_ varchar(64),\r
-    VALUE_ varchar(300),\r
-    REV_ integer,\r
-    primary key (NAME_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-insert into ACT_GE_PROPERTY\r
-values ('schema.version', 'fox', 1);\r
-\r
-insert into ACT_GE_PROPERTY\r
-values ('schema.history', 'create(fox)', 1);\r
-\r
-insert into ACT_GE_PROPERTY\r
-values ('next.dbid', '1', 1);\r
-\r
-insert into ACT_GE_PROPERTY\r
-values ('deployment.lock', '0', 1);\r
-\r
-insert into ACT_GE_PROPERTY\r
-values ('history.cleanup.job.lock', '0', 1);\r
-\r
-insert into ACT_GE_PROPERTY\r
-values ('startup.lock', '0', 1);\r
-\r
-create table ACT_GE_BYTEARRAY (\r
-    ID_ varchar(64),\r
-    REV_ integer,\r
-    NAME_ varchar(255),\r
-    DEPLOYMENT_ID_ varchar(64),\r
-    BYTES_ LONGBLOB,\r
-    GENERATED_ TINYINT,\r
-    TENANT_ID_ varchar(64),\r
-    TYPE_ integer,\r
-    CREATE_TIME_ datetime,\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RE_DEPLOYMENT (\r
-    ID_ varchar(64),\r
-    NAME_ varchar(255),\r
-    DEPLOY_TIME_ timestamp,\r
-    SOURCE_ varchar(255),\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_EXECUTION (\r
-    ID_ varchar(64),\r
-    REV_ integer,\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    BUSINESS_KEY_ varchar(255),\r
-    PARENT_ID_ varchar(64),\r
-    PROC_DEF_ID_ varchar(64),\r
-    SUPER_EXEC_ varchar(64),\r
-    SUPER_CASE_EXEC_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    ACT_ID_ varchar(255),\r
-    ACT_INST_ID_ varchar(64),\r
-    IS_ACTIVE_ TINYINT,\r
-    IS_CONCURRENT_ TINYINT,\r
-    IS_SCOPE_ TINYINT,\r
-    IS_EVENT_SCOPE_ TINYINT,\r
-    SUSPENSION_STATE_ integer,\r
-    CACHED_ENT_STATE_ integer,\r
-    SEQUENCE_COUNTER_ bigint,\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_JOB (\r
-    ID_ varchar(64) NOT NULL,\r
-    REV_ integer,\r
-    TYPE_ varchar(255) NOT NULL,\r
-    LOCK_EXP_TIME_ timestamp NULL,\r
-    LOCK_OWNER_ varchar(255),\r
-    EXCLUSIVE_ boolean,\r
-    EXECUTION_ID_ varchar(64),\r
-    PROCESS_INSTANCE_ID_ varchar(64),\r
-    PROCESS_DEF_ID_ varchar(64),\r
-    PROCESS_DEF_KEY_ varchar(255),\r
-    RETRIES_ integer,\r
-    EXCEPTION_STACK_ID_ varchar(64),\r
-    EXCEPTION_MSG_ varchar(4000),\r
-    DUEDATE_ timestamp NULL,\r
-    REPEAT_ varchar(255),\r
-    HANDLER_TYPE_ varchar(255),\r
-    HANDLER_CFG_ varchar(4000),\r
-    DEPLOYMENT_ID_ varchar(64),\r
-    SUSPENSION_STATE_ integer NOT NULL DEFAULT 1,\r
-    JOB_DEF_ID_ varchar(64),\r
-    PRIORITY_ bigint NOT NULL DEFAULT 0,\r
-    SEQUENCE_COUNTER_ bigint,\r
-    TENANT_ID_ varchar(64),\r
-    CREATE_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_JOBDEF (\r
-    ID_ varchar(64) NOT NULL,\r
-    REV_ integer,\r
-    PROC_DEF_ID_ varchar(64),\r
-    PROC_DEF_KEY_ varchar(255),\r
-    ACT_ID_ varchar(255),\r
-    JOB_TYPE_ varchar(255) NOT NULL,\r
-    JOB_CONFIGURATION_ varchar(255),\r
-    SUSPENSION_STATE_ integer,\r
-    JOB_PRIORITY_ bigint,\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RE_PROCDEF (\r
-    ID_ varchar(64) not null,\r
-    REV_ integer,\r
-    CATEGORY_ varchar(255),\r
-    NAME_ varchar(255),\r
-    KEY_ varchar(255) not null,\r
-    VERSION_ integer not null,\r
-    DEPLOYMENT_ID_ varchar(64),\r
-    RESOURCE_NAME_ varchar(4000),\r
-    DGRM_RESOURCE_NAME_ varchar(4000),\r
-    HAS_START_FORM_KEY_ TINYINT,\r
-    SUSPENSION_STATE_ integer,\r
-    TENANT_ID_ varchar(64),\r
-    VERSION_TAG_ varchar(64),\r
-    HISTORY_TTL_ integer,\r
-    STARTABLE_ boolean NOT NULL default TRUE,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_TASK (\r
-    ID_ varchar(64),\r
-    REV_ integer,\r
-    EXECUTION_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    PROC_DEF_ID_ varchar(64),\r
-    CASE_EXECUTION_ID_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    CASE_DEF_ID_ varchar(64),\r
-    NAME_ varchar(255),\r
-    PARENT_TASK_ID_ varchar(64),\r
-    DESCRIPTION_ varchar(4000),\r
-    TASK_DEF_KEY_ varchar(255),\r
-    OWNER_ varchar(255),\r
-    ASSIGNEE_ varchar(255),\r
-    DELEGATION_ varchar(64),\r
-    PRIORITY_ integer,\r
-    CREATE_TIME_ timestamp,\r
-    DUE_DATE_ datetime,\r
-    FOLLOW_UP_DATE_ datetime,\r
-    SUSPENSION_STATE_ integer,\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_IDENTITYLINK (\r
-    ID_ varchar(64),\r
-    REV_ integer,\r
-    GROUP_ID_ varchar(255),\r
-    TYPE_ varchar(255),\r
-    USER_ID_ varchar(255),\r
-    TASK_ID_ varchar(64),\r
-    PROC_DEF_ID_ varchar(64),\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_VARIABLE (\r
-    ID_ varchar(64) not null,\r
-    REV_ integer,\r
-    TYPE_ varchar(255) not null,\r
-    NAME_ varchar(255) not null,\r
-    EXECUTION_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    CASE_EXECUTION_ID_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    TASK_ID_ varchar(64),\r
-    BYTEARRAY_ID_ varchar(64),\r
-    DOUBLE_ double,\r
-    LONG_ bigint,\r
-    TEXT_ varchar(4000),\r
-    TEXT2_ varchar(4000),\r
-    VAR_SCOPE_ varchar(64) not null,\r
-    SEQUENCE_COUNTER_ bigint,\r
-    IS_CONCURRENT_LOCAL_ TINYINT,\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_EVENT_SUBSCR (\r
-    ID_ varchar(64) not null,\r
-    REV_ integer,\r
-    EVENT_TYPE_ varchar(255) not null,\r
-    EVENT_NAME_ varchar(255),\r
-    EXECUTION_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    ACTIVITY_ID_ varchar(255),\r
-    CONFIGURATION_ varchar(255),\r
-    CREATED_ timestamp not null,\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_INCIDENT (\r
-  ID_ varchar(64) not null,\r
-  REV_ integer not null,\r
-  INCIDENT_TIMESTAMP_ timestamp not null,\r
-  INCIDENT_MSG_ varchar(4000),\r
-  INCIDENT_TYPE_ varchar(255) not null,\r
-  EXECUTION_ID_ varchar(64),\r
-  ACTIVITY_ID_ varchar(255),\r
-  PROC_INST_ID_ varchar(64),\r
-  PROC_DEF_ID_ varchar(64),\r
-  CAUSE_INCIDENT_ID_ varchar(64),\r
-  ROOT_CAUSE_INCIDENT_ID_ varchar(64),\r
-  CONFIGURATION_ varchar(255),\r
-  TENANT_ID_ varchar(64),\r
-  JOB_DEF_ID_ varchar(64),\r
-  primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_AUTHORIZATION (\r
-  ID_ varchar(64) not null,\r
-  REV_ integer not null,\r
-  TYPE_ integer not null,\r
-  GROUP_ID_ varchar(255),\r
-  USER_ID_ varchar(255),\r
-  RESOURCE_TYPE_ integer not null,\r
-  RESOURCE_ID_ varchar(255),\r
-  PERMS_ integer,\r
-  primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_FILTER (\r
-  ID_ varchar(64) not null,\r
-  REV_ integer not null,\r
-  RESOURCE_TYPE_ varchar(255) not null,\r
-  NAME_ varchar(255) not null,\r
-  OWNER_ varchar(255),\r
-  QUERY_ LONGTEXT not null,\r
-  PROPERTIES_ LONGTEXT,\r
-  primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_METER_LOG (\r
-  ID_ varchar(64) not null,\r
-  NAME_ varchar(64) not null,\r
-  REPORTER_ varchar(255),\r
-  VALUE_ bigint,\r
-  TIMESTAMP_ timestamp,\r
-  MILLISECONDS_ bigint DEFAULT 0,\r
-  primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_EXT_TASK (\r
-  ID_ varchar(64) not null,\r
-  REV_ integer not null,\r
-  WORKER_ID_ varchar(255),\r
-  TOPIC_NAME_ varchar(255),\r
-  RETRIES_ integer,\r
-  ERROR_MSG_ varchar(4000),\r
-  ERROR_DETAILS_ID_ varchar(64),\r
-  LOCK_EXP_TIME_ timestamp NULL,\r
-  SUSPENSION_STATE_ integer,\r
-  EXECUTION_ID_ varchar(64),\r
-  PROC_INST_ID_ varchar(64),\r
-  PROC_DEF_ID_ varchar(64),\r
-  PROC_DEF_KEY_ varchar(255),\r
-  ACT_ID_ varchar(255),\r
-  ACT_INST_ID_ varchar(64),\r
-  TENANT_ID_ varchar(64),\r
-  PRIORITY_ bigint NOT NULL DEFAULT 0,\r
-  primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_RU_BATCH (\r
-  ID_ varchar(64) not null,\r
-  REV_ integer not null,\r
-  TYPE_ varchar(255),\r
-  TOTAL_JOBS_ integer,\r
-  JOBS_CREATED_ integer,\r
-  JOBS_PER_SEED_ integer,\r
-  INVOCATIONS_PER_JOB_ integer,\r
-  SEED_JOB_DEF_ID_ varchar(64),\r
-  BATCH_JOB_DEF_ID_ varchar(64),\r
-  MONITOR_JOB_DEF_ID_ varchar(64),\r
-  SUSPENSION_STATE_ integer,\r
-  CONFIGURATION_ varchar(255),\r
-  TENANT_ID_ varchar(64),\r
-  CREATE_USER_ID_ varchar(255),\r
-  primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create index ACT_IDX_EXEC_ROOT_PI on ACT_RU_EXECUTION(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);\r
-create index ACT_IDX_EXEC_TENANT_ID on ACT_RU_EXECUTION(TENANT_ID_);\r
-create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_);\r
-create index ACT_IDX_TASK_ASSIGNEE on ACT_RU_TASK(ASSIGNEE_);\r
-create index ACT_IDX_TASK_TENANT_ID on ACT_RU_TASK(TENANT_ID_);\r
-create index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK(USER_ID_);\r
-create index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK(GROUP_ID_);\r
-create index ACT_IDX_EVENT_SUBSCR_CONFIG_ on ACT_RU_EVENT_SUBSCR(CONFIGURATION_);\r
-create index ACT_IDX_EVENT_SUBSCR_TENANT_ID on ACT_RU_EVENT_SUBSCR(TENANT_ID_);\r
-create index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_);\r
-create index ACT_IDX_VARIABLE_TENANT_ID on ACT_RU_VARIABLE(TENANT_ID_);\r
-create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);\r
-create index ACT_IDX_INC_CONFIGURATION on ACT_RU_INCIDENT(CONFIGURATION_);\r
-create index ACT_IDX_INC_TENANT_ID on ACT_RU_INCIDENT(TENANT_ID_);\r
--- CAM-5914\r
-create index ACT_IDX_JOB_EXECUTION_ID on ACT_RU_JOB(EXECUTION_ID_);\r
--- this index needs to be limited in mysql see CAM-6938\r
-create index ACT_IDX_JOB_HANDLER on ACT_RU_JOB(HANDLER_TYPE_(100),HANDLER_CFG_(155));\r
-create index ACT_IDX_JOB_PROCINST on ACT_RU_JOB(PROCESS_INSTANCE_ID_);\r
-create index ACT_IDX_JOB_TENANT_ID on ACT_RU_JOB(TENANT_ID_);\r
-create index ACT_IDX_JOBDEF_TENANT_ID on ACT_RU_JOBDEF(TENANT_ID_);\r
-\r
--- new metric milliseconds column\r
-CREATE INDEX ACT_IDX_METER_LOG_MS ON ACT_RU_METER_LOG(MILLISECONDS_);\r
-CREATE INDEX ACT_IDX_METER_LOG_NAME_MS ON ACT_RU_METER_LOG(NAME_, MILLISECONDS_);\r
-CREATE INDEX ACT_IDX_METER_LOG_REPORT ON ACT_RU_METER_LOG(NAME_, REPORTER_, MILLISECONDS_);\r
-\r
--- old metric timestamp column\r
-CREATE INDEX ACT_IDX_METER_LOG_TIME ON ACT_RU_METER_LOG(TIMESTAMP_);\r
-CREATE INDEX ACT_IDX_METER_LOG ON ACT_RU_METER_LOG(NAME_, TIMESTAMP_);\r
-\r
-create index ACT_IDX_EXT_TASK_TOPIC on ACT_RU_EXT_TASK(TOPIC_NAME_);\r
-create index ACT_IDX_EXT_TASK_TENANT_ID on ACT_RU_EXT_TASK(TENANT_ID_);\r
-create index ACT_IDX_EXT_TASK_PRIORITY ON ACT_RU_EXT_TASK(PRIORITY_);\r
-create index ACT_IDX_EXT_TASK_ERR_DETAILS ON ACT_RU_EXT_TASK(ERROR_DETAILS_ID_);\r
-create index ACT_IDX_AUTH_GROUP_ID on ACT_RU_AUTHORIZATION(GROUP_ID_);\r
-create index ACT_IDX_JOB_JOB_DEF_ID on ACT_RU_JOB(JOB_DEF_ID_);\r
-\r
-alter table ACT_GE_BYTEARRAY\r
-    add constraint ACT_FK_BYTEARR_DEPL\r
-    foreign key (DEPLOYMENT_ID_)\r
-    references ACT_RE_DEPLOYMENT (ID_);\r
-\r
-alter table ACT_RU_EXECUTION\r
-    add constraint ACT_FK_EXE_PROCINST\r
-    foreign key (PROC_INST_ID_)\r
-    references ACT_RU_EXECUTION (ID_) on delete cascade on update cascade;\r
-\r
-alter table ACT_RU_EXECUTION\r
-    add constraint ACT_FK_EXE_PARENT\r
-    foreign key (PARENT_ID_)\r
-    references ACT_RU_EXECUTION (ID_);\r
-\r
-alter table ACT_RU_EXECUTION\r
-    add constraint ACT_FK_EXE_SUPER\r
-    foreign key (SUPER_EXEC_)\r
-    references ACT_RU_EXECUTION (ID_);\r
-\r
-alter table ACT_RU_EXECUTION\r
-    add constraint ACT_FK_EXE_PROCDEF\r
-    foreign key (PROC_DEF_ID_)\r
-    references ACT_RE_PROCDEF (ID_);\r
-\r
-alter table ACT_RU_IDENTITYLINK\r
-    add constraint ACT_FK_TSKASS_TASK\r
-    foreign key (TASK_ID_)\r
-    references ACT_RU_TASK (ID_);\r
-\r
-alter table ACT_RU_IDENTITYLINK\r
-    add constraint ACT_FK_ATHRZ_PROCEDEF\r
-    foreign key (PROC_DEF_ID_)\r
-    references ACT_RE_PROCDEF(ID_);\r
-\r
-alter table ACT_RU_TASK\r
-    add constraint ACT_FK_TASK_EXE\r
-    foreign key (EXECUTION_ID_)\r
-    references ACT_RU_EXECUTION (ID_);\r
-\r
-alter table ACT_RU_TASK\r
-    add constraint ACT_FK_TASK_PROCINST\r
-    foreign key (PROC_INST_ID_)\r
-    references ACT_RU_EXECUTION (ID_);\r
-\r
-alter table ACT_RU_TASK\r
-  add constraint ACT_FK_TASK_PROCDEF\r
-  foreign key (PROC_DEF_ID_)\r
-  references ACT_RE_PROCDEF (ID_);\r
-\r
-alter table ACT_RU_VARIABLE\r
-    add constraint ACT_FK_VAR_EXE\r
-    foreign key (EXECUTION_ID_)\r
-    references ACT_RU_EXECUTION (ID_);\r
-\r
-alter table ACT_RU_VARIABLE\r
-    add constraint ACT_FK_VAR_PROCINST\r
-    foreign key (PROC_INST_ID_)\r
-    references ACT_RU_EXECUTION(ID_);\r
-\r
-alter table ACT_RU_VARIABLE\r
-    add constraint ACT_FK_VAR_BYTEARRAY\r
-    foreign key (BYTEARRAY_ID_)\r
-    references ACT_GE_BYTEARRAY (ID_);\r
-\r
-alter table ACT_RU_JOB\r
-    add constraint ACT_FK_JOB_EXCEPTION\r
-    foreign key (EXCEPTION_STACK_ID_)\r
-    references ACT_GE_BYTEARRAY (ID_);\r
-\r
-alter table ACT_RU_EVENT_SUBSCR\r
-    add constraint ACT_FK_EVENT_EXEC\r
-    foreign key (EXECUTION_ID_)\r
-    references ACT_RU_EXECUTION(ID_);\r
-\r
-alter table ACT_RU_INCIDENT\r
-    add constraint ACT_FK_INC_EXE\r
-    foreign key (EXECUTION_ID_)\r
-    references ACT_RU_EXECUTION (ID_);\r
-\r
-alter table ACT_RU_INCIDENT\r
-    add constraint ACT_FK_INC_PROCINST\r
-    foreign key (PROC_INST_ID_)\r
-    references ACT_RU_EXECUTION (ID_);\r
-\r
-alter table ACT_RU_INCIDENT\r
-    add constraint ACT_FK_INC_PROCDEF\r
-    foreign key (PROC_DEF_ID_)\r
-    references ACT_RE_PROCDEF (ID_);\r
-\r
-alter table ACT_RU_INCIDENT\r
-    add constraint ACT_FK_INC_CAUSE\r
-    foreign key (CAUSE_INCIDENT_ID_)\r
-    references ACT_RU_INCIDENT (ID_) on delete cascade on update cascade;\r
-\r
-alter table ACT_RU_INCIDENT\r
-    add constraint ACT_FK_INC_RCAUSE\r
-    foreign key (ROOT_CAUSE_INCIDENT_ID_)\r
-    references ACT_RU_INCIDENT (ID_) on delete cascade on update cascade;\r
-\r
-alter table ACT_RU_EXT_TASK\r
-    add constraint ACT_FK_EXT_TASK_ERROR_DETAILS\r
-    foreign key (ERROR_DETAILS_ID_)\r
-    references ACT_GE_BYTEARRAY (ID_);\r
-\r
-create index ACT_IDX_INC_JOB_DEF on ACT_RU_INCIDENT(JOB_DEF_ID_);\r
-alter table ACT_RU_INCIDENT\r
-    add constraint ACT_FK_INC_JOB_DEF\r
-    foreign key (JOB_DEF_ID_)\r
-    references ACT_RU_JOBDEF (ID_);\r
-\r
-alter table ACT_RU_AUTHORIZATION\r
-    add constraint ACT_UNIQ_AUTH_USER\r
-    unique (USER_ID_,TYPE_,RESOURCE_TYPE_,RESOURCE_ID_);\r
-\r
-alter table ACT_RU_AUTHORIZATION\r
-    add constraint ACT_UNIQ_AUTH_GROUP\r
-    unique (GROUP_ID_,TYPE_,RESOURCE_TYPE_,RESOURCE_ID_);\r
-\r
-alter table ACT_RU_VARIABLE\r
-    add constraint ACT_UNIQ_VARIABLE\r
-    unique (VAR_SCOPE_, NAME_);\r
-\r
-alter table ACT_RU_EXT_TASK\r
-    add constraint ACT_FK_EXT_TASK_EXE\r
-    foreign key (EXECUTION_ID_)\r
-    references ACT_RU_EXECUTION (ID_);\r
-\r
-create index ACT_IDX_BATCH_SEED_JOB_DEF ON ACT_RU_BATCH(SEED_JOB_DEF_ID_);\r
-alter table ACT_RU_BATCH\r
-    add constraint ACT_FK_BATCH_SEED_JOB_DEF\r
-    foreign key (SEED_JOB_DEF_ID_)\r
-    references ACT_RU_JOBDEF (ID_);\r
-\r
-create index ACT_IDX_BATCH_MONITOR_JOB_DEF ON ACT_RU_BATCH(MONITOR_JOB_DEF_ID_);\r
-alter table ACT_RU_BATCH\r
-    add constraint ACT_FK_BATCH_MONITOR_JOB_DEF\r
-    foreign key (MONITOR_JOB_DEF_ID_)\r
-    references ACT_RU_JOBDEF (ID_);\r
-\r
-create index ACT_IDX_BATCH_JOB_DEF ON ACT_RU_BATCH(BATCH_JOB_DEF_ID_);\r
-alter table ACT_RU_BATCH\r
-    add constraint ACT_FK_BATCH_JOB_DEF\r
-    foreign key (BATCH_JOB_DEF_ID_)\r
-    references ACT_RU_JOBDEF (ID_);\r
-\r
--- indexes for deadlock problems - https://app.camunda.com/jira/browse/CAM-2567 --\r
-create index ACT_IDX_INC_CAUSEINCID on ACT_RU_INCIDENT(CAUSE_INCIDENT_ID_);\r
-create index ACT_IDX_INC_EXID on ACT_RU_INCIDENT(EXECUTION_ID_);\r
-create index ACT_IDX_INC_PROCDEFID on ACT_RU_INCIDENT(PROC_DEF_ID_);\r
-create index ACT_IDX_INC_PROCINSTID on ACT_RU_INCIDENT(PROC_INST_ID_);\r
-create index ACT_IDX_INC_ROOTCAUSEINCID on ACT_RU_INCIDENT(ROOT_CAUSE_INCIDENT_ID_);\r
--- index for deadlock problem - https://app.camunda.com/jira/browse/CAM-4440 --\r
-create index ACT_IDX_AUTH_RESOURCE_ID on ACT_RU_AUTHORIZATION(RESOURCE_ID_);\r
--- index to prevent deadlock on fk constraint - https://app.camunda.com/jira/browse/CAM-5440 --\r
-create index ACT_IDX_EXT_TASK_EXEC on ACT_RU_EXT_TASK(EXECUTION_ID_);\r
-\r
--- indexes to improve deployment\r
-create index ACT_IDX_BYTEARRAY_ROOT_PI on ACT_GE_BYTEARRAY(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_BYTEARRAY_RM_TIME on ACT_GE_BYTEARRAY(REMOVAL_TIME_);\r
-create index ACT_IDX_BYTEARRAY_NAME on ACT_GE_BYTEARRAY(NAME_);\r
-create index ACT_IDX_DEPLOYMENT_NAME on ACT_RE_DEPLOYMENT(NAME_);\r
-create index ACT_IDX_DEPLOYMENT_TENANT_ID on ACT_RE_DEPLOYMENT(TENANT_ID_);\r
-create index ACT_IDX_JOBDEF_PROC_DEF_ID ON ACT_RU_JOBDEF(PROC_DEF_ID_);\r
-create index ACT_IDX_JOB_HANDLER_TYPE ON ACT_RU_JOB(HANDLER_TYPE_);\r
-create index ACT_IDX_EVENT_SUBSCR_EVT_NAME ON ACT_RU_EVENT_SUBSCR(EVENT_NAME_);\r
-create index ACT_IDX_PROCDEF_DEPLOYMENT_ID ON ACT_RE_PROCDEF(DEPLOYMENT_ID_);\r
-create index ACT_IDX_PROCDEF_TENANT_ID ON ACT_RE_PROCDEF(TENANT_ID_);\r
-create index ACT_IDX_PROCDEF_VER_TAG ON ACT_RE_PROCDEF(VERSION_TAG_);\r
---\r
--- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)\r
---\r
--- Licensed under the Apache License, Version 2.0 (the "License");\r
--- you may not use this file except in compliance with the License.\r
--- You may obtain a copy of the License at\r
---\r
---     http://www.apache.org/licenses/LICENSE-2.0\r
---\r
--- Unless required by applicable law or agreed to in writing, software\r
--- distributed under the License is distributed on an "AS IS" BASIS,\r
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
--- See the License for the specific language governing permissions and\r
--- limitations under the License.\r
---\r
-\r
--- create case definition table --\r
-create table ACT_RE_CASE_DEF (\r
-    ID_ varchar(64) not null,\r
-    REV_ integer,\r
-    CATEGORY_ varchar(255),\r
-    NAME_ varchar(255),\r
-    KEY_ varchar(255) not null,\r
-    VERSION_ integer not null,\r
-    DEPLOYMENT_ID_ varchar(64),\r
-    RESOURCE_NAME_ varchar(4000),\r
-    DGRM_RESOURCE_NAME_ varchar(4000),\r
-    TENANT_ID_ varchar(64),\r
-    HISTORY_TTL_ integer,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
--- create case execution table --\r
-create table ACT_RU_CASE_EXECUTION (\r
-    ID_ varchar(64) NOT NULL,\r
-    REV_ integer,\r
-    CASE_INST_ID_ varchar(64),\r
-    SUPER_CASE_EXEC_ varchar(64),\r
-    SUPER_EXEC_ varchar(64),\r
-    BUSINESS_KEY_ varchar(255),\r
-    PARENT_ID_ varchar(64),\r
-    CASE_DEF_ID_ varchar(64),\r
-    ACT_ID_ varchar(255),\r
-    PREV_STATE_ integer,\r
-    CURRENT_STATE_ integer,\r
-    REQUIRED_ boolean,\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
--- create case sentry part table --\r
-\r
-create table ACT_RU_CASE_SENTRY_PART (\r
-    ID_ varchar(64) NOT NULL,\r
-    REV_ integer,\r
-    CASE_INST_ID_ varchar(64),\r
-    CASE_EXEC_ID_ varchar(64),\r
-    SENTRY_ID_ varchar(255),\r
-    TYPE_ varchar(255),\r
-    SOURCE_CASE_EXEC_ID_ varchar(64),\r
-    STANDARD_EVENT_ varchar(255),\r
-    SOURCE_ varchar(255),\r
-    VARIABLE_EVENT_ varchar(255),\r
-    VARIABLE_NAME_ varchar(255),\r
-    SATISFIED_ boolean,\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
--- create index on business key --\r
-create index ACT_IDX_CASE_EXEC_BUSKEY on ACT_RU_CASE_EXECUTION(BUSINESS_KEY_);\r
-\r
--- https://app.camunda.com/jira/browse/CAM-9165\r
-create index ACT_IDX_CASE_EXE_CASE_INST on ACT_RU_CASE_EXECUTION(CASE_INST_ID_);\r
-\r
--- create foreign key constraints on ACT_RU_CASE_EXECUTION --\r
-alter table ACT_RU_CASE_EXECUTION\r
-    add constraint ACT_FK_CASE_EXE_CASE_INST\r
-    foreign key (CASE_INST_ID_)\r
-    references ACT_RU_CASE_EXECUTION(ID_) on delete cascade on update cascade;\r
-\r
-alter table ACT_RU_CASE_EXECUTION\r
-    add constraint ACT_FK_CASE_EXE_PARENT\r
-    foreign key (PARENT_ID_)\r
-    references ACT_RU_CASE_EXECUTION(ID_);\r
-\r
-alter table ACT_RU_CASE_EXECUTION\r
-    add constraint ACT_FK_CASE_EXE_CASE_DEF\r
-    foreign key (CASE_DEF_ID_)\r
-    references ACT_RE_CASE_DEF(ID_);\r
-\r
--- create foreign key constraints on ACT_RU_VARIABLE --\r
-alter table ACT_RU_VARIABLE\r
-    add constraint ACT_FK_VAR_CASE_EXE\r
-    foreign key (CASE_EXECUTION_ID_)\r
-    references ACT_RU_CASE_EXECUTION(ID_);\r
-\r
-alter table ACT_RU_VARIABLE\r
-    add constraint ACT_FK_VAR_CASE_INST\r
-    foreign key (CASE_INST_ID_)\r
-    references ACT_RU_CASE_EXECUTION(ID_);\r
-\r
--- create foreign key constraints on ACT_RU_TASK --\r
-alter table ACT_RU_TASK\r
-    add constraint ACT_FK_TASK_CASE_EXE\r
-    foreign key (CASE_EXECUTION_ID_)\r
-    references ACT_RU_CASE_EXECUTION(ID_);\r
-\r
-alter table ACT_RU_TASK\r
-  add constraint ACT_FK_TASK_CASE_DEF\r
-  foreign key (CASE_DEF_ID_)\r
-  references ACT_RE_CASE_DEF(ID_);\r
-\r
--- create foreign key constraints on ACT_RU_CASE_SENTRY_PART --\r
-alter table ACT_RU_CASE_SENTRY_PART\r
-    add constraint ACT_FK_CASE_SENTRY_CASE_INST\r
-    foreign key (CASE_INST_ID_)\r
-    references ACT_RU_CASE_EXECUTION(ID_);\r
-\r
-alter table ACT_RU_CASE_SENTRY_PART\r
-    add constraint ACT_FK_CASE_SENTRY_CASE_EXEC\r
-    foreign key (CASE_EXEC_ID_)\r
-    references ACT_RU_CASE_EXECUTION(ID_);\r
-\r
-create index ACT_IDX_CASE_DEF_TENANT_ID on ACT_RE_CASE_DEF(TENANT_ID_);\r
-create index ACT_IDX_CASE_EXEC_TENANT_ID on ACT_RU_CASE_EXECUTION(TENANT_ID_);\r
---\r
--- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)\r
---\r
--- Licensed under the Apache License, Version 2.0 (the "License");\r
--- you may not use this file except in compliance with the License.\r
--- You may obtain a copy of the License at\r
---\r
---     http://www.apache.org/licenses/LICENSE-2.0\r
---\r
--- Unless required by applicable law or agreed to in writing, software\r
--- distributed under the License is distributed on an "AS IS" BASIS,\r
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
--- See the License for the specific language governing permissions and\r
--- limitations under the License.\r
---\r
-\r
--- create decision definition table --\r
-create table ACT_RE_DECISION_DEF (\r
-    ID_ varchar(64) not null,\r
-    REV_ integer,\r
-    CATEGORY_ varchar(255),\r
-    NAME_ varchar(255),\r
-    KEY_ varchar(255) not null,\r
-    VERSION_ integer not null,\r
-    DEPLOYMENT_ID_ varchar(64),\r
-    RESOURCE_NAME_ varchar(4000),\r
-    DGRM_RESOURCE_NAME_ varchar(4000),\r
-    DEC_REQ_ID_ varchar(64),\r
-    DEC_REQ_KEY_ varchar(255),\r
-    TENANT_ID_ varchar(64),\r
-    HISTORY_TTL_ integer,\r
-    VERSION_TAG_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
--- create decision requirements definition table --\r
-create table ACT_RE_DECISION_REQ_DEF (\r
-    ID_ varchar(64) NOT NULL,\r
-    REV_ integer,\r
-    CATEGORY_ varchar(255),\r
-    NAME_ varchar(255),\r
-    KEY_ varchar(255) NOT NULL,\r
-    VERSION_ integer NOT NULL,\r
-    DEPLOYMENT_ID_ varchar(64),\r
-    RESOURCE_NAME_ varchar(4000),\r
-    DGRM_RESOURCE_NAME_ varchar(4000),\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-alter table ACT_RE_DECISION_DEF\r
-    add constraint ACT_FK_DEC_REQ\r
-    foreign key (DEC_REQ_ID_)\r
-    references ACT_RE_DECISION_REQ_DEF(ID_);\r
-\r
-create index ACT_IDX_DEC_DEF_TENANT_ID on ACT_RE_DECISION_DEF(TENANT_ID_);\r
-create index ACT_IDX_DEC_DEF_REQ_ID on ACT_RE_DECISION_DEF(DEC_REQ_ID_);\r
-create index ACT_IDX_DEC_REQ_DEF_TENANT_ID on ACT_RE_DECISION_REQ_DEF(TENANT_ID_);\r
-\r
---\r
--- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)\r
---\r
--- Licensed under the Apache License, Version 2.0 (the "License");\r
--- you may not use this file except in compliance with the License.\r
--- You may obtain a copy of the License at\r
---\r
---     http://www.apache.org/licenses/LICENSE-2.0\r
---\r
--- Unless required by applicable law or agreed to in writing, software\r
--- distributed under the License is distributed on an "AS IS" BASIS,\r
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
--- See the License for the specific language governing permissions and\r
--- limitations under the License.\r
---\r
-\r
-create table ACT_HI_PROCINST (\r
-    ID_ varchar(64) not null,\r
-    PROC_INST_ID_ varchar(64) not null,\r
-    BUSINESS_KEY_ varchar(255),\r
-    PROC_DEF_KEY_ varchar(255),\r
-    PROC_DEF_ID_ varchar(64) not null,\r
-    START_TIME_ datetime not null,\r
-    END_TIME_ datetime,\r
-    REMOVAL_TIME_ datetime,\r
-    DURATION_ bigint,\r
-    START_USER_ID_ varchar(255),\r
-    START_ACT_ID_ varchar(255),\r
-    END_ACT_ID_ varchar(255),\r
-    SUPER_PROCESS_INSTANCE_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    SUPER_CASE_INSTANCE_ID_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    DELETE_REASON_ varchar(4000),\r
-    TENANT_ID_ varchar(64),\r
-    STATE_ varchar(255),\r
-    primary key (ID_),\r
-    unique (PROC_INST_ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_ACTINST (\r
-    ID_ varchar(64) not null,\r
-    PARENT_ACT_INST_ID_ varchar(64),\r
-    PROC_DEF_KEY_ varchar(255),\r
-    PROC_DEF_ID_ varchar(64) not null,\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64) not null,\r
-    EXECUTION_ID_ varchar(64) not null,\r
-    ACT_ID_ varchar(255) not null,\r
-    TASK_ID_ varchar(64),\r
-    CALL_PROC_INST_ID_ varchar(64),\r
-    CALL_CASE_INST_ID_ varchar(64),\r
-    ACT_NAME_ varchar(255),\r
-    ACT_TYPE_ varchar(255) not null,\r
-    ASSIGNEE_ varchar(64),\r
-    START_TIME_ datetime not null,\r
-    END_TIME_ datetime,\r
-    DURATION_ bigint,\r
-    ACT_INST_STATE_ integer,\r
-    SEQUENCE_COUNTER_ bigint,\r
-    TENANT_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_TASKINST (\r
-    ID_ varchar(64) not null,\r
-    TASK_DEF_KEY_ varchar(255),\r
-    PROC_DEF_KEY_ varchar(255),\r
-    PROC_DEF_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    EXECUTION_ID_ varchar(64),\r
-    CASE_DEF_KEY_ varchar(255),\r
-    CASE_DEF_ID_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    CASE_EXECUTION_ID_ varchar(64),\r
-    ACT_INST_ID_ varchar(64),\r
-    NAME_ varchar(255),\r
-    PARENT_TASK_ID_ varchar(64),\r
-    DESCRIPTION_ varchar(4000),\r
-    OWNER_ varchar(255),\r
-    ASSIGNEE_ varchar(255),\r
-    START_TIME_ datetime not null,\r
-    END_TIME_ datetime,\r
-    DURATION_ bigint,\r
-    DELETE_REASON_ varchar(4000),\r
-    PRIORITY_ integer,\r
-    DUE_DATE_ datetime,\r
-    FOLLOW_UP_DATE_ datetime,\r
-    TENANT_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_VARINST (\r
-    ID_ varchar(64) not null,\r
-    PROC_DEF_KEY_ varchar(255),\r
-    PROC_DEF_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    EXECUTION_ID_ varchar(64),\r
-    ACT_INST_ID_ varchar(64),\r
-    CASE_DEF_KEY_ varchar(255),\r
-    CASE_DEF_ID_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    CASE_EXECUTION_ID_ varchar(64),\r
-    TASK_ID_ varchar(64),\r
-    NAME_ varchar(255) not null,\r
-    VAR_TYPE_ varchar(100),\r
-    CREATE_TIME_ datetime,\r
-    REV_ integer,\r
-    BYTEARRAY_ID_ varchar(64),\r
-    DOUBLE_ double,\r
-    LONG_ bigint,\r
-    TEXT_ varchar(4000),\r
-    TEXT2_ varchar(4000),\r
-    TENANT_ID_ varchar(64),\r
-    STATE_ varchar(20),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_DETAIL (\r
-    ID_ varchar(64) not null,\r
-    TYPE_ varchar(255) not null,\r
-    PROC_DEF_KEY_ varchar(255),\r
-    PROC_DEF_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    EXECUTION_ID_ varchar(64),\r
-    CASE_DEF_KEY_ varchar(255),\r
-    CASE_DEF_ID_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    CASE_EXECUTION_ID_ varchar(64),\r
-    TASK_ID_ varchar(64),\r
-    ACT_INST_ID_ varchar(64),\r
-    VAR_INST_ID_ varchar(64),\r
-    NAME_ varchar(255) not null,\r
-    VAR_TYPE_ varchar(255),\r
-    REV_ integer,\r
-    TIME_ datetime not null,\r
-    BYTEARRAY_ID_ varchar(64),\r
-    DOUBLE_ double,\r
-    LONG_ bigint,\r
-    TEXT_ varchar(4000),\r
-    TEXT2_ varchar(4000),\r
-    SEQUENCE_COUNTER_ bigint,\r
-    TENANT_ID_ varchar(64),\r
-    OPERATION_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_IDENTITYLINK (\r
-    ID_ varchar(64) not null,\r
-    TIMESTAMP_ timestamp not null,\r
-    TYPE_ varchar(255),\r
-    USER_ID_ varchar(255),\r
-    GROUP_ID_ varchar(255),\r
-    TASK_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_DEF_ID_ varchar(64),\r
-    OPERATION_TYPE_ varchar(64),\r
-    ASSIGNER_ID_ varchar(64),\r
-    PROC_DEF_KEY_ varchar(255),\r
-    TENANT_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_COMMENT (\r
-    ID_ varchar(64) not null,\r
-    TYPE_ varchar(255),\r
-    TIME_ datetime not null,\r
-    USER_ID_ varchar(255),\r
-    TASK_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    ACTION_ varchar(255),\r
-    MESSAGE_ varchar(4000),\r
-    FULL_MSG_ LONGBLOB,\r
-    TENANT_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_ATTACHMENT (\r
-    ID_ varchar(64) not null,\r
-    REV_ integer,\r
-    USER_ID_ varchar(255),\r
-    NAME_ varchar(255),\r
-    DESCRIPTION_ varchar(4000),\r
-    TYPE_ varchar(255),\r
-    TASK_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    URL_ varchar(4000),\r
-    CONTENT_ID_ varchar(64),\r
-    TENANT_ID_ varchar(64),\r
-    CREATE_TIME_ datetime,\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_OP_LOG (\r
-    ID_ varchar(64) not null,\r
-    DEPLOYMENT_ID_ varchar(64),\r
-    PROC_DEF_ID_ varchar(64),\r
-    PROC_DEF_KEY_ varchar(255),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    EXECUTION_ID_ varchar(64),\r
-    CASE_DEF_ID_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    CASE_EXECUTION_ID_ varchar(64),\r
-    TASK_ID_ varchar(64),\r
-    JOB_ID_ varchar(64),\r
-    JOB_DEF_ID_ varchar(64),\r
-    BATCH_ID_ varchar(64),\r
-    USER_ID_ varchar(255),\r
-    TIMESTAMP_ timestamp not null,\r
-    OPERATION_TYPE_ varchar(64),\r
-    OPERATION_ID_ varchar(64),\r
-    ENTITY_TYPE_ varchar(30),\r
-    PROPERTY_ varchar(64),\r
-    ORG_VALUE_ varchar(4000),\r
-    NEW_VALUE_ varchar(4000),\r
-    TENANT_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_INCIDENT (\r
-  ID_ varchar(64) not null,\r
-  PROC_DEF_KEY_ varchar(255),\r
-  PROC_DEF_ID_ varchar(64),\r
-  ROOT_PROC_INST_ID_ varchar(64),\r
-  PROC_INST_ID_ varchar(64),\r
-  EXECUTION_ID_ varchar(64),\r
-  CREATE_TIME_ timestamp not null,\r
-  END_TIME_ timestamp null,\r
-  INCIDENT_MSG_ varchar(4000),\r
-  INCIDENT_TYPE_ varchar(255) not null,\r
-  ACTIVITY_ID_ varchar(255),\r
-  CAUSE_INCIDENT_ID_ varchar(64),\r
-  ROOT_CAUSE_INCIDENT_ID_ varchar(64),\r
-  CONFIGURATION_ varchar(255),\r
-  INCIDENT_STATE_ integer,\r
-  TENANT_ID_ varchar(64),\r
-  JOB_DEF_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-  primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_JOB_LOG (\r
-    ID_ varchar(64) not null,\r
-    TIMESTAMP_ timestamp not null,\r
-    JOB_ID_ varchar(64) not null,\r
-    JOB_DUEDATE_ timestamp NULL,\r
-    JOB_RETRIES_ integer,\r
-    JOB_PRIORITY_ bigint NOT NULL DEFAULT 0,\r
-    JOB_EXCEPTION_MSG_ varchar(4000),\r
-    JOB_EXCEPTION_STACK_ID_ varchar(64),\r
-    JOB_STATE_ integer,\r
-    JOB_DEF_ID_ varchar(64),\r
-    JOB_DEF_TYPE_ varchar(255),\r
-    JOB_DEF_CONFIGURATION_ varchar(255),\r
-    ACT_ID_ varchar(255),\r
-    EXECUTION_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROCESS_INSTANCE_ID_ varchar(64),\r
-    PROCESS_DEF_ID_ varchar(64),\r
-    PROCESS_DEF_KEY_ varchar(255),\r
-    DEPLOYMENT_ID_ varchar(64),\r
-    SEQUENCE_COUNTER_ bigint,\r
-    TENANT_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_BATCH (\r
-    ID_ varchar(64) not null,\r
-    TYPE_ varchar(255),\r
-    TOTAL_JOBS_ integer,\r
-    JOBS_PER_SEED_ integer,\r
-    INVOCATIONS_PER_JOB_ integer,\r
-    SEED_JOB_DEF_ID_ varchar(64),\r
-    MONITOR_JOB_DEF_ID_ varchar(64),\r
-    BATCH_JOB_DEF_ID_ varchar(64),\r
-    TENANT_ID_  varchar(64),\r
-    CREATE_USER_ID_ varchar(255),\r
-    START_TIME_ datetime not null,\r
-    END_TIME_ datetime,\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_EXT_TASK_LOG (\r
-    ID_ varchar(64) not null,\r
-    TIMESTAMP_ timestamp not null,\r
-    EXT_TASK_ID_ varchar(64) not null,\r
-    RETRIES_ integer,\r
-    TOPIC_NAME_ varchar(255),\r
-    WORKER_ID_ varchar(255),\r
-    PRIORITY_ bigint not null default 0,\r
-    ERROR_MSG_ varchar(4000),\r
-    ERROR_DETAILS_ID_ varchar(64),\r
-    ACT_ID_ varchar(255),\r
-    ACT_INST_ID_ varchar(64),\r
-    EXECUTION_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    PROC_DEF_ID_ varchar(64),\r
-    PROC_DEF_KEY_ varchar(255),\r
-    TENANT_ID_ varchar(64),\r
-    STATE_ integer,\r
-    REV_ integer,\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST(END_TIME_);\r
-create index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST(BUSINESS_KEY_);\r
-create index ACT_IDX_HI_PRO_INST_TENANT_ID on ACT_HI_PROCINST(TENANT_ID_);\r
-create index ACT_IDX_HI_PRO_INST_PROC_DEF_KEY on ACT_HI_PROCINST(PROC_DEF_KEY_);\r
-create index ACT_IDX_HI_PRO_INST_PROC_TIME on ACT_HI_PROCINST(START_TIME_, END_TIME_);\r
-create index ACT_IDX_HI_PI_PDEFID_END_TIME on ACT_HI_PROCINST(PROC_DEF_ID_, END_TIME_);\r
-create index ACT_IDX_HI_PRO_INST_ROOT_PI on ACT_HI_PROCINST(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_PRO_INST_RM_TIME on ACT_HI_PROCINST(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_ACTINST_ROOT_PI on ACT_HI_ACTINST(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_ACT_INST_START on ACT_HI_ACTINST(START_TIME_);\r
-create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_);\r
-create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_);\r
-create index ACT_IDX_HI_ACT_INST_COMP on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_, END_TIME_, ID_);\r
-create index ACT_IDX_HI_ACT_INST_STATS on ACT_HI_ACTINST(PROC_DEF_ID_, PROC_INST_ID_, ACT_ID_, END_TIME_, ACT_INST_STATE_);\r
-create index ACT_IDX_HI_ACT_INST_TENANT_ID on ACT_HI_ACTINST(TENANT_ID_);\r
-create index ACT_IDX_HI_ACT_INST_PROC_DEF_KEY on ACT_HI_ACTINST(PROC_DEF_KEY_);\r
-create index ACT_IDX_HI_AI_PDEFID_END_TIME on ACT_HI_ACTINST(PROC_DEF_ID_, END_TIME_);\r
-create index ACT_IDX_HI_ACT_INST_RM_TIME on ACT_HI_ACTINST(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_TASKINST_ROOT_PI on ACT_HI_TASKINST(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_TASK_INST_TENANT_ID on ACT_HI_TASKINST(TENANT_ID_);\r
-create index ACT_IDX_HI_TASK_INST_PROC_DEF_KEY on ACT_HI_TASKINST(PROC_DEF_KEY_);\r
-create index ACT_IDX_HI_TASKINST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);\r
-create index ACT_IDX_HI_TASKINSTID_PROCINST on ACT_HI_TASKINST(ID_,PROC_INST_ID_);\r
-create index ACT_IDX_HI_TASK_INST_RM_TIME on ACT_HI_TASKINST(REMOVAL_TIME_);\r
-create index ACT_IDX_HI_TASK_INST_START on ACT_HI_TASKINST(START_TIME_);\r
-create index ACT_IDX_HI_TASK_INST_END on ACT_HI_TASKINST(END_TIME_);\r
-\r
-create index ACT_IDX_HI_DETAIL_ROOT_PI on ACT_HI_DETAIL(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL(PROC_INST_ID_);\r
-create index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL(ACT_INST_ID_);\r
-create index ACT_IDX_HI_DETAIL_CASE_INST on ACT_HI_DETAIL(CASE_INST_ID_);\r
-create index ACT_IDX_HI_DETAIL_CASE_EXEC on ACT_HI_DETAIL(CASE_EXECUTION_ID_);\r
-create index ACT_IDX_HI_DETAIL_TIME on ACT_HI_DETAIL(TIME_);\r
-create index ACT_IDX_HI_DETAIL_NAME on ACT_HI_DETAIL(NAME_);\r
-create index ACT_IDX_HI_DETAIL_TASK_ID on ACT_HI_DETAIL(TASK_ID_);\r
-create index ACT_IDX_HI_DETAIL_TENANT_ID on ACT_HI_DETAIL(TENANT_ID_);\r
-create index ACT_IDX_HI_DETAIL_PROC_DEF_KEY on ACT_HI_DETAIL(PROC_DEF_KEY_);\r
-create index ACT_IDX_HI_DETAIL_BYTEAR on ACT_HI_DETAIL(BYTEARRAY_ID_);\r
-create index ACT_IDX_HI_DETAIL_RM_TIME on ACT_HI_DETAIL(REMOVAL_TIME_);\r
-create index ACT_IDX_HI_DETAIL_TASK_BYTEAR on ACT_HI_DETAIL(BYTEARRAY_ID_, TASK_ID_);\r
-\r
-create index ACT_IDX_HI_IDENT_LNK_ROOT_PI on ACT_HI_IDENTITYLINK(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_);\r
-create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_);\r
-create index ACT_IDX_HI_IDENT_LNK_TENANT_ID on ACT_HI_IDENTITYLINK(TENANT_ID_);\r
-create index ACT_IDX_HI_IDENT_LNK_PROC_DEF_KEY on ACT_HI_IDENTITYLINK(PROC_DEF_KEY_);\r
-create index ACT_IDX_HI_IDENT_LINK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_);\r
-create index ACT_IDX_HI_IDENT_LINK_RM_TIME on ACT_HI_IDENTITYLINK(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_VARINST_ROOT_PI on ACT_HI_VARINST(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_);\r
-create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_);\r
-create index ACT_IDX_HI_CASEVAR_CASE_INST on ACT_HI_VARINST(CASE_INST_ID_);\r
-create index ACT_IDX_HI_VAR_INST_TENANT_ID on ACT_HI_VARINST(TENANT_ID_);\r
-create index ACT_IDX_HI_VAR_INST_PROC_DEF_KEY on ACT_HI_VARINST(PROC_DEF_KEY_);\r
-create index ACT_IDX_HI_VARINST_BYTEAR on ACT_HI_VARINST(BYTEARRAY_ID_);\r
-create index ACT_IDX_HI_VARINST_RM_TIME on ACT_HI_VARINST(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_INCIDENT_TENANT_ID on ACT_HI_INCIDENT(TENANT_ID_);\r
-create index ACT_IDX_HI_INCIDENT_PROC_DEF_KEY on ACT_HI_INCIDENT(PROC_DEF_KEY_);\r
-create index ACT_IDX_HI_INCIDENT_ROOT_PI on ACT_HI_INCIDENT(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_INCIDENT_PROCINST on ACT_HI_INCIDENT(PROC_INST_ID_);\r
-create index ACT_IDX_HI_INCIDENT_RM_TIME on ACT_HI_INCIDENT(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_JOB_LOG_ROOT_PI on ACT_HI_JOB_LOG(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_JOB_LOG_PROCINST on ACT_HI_JOB_LOG(PROCESS_INSTANCE_ID_);\r
-create index ACT_IDX_HI_JOB_LOG_PROCDEF on ACT_HI_JOB_LOG(PROCESS_DEF_ID_);\r
-create index ACT_IDX_HI_JOB_LOG_TENANT_ID on ACT_HI_JOB_LOG(TENANT_ID_);\r
-create index ACT_IDX_HI_JOB_LOG_JOB_DEF_ID on ACT_HI_JOB_LOG(JOB_DEF_ID_);\r
-create index ACT_IDX_HI_JOB_LOG_PROC_DEF_KEY on ACT_HI_JOB_LOG(PROCESS_DEF_KEY_);\r
-create index ACT_IDX_HI_JOB_LOG_EX_STACK on ACT_HI_JOB_LOG(JOB_EXCEPTION_STACK_ID_);\r
-create index ACT_IDX_HI_JOB_LOG_RM_TIME on ACT_HI_JOB_LOG(REMOVAL_TIME_);\r
-\r
-create index ACT_HI_BAT_RM_TIME on ACT_HI_BATCH(REMOVAL_TIME_);\r
-\r
-create index ACT_HI_EXT_TASK_LOG_ROOT_PI on ACT_HI_EXT_TASK_LOG(ROOT_PROC_INST_ID_);\r
-create index ACT_HI_EXT_TASK_LOG_PROCINST on ACT_HI_EXT_TASK_LOG(PROC_INST_ID_);\r
-create index ACT_HI_EXT_TASK_LOG_PROCDEF on ACT_HI_EXT_TASK_LOG(PROC_DEF_ID_);\r
-create index ACT_HI_EXT_TASK_LOG_PROC_DEF_KEY on ACT_HI_EXT_TASK_LOG(PROC_DEF_KEY_);\r
-create index ACT_HI_EXT_TASK_LOG_TENANT_ID on ACT_HI_EXT_TASK_LOG(TENANT_ID_);\r
-create index ACT_IDX_HI_EXTTASKLOG_ERRORDET on ACT_HI_EXT_TASK_LOG(ERROR_DETAILS_ID_);\r
-create index ACT_HI_EXT_TASK_LOG_RM_TIME on ACT_HI_EXT_TASK_LOG(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_OP_LOG_ROOT_PI on ACT_HI_OP_LOG(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_OP_LOG_PROCINST on ACT_HI_OP_LOG(PROC_INST_ID_);\r
-create index ACT_IDX_HI_OP_LOG_PROCDEF on ACT_HI_OP_LOG(PROC_DEF_ID_);\r
-create index ACT_IDX_HI_OP_LOG_TASK on ACT_HI_OP_LOG(TASK_ID_);\r
-create index ACT_IDX_HI_OP_LOG_RM_TIME on ACT_HI_OP_LOG(REMOVAL_TIME_);\r
-create index ACT_IDX_HI_OP_LOG_TIMESTAMP on ACT_HI_OP_LOG(TIMESTAMP_);\r
-\r
-create index ACT_IDX_HI_ATTACHMENT_CONTENT on ACT_HI_ATTACHMENT(CONTENT_ID_);\r
-create index ACT_IDX_HI_ATTACHMENT_ROOT_PI on ACT_HI_ATTACHMENT(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_ATTACHMENT_PROCINST on ACT_HI_ATTACHMENT(PROC_INST_ID_);\r
-create index ACT_IDX_HI_ATTACHMENT_TASK on ACT_HI_ATTACHMENT(TASK_ID_);\r
-create index ACT_IDX_HI_ATTACHMENT_RM_TIME on ACT_HI_ATTACHMENT(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_COMMENT_TASK on ACT_HI_COMMENT(TASK_ID_);\r
-create index ACT_IDX_HI_COMMENT_ROOT_PI on ACT_HI_COMMENT(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_COMMENT_PROCINST on ACT_HI_COMMENT(PROC_INST_ID_);\r
-create index ACT_IDX_HI_COMMENT_RM_TIME on ACT_HI_COMMENT(REMOVAL_TIME_);\r
---\r
--- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)\r
---\r
--- Licensed under the Apache License, Version 2.0 (the "License");\r
--- you may not use this file except in compliance with the License.\r
--- You may obtain a copy of the License at\r
---\r
---     http://www.apache.org/licenses/LICENSE-2.0\r
---\r
--- Unless required by applicable law or agreed to in writing, software\r
--- distributed under the License is distributed on an "AS IS" BASIS,\r
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
--- See the License for the specific language governing permissions and\r
--- limitations under the License.\r
---\r
-\r
-create table ACT_HI_CASEINST (\r
-    ID_ varchar(64) not null,\r
-    CASE_INST_ID_ varchar(64) not null,\r
-    BUSINESS_KEY_ varchar(255),\r
-    CASE_DEF_ID_ varchar(64) not null,\r
-    CREATE_TIME_ datetime not null,\r
-    CLOSE_TIME_ datetime,\r
-    DURATION_ bigint,\r
-    STATE_ integer,\r
-    CREATE_USER_ID_ varchar(255),\r
-    SUPER_CASE_INSTANCE_ID_ varchar(64),\r
-    SUPER_PROCESS_INSTANCE_ID_ varchar(64),\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_),\r
-    unique (CASE_INST_ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_HI_CASEACTINST (\r
-    ID_ varchar(64) not null,\r
-    PARENT_ACT_INST_ID_ varchar(64),\r
-    CASE_DEF_ID_ varchar(64) not null,\r
-    CASE_INST_ID_ varchar(64) not null,\r
-    CASE_ACT_ID_ varchar(255) not null,\r
-    TASK_ID_ varchar(64),\r
-    CALL_PROC_INST_ID_ varchar(64),\r
-    CALL_CASE_INST_ID_ varchar(64),\r
-    CASE_ACT_NAME_ varchar(255),\r
-    CASE_ACT_TYPE_ varchar(255),\r
-    CREATE_TIME_ datetime not null,\r
-    END_TIME_ datetime,\r
-    DURATION_ bigint,\r
-    STATE_ integer,\r
-    REQUIRED_ boolean,\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create index ACT_IDX_HI_CAS_I_CLOSE on ACT_HI_CASEINST(CLOSE_TIME_);\r
-create index ACT_IDX_HI_CAS_I_BUSKEY on ACT_HI_CASEINST(BUSINESS_KEY_);\r
-create index ACT_IDX_HI_CAS_I_TENANT_ID on ACT_HI_CASEINST(TENANT_ID_);\r
-create index ACT_IDX_HI_CAS_A_I_CREATE on ACT_HI_CASEACTINST(CREATE_TIME_);\r
-create index ACT_IDX_HI_CAS_A_I_END on ACT_HI_CASEACTINST(END_TIME_);\r
-create index ACT_IDX_HI_CAS_A_I_COMP on ACT_HI_CASEACTINST(CASE_ACT_ID_, END_TIME_, ID_);\r
-create index ACT_IDX_HI_CAS_A_I_CASEINST on ACT_HI_CASEACTINST(CASE_INST_ID_, CASE_ACT_ID_);\r
-create index ACT_IDX_HI_CAS_A_I_TENANT_ID on ACT_HI_CASEACTINST(TENANT_ID_);\r
---\r
--- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)\r
---\r
--- Licensed under the Apache License, Version 2.0 (the "License");\r
--- you may not use this file except in compliance with the License.\r
--- You may obtain a copy of the License at\r
---\r
---     http://www.apache.org/licenses/LICENSE-2.0\r
---\r
--- Unless required by applicable law or agreed to in writing, software\r
--- distributed under the License is distributed on an "AS IS" BASIS,\r
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
--- See the License for the specific language governing permissions and\r
--- limitations under the License.\r
---\r
-\r
--- create history decision instance table --\r
-create table ACT_HI_DECINST (\r
-    ID_ varchar(64) NOT NULL,\r
-    DEC_DEF_ID_ varchar(64) NOT NULL,\r
-    DEC_DEF_KEY_ varchar(255) NOT NULL,\r
-    DEC_DEF_NAME_ varchar(255),\r
-    PROC_DEF_KEY_ varchar(255),\r
-    PROC_DEF_ID_ varchar(64),\r
-    PROC_INST_ID_ varchar(64),\r
-    CASE_DEF_KEY_ varchar(255),\r
-    CASE_DEF_ID_ varchar(64),\r
-    CASE_INST_ID_ varchar(64),\r
-    ACT_INST_ID_ varchar(64),\r
-    ACT_ID_ varchar(255),\r
-    EVAL_TIME_ datetime not null,\r
-    REMOVAL_TIME_ datetime,\r
-    COLLECT_VALUE_ double,\r
-    USER_ID_ varchar(255),\r
-    ROOT_DEC_INST_ID_ varchar(64),\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    DEC_REQ_ID_ varchar(64),\r
-    DEC_REQ_KEY_ varchar(255),\r
-    TENANT_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
--- create history decision input table --\r
-create table ACT_HI_DEC_IN (\r
-    ID_ varchar(64) NOT NULL,\r
-    DEC_INST_ID_ varchar(64) NOT NULL,\r
-    CLAUSE_ID_ varchar(64),\r
-    CLAUSE_NAME_ varchar(255),\r
-    VAR_TYPE_ varchar(100),\r
-    BYTEARRAY_ID_ varchar(64),\r
-    DOUBLE_ double,\r
-    LONG_ bigint,\r
-    TEXT_ varchar(4000),\r
-    TEXT2_ varchar(4000),\r
-    TENANT_ID_ varchar(64),\r
-    CREATE_TIME_ datetime,\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
--- create history decision output table --\r
-create table ACT_HI_DEC_OUT (\r
-    ID_ varchar(64) NOT NULL,\r
-    DEC_INST_ID_ varchar(64) NOT NULL,\r
-    CLAUSE_ID_ varchar(64),\r
-    CLAUSE_NAME_ varchar(255),\r
-    RULE_ID_ varchar(64),\r
-    RULE_ORDER_ integer,\r
-    VAR_NAME_ varchar(255),\r
-    VAR_TYPE_ varchar(100),\r
-    BYTEARRAY_ID_ varchar(64),\r
-    DOUBLE_ double,\r
-    LONG_ bigint,\r
-    TEXT_ varchar(4000),\r
-    TEXT2_ varchar(4000),\r
-    TENANT_ID_ varchar(64),\r
-    CREATE_TIME_ datetime,\r
-    ROOT_PROC_INST_ID_ varchar(64),\r
-    REMOVAL_TIME_ datetime,\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-\r
-create index ACT_IDX_HI_DEC_INST_ID on ACT_HI_DECINST(DEC_DEF_ID_);\r
-create index ACT_IDX_HI_DEC_INST_KEY on ACT_HI_DECINST(DEC_DEF_KEY_);\r
-create index ACT_IDX_HI_DEC_INST_PI on ACT_HI_DECINST(PROC_INST_ID_);\r
-create index ACT_IDX_HI_DEC_INST_CI on ACT_HI_DECINST(CASE_INST_ID_);\r
-create index ACT_IDX_HI_DEC_INST_ACT on ACT_HI_DECINST(ACT_ID_);\r
-create index ACT_IDX_HI_DEC_INST_ACT_INST on ACT_HI_DECINST(ACT_INST_ID_);\r
-create index ACT_IDX_HI_DEC_INST_TIME on ACT_HI_DECINST(EVAL_TIME_);\r
-create index ACT_IDX_HI_DEC_INST_TENANT_ID on ACT_HI_DECINST(TENANT_ID_);\r
-create index ACT_IDX_HI_DEC_INST_ROOT_ID on ACT_HI_DECINST(ROOT_DEC_INST_ID_);\r
-create index ACT_IDX_HI_DEC_INST_REQ_ID on ACT_HI_DECINST(DEC_REQ_ID_);\r
-create index ACT_IDX_HI_DEC_INST_REQ_KEY on ACT_HI_DECINST(DEC_REQ_KEY_);\r
-create index ACT_IDX_HI_DEC_INST_ROOT_PI on ACT_HI_DECINST(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_DEC_INST_RM_TIME on ACT_HI_DECINST(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_DEC_IN_INST on ACT_HI_DEC_IN(DEC_INST_ID_);\r
-create index ACT_IDX_HI_DEC_IN_CLAUSE on ACT_HI_DEC_IN(DEC_INST_ID_, CLAUSE_ID_);\r
-create index ACT_IDX_HI_DEC_IN_ROOT_PI on ACT_HI_DEC_IN(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_DEC_IN_RM_TIME on ACT_HI_DEC_IN(REMOVAL_TIME_);\r
-\r
-create index ACT_IDX_HI_DEC_OUT_INST on ACT_HI_DEC_OUT(DEC_INST_ID_);\r
-create index ACT_IDX_HI_DEC_OUT_RULE on ACT_HI_DEC_OUT(RULE_ORDER_, CLAUSE_ID_);\r
-create index ACT_IDX_HI_DEC_OUT_ROOT_PI on ACT_HI_DEC_OUT(ROOT_PROC_INST_ID_);\r
-create index ACT_IDX_HI_DEC_OUT_RM_TIME on ACT_HI_DEC_OUT(REMOVAL_TIME_);\r
+--
+-- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)
+--
+-- 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.
+--
+
+create table ACT_GE_PROPERTY (
+    NAME_ varchar(64),
+    VALUE_ varchar(300),
+    REV_ integer,
+    primary key (NAME_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', 'fox', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(fox)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+insert into ACT_GE_PROPERTY
+values ('deployment.lock', '0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('history.cleanup.job.lock', '0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('startup.lock', '0', 1);
+
+create table ACT_GE_BYTEARRAY (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    DEPLOYMENT_ID_ varchar(64),
+    BYTES_ LONGBLOB,
+    GENERATED_ TINYINT,
+    TENANT_ID_ varchar(64),
+    TYPE_ integer,
+    CREATE_TIME_ datetime,
+    ROOT_PROC_INST_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RE_DEPLOYMENT (
+    ID_ varchar(64),
+    NAME_ varchar(255),
+    DEPLOY_TIME_ timestamp,
+    SOURCE_ varchar(255),
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_EXECUTION (
+    ID_ varchar(64),
+    REV_ integer,
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    BUSINESS_KEY_ varchar(255),
+    PARENT_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    SUPER_EXEC_ varchar(64),
+    SUPER_CASE_EXEC_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    ACT_ID_ varchar(255),
+    ACT_INST_ID_ varchar(64),
+    IS_ACTIVE_ TINYINT,
+    IS_CONCURRENT_ TINYINT,
+    IS_SCOPE_ TINYINT,
+    IS_EVENT_SCOPE_ TINYINT,
+    SUSPENSION_STATE_ integer,
+    CACHED_ENT_STATE_ integer,
+    SEQUENCE_COUNTER_ bigint,
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_JOB (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    TYPE_ varchar(255) NOT NULL,
+    LOCK_EXP_TIME_ timestamp NULL,
+    LOCK_OWNER_ varchar(255),
+    EXCLUSIVE_ boolean,
+    EXECUTION_ID_ varchar(64),
+    PROCESS_INSTANCE_ID_ varchar(64),
+    PROCESS_DEF_ID_ varchar(64),
+    PROCESS_DEF_KEY_ varchar(255),
+    RETRIES_ integer,
+    EXCEPTION_STACK_ID_ varchar(64),
+    EXCEPTION_MSG_ varchar(4000),
+    DUEDATE_ timestamp NULL,
+    REPEAT_ varchar(255),
+    HANDLER_TYPE_ varchar(255),
+    HANDLER_CFG_ varchar(4000),
+    DEPLOYMENT_ID_ varchar(64),
+    SUSPENSION_STATE_ integer NOT NULL DEFAULT 1,
+    JOB_DEF_ID_ varchar(64),
+    PRIORITY_ bigint NOT NULL DEFAULT 0,
+    SEQUENCE_COUNTER_ bigint,
+    TENANT_ID_ varchar(64),
+    CREATE_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_JOBDEF (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    PROC_DEF_ID_ varchar(64),
+    PROC_DEF_KEY_ varchar(255),
+    ACT_ID_ varchar(255),
+    JOB_TYPE_ varchar(255) NOT NULL,
+    JOB_CONFIGURATION_ varchar(255),
+    SUSPENSION_STATE_ integer,
+    JOB_PRIORITY_ bigint,
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RE_PROCDEF (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) not null,
+    VERSION_ integer not null,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    HAS_START_FORM_KEY_ TINYINT,
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(64),
+    VERSION_TAG_ varchar(64),
+    HISTORY_TTL_ integer,
+    STARTABLE_ boolean NOT NULL default TRUE,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_TASK (
+    ID_ varchar(64),
+    REV_ integer,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    CASE_EXECUTION_ID_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    CASE_DEF_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    TASK_DEF_KEY_ varchar(255),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    DELEGATION_ varchar(64),
+    PRIORITY_ integer,
+    CREATE_TIME_ timestamp,
+    DUE_DATE_ datetime,
+    FOLLOW_UP_DATE_ datetime,
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_IDENTITYLINK (
+    ID_ varchar(64),
+    REV_ integer,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_VARIABLE (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    TYPE_ varchar(255) not null,
+    NAME_ varchar(255) not null,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    CASE_EXECUTION_ID_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    VAR_SCOPE_ varchar(64) not null,
+    SEQUENCE_COUNTER_ bigint,
+    IS_CONCURRENT_LOCAL_ TINYINT,
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_EVENT_SUBSCR (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    EVENT_TYPE_ varchar(255) not null,
+    EVENT_NAME_ varchar(255),
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTIVITY_ID_ varchar(255),
+    CONFIGURATION_ varchar(255),
+    CREATED_ timestamp not null,
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_INCIDENT (
+  ID_ varchar(64) not null,
+  REV_ integer not null,
+  INCIDENT_TIMESTAMP_ timestamp not null,
+  INCIDENT_MSG_ varchar(4000),
+  INCIDENT_TYPE_ varchar(255) not null,
+  EXECUTION_ID_ varchar(64),
+  ACTIVITY_ID_ varchar(255),
+  PROC_INST_ID_ varchar(64),
+  PROC_DEF_ID_ varchar(64),
+  CAUSE_INCIDENT_ID_ varchar(64),
+  ROOT_CAUSE_INCIDENT_ID_ varchar(64),
+  CONFIGURATION_ varchar(255),
+  TENANT_ID_ varchar(64),
+  JOB_DEF_ID_ varchar(64),
+  primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_AUTHORIZATION (
+  ID_ varchar(64) not null,
+  REV_ integer not null,
+  TYPE_ integer not null,
+  GROUP_ID_ varchar(255),
+  USER_ID_ varchar(255),
+  RESOURCE_TYPE_ integer not null,
+  RESOURCE_ID_ varchar(255),
+  PERMS_ integer,
+  primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_FILTER (
+  ID_ varchar(64) not null,
+  REV_ integer not null,
+  RESOURCE_TYPE_ varchar(255) not null,
+  NAME_ varchar(255) not null,
+  OWNER_ varchar(255),
+  QUERY_ LONGTEXT not null,
+  PROPERTIES_ LONGTEXT,
+  primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_METER_LOG (
+  ID_ varchar(64) not null,
+  NAME_ varchar(64) not null,
+  REPORTER_ varchar(255),
+  VALUE_ bigint,
+  TIMESTAMP_ timestamp,
+  MILLISECONDS_ bigint DEFAULT 0,
+  primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_EXT_TASK (
+  ID_ varchar(64) not null,
+  REV_ integer not null,
+  WORKER_ID_ varchar(255),
+  TOPIC_NAME_ varchar(255),
+  RETRIES_ integer,
+  ERROR_MSG_ varchar(4000),
+  ERROR_DETAILS_ID_ varchar(64),
+  LOCK_EXP_TIME_ timestamp NULL,
+  SUSPENSION_STATE_ integer,
+  EXECUTION_ID_ varchar(64),
+  PROC_INST_ID_ varchar(64),
+  PROC_DEF_ID_ varchar(64),
+  PROC_DEF_KEY_ varchar(255),
+  ACT_ID_ varchar(255),
+  ACT_INST_ID_ varchar(64),
+  TENANT_ID_ varchar(64),
+  PRIORITY_ bigint NOT NULL DEFAULT 0,
+  primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_BATCH (
+  ID_ varchar(64) not null,
+  REV_ integer not null,
+  TYPE_ varchar(255),
+  TOTAL_JOBS_ integer,
+  JOBS_CREATED_ integer,
+  JOBS_PER_SEED_ integer,
+  INVOCATIONS_PER_JOB_ integer,
+  SEED_JOB_DEF_ID_ varchar(64),
+  BATCH_JOB_DEF_ID_ varchar(64),
+  MONITOR_JOB_DEF_ID_ varchar(64),
+  SUSPENSION_STATE_ integer,
+  CONFIGURATION_ varchar(255),
+  TENANT_ID_ varchar(64),
+  CREATE_USER_ID_ varchar(255),
+  primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create index ACT_IDX_EXEC_ROOT_PI on ACT_RU_EXECUTION(ROOT_PROC_INST_ID_);
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+create index ACT_IDX_EXEC_TENANT_ID on ACT_RU_EXECUTION(TENANT_ID_);
+create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_);
+create index ACT_IDX_TASK_ASSIGNEE on ACT_RU_TASK(ASSIGNEE_);
+create index ACT_IDX_TASK_TENANT_ID on ACT_RU_TASK(TENANT_ID_);
+create index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK(USER_ID_);
+create index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK(GROUP_ID_);
+create index ACT_IDX_EVENT_SUBSCR_CONFIG_ on ACT_RU_EVENT_SUBSCR(CONFIGURATION_);
+create index ACT_IDX_EVENT_SUBSCR_TENANT_ID on ACT_RU_EVENT_SUBSCR(TENANT_ID_);
+create index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_);
+create index ACT_IDX_VARIABLE_TENANT_ID on ACT_RU_VARIABLE(TENANT_ID_);
+create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
+create index ACT_IDX_INC_CONFIGURATION on ACT_RU_INCIDENT(CONFIGURATION_);
+create index ACT_IDX_INC_TENANT_ID on ACT_RU_INCIDENT(TENANT_ID_);
+-- CAM-5914
+create index ACT_IDX_JOB_EXECUTION_ID on ACT_RU_JOB(EXECUTION_ID_);
+-- this index needs to be limited in mysql see CAM-6938
+create index ACT_IDX_JOB_HANDLER on ACT_RU_JOB(HANDLER_TYPE_(100),HANDLER_CFG_(155));
+create index ACT_IDX_JOB_PROCINST on ACT_RU_JOB(PROCESS_INSTANCE_ID_);
+create index ACT_IDX_JOB_TENANT_ID on ACT_RU_JOB(TENANT_ID_);
+create index ACT_IDX_JOBDEF_TENANT_ID on ACT_RU_JOBDEF(TENANT_ID_);
+
+-- new metric milliseconds column
+CREATE INDEX ACT_IDX_METER_LOG_MS ON ACT_RU_METER_LOG(MILLISECONDS_);
+CREATE INDEX ACT_IDX_METER_LOG_NAME_MS ON ACT_RU_METER_LOG(NAME_, MILLISECONDS_);
+CREATE INDEX ACT_IDX_METER_LOG_REPORT ON ACT_RU_METER_LOG(NAME_, REPORTER_, MILLISECONDS_);
+
+-- old metric timestamp column
+CREATE INDEX ACT_IDX_METER_LOG_TIME ON ACT_RU_METER_LOG(TIMESTAMP_);
+CREATE INDEX ACT_IDX_METER_LOG ON ACT_RU_METER_LOG(NAME_, TIMESTAMP_);
+
+create index ACT_IDX_EXT_TASK_TOPIC on ACT_RU_EXT_TASK(TOPIC_NAME_);
+create index ACT_IDX_EXT_TASK_TENANT_ID on ACT_RU_EXT_TASK(TENANT_ID_);
+create index ACT_IDX_EXT_TASK_PRIORITY ON ACT_RU_EXT_TASK(PRIORITY_);
+create index ACT_IDX_EXT_TASK_ERR_DETAILS ON ACT_RU_EXT_TASK(ERROR_DETAILS_ID_);
+create index ACT_IDX_AUTH_GROUP_ID on ACT_RU_AUTHORIZATION(GROUP_ID_);
+create index ACT_IDX_JOB_JOB_DEF_ID on ACT_RU_JOB(JOB_DEF_ID_);
+
+alter table ACT_GE_BYTEARRAY
+    add constraint ACT_FK_BYTEARR_DEPL
+    foreign key (DEPLOYMENT_ID_)
+    references ACT_RE_DEPLOYMENT (ID_);
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION (ID_) on delete cascade on update cascade;
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PARENT
+    foreign key (PARENT_ID_)
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_SUPER
+    foreign key (SUPER_EXEC_)
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCDEF
+    foreign key (PROC_DEF_ID_)
+    references ACT_RE_PROCDEF (ID_);
+
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_TSKASS_TASK
+    foreign key (TASK_ID_)
+    references ACT_RU_TASK (ID_);
+
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_ATHRZ_PROCEDEF
+    foreign key (PROC_DEF_ID_)
+    references ACT_RE_PROCDEF(ID_);
+
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_TASK
+  add constraint ACT_FK_TASK_PROCDEF
+  foreign key (PROC_DEF_ID_)
+  references ACT_RE_PROCDEF (ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION(ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_BYTEARRAY
+    foreign key (BYTEARRAY_ID_)
+    references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RU_JOB
+    add constraint ACT_FK_JOB_EXCEPTION
+    foreign key (EXCEPTION_STACK_ID_)
+    references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RU_EVENT_SUBSCR
+    add constraint ACT_FK_EVENT_EXEC
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION(ID_);
+
+alter table ACT_RU_INCIDENT
+    add constraint ACT_FK_INC_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_INCIDENT
+    add constraint ACT_FK_INC_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_INCIDENT
+    add constraint ACT_FK_INC_PROCDEF
+    foreign key (PROC_DEF_ID_)
+    references ACT_RE_PROCDEF (ID_);
+
+alter table ACT_RU_INCIDENT
+    add constraint ACT_FK_INC_CAUSE
+    foreign key (CAUSE_INCIDENT_ID_)
+    references ACT_RU_INCIDENT (ID_) on delete cascade on update cascade;
+
+alter table ACT_RU_INCIDENT
+    add constraint ACT_FK_INC_RCAUSE
+    foreign key (ROOT_CAUSE_INCIDENT_ID_)
+    references ACT_RU_INCIDENT (ID_) on delete cascade on update cascade;
+
+alter table ACT_RU_EXT_TASK
+    add constraint ACT_FK_EXT_TASK_ERROR_DETAILS
+    foreign key (ERROR_DETAILS_ID_)
+    references ACT_GE_BYTEARRAY (ID_);
+
+create index ACT_IDX_INC_JOB_DEF on ACT_RU_INCIDENT(JOB_DEF_ID_);
+alter table ACT_RU_INCIDENT
+    add constraint ACT_FK_INC_JOB_DEF
+    foreign key (JOB_DEF_ID_)
+    references ACT_RU_JOBDEF (ID_);
+
+alter table ACT_RU_AUTHORIZATION
+    add constraint ACT_UNIQ_AUTH_USER
+    unique (USER_ID_,TYPE_,RESOURCE_TYPE_,RESOURCE_ID_);
+
+alter table ACT_RU_AUTHORIZATION
+    add constraint ACT_UNIQ_AUTH_GROUP
+    unique (GROUP_ID_,TYPE_,RESOURCE_TYPE_,RESOURCE_ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_UNIQ_VARIABLE
+    unique (VAR_SCOPE_, NAME_);
+
+alter table ACT_RU_EXT_TASK
+    add constraint ACT_FK_EXT_TASK_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION (ID_);
+
+create index ACT_IDX_BATCH_SEED_JOB_DEF ON ACT_RU_BATCH(SEED_JOB_DEF_ID_);
+alter table ACT_RU_BATCH
+    add constraint ACT_FK_BATCH_SEED_JOB_DEF
+    foreign key (SEED_JOB_DEF_ID_)
+    references ACT_RU_JOBDEF (ID_);
+
+create index ACT_IDX_BATCH_MONITOR_JOB_DEF ON ACT_RU_BATCH(MONITOR_JOB_DEF_ID_);
+alter table ACT_RU_BATCH
+    add constraint ACT_FK_BATCH_MONITOR_JOB_DEF
+    foreign key (MONITOR_JOB_DEF_ID_)
+    references ACT_RU_JOBDEF (ID_);
+
+create index ACT_IDX_BATCH_JOB_DEF ON ACT_RU_BATCH(BATCH_JOB_DEF_ID_);
+alter table ACT_RU_BATCH
+    add constraint ACT_FK_BATCH_JOB_DEF
+    foreign key (BATCH_JOB_DEF_ID_)
+    references ACT_RU_JOBDEF (ID_);
+
+-- indexes for deadlock problems - https://app.camunda.com/jira/browse/CAM-2567 --
+create index ACT_IDX_INC_CAUSEINCID on ACT_RU_INCIDENT(CAUSE_INCIDENT_ID_);
+create index ACT_IDX_INC_EXID on ACT_RU_INCIDENT(EXECUTION_ID_);
+create index ACT_IDX_INC_PROCDEFID on ACT_RU_INCIDENT(PROC_DEF_ID_);
+create index ACT_IDX_INC_PROCINSTID on ACT_RU_INCIDENT(PROC_INST_ID_);
+create index ACT_IDX_INC_ROOTCAUSEINCID on ACT_RU_INCIDENT(ROOT_CAUSE_INCIDENT_ID_);
+-- index for deadlock problem - https://app.camunda.com/jira/browse/CAM-4440 --
+create index ACT_IDX_AUTH_RESOURCE_ID on ACT_RU_AUTHORIZATION(RESOURCE_ID_);
+-- index to prevent deadlock on fk constraint - https://app.camunda.com/jira/browse/CAM-5440 --
+create index ACT_IDX_EXT_TASK_EXEC on ACT_RU_EXT_TASK(EXECUTION_ID_);
+
+-- indexes to improve deployment
+create index ACT_IDX_BYTEARRAY_ROOT_PI on ACT_GE_BYTEARRAY(ROOT_PROC_INST_ID_);
+create index ACT_IDX_BYTEARRAY_RM_TIME on ACT_GE_BYTEARRAY(REMOVAL_TIME_);
+create index ACT_IDX_BYTEARRAY_NAME on ACT_GE_BYTEARRAY(NAME_);
+create index ACT_IDX_DEPLOYMENT_NAME on ACT_RE_DEPLOYMENT(NAME_);
+create index ACT_IDX_DEPLOYMENT_TENANT_ID on ACT_RE_DEPLOYMENT(TENANT_ID_);
+create index ACT_IDX_JOBDEF_PROC_DEF_ID ON ACT_RU_JOBDEF(PROC_DEF_ID_);
+create index ACT_IDX_JOB_HANDLER_TYPE ON ACT_RU_JOB(HANDLER_TYPE_);
+create index ACT_IDX_EVENT_SUBSCR_EVT_NAME ON ACT_RU_EVENT_SUBSCR(EVENT_NAME_);
+create index ACT_IDX_PROCDEF_DEPLOYMENT_ID ON ACT_RE_PROCDEF(DEPLOYMENT_ID_);
+create index ACT_IDX_PROCDEF_TENANT_ID ON ACT_RE_PROCDEF(TENANT_ID_);
+create index ACT_IDX_PROCDEF_VER_TAG ON ACT_RE_PROCDEF(VERSION_TAG_);
+--
+-- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)
+--
+-- 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.
+--
+
+-- create case definition table --
+create table ACT_RE_CASE_DEF (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) not null,
+    VERSION_ integer not null,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    TENANT_ID_ varchar(64),
+    HISTORY_TTL_ integer,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+-- create case execution table --
+create table ACT_RU_CASE_EXECUTION (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    CASE_INST_ID_ varchar(64),
+    SUPER_CASE_EXEC_ varchar(64),
+    SUPER_EXEC_ varchar(64),
+    BUSINESS_KEY_ varchar(255),
+    PARENT_ID_ varchar(64),
+    CASE_DEF_ID_ varchar(64),
+    ACT_ID_ varchar(255),
+    PREV_STATE_ integer,
+    CURRENT_STATE_ integer,
+    REQUIRED_ boolean,
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+-- create case sentry part table --
+
+create table ACT_RU_CASE_SENTRY_PART (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    CASE_INST_ID_ varchar(64),
+    CASE_EXEC_ID_ varchar(64),
+    SENTRY_ID_ varchar(255),
+    TYPE_ varchar(255),
+    SOURCE_CASE_EXEC_ID_ varchar(64),
+    STANDARD_EVENT_ varchar(255),
+    SOURCE_ varchar(255),
+    VARIABLE_EVENT_ varchar(255),
+    VARIABLE_NAME_ varchar(255),
+    SATISFIED_ boolean,
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+-- create index on business key --
+create index ACT_IDX_CASE_EXEC_BUSKEY on ACT_RU_CASE_EXECUTION(BUSINESS_KEY_);
+
+-- https://app.camunda.com/jira/browse/CAM-9165
+create index ACT_IDX_CASE_EXE_CASE_INST on ACT_RU_CASE_EXECUTION(CASE_INST_ID_);
+
+-- create foreign key constraints on ACT_RU_CASE_EXECUTION --
+alter table ACT_RU_CASE_EXECUTION
+    add constraint ACT_FK_CASE_EXE_CASE_INST
+    foreign key (CASE_INST_ID_)
+    references ACT_RU_CASE_EXECUTION(ID_) on delete cascade on update cascade;
+
+alter table ACT_RU_CASE_EXECUTION
+    add constraint ACT_FK_CASE_EXE_PARENT
+    foreign key (PARENT_ID_)
+    references ACT_RU_CASE_EXECUTION(ID_);
+
+alter table ACT_RU_CASE_EXECUTION
+    add constraint ACT_FK_CASE_EXE_CASE_DEF
+    foreign key (CASE_DEF_ID_)
+    references ACT_RE_CASE_DEF(ID_);
+
+-- create foreign key constraints on ACT_RU_VARIABLE --
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_CASE_EXE
+    foreign key (CASE_EXECUTION_ID_)
+    references ACT_RU_CASE_EXECUTION(ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_CASE_INST
+    foreign key (CASE_INST_ID_)
+    references ACT_RU_CASE_EXECUTION(ID_);
+
+-- create foreign key constraints on ACT_RU_TASK --
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_CASE_EXE
+    foreign key (CASE_EXECUTION_ID_)
+    references ACT_RU_CASE_EXECUTION(ID_);
+
+alter table ACT_RU_TASK
+  add constraint ACT_FK_TASK_CASE_DEF
+  foreign key (CASE_DEF_ID_)
+  references ACT_RE_CASE_DEF(ID_);
+
+-- create foreign key constraints on ACT_RU_CASE_SENTRY_PART --
+alter table ACT_RU_CASE_SENTRY_PART
+    add constraint ACT_FK_CASE_SENTRY_CASE_INST
+    foreign key (CASE_INST_ID_)
+    references ACT_RU_CASE_EXECUTION(ID_);
+
+alter table ACT_RU_CASE_SENTRY_PART
+    add constraint ACT_FK_CASE_SENTRY_CASE_EXEC
+    foreign key (CASE_EXEC_ID_)
+    references ACT_RU_CASE_EXECUTION(ID_);
+
+create index ACT_IDX_CASE_DEF_TENANT_ID on ACT_RE_CASE_DEF(TENANT_ID_);
+create index ACT_IDX_CASE_EXEC_TENANT_ID on ACT_RU_CASE_EXECUTION(TENANT_ID_);
+--
+-- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)
+--
+-- 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.
+--
+
+-- create decision definition table --
+create table ACT_RE_DECISION_DEF (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) not null,
+    VERSION_ integer not null,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    DEC_REQ_ID_ varchar(64),
+    DEC_REQ_KEY_ varchar(255),
+    TENANT_ID_ varchar(64),
+    HISTORY_TTL_ integer,
+    VERSION_TAG_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+-- create decision requirements definition table --
+create table ACT_RE_DECISION_REQ_DEF (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) NOT NULL,
+    VERSION_ integer NOT NULL,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+alter table ACT_RE_DECISION_DEF
+    add constraint ACT_FK_DEC_REQ
+    foreign key (DEC_REQ_ID_)
+    references ACT_RE_DECISION_REQ_DEF(ID_);
+
+create index ACT_IDX_DEC_DEF_TENANT_ID on ACT_RE_DECISION_DEF(TENANT_ID_);
+create index ACT_IDX_DEC_DEF_REQ_ID on ACT_RE_DECISION_DEF(DEC_REQ_ID_);
+create index ACT_IDX_DEC_REQ_DEF_TENANT_ID on ACT_RE_DECISION_REQ_DEF(TENANT_ID_);
+
+--
+-- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)
+--
+-- 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.
+--
+
+create table ACT_HI_PROCINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    BUSINESS_KEY_ varchar(255),
+    PROC_DEF_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64) not null,
+    START_TIME_ datetime not null,
+    END_TIME_ datetime,
+    REMOVAL_TIME_ datetime,
+    DURATION_ bigint,
+    START_USER_ID_ varchar(255),
+    START_ACT_ID_ varchar(255),
+    END_ACT_ID_ varchar(255),
+    SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    SUPER_CASE_INSTANCE_ID_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    DELETE_REASON_ varchar(4000),
+    TENANT_ID_ varchar(64),
+    STATE_ varchar(255),
+    primary key (ID_),
+    unique (PROC_INST_ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_ACTINST (
+    ID_ varchar(64) not null,
+    PARENT_ACT_INST_ID_ varchar(64),
+    PROC_DEF_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64) not null,
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64) not null,
+    EXECUTION_ID_ varchar(64) not null,
+    ACT_ID_ varchar(255) not null,
+    TASK_ID_ varchar(64),
+    CALL_PROC_INST_ID_ varchar(64),
+    CALL_CASE_INST_ID_ varchar(64),
+    ACT_NAME_ varchar(255),
+    ACT_TYPE_ varchar(255) not null,
+    ASSIGNEE_ varchar(64),
+    START_TIME_ datetime not null,
+    END_TIME_ datetime,
+    DURATION_ bigint,
+    ACT_INST_STATE_ integer,
+    SEQUENCE_COUNTER_ bigint,
+    TENANT_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_TASKINST (
+    ID_ varchar(64) not null,
+    TASK_DEF_KEY_ varchar(255),
+    PROC_DEF_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    CASE_DEF_KEY_ varchar(255),
+    CASE_DEF_ID_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    CASE_EXECUTION_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    START_TIME_ datetime not null,
+    END_TIME_ datetime,
+    DURATION_ bigint,
+    DELETE_REASON_ varchar(4000),
+    PRIORITY_ integer,
+    DUE_DATE_ datetime,
+    FOLLOW_UP_DATE_ datetime,
+    TENANT_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_VARINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    CASE_DEF_KEY_ varchar(255),
+    CASE_DEF_ID_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    CASE_EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(100),
+    CREATE_TIME_ datetime,
+    REV_ integer,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    TENANT_ID_ varchar(64),
+    STATE_ varchar(20),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_DETAIL (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255) not null,
+    PROC_DEF_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    CASE_DEF_KEY_ varchar(255),
+    CASE_DEF_ID_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    CASE_EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    VAR_INST_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(255),
+    REV_ integer,
+    TIME_ datetime not null,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    SEQUENCE_COUNTER_ bigint,
+    TENANT_ID_ varchar(64),
+    OPERATION_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_IDENTITYLINK (
+    ID_ varchar(64) not null,
+    TIMESTAMP_ timestamp not null,
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    GROUP_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    OPERATION_TYPE_ varchar(64),
+    ASSIGNER_ID_ varchar(64),
+    PROC_DEF_KEY_ varchar(255),
+    TENANT_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_COMMENT (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255),
+    TIME_ datetime not null,
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTION_ varchar(255),
+    MESSAGE_ varchar(4000),
+    FULL_MSG_ LONGBLOB,
+    TENANT_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_ATTACHMENT (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    USER_ID_ varchar(255),
+    NAME_ varchar(255),
+    DESCRIPTION_ varchar(4000),
+    TYPE_ varchar(255),
+    TASK_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    URL_ varchar(4000),
+    CONTENT_ID_ varchar(64),
+    TENANT_ID_ varchar(64),
+    CREATE_TIME_ datetime,
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_OP_LOG (
+    ID_ varchar(64) not null,
+    DEPLOYMENT_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_DEF_KEY_ varchar(255),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    CASE_DEF_ID_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    CASE_EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    JOB_ID_ varchar(64),
+    JOB_DEF_ID_ varchar(64),
+    BATCH_ID_ varchar(64),
+    USER_ID_ varchar(255),
+    TIMESTAMP_ timestamp not null,
+    OPERATION_TYPE_ varchar(64),
+    OPERATION_ID_ varchar(64),
+    ENTITY_TYPE_ varchar(30),
+    PROPERTY_ varchar(64),
+    ORG_VALUE_ varchar(4000),
+    NEW_VALUE_ varchar(4000),
+    TENANT_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_INCIDENT (
+  ID_ varchar(64) not null,
+  PROC_DEF_KEY_ varchar(255),
+  PROC_DEF_ID_ varchar(64),
+  ROOT_PROC_INST_ID_ varchar(64),
+  PROC_INST_ID_ varchar(64),
+  EXECUTION_ID_ varchar(64),
+  CREATE_TIME_ timestamp not null,
+  END_TIME_ timestamp null,
+  INCIDENT_MSG_ varchar(4000),
+  INCIDENT_TYPE_ varchar(255) not null,
+  ACTIVITY_ID_ varchar(255),
+  CAUSE_INCIDENT_ID_ varchar(64),
+  ROOT_CAUSE_INCIDENT_ID_ varchar(64),
+  CONFIGURATION_ varchar(255),
+  INCIDENT_STATE_ integer,
+  TENANT_ID_ varchar(64),
+  JOB_DEF_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+  primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_JOB_LOG (
+    ID_ varchar(64) not null,
+    TIMESTAMP_ timestamp not null,
+    JOB_ID_ varchar(64) not null,
+    JOB_DUEDATE_ timestamp NULL,
+    JOB_RETRIES_ integer,
+    JOB_PRIORITY_ bigint NOT NULL DEFAULT 0,
+    JOB_EXCEPTION_MSG_ varchar(4000),
+    JOB_EXCEPTION_STACK_ID_ varchar(64),
+    JOB_STATE_ integer,
+    JOB_DEF_ID_ varchar(64),
+    JOB_DEF_TYPE_ varchar(255),
+    JOB_DEF_CONFIGURATION_ varchar(255),
+    ACT_ID_ varchar(255),
+    EXECUTION_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROCESS_INSTANCE_ID_ varchar(64),
+    PROCESS_DEF_ID_ varchar(64),
+    PROCESS_DEF_KEY_ varchar(255),
+    DEPLOYMENT_ID_ varchar(64),
+    SEQUENCE_COUNTER_ bigint,
+    TENANT_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_BATCH (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255),
+    TOTAL_JOBS_ integer,
+    JOBS_PER_SEED_ integer,
+    INVOCATIONS_PER_JOB_ integer,
+    SEED_JOB_DEF_ID_ varchar(64),
+    MONITOR_JOB_DEF_ID_ varchar(64),
+    BATCH_JOB_DEF_ID_ varchar(64),
+    TENANT_ID_  varchar(64),
+    CREATE_USER_ID_ varchar(255),
+    START_TIME_ datetime not null,
+    END_TIME_ datetime,
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_EXT_TASK_LOG (
+    ID_ varchar(64) not null,
+    TIMESTAMP_ timestamp not null,
+    EXT_TASK_ID_ varchar(64) not null,
+    RETRIES_ integer,
+    TOPIC_NAME_ varchar(255),
+    WORKER_ID_ varchar(255),
+    PRIORITY_ bigint not null default 0,
+    ERROR_MSG_ varchar(4000),
+    ERROR_DETAILS_ID_ varchar(64),
+    ACT_ID_ varchar(255),
+    ACT_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_DEF_KEY_ varchar(255),
+    TENANT_ID_ varchar(64),
+    STATE_ integer,
+    REV_ integer,
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST(END_TIME_);
+create index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST(BUSINESS_KEY_);
+create index ACT_IDX_HI_PRO_INST_TENANT_ID on ACT_HI_PROCINST(TENANT_ID_);
+create index ACT_IDX_HI_PRO_INST_PROC_DEF_KEY on ACT_HI_PROCINST(PROC_DEF_KEY_);
+create index ACT_IDX_HI_PRO_INST_PROC_TIME on ACT_HI_PROCINST(START_TIME_, END_TIME_);
+create index ACT_IDX_HI_PI_PDEFID_END_TIME on ACT_HI_PROCINST(PROC_DEF_ID_, END_TIME_);
+create index ACT_IDX_HI_PRO_INST_ROOT_PI on ACT_HI_PROCINST(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_PRO_INST_RM_TIME on ACT_HI_PROCINST(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_ACTINST_ROOT_PI on ACT_HI_ACTINST(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_ACT_INST_START on ACT_HI_ACTINST(START_TIME_);
+create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_);
+create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_);
+create index ACT_IDX_HI_ACT_INST_COMP on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_, END_TIME_, ID_);
+create index ACT_IDX_HI_ACT_INST_STATS on ACT_HI_ACTINST(PROC_DEF_ID_, PROC_INST_ID_, ACT_ID_, END_TIME_, ACT_INST_STATE_);
+create index ACT_IDX_HI_ACT_INST_TENANT_ID on ACT_HI_ACTINST(TENANT_ID_);
+create index ACT_IDX_HI_ACT_INST_PROC_DEF_KEY on ACT_HI_ACTINST(PROC_DEF_KEY_);
+create index ACT_IDX_HI_AI_PDEFID_END_TIME on ACT_HI_ACTINST(PROC_DEF_ID_, END_TIME_);
+create index ACT_IDX_HI_ACT_INST_RM_TIME on ACT_HI_ACTINST(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_TASKINST_ROOT_PI on ACT_HI_TASKINST(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_TASK_INST_TENANT_ID on ACT_HI_TASKINST(TENANT_ID_);
+create index ACT_IDX_HI_TASK_INST_PROC_DEF_KEY on ACT_HI_TASKINST(PROC_DEF_KEY_);
+create index ACT_IDX_HI_TASKINST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);
+create index ACT_IDX_HI_TASKINSTID_PROCINST on ACT_HI_TASKINST(ID_,PROC_INST_ID_);
+create index ACT_IDX_HI_TASK_INST_RM_TIME on ACT_HI_TASKINST(REMOVAL_TIME_);
+create index ACT_IDX_HI_TASK_INST_START on ACT_HI_TASKINST(START_TIME_);
+create index ACT_IDX_HI_TASK_INST_END on ACT_HI_TASKINST(END_TIME_);
+
+create index ACT_IDX_HI_DETAIL_ROOT_PI on ACT_HI_DETAIL(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL(PROC_INST_ID_);
+create index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL(ACT_INST_ID_);
+create index ACT_IDX_HI_DETAIL_CASE_INST on ACT_HI_DETAIL(CASE_INST_ID_);
+create index ACT_IDX_HI_DETAIL_CASE_EXEC on ACT_HI_DETAIL(CASE_EXECUTION_ID_);
+create index ACT_IDX_HI_DETAIL_TIME on ACT_HI_DETAIL(TIME_);
+create index ACT_IDX_HI_DETAIL_NAME on ACT_HI_DETAIL(NAME_);
+create index ACT_IDX_HI_DETAIL_TASK_ID on ACT_HI_DETAIL(TASK_ID_);
+create index ACT_IDX_HI_DETAIL_TENANT_ID on ACT_HI_DETAIL(TENANT_ID_);
+create index ACT_IDX_HI_DETAIL_PROC_DEF_KEY on ACT_HI_DETAIL(PROC_DEF_KEY_);
+create index ACT_IDX_HI_DETAIL_BYTEAR on ACT_HI_DETAIL(BYTEARRAY_ID_);
+create index ACT_IDX_HI_DETAIL_RM_TIME on ACT_HI_DETAIL(REMOVAL_TIME_);
+create index ACT_IDX_HI_DETAIL_TASK_BYTEAR on ACT_HI_DETAIL(BYTEARRAY_ID_, TASK_ID_);
+
+create index ACT_IDX_HI_IDENT_LNK_ROOT_PI on ACT_HI_IDENTITYLINK(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_);
+create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_);
+create index ACT_IDX_HI_IDENT_LNK_TENANT_ID on ACT_HI_IDENTITYLINK(TENANT_ID_);
+create index ACT_IDX_HI_IDENT_LNK_PROC_DEF_KEY on ACT_HI_IDENTITYLINK(PROC_DEF_KEY_);
+create index ACT_IDX_HI_IDENT_LINK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_);
+create index ACT_IDX_HI_IDENT_LINK_RM_TIME on ACT_HI_IDENTITYLINK(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_VARINST_ROOT_PI on ACT_HI_VARINST(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_);
+create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_);
+create index ACT_IDX_HI_CASEVAR_CASE_INST on ACT_HI_VARINST(CASE_INST_ID_);
+create index ACT_IDX_HI_VAR_INST_TENANT_ID on ACT_HI_VARINST(TENANT_ID_);
+create index ACT_IDX_HI_VAR_INST_PROC_DEF_KEY on ACT_HI_VARINST(PROC_DEF_KEY_);
+create index ACT_IDX_HI_VARINST_BYTEAR on ACT_HI_VARINST(BYTEARRAY_ID_);
+create index ACT_IDX_HI_VARINST_RM_TIME on ACT_HI_VARINST(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_INCIDENT_TENANT_ID on ACT_HI_INCIDENT(TENANT_ID_);
+create index ACT_IDX_HI_INCIDENT_PROC_DEF_KEY on ACT_HI_INCIDENT(PROC_DEF_KEY_);
+create index ACT_IDX_HI_INCIDENT_ROOT_PI on ACT_HI_INCIDENT(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_INCIDENT_PROCINST on ACT_HI_INCIDENT(PROC_INST_ID_);
+create index ACT_IDX_HI_INCIDENT_RM_TIME on ACT_HI_INCIDENT(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_JOB_LOG_ROOT_PI on ACT_HI_JOB_LOG(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_JOB_LOG_PROCINST on ACT_HI_JOB_LOG(PROCESS_INSTANCE_ID_);
+create index ACT_IDX_HI_JOB_LOG_PROCDEF on ACT_HI_JOB_LOG(PROCESS_DEF_ID_);
+create index ACT_IDX_HI_JOB_LOG_TENANT_ID on ACT_HI_JOB_LOG(TENANT_ID_);
+create index ACT_IDX_HI_JOB_LOG_JOB_DEF_ID on ACT_HI_JOB_LOG(JOB_DEF_ID_);
+create index ACT_IDX_HI_JOB_LOG_PROC_DEF_KEY on ACT_HI_JOB_LOG(PROCESS_DEF_KEY_);
+create index ACT_IDX_HI_JOB_LOG_EX_STACK on ACT_HI_JOB_LOG(JOB_EXCEPTION_STACK_ID_);
+create index ACT_IDX_HI_JOB_LOG_RM_TIME on ACT_HI_JOB_LOG(REMOVAL_TIME_);
+
+create index ACT_HI_BAT_RM_TIME on ACT_HI_BATCH(REMOVAL_TIME_);
+
+create index ACT_HI_EXT_TASK_LOG_ROOT_PI on ACT_HI_EXT_TASK_LOG(ROOT_PROC_INST_ID_);
+create index ACT_HI_EXT_TASK_LOG_PROCINST on ACT_HI_EXT_TASK_LOG(PROC_INST_ID_);
+create index ACT_HI_EXT_TASK_LOG_PROCDEF on ACT_HI_EXT_TASK_LOG(PROC_DEF_ID_);
+create index ACT_HI_EXT_TASK_LOG_PROC_DEF_KEY on ACT_HI_EXT_TASK_LOG(PROC_DEF_KEY_);
+create index ACT_HI_EXT_TASK_LOG_TENANT_ID on ACT_HI_EXT_TASK_LOG(TENANT_ID_);
+create index ACT_IDX_HI_EXTTASKLOG_ERRORDET on ACT_HI_EXT_TASK_LOG(ERROR_DETAILS_ID_);
+create index ACT_HI_EXT_TASK_LOG_RM_TIME on ACT_HI_EXT_TASK_LOG(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_OP_LOG_ROOT_PI on ACT_HI_OP_LOG(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_OP_LOG_PROCINST on ACT_HI_OP_LOG(PROC_INST_ID_);
+create index ACT_IDX_HI_OP_LOG_PROCDEF on ACT_HI_OP_LOG(PROC_DEF_ID_);
+create index ACT_IDX_HI_OP_LOG_TASK on ACT_HI_OP_LOG(TASK_ID_);
+create index ACT_IDX_HI_OP_LOG_RM_TIME on ACT_HI_OP_LOG(REMOVAL_TIME_);
+create index ACT_IDX_HI_OP_LOG_TIMESTAMP on ACT_HI_OP_LOG(TIMESTAMP_);
+
+create index ACT_IDX_HI_ATTACHMENT_CONTENT on ACT_HI_ATTACHMENT(CONTENT_ID_);
+create index ACT_IDX_HI_ATTACHMENT_ROOT_PI on ACT_HI_ATTACHMENT(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_ATTACHMENT_PROCINST on ACT_HI_ATTACHMENT(PROC_INST_ID_);
+create index ACT_IDX_HI_ATTACHMENT_TASK on ACT_HI_ATTACHMENT(TASK_ID_);
+create index ACT_IDX_HI_ATTACHMENT_RM_TIME on ACT_HI_ATTACHMENT(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_COMMENT_TASK on ACT_HI_COMMENT(TASK_ID_);
+create index ACT_IDX_HI_COMMENT_ROOT_PI on ACT_HI_COMMENT(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_COMMENT_PROCINST on ACT_HI_COMMENT(PROC_INST_ID_);
+create index ACT_IDX_HI_COMMENT_RM_TIME on ACT_HI_COMMENT(REMOVAL_TIME_);
+--
+-- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)
+--
+-- 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.
+--
+
+create table ACT_HI_CASEINST (
+    ID_ varchar(64) not null,
+    CASE_INST_ID_ varchar(64) not null,
+    BUSINESS_KEY_ varchar(255),
+    CASE_DEF_ID_ varchar(64) not null,
+    CREATE_TIME_ datetime not null,
+    CLOSE_TIME_ datetime,
+    DURATION_ bigint,
+    STATE_ integer,
+    CREATE_USER_ID_ varchar(255),
+    SUPER_CASE_INSTANCE_ID_ varchar(64),
+    SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+    TENANT_ID_ varchar(64),
+    primary key (ID_),
+    unique (CASE_INST_ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_CASEACTINST (
+    ID_ varchar(64) not null,
+    PARENT_ACT_INST_ID_ varchar(64),
+    CASE_DEF_ID_ varchar(64) not null,
+    CASE_INST_ID_ varchar(64) not null,
+    CASE_ACT_ID_ varchar(255) not null,
+    TASK_ID_ varchar(64),
+    CALL_PROC_INST_ID_ varchar(64),
+    CALL_CASE_INST_ID_ varchar(64),
+    CASE_ACT_NAME_ varchar(255),
+    CASE_ACT_TYPE_ varchar(255),
+    CREATE_TIME_ datetime not null,
+    END_TIME_ datetime,
+    DURATION_ bigint,
+    STATE_ integer,
+    REQUIRED_ boolean,
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create index ACT_IDX_HI_CAS_I_CLOSE on ACT_HI_CASEINST(CLOSE_TIME_);
+create index ACT_IDX_HI_CAS_I_BUSKEY on ACT_HI_CASEINST(BUSINESS_KEY_);
+create index ACT_IDX_HI_CAS_I_TENANT_ID on ACT_HI_CASEINST(TENANT_ID_);
+create index ACT_IDX_HI_CAS_A_I_CREATE on ACT_HI_CASEACTINST(CREATE_TIME_);
+create index ACT_IDX_HI_CAS_A_I_END on ACT_HI_CASEACTINST(END_TIME_);
+create index ACT_IDX_HI_CAS_A_I_COMP on ACT_HI_CASEACTINST(CASE_ACT_ID_, END_TIME_, ID_);
+create index ACT_IDX_HI_CAS_A_I_CASEINST on ACT_HI_CASEACTINST(CASE_INST_ID_, CASE_ACT_ID_);
+create index ACT_IDX_HI_CAS_A_I_TENANT_ID on ACT_HI_CASEACTINST(TENANT_ID_);
+--
+-- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)
+--
+-- 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.
+--
+
+-- create history decision instance table --
+create table ACT_HI_DECINST (
+    ID_ varchar(64) NOT NULL,
+    DEC_DEF_ID_ varchar(64) NOT NULL,
+    DEC_DEF_KEY_ varchar(255) NOT NULL,
+    DEC_DEF_NAME_ varchar(255),
+    PROC_DEF_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    CASE_DEF_KEY_ varchar(255),
+    CASE_DEF_ID_ varchar(64),
+    CASE_INST_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    ACT_ID_ varchar(255),
+    EVAL_TIME_ datetime not null,
+    REMOVAL_TIME_ datetime,
+    COLLECT_VALUE_ double,
+    USER_ID_ varchar(255),
+    ROOT_DEC_INST_ID_ varchar(64),
+    ROOT_PROC_INST_ID_ varchar(64),
+    DEC_REQ_ID_ varchar(64),
+    DEC_REQ_KEY_ varchar(255),
+    TENANT_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+-- create history decision input table --
+create table ACT_HI_DEC_IN (
+    ID_ varchar(64) NOT NULL,
+    DEC_INST_ID_ varchar(64) NOT NULL,
+    CLAUSE_ID_ varchar(64),
+    CLAUSE_NAME_ varchar(255),
+    VAR_TYPE_ varchar(100),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    TENANT_ID_ varchar(64),
+    CREATE_TIME_ datetime,
+    ROOT_PROC_INST_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+-- create history decision output table --
+create table ACT_HI_DEC_OUT (
+    ID_ varchar(64) NOT NULL,
+    DEC_INST_ID_ varchar(64) NOT NULL,
+    CLAUSE_ID_ varchar(64),
+    CLAUSE_NAME_ varchar(255),
+    RULE_ID_ varchar(64),
+    RULE_ORDER_ integer,
+    VAR_NAME_ varchar(255),
+    VAR_TYPE_ varchar(100),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    TENANT_ID_ varchar(64),
+    CREATE_TIME_ datetime,
+    ROOT_PROC_INST_ID_ varchar(64),
+    REMOVAL_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+
+create index ACT_IDX_HI_DEC_INST_ID on ACT_HI_DECINST(DEC_DEF_ID_);
+create index ACT_IDX_HI_DEC_INST_KEY on ACT_HI_DECINST(DEC_DEF_KEY_);
+create index ACT_IDX_HI_DEC_INST_PI on ACT_HI_DECINST(PROC_INST_ID_);
+create index ACT_IDX_HI_DEC_INST_CI on ACT_HI_DECINST(CASE_INST_ID_);
+create index ACT_IDX_HI_DEC_INST_ACT on ACT_HI_DECINST(ACT_ID_);
+create index ACT_IDX_HI_DEC_INST_ACT_INST on ACT_HI_DECINST(ACT_INST_ID_);
+create index ACT_IDX_HI_DEC_INST_TIME on ACT_HI_DECINST(EVAL_TIME_);
+create index ACT_IDX_HI_DEC_INST_TENANT_ID on ACT_HI_DECINST(TENANT_ID_);
+create index ACT_IDX_HI_DEC_INST_ROOT_ID on ACT_HI_DECINST(ROOT_DEC_INST_ID_);
+create index ACT_IDX_HI_DEC_INST_REQ_ID on ACT_HI_DECINST(DEC_REQ_ID_);
+create index ACT_IDX_HI_DEC_INST_REQ_KEY on ACT_HI_DECINST(DEC_REQ_KEY_);
+create index ACT_IDX_HI_DEC_INST_ROOT_PI on ACT_HI_DECINST(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_DEC_INST_RM_TIME on ACT_HI_DECINST(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_DEC_IN_INST on ACT_HI_DEC_IN(DEC_INST_ID_);
+create index ACT_IDX_HI_DEC_IN_CLAUSE on ACT_HI_DEC_IN(DEC_INST_ID_, CLAUSE_ID_);
+create index ACT_IDX_HI_DEC_IN_ROOT_PI on ACT_HI_DEC_IN(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_DEC_IN_RM_TIME on ACT_HI_DEC_IN(REMOVAL_TIME_);
+
+create index ACT_IDX_HI_DEC_OUT_INST on ACT_HI_DEC_OUT(DEC_INST_ID_);
+create index ACT_IDX_HI_DEC_OUT_RULE on ACT_HI_DEC_OUT(RULE_ORDER_, CLAUSE_ID_);
+create index ACT_IDX_HI_DEC_OUT_ROOT_PI on ACT_HI_DEC_OUT(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_DEC_OUT_RM_TIME on ACT_HI_DEC_OUT(REMOVAL_TIME_);
---\r
--- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)\r
---\r
--- Licensed under the Apache License, Version 2.0 (the "License");\r
--- you may not use this file except in compliance with the License.\r
--- You may obtain a copy of the License at\r
---\r
---     http://www.apache.org/licenses/LICENSE-2.0\r
---\r
--- Unless required by applicable law or agreed to in writing, software\r
--- distributed under the License is distributed on an "AS IS" BASIS,\r
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
--- See the License for the specific language governing permissions and\r
--- limitations under the License.\r
---\r
-\r
-create table ACT_ID_GROUP (\r
-    ID_ varchar(64),\r
-    REV_ integer,\r
-    NAME_ varchar(255),\r
-    TYPE_ varchar(255),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_ID_MEMBERSHIP (\r
-    USER_ID_ varchar(64),\r
-    GROUP_ID_ varchar(64),\r
-    primary key (USER_ID_, GROUP_ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_ID_USER (\r
-    ID_ varchar(64),\r
-    REV_ integer,\r
-    FIRST_ varchar(255),\r
-    LAST_ varchar(255),\r
-    EMAIL_ varchar(255),\r
-    PWD_ varchar(255),\r
-    SALT_ varchar(255),\r
-    LOCK_EXP_TIME_ timestamp NULL,\r
-    ATTEMPTS_ integer,\r
-    PICTURE_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_ID_INFO (\r
-    ID_ varchar(64),\r
-    REV_ integer,\r
-    USER_ID_ varchar(64),\r
-    TYPE_ varchar(64),\r
-    KEY_ varchar(255),\r
-    VALUE_ varchar(255),\r
-    PASSWORD_ LONGBLOB,\r
-    PARENT_ID_ varchar(255),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_ID_TENANT (\r
-    ID_ varchar(64),\r
-    REV_ integer,\r
-    NAME_ varchar(255),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-create table ACT_ID_TENANT_MEMBER (\r
-    ID_ varchar(64) not null,\r
-    TENANT_ID_ varchar(64) not null,\r
-    USER_ID_ varchar(64),\r
-    GROUP_ID_ varchar(64),\r
-    primary key (ID_)\r
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;\r
-\r
-alter table ACT_ID_MEMBERSHIP\r
-    add constraint ACT_FK_MEMB_GROUP\r
-    foreign key (GROUP_ID_)\r
-    references ACT_ID_GROUP (ID_);\r
-\r
-alter table ACT_ID_MEMBERSHIP\r
-    add constraint ACT_FK_MEMB_USER\r
-    foreign key (USER_ID_)\r
-    references ACT_ID_USER (ID_);\r
-\r
-alter table ACT_ID_TENANT_MEMBER\r
-    add constraint ACT_UNIQ_TENANT_MEMB_USER\r
-    unique (TENANT_ID_, USER_ID_);\r
-\r
-alter table ACT_ID_TENANT_MEMBER\r
-    add constraint ACT_UNIQ_TENANT_MEMB_GROUP\r
-    unique (TENANT_ID_, GROUP_ID_);\r
-\r
-alter table ACT_ID_TENANT_MEMBER\r
-    add constraint ACT_FK_TENANT_MEMB\r
-    foreign key (TENANT_ID_)\r
-    references ACT_ID_TENANT (ID_);\r
-\r
-alter table ACT_ID_TENANT_MEMBER\r
-    add constraint ACT_FK_TENANT_MEMB_USER\r
-    foreign key (USER_ID_)\r
-    references ACT_ID_USER (ID_);\r
-\r
-alter table ACT_ID_TENANT_MEMBER\r
-    add constraint ACT_FK_TENANT_MEMB_GROUP\r
-    foreign key (GROUP_ID_)\r
-    references ACT_ID_GROUP (ID_);\r
+--
+-- Copyright Â© 2012 - 2018 camunda services GmbH and various authors (info@camunda.com)
+--
+-- 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.
+--
+
+create table ACT_ID_GROUP (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    TYPE_ varchar(255),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_ID_MEMBERSHIP (
+    USER_ID_ varchar(64),
+    GROUP_ID_ varchar(64),
+    primary key (USER_ID_, GROUP_ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_ID_USER (
+    ID_ varchar(64),
+    REV_ integer,
+    FIRST_ varchar(255),
+    LAST_ varchar(255),
+    EMAIL_ varchar(255),
+    PWD_ varchar(255),
+    SALT_ varchar(255),
+    LOCK_EXP_TIME_ timestamp NULL,
+    ATTEMPTS_ integer,
+    PICTURE_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_ID_INFO (
+    ID_ varchar(64),
+    REV_ integer,
+    USER_ID_ varchar(64),
+    TYPE_ varchar(64),
+    KEY_ varchar(255),
+    VALUE_ varchar(255),
+    PASSWORD_ LONGBLOB,
+    PARENT_ID_ varchar(255),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_ID_TENANT (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_ID_TENANT_MEMBER (
+    ID_ varchar(64) not null,
+    TENANT_ID_ varchar(64) not null,
+    USER_ID_ varchar(64),
+    GROUP_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+alter table ACT_ID_MEMBERSHIP
+    add constraint ACT_FK_MEMB_GROUP
+    foreign key (GROUP_ID_)
+    references ACT_ID_GROUP (ID_);
+
+alter table ACT_ID_MEMBERSHIP
+    add constraint ACT_FK_MEMB_USER
+    foreign key (USER_ID_)
+    references ACT_ID_USER (ID_);
+
+alter table ACT_ID_TENANT_MEMBER
+    add constraint ACT_UNIQ_TENANT_MEMB_USER
+    unique (TENANT_ID_, USER_ID_);
+
+alter table ACT_ID_TENANT_MEMBER
+    add constraint ACT_UNIQ_TENANT_MEMB_GROUP
+    unique (TENANT_ID_, GROUP_ID_);
+
+alter table ACT_ID_TENANT_MEMBER
+    add constraint ACT_FK_TENANT_MEMB
+    foreign key (TENANT_ID_)
+    references ACT_ID_TENANT (ID_);
+
+alter table ACT_ID_TENANT_MEMBER
+    add constraint ACT_FK_TENANT_MEMB_USER
+    foreign key (USER_ID_)
+    references ACT_ID_USER (ID_);
+
+alter table ACT_ID_TENANT_MEMBER
+    add constraint ACT_FK_TENANT_MEMB_GROUP
+    foreign key (GROUP_ID_)
+    references ACT_ID_GROUP (ID_);
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/NOTES.txt b/otf-helm/otf/charts/databases/mysqldb/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..d33753a
--- /dev/null
@@ -0,0 +1,43 @@
+MySQL can be accessed via port 3306 on the following DNS name from within your cluster:
+{{ template "mysql.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local
+
+{{- if .Values.existingSecret }}
+If you have not already created the mysql password secret:
+
+   kubectl create secret generic {{ .Values.existingSecret }} --namespace {{ .Release.Namespace }} --from-file=./mysql-root-password --from-file=./mysql-password
+{{ else }}
+
+To get your root password run:
+
+    MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mysql.fullname" . }} -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo)
+{{- end }}
+
+To connect to your database:
+
+1. Run an Ubuntu pod that you can use as a client:
+
+    kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il
+
+2. Install the mysql client:
+
+    $ apt-get update && apt-get install mysql-client -y
+
+3. Connect using the mysql cli, then provide your password:
+    $ mysql -h {{ template "mysql.fullname" . }} -p
+
+To connect to your database directly from outside the K8s cluster:
+    {{- if contains "NodePort" .Values.service.type }}
+    MYSQL_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath='{.items[0].status.addresses[0].address}')
+    MYSQL_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "mysql.fullname" . }} -o jsonpath='{.spec.ports[0].nodePort}')
+
+    {{- else if contains "ClusterIP" .Values.service.type }}
+    MYSQL_HOST=127.0.0.1
+    MYSQL_PORT={{ .Values.service.port }}
+
+    # Execute the following command to route the connection:
+    kubectl port-forward svc/{{ template "mysql.fullname" . }} {{ .Values.service.port }}
+
+    {{- end }}
+
+    mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD}
+    
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/_helpers.tpl b/otf-helm/otf/charts/databases/mysqldb/templates/_helpers.tpl
new file mode 100644 (file)
index 0000000..f108425
--- /dev/null
@@ -0,0 +1,43 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "mysql.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "mysql.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- printf .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Generate chart secret name
+*/}}
+{{- define "mysql.secretName" -}}
+{{ default (include "mysql.fullname" .) .Values.existingSecret }}
+{{- end -}}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "mysql.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create -}}
+{{ default (include "mysql.fullname" .) .Values.serviceAccount.name }}
+{{- else -}}
+{{ default "default" .Values.serviceAccount.name }}
+{{- end -}}
+{{- end -}}
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/configurationFiles-configmap.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/configurationFiles-configmap.yaml
new file mode 100644 (file)
index 0000000..ebed8cc
--- /dev/null
@@ -0,0 +1,12 @@
+{{- if .Values.configurationFiles }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "mysql.fullname" . }}-configuration
+  namespace: {{ .Release.Namespace }}
+data:
+{{- range $key, $val := .Values.configurationFiles }}
+  {{ $key }}: |-
+{{ $val | indent 4}}
+{{- end }}
+{{- end -}}
\ No newline at end of file
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/deployment.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..855cd06
--- /dev/null
@@ -0,0 +1,258 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ template "mysql.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app: {{ template "mysql.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+{{- with .Values.deploymentAnnotations }}
+  annotations:
+{{ toYaml . | indent 4 }}
+{{- end }}
+
+spec:
+  strategy:
+{{ toYaml .Values.strategy | indent 4 }}
+  selector:
+    matchLabels:
+      app: {{ template "mysql.fullname" . }}
+      release: {{ .Release.Name }}
+  template:
+    metadata:
+      labels:
+        app: {{ template "mysql.fullname" . }}
+        release: {{ .Release.Name }}
+{{- with .Values.podLabels }}
+{{ toYaml . | indent 8 }}
+{{- end }}
+{{- with .Values.podAnnotations }}
+      annotations:
+{{ toYaml . | indent 8 }}
+{{- end }}
+    spec:
+      {{- if .Values.schedulerName }}
+      schedulerName: "{{ .Values.schedulerName }}"
+      {{- end }}
+      {{- if .Values.imagePullSecrets }}
+      imagePullSecrets:
+{{ toYaml .Values.imagePullSecrets | indent 8 }}
+      {{- end }}
+      {{- if .Values.priorityClassName }}
+      priorityClassName: "{{ .Values.priorityClassName }}"
+      {{- end }}
+      {{- if .Values.securityContext.enabled }}
+      securityContext:
+        fsGroup: {{ .Values.securityContext.fsGroup }}
+        runAsUser: {{ .Values.securityContext.runAsUser }}
+      {{- end }}
+      serviceAccountName: {{ template "mysql.serviceAccountName" . }}
+      initContainers:
+      - name: "remove-lost-found"
+        image: "{{ .Values.busybox.image}}:{{ .Values.busybox.tag }}"
+        imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
+        resources:
+{{ toYaml .Values.initContainer.resources | indent 10 }}
+        command:  ["rm", "-fr", "/var/lib/mysql/lost+found"]
+        volumeMounts:
+        - name: data
+          mountPath: /var/lib/mysql
+          {{- if .Values.persistence.subPath }}
+          subPath: {{ .Values.persistence.subPath }}
+          {{- end }}
+      {{- if .Values.extraInitContainers }}
+{{ tpl .Values.extraInitContainers . | indent 6 }}
+      {{- end }}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+      {{- end }}
+      {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+      {{- end }}
+      {{- if .Values.tolerations }}
+      tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
+      {{- end }}
+      containers:
+      - name: {{ template "mysql.fullname" . }}
+        image: "{{ .Values.image }}:{{ .Values.imageTag }}"
+        imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
+
+        {{- with .Values.args }}
+        args:
+        {{- range . }}
+          - {{ . | quote }}
+        {{- end }}
+        {{- end }}
+        resources:
+{{ toYaml .Values.resources | indent 10 }}
+        env:
+        {{- if .Values.mysqlAllowEmptyPassword }}
+        - name: MYSQL_ALLOW_EMPTY_PASSWORD
+          value: "true"
+        {{- end }}
+        {{- if not (and .Values.allowEmptyRootPassword (not .Values.mysqlRootPassword)) }}
+        - name: MYSQL_ROOT_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              # name: {{ template "mysql.secretName" . }}
+              name: mysql
+              key: mysql-root-password
+              {{- if .Values.mysqlAllowEmptyPassword }}
+              optional: true
+              {{- end }}
+        {{- end }}
+        {{- if not (and .Values.allowEmptyRootPassword (not .Values.mysqlPassword)) }}
+        - name: MYSQL_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              # name: {{ template "mysql.secretName" . }}
+              name: mysql
+              key: mysql-password
+              {{- if or .Values.mysqlAllowEmptyPassword (empty .Values.mysqlUser) }}
+              optional: true
+              {{- end }}
+        {{- end }}
+        - name: MYSQL_USER
+          value: {{ default "" .Values.mysqlUser | quote }}
+        - name: MYSQL_DATABASE
+          value: {{ default "" .Values.mysqlDatabase | quote }}
+        {{- if .Values.timezone }}
+        - name: TZ
+          value: {{ .Values.timezone }}
+        {{- end }}
+        {{- if .Values.extraEnvVars }}
+{{ tpl .Values.extraEnvVars . | indent 8 }}
+        {{- end }}
+        ports:
+        - name: mysql
+          containerPort: 3306
+        livenessProbe:
+          exec:
+            command:
+            {{- if .Values.mysqlAllowEmptyPassword }}
+            - mysqladmin
+            - ping
+            {{- else }}
+            - sh
+            - -c
+            - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
+            {{- end }}
+          initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
+          periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
+          timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
+          successThreshold: {{ .Values.livenessProbe.successThreshold }}
+          failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
+        readinessProbe:
+          exec:
+            command:
+            {{- if .Values.mysqlAllowEmptyPassword }}
+            - mysqladmin
+            - ping
+            {{- else }}
+            - sh
+            - -c
+            - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
+            {{- end }}
+          initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
+          timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
+          successThreshold: {{ .Values.readinessProbe.successThreshold }}
+          failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
+        volumeMounts:
+        - name: data
+          mountPath: /var/lib/mysql
+          {{- if .Values.persistence.subPath }}
+          subPath: {{ .Values.persistence.subPath }}
+          {{- end }}
+        {{- if .Values.configurationFiles }}
+        {{- range $key, $val := .Values.configurationFiles }}
+        - name: configurations
+          mountPath: {{ $.Values.configurationFilesPath }}{{ $key }}
+          subPath: {{ $key }}
+        {{- end -}}
+        {{- end }}
+        {{- if .Values.initializationFiles }}
+        - name: migrations
+          mountPath: /docker-entrypoint-initdb.d
+        {{- end }}
+        {{- if .Values.ssl.enabled }}
+        - name: certificates
+          mountPath: /ssl
+        {{- end }}
+        {{- if .Values.extraVolumeMounts }}
+{{ tpl .Values.extraVolumeMounts . | indent 8 }}
+        {{- end }}
+      {{- if .Values.metrics.enabled }}
+      - name: metrics
+        image: "{{ .Values.metrics.image }}:{{ .Values.metrics.imageTag }}"
+        imagePullPolicy: {{ .Values.metrics.imagePullPolicy | quote }}
+        {{- if .Values.mysqlAllowEmptyPassword }}
+        command:
+        - 'sh'
+        - '-c'
+        - 'DATA_SOURCE_NAME="root@(localhost:3306)/" /bin/mysqld_exporter'
+        {{- else }}
+        env:
+        - name: MYSQL_ROOT_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              # name: {{ template "mysql.secretName" . }}
+              name: mysql
+              key: mysql-root-password
+        command:
+        - 'sh'
+        - '-c'
+        - 'DATA_SOURCE_NAME="root:$MYSQL_ROOT_PASSWORD@(localhost:3306)/" /bin/mysqld_exporter'
+        {{- end }}
+        {{- range $f := .Values.metrics.flags }}
+        - {{ $f | quote }}
+        {{- end }}
+        ports:
+        - name: metrics
+          containerPort: 9104
+        livenessProbe:
+          httpGet:
+            path: /
+            port: metrics
+          initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }}
+          timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }}
+        readinessProbe:
+          httpGet:
+            path: /
+            port: metrics
+          initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }}
+          timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }}
+        resources:
+{{ toYaml .Values.metrics.resources | indent 10 }}
+      {{- end }}
+      volumes:
+      {{- if .Values.configurationFiles }}
+      - name: configurations
+        configMap:
+          name: {{ template "mysql.fullname" . }}-configuration
+      {{- end }}
+      {{- if .Values.initializationFiles }}
+      - name: migrations
+        configMap:
+          name: {{ template "mysql.fullname" . }}-initialization
+      {{- end }}
+      {{- if .Values.ssl.enabled }}
+      - name: certificates
+        secret:
+          secretName: {{ .Values.ssl.secret }}
+      {{- end }}
+      - name: data
+      {{- if .Values.persistence.enabled }}
+        persistentVolumeClaim:
+          claimName: {{ .Values.persistence.existingClaim | default (include "mysql.fullname" .) }}
+      {{- else }}
+        emptyDir: {}
+      {{- end -}}
+      {{- if .Values.extraVolumes }}
+{{ tpl .Values.extraVolumes . | indent 6 }}
+      {{- end }}
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/initializationFiles-configmap.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/initializationFiles-configmap.yaml
new file mode 100644 (file)
index 0000000..38c3795
--- /dev/null
@@ -0,0 +1,12 @@
+{{- if .Values.initializationFiles }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "mysql.fullname" . }}-initialization
+  namespace: {{ .Release.Namespace }}
+data:
+{{- range $key, $val := .Values.initializationFiles }}
+  {{ $key }}: |-
+{{ $val | indent 4}}
+{{- end }}
+{{- end -}}
\ No newline at end of file
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/pvc.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/pvc.yaml
new file mode 100644 (file)
index 0000000..39e9bf8
--- /dev/null
@@ -0,0 +1,29 @@
+{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
+kind: PersistentVolumeClaim
+apiVersion: v1
+metadata:
+  name: {{ template "mysql.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+{{- with .Values.persistence.annotations  }}
+  annotations:
+{{ toYaml . | indent 4 }}
+{{- end }}
+  labels:
+    app: {{ template "mysql.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+spec:
+  accessModes:
+    - {{ .Values.persistence.accessMode | quote }}
+  resources:
+    requests:
+      storage: {{ .Values.persistence.size | quote }}
+{{- if .Values.persistence.storageClass }}
+{{- if (eq "-" .Values.persistence.storageClass) }}
+  storageClassName: ""
+{{- else }}
+  storageClassName: "{{ .Values.persistence.storageClass }}"
+{{- end }}
+{{- end }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/secrets.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/secrets.yaml
new file mode 100644 (file)
index 0000000..1ca42a8
--- /dev/null
@@ -0,0 +1,57 @@
+{{- if not .Values.existingSecret }}
+{{- if or (not .Values.allowEmptyRootPassword) (or .Values.mysqlRootPassword .Values.mysqlPassword) }}
+apiVersion: v1
+kind: Secret
+metadata:
+  #name: {{ template "mysql.fullname" . }}
+  name: mysql
+  namespace: {{ .Release.Namespace }}
+  labels:
+    # app: {{ template "mysql.fullname" . }}
+    app: mysql
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+type: Opaque
+data:
+  mysql-database:  {{ .Values.mysqlDatabase | b64enc | quote }}
+  mysql-username:  {{ .Values.mysqlUser | b64enc | quote }}
+  mysql-ip: {{ .Values.mysqlIP | b64enc | quote }}
+  {{ if .Values.mysqlRootPassword }}
+  mysql-root-password:  {{ .Values.mysqlRootPassword | b64enc | quote }}
+  {{ else }}
+  {{ if not .Values.allowEmptyRootPassword }}
+  mysql-root-password: {{ randAlphaNum 10 | b64enc | quote }}
+  {{ end }}
+  {{ end }}
+  {{ if .Values.mysqlPassword }}
+  mysql-password:  {{ .Values.mysqlPassword | b64enc | quote }}
+  {{ else }}
+  {{ if not .Values.allowEmptyRootPassword }}
+  mysql-password: {{ randAlphaNum 10 | b64enc | quote }}
+  {{ end }}
+  {{ end }}
+{{ end }}
+{{- if .Values.ssl.enabled }}
+{{ if .Values.ssl.certificates }}
+{{- range .Values.ssl.certificates }}
+---
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ .name }}
+  labels:
+    # app: {{ template "mysql.fullname" $ }}
+    app: mysql
+    chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}"
+    release: "{{ $.Release.Name }}"
+    heritage: "{{ $.Release.Service }}"
+type: Opaque
+data:
+  ca.pem: {{ .ca | b64enc }}
+  server-cert.pem: {{ .cert | b64enc }}
+  server-key.pem: {{ .key | b64enc }}
+{{- end }}
+{{- end }}
+{{- end }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/serviceaccount.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/serviceaccount.yaml
new file mode 100644 (file)
index 0000000..36ce6b3
--- /dev/null
@@ -0,0 +1,11 @@
+{{- if .Values.serviceAccount.create }}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ template "mysql.serviceAccountName" . }}
+  labels:
+    app: {{ template "mysql.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/servicemonitor.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..bd830be
--- /dev/null
@@ -0,0 +1,26 @@
+{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "mysql.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app: {{ template "mysql.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- if .Values.metrics.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  endpoints:
+    - port: metrics
+      interval: 30s
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace }}
+  selector:
+    matchLabels:
+      app: {{ include "mysql.fullname" . }}
+      release: {{ .Release.Name }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/svc.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/svc.yaml
new file mode 100644 (file)
index 0000000..b9687f2
--- /dev/null
@@ -0,0 +1,36 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "mysql.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app: {{ template "mysql.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+  annotations:
+{{- if .Values.service.annotations }}
+{{ toYaml .Values.service.annotations | indent 4 }}
+{{- end }}
+{{- if and (.Values.metrics.enabled) (.Values.metrics.annotations) }}
+{{ toYaml .Values.metrics.annotations | indent 4 }}
+{{- end }}
+spec:
+  type: {{ .Values.service.type }}
+  {{- if (and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP))) }}
+  loadBalancerIP: {{ .Values.service.loadBalancerIP }}
+  {{- end }}
+  ports:
+  - name: mysql
+    port: {{ .Values.service.port }}
+    targetPort: mysql
+    {{- if .Values.service.nodePort }}
+    nodePort: {{ .Values.service.nodePort }}
+    {{- end }}
+  {{- if .Values.metrics.enabled }}
+  - name: metrics
+    port: 9104
+    targetPort: metrics
+  {{- end }}
+  selector:
+    app: {{ template "mysql.fullname" . }}
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/tests/test-configmap.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/tests/test-configmap.yaml
new file mode 100644 (file)
index 0000000..ece5a47
--- /dev/null
@@ -0,0 +1,23 @@
+{{- if .Values.testFramework.enabled  }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "mysql.fullname" . }}-test
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app: {{ template "mysql.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    heritage: "{{ .Release.Service }}"
+    release: "{{ .Release.Name }}"
+data:
+  run.sh: |-
+    {{- if .Values.ssl.enabled | and .Values.mysqlRootPassword }}
+    @test "Testing SSL MySQL Connection" {
+      mysql --host={{ template "mysql.fullname" . }} --port={{ .Values.service.port | default "3306" }} --ssl-cert=/ssl/server-cert.pem --ssl-key=ssl/server-key.pem -u root -p{{ .Values.mysqlRootPassword }}
+    }
+    {{- else if .Values.mysqlRootPassword }}
+    @test "Testing MySQL Connection" {
+      mysql --host={{ template "mysql.fullname" . }} --port={{ .Values.service.port | default "3306" }} -u root -p{{ .Values.mysqlRootPassword }}
+    }
+    {{- end }}
+{{- end }}
diff --git a/otf-helm/otf/charts/databases/mysqldb/templates/tests/test.yaml b/otf-helm/otf/charts/databases/mysqldb/templates/tests/test.yaml
new file mode 100644 (file)
index 0000000..1771cd0
--- /dev/null
@@ -0,0 +1,59 @@
+{{- if .Values.testFramework.enabled  }}
+apiVersion: v1
+kind: Pod
+metadata:
+  name: {{ template "mysql.fullname" . }}-test
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app: {{ template "mysql.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    heritage: "{{ .Release.Service }}"
+    release: "{{ .Release.Name }}"
+  annotations:
+    "helm.sh/hook": test-success
+spec:
+  {{- if .Values.testFramework.securityContext }}
+  securityContext: {{ toYaml .Values.testFramework.securityContext | nindent 4 }}
+  {{- end }}
+  {{- if .Values.imagePullSecrets }}
+  imagePullSecrets:
+  {{- range .Values.imagePullSecrets }}
+    - name: {{ . }}
+  {{- end}}
+  {{- end }}
+  {{- with .Values.nodeSelector }}
+  nodeSelector:
+{{ toYaml . | indent 4 }}
+  {{- end }}
+  {{- with .Values.affinity }}
+  affinity:
+{{ toYaml . | indent 4 }}
+  {{- end }}
+  {{- with .Values.tolerations }}
+  tolerations:
+{{ toYaml . | indent 4 }}
+  {{- end }}
+  containers:
+    - name: {{ .Release.Name }}-test
+      image: "{{ .Values.testFramework.image }}:{{ .Values.testFramework.tag }}"
+      imagePullPolicy: "{{ .Values.testFramework.imagePullPolicy}}"
+      command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"]
+      volumeMounts:
+      - mountPath: /tests
+        name: tests
+        readOnly: true
+      {{- if .Values.ssl.enabled }}
+      - name: certificates
+        mountPath: /ssl
+      {{- end }}
+  volumes:
+  - name: tests
+    configMap:
+      name: {{ template "mysql.fullname" . }}-test
+  {{- if .Values.ssl.enabled }}
+  - name: certificates
+    secret:
+      secretName: {{ .Values.ssl.secret }}
+  {{- end }}
+  restartPolicy: Never
+{{- end }}
diff --git a/otf-helm/otf/values/development.yaml b/otf-helm/otf/values/development.yaml
deleted file mode 100644 (file)
index 894d035..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#These are the development environment specific values\r
diff --git a/otf-helm/otf/values/values.yaml b/otf-helm/otf/values/values.yaml
deleted file mode 100644 (file)
index fa8e91e..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# Default values for otf.\r
-# This is a YAML-formatted file.\r
-# Declare variables to be passed into your templates.\r
-\r
-shared: &shared\r
-  httpProxy: "!"\r
-  httpsProxy: "!"\r
-  namespace: dev\r
-  proxyUrl: "!"\r
-  proxyPort: "!"\r
-  nodeApi:\r
-    url: "!"\r
-    host: "!"\r
-\r
-global:\r
-\r
-  mongodb: &mongodb\r
-    <<: *shared\r
-    appName: mongodb\r
-    version: 0.0.1\r
-    replicas : 1\r
-    mongodbRootPassword: "!"\r
-    mongodbUsername: "!"\r
-    mongodbPassword: "!"\r
-    mongodbDatabase: otf\r
-    port: "!"\r
-    targetPort: "!"\r
-    image:\r
-      registry: docker.io\r
-      repository: bitnami/mongodb\r
-      tag: 4.2.6-debian-10-r18\r
-      pullPolicy: IfNotPresent\r
-      debug: false\r
-    resources:\r
-      limits:\r
-        memory: "500Mi"\r
-        cpu: "1"\r
-      requests:\r
-        memory: "256Mi"\r
-        cpu: "1"\r
-\r
-  mysqldb: &mysqldb\r
-    <<: *shared\r
-    appName: mysqldb\r
-    version: 0.0.1\r
-    replicas : 1\r
-    mysqlRootPassword: "!"\r
-    mysqlUser: "!"\r
-    mysqlPassword: "!"\r
-    mysqlDatabase: otf_camunda\r
-    port: 3306\r
-    targetPort: 8306\r
-    image:\r
-      registry: docker.io\r
-      image: mysql\r
-      tag: 5.7.26\r
-      pullPolicy: IfNotPresent\r
-      debug: false\r
-    resources:\r
-      limits:\r
-        memory: "500Mi"\r
-        cpu: "1"\r
-      requests:\r
-        memory: "256Mi"\r
-        cpu: "1"\r
index c9db864..23a167b 100644 (file)
@@ -2,4 +2,8 @@ Open Test Framework
 \r
 Use these heml charts to deploy otf\r
 \r
-helm install otf
\ No newline at end of file
+#Mongo\r
+helm install otf/charts/databases/mongo\r
+\r
+#SQL\r
+helm install otf/charts/databases/mysqldb -f otf/values.yaml\r