Merge "[AAI] Make aai log level configurable"
[oom.git] / kubernetes / common / readinessCheck / templates / _readinessCheck.tpl
index 5c70e78..51791fe 100644 (file)
 {{/*
   Generate readiness part for a pod
   Will look by default to .Values.wait_for
+  There are two formats available.
 
-  Value of wait_for is an array of all pods /jobs to wait:
-
-  Example:
+  The simple one (where wait_for is just list of containers):
 
   wait_for:
     - aaf-locate
     - aaf-cm
     - aaf-service
 
-  The function can takes two arguments (inside a dictionary):
+  The powerful one (where wait_for is a map):
+
+  wait_for:
+    name: myname
+    containers:
+      - aaf-locate
+      - aaf-cm
+      - aaf-service
+
+  the powerful one allows also to wait for pod names with this
+  (has to start with the given pod name):
+  wait_for:
+    name: myname
+    pods:
+      - test-pod
+
+  the powerful one allows also to wait for a service to be
+  available, which means all pods are deployed, which are
+  selected by the service definition:
+  wait_for:
+    name: myservice
+    services:
+      - mariadb-galera-service
+
+  the powerful one allows also to wait for pods with the
+  given "app" label:
+  wait_for:
+    name: myname
+    apps:
+      - mariadb-galera
+
+  the powerful one allows also to wait for jobs with this:
+  wait_for:
+    name: myname
+    jobs:
+      - '{{ include "common.release" . }}-the-job'
+
+  Be careful, as on the example above, the job name may have a "non fixed" name
+  and thus don't forget to use templates if needed
+
+  The function can takes below arguments (inside a dictionary):
      - .dot : environment (.)
-     - .wait_for : list of containers / jobs to wait for (default to
-                   .Values.wait_for)
+     - .initRoot : the root dictionary of readinessCheck submodule
+                   (default to .Values.readinessCheck)
+     - .wait_for : list of service / containers / pods /apps / jobs to wait for
+                   (default to .Values.wait_for)
 
   Example calls:
     {{ include "common.readinessCheck.waitFor" . }}
 {{-   $dot := default . .dot -}}
 {{-   $initRoot := default $dot.Values.readinessCheck .initRoot -}}
 {{/*  Our version of helm doesn't support deepCopy so we need this nasty trick */}}
-{{-   $subchartDot := include "common.subChartDot" (dict "dot" $dot "initRoot" $initRoot) }}
-{{-   $wait_for := default $dot.Values.wait_for .wait_for -}}
-- name: {{ include "common.name" $dot }}-{{ $wait_for.name }}-readiness
-  image: "{{ $subchartDot.Values.global.readinessRepository }}/{{ $subchartDot.Values.global.readinessImage }}"
+{{-   $subchartDot := fromJson (include "common.subChartDot" (dict "dot" $dot "initRoot" $initRoot)) }}
+{{-   $wait_for := default $initRoot.wait_for .wait_for -}}
+{{-   $containers := index (ternary (dict "containers" $wait_for) $wait_for (kindIs "slice" $wait_for)) "containers" -}}
+{{-   $services := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "services" -}}
+{{-   $pods := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "pods" -}}
+{{-   $apps := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "apps" -}}
+{{-   $namePart := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "name" -}}
+{{-   $jobs := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "jobs" -}}
+- name: {{ include "common.name" $dot }}{{ ternary "" (printf "-%s" $namePart) (empty $namePart) }}-readiness
+  image: {{ include "repositoryGenerator.image.readiness" $subchartDot }}
   imagePullPolicy: {{ $subchartDot.Values.global.pullPolicy | default $subchartDot.Values.pullPolicy }}
+  securityContext:
+    runAsUser: {{ $subchartDot.Values.user }}
+    runAsGroup: {{ $subchartDot.Values.group }}
   command:
-  - /root/ready.py
+  - /app/ready.py
   args:
-  {{- range $container := $wait_for.containers }}
+  {{- range $container := default (list) $containers }}
   - --container-name
   - {{ tpl $container $dot }}
   {{- end }}
+  {{- range $pod := default (list) $pods }}
+  - --pod-name
+  - {{ tpl $pod $dot }}
+  {{- end }}
+  {{- range $service := default (list) $services }}
+  - --service-name
+  - {{ tpl $service $dot }}
+  {{- end }}
+  {{- range $app := default (list) $apps }}
+  - --app-name
+  - {{ tpl $app $dot }}
+  {{- end }}
+  {{- range $job := $jobs }}
+  - --job-name
+  - {{ tpl $job $dot }}
+  {{- end }}
   env:
   - name: NAMESPACE
+  {{- if $subchartDot.Values.namespace }}
+    value: {{ $subchartDot.Values.namespace }}
+  {{- else }}
     valueFrom:
       fieldRef:
         apiVersion: v1
         fieldPath: metadata.namespace
+  {{- end }}
   resources:
     limits:
       cpu: {{ $subchartDot.Values.limits.cpu }}