Enhancements for common templates
[oom.git] / kubernetes / common / common / templates / _aafconfig.tpl
diff --git a/kubernetes/common/common/templates/_aafconfig.tpl b/kubernetes/common/common/templates/_aafconfig.tpl
new file mode 100644 (file)
index 0000000..db7cbe8
--- /dev/null
@@ -0,0 +1,226 @@
+{{/*
+# Copyright © 2020 Amdocs, Bell Canada, highstreet technologies GmbH
+#
+# 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.
+*/}}
+
+{{/*
+  common templates to enable aaf configs for applictaions
+
+  Parameter for aafConfig to be defined in values.yaml
+  aafConfig:   --> if a different key is used, call templates with argument (dict "aafRoot" "<yourkey>" "dot" .)
+    # additional scripts can be defined to handle certs
+    addconfig: true|false
+    fqdn: "sdnc"
+    image: onap/aaf/aaf_agent:2.1.15
+    app_ns: "org.osaaf.aaf"
+    fqi: "sdnc@sdnc.onap.org"
+    fqi_namespace: org.onap.sdnc
+    public_fqdn: "aaf.osaaf.org"
+    aafDeployFqi: "deployer@people.osaaf.org"
+    aafDeployPass: demo123456!
+    cadi_latitude: "38.0"
+    cadi_longitude: "-72.0"
+    persistence:
+      enabled: true
+      config.volumeReclaimPolicy: Delete
+      config.accessMode: ReadWriteMany
+      config.size: 40M
+      config.storageClass: "manual"
+      config.mountPath: "/dockerdata-nfs"
+      config.mountSubPath: "sdnc/aaf"
+  # secrets configuration, Note: create a secrets template
+  secrets:
+    - uid: aaf-deploy-creds
+      type: basicAuth
+      externalSecret: '{{ ternary (tpl (default "" .Values.aafConfig.aafDeployCredsExternalSecret) .) "aafIsDiabled" .Values.global.aafEnabled }}'
+      login: '{{ .Values.aafConfig.aafDeployFqi }}'
+      password: '{{ .Values.aafConfig.aafDeployPass }}'
+      passwordPolicy: required
+
+  In deployments/jobs/stateful include:
+  initContainers:
+    {{ include "common.aaf-config" . | nindent XX}}
+
+  containers:
+    volumeMounts:
+    {{- if .Values.global.aafEnabled }}
+     - mountPath: "/opt/app/osaaf"
+       name: {{ include "common.fullname" . }}-aaf-config-vol
+       {{- end }}
+  volumes:
+  {{- include "common.aaf-config-volumes" . | nindent XX}}
+
+  If persistence.enabled = true
+  Create pvc:
+  {{ include "common.aaf-config-pvc" . }}
+  Create pv
+  {{ include "common.aaf-config-pv" . }}
+
+*/}}
+{{- define "common.aaf-config" -}}
+{{- $dot := default . .dot -}}
+{{- $aafRoot := default "aafConfig" .aafRoot -}}
+{{ if .Values.global.aafEnabled }}
+- name: {{ include "common.name" . }}-aaf-readiness
+  image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+  imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+  command:
+  - /root/ready.py
+  args:
+  - --container-name
+  - aaf-locate
+  - --container-name
+  - aaf-cm
+  - --container-name
+  - aaf-service
+
+  env:
+  - name: NAMESPACE
+    valueFrom:
+      fieldRef:
+        apiVersion: v1
+        fieldPath: metadata.namespace
+- name: {{ include "common.name" . }}-aaf-config
+  image: {{ .Values.global.repository }}/{{index .Values $aafRoot "image" }}
+  imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+  volumeMounts:
+  - mountPath: "/opt/app/osaaf"
+    name: {{ include "common.fullname" . }}-aaf-config-vol
+  {{- if (index .Values $aafRoot "addconfig") }}
+  - name: aaf-add-config
+    mountPath: /opt/app/aaf_config/bin/aaf-add-config.sh
+    subPath: aaf-add-config.sh
+  {{- end }}
+  command:
+    - sh
+    - -c
+    - |
+      #!/usr/bin/env bash
+      /opt/app/aaf_config/bin/agent.sh
+      {{- if (index .Values $aafRoot "addconfig") }}
+      /opt/app/aaf_config/bin/aaf-add-config.sh
+      {{- end }}
+  env:
+    - name: APP_FQI
+      value: "{{ index .Values $aafRoot "fqi" }}"
+    - name: aaf_locate_url
+      value: "https://aaf-locate.{{ .Release.Namespace}}:8095"
+    - name: aaf_locator_container
+      value: "oom"
+    - name: aaf_locator_container_ns
+      value: "{{ .Release.Namespace }}"
+    - name: aaf_locator_fqdn
+      value: "{{ index .Values $aafRoot "fqdn" }}"
+    - name: aaf_locator_app_ns
+      value: "{{ index .Values $aafRoot "app_ns" }}"
+    - name: DEPLOY_FQI
+    {{- include "common.secret.envFromSecret" (dict "global" . "uid" "aaf-deploy-creds" "key" "login") | indent 6 }}
+    - name: DEPLOY_PASSWORD
+    {{- include "common.secret.envFromSecret" (dict "global" . "uid" "aaf-deploy-creds" "key" "password") | indent 6 }}
+  #Note: want to put this on Nodes, evenutally
+    - name: cadi_longitude
+      value: "{{ default "52.3" (index .Values $aafRoot "cadi_longitude") }}"
+    - name: cadi_latitude
+      value: "{{ default "13.2" (index .Values $aafRoot "cadi_latitude") }}"
+  #Hello specific.  Clients don't don't need this, unless Registering with AAF Locator
+    - name: aaf_locator_public_fqdn
+      value: "{{ (index .Values $aafRoot "public_fqdn") | default "" }}"
+{{- end -}}
+{{- end -}}
+
+
+{{- define "common.aaf-config-volume-mountpath" -}}
+{{ if .Values.global.aafEnabled }}
+- mountPath: "/opt/app/osaaf"
+  name: {{ include "common.fullname" . }}-aaf-config-vol
+{{- end -}}
+{{- end -}}
+
+{{- define "common.aaf-config-volumes" -}}
+{{ if .Values.global.aafEnabled }}
+{{- $dot := default . .dot -}}
+{{- $aafRoot := default "aafConfig" .aafRoot -}}
+- name: {{ include "common.fullname" . }}-aaf-config-vol
+  persistentVolumeClaim:
+    claimName: {{ include "common.fullname" . }}-aaf-config-pvc
+{{- if (index .Values $aafRoot "addconfig") }}
+- name: aaf-add-config
+  configMap:
+    name: {{ include "common.fullname" . }}-aaf-add-config
+    defaultMode: 0700
+{{- end }}
+{{- end -}}
+{{- end }}
+
+{{- define "common.aaf-config-pv" -}}
+{{- $dot := default . .dot -}}
+{{- $aafRoot := default "aafConfig" .aafRoot -}}
+metadata:
+  name: {{ include "common.fullname" . }}-aaf-config-pv
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}-aaf-config-pv
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    name: {{ include "common.fullname" . }}
+spec:
+  capacity:
+    storage: {{ index .Values $aafRoot  "persistence" "config" "size"}}
+  accessModes:
+    - {{ index .Values $aafRoot "persistence" "config" "accessMode" }}
+  persistentVolumeReclaimPolicy: {{ index .Values $aafRoot "persistence" "config" "volumeReclaimPolicy" }}
+  hostPath:
+     path: {{ index .Values $aafRoot "persistence" "config" "mountPath" }}/{{ .Release.Name }}/{{ index .Values $aafRoot "persistence" "config" "mountSubPath" }}
+{{- if (index .Values $aafRoot "persistence" "config" "storageClass") }}
+{{- if (eq "-" (index .Values $aafRoot "persistence" "config" "storageClass")) }}
+  storageClassName: ""
+{{- else }}
+  storageClassName: "{{ index .Values $aafRoot "persistence" "config" "storageClass" }}"
+{{- end }}
+{{- end }}
+{{- end -}}
+
+{{- define "common.aaf-config-pvc" -}}
+{{- $dot := default . .dot -}}
+{{- $aafRoot := default "aafConfig" .aafRoot -}}
+metadata:
+  name: {{ include "common.fullname" . }}-aaf-config-pvc
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+{{- if (index .Values $aafRoot "persistence" "annotations") }}
+  annotations:
+{{ toYaml (index .Values $aafRoot "persistence" "annotations" ) | indent 4 }}
+{{- end }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ include "common.name" . }}-aaf-config-pv
+  accessModes:
+    - {{ index .Values $aafRoot "persistence" "config" "accessMode" }}
+  resources:
+    requests:
+      storage: {{ index .Values $aafRoot "persistence" "config" "size" }}
+{{- if (index .Values $aafRoot "persistence" "config" "storageClass") }}
+{{- if (eq "-" (index .Values $aafRoot "persistence" "config" "storageClass")) }}
+  storageClassName: ""
+{{- else }}
+  storageClassName: "{{ index .Values $aafRoot "persistence" "config" "storageClass" }}"
+{{- end }}
+{{- end }}
+{{- end -}}