|
17 | 17 | under the License. |
18 | 18 | */}} |
19 | 19 |
|
20 | | -################################ |
21 | | -## Airflow Dag Processor PodDisruptionBudget |
22 | | -################################# |
23 | | -{{- $enabled := .Values.dagProcessor.enabled }} |
24 | | -{{- if eq $enabled nil}} |
25 | | - {{ $enabled = ternary true false (semverCompare ">=3.0.0" .Values.airflowVersion) }} |
| 20 | +{{/* |
| 21 | +Helper template for dag processor PodDisruptionBudget |
| 22 | +Expects context with: |
| 23 | + - .Values.dagProcessor: dag processor configuration (may be merged with bundle overrides) |
| 24 | + - .bundleName: bundle name (empty string if not per-bundle mode) |
| 25 | + - .deployPerBundle: boolean indicating if per-bundle mode is enabled |
| 26 | +*/}} |
| 27 | +{{- define "dag-processor.poddisruptionbudget" }} |
| 28 | +{{- $bundleName := .bundleName | default "" }} |
| 29 | +{{- $deployPerBundle := .deployPerBundle | default false }} |
| 30 | +{{- $mergedConfig := .Values.dagProcessor }} |
| 31 | +{{- $bundleOverrides := .bundleOverrides | default dict }} |
| 32 | +{{- if $mergedConfig.podDisruptionBudget.enabled }} |
| 33 | +{{- /* Determine PDB name suffix */}} |
| 34 | +{{- $nameSuffix := "" }} |
| 35 | +{{- if $deployPerBundle }} |
| 36 | + {{- $nameSuffix = printf "-%s-pdb" $bundleName }} |
| 37 | +{{- else }} |
| 38 | + {{- $nameSuffix = "-pdb" }} |
26 | 39 | {{- end }} |
27 | | -{{- if and $enabled .Values.dagProcessor.podDisruptionBudget.enabled }} |
28 | 40 | apiVersion: policy/v1 |
29 | 41 | kind: PodDisruptionBudget |
30 | 42 | metadata: |
31 | | - name: {{ include "airflow.fullname" . }}-dag-processor-pdb |
| 43 | + name: {{ include "airflow.fullname" . }}-dag-processor{{ $nameSuffix }} |
32 | 44 | labels: |
33 | 45 | tier: airflow |
34 | 46 | component: dag-processor |
35 | 47 | release: {{ .Release.Name }} |
36 | 48 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" |
37 | 49 | heritage: {{ .Release.Service }} |
38 | | - {{- if or (.Values.labels) (.Values.dagProcessor.labels) }} |
39 | | - {{- mustMerge .Values.dagProcessor.labels .Values.labels | toYaml | nindent 4 }} |
| 50 | + {{- if $deployPerBundle }} |
| 51 | + bundle: {{ $bundleName }} |
| 52 | + {{- end }} |
| 53 | + {{- if or (.Values.labels) ($mergedConfig.labels) }} |
| 54 | + {{- mustMerge $mergedConfig.labels .Values.labels | toYaml | nindent 4 }} |
40 | 55 | {{- end }} |
41 | 56 | spec: |
42 | 57 | selector: |
43 | 58 | matchLabels: |
44 | 59 | tier: airflow |
45 | 60 | component: dag-processor |
46 | 61 | release: {{ .Release.Name }} |
47 | | - {{- toYaml .Values.dagProcessor.podDisruptionBudget.config | nindent 2 }} |
| 62 | + {{- if $deployPerBundle }} |
| 63 | + bundle: {{ $bundleName }} |
| 64 | + {{- end }} |
| 65 | + {{- $pdbConfig := $mergedConfig.podDisruptionBudget.config }} |
| 66 | + {{- if and $bundleOverrides.podDisruptionBudget $bundleOverrides.podDisruptionBudget.config }} |
| 67 | + {{- $pdbConfig = $bundleOverrides.podDisruptionBudget.config }} |
| 68 | + {{- end }} |
| 69 | + {{- if and (hasKey $pdbConfig "minAvailable") (hasKey $pdbConfig "maxUnavailable") }} |
| 70 | + {{- if ne (index $pdbConfig "minAvailable" | toString) "<nil>" }} |
| 71 | + {{- $pdbConfig = omit $pdbConfig "maxUnavailable" }} |
| 72 | + {{- end }} |
| 73 | + {{- end }} |
| 74 | + {{- toYaml $pdbConfig | nindent 2 }} |
| 75 | +{{- end }} |
| 76 | +{{- end }} |
| 77 | + |
| 78 | +################################ |
| 79 | +## Airflow Dag Processor PodDisruptionBudget |
| 80 | +################################# |
| 81 | +{{- $enabled := .Values.dagProcessor.enabled }} |
| 82 | +{{- if eq $enabled nil}} |
| 83 | + {{ $enabled = ternary true false (semverCompare ">=3.0.0" .Values.airflowVersion) }} |
| 84 | +{{- end }} |
| 85 | +{{- $deployPerBundle := .Values.dagProcessor.deployPerBundle.enabled | default false }} |
| 86 | +{{- if and $enabled .Values.dagProcessor.podDisruptionBudget.enabled }} |
| 87 | + {{- if not $deployPerBundle }} |
| 88 | + {{- /* Single PDB mode: use base dagProcessor config */}} |
| 89 | + {{- $context := dict "Values" (merge (dict "dagProcessor" .Values.dagProcessor) .Values) "Release" .Release "Chart" .Chart "Template" .Template "Files" .Files "bundleName" "" "deployPerBundle" false }} |
| 90 | + {{- include "dag-processor.poddisruptionbudget" $context }} |
| 91 | + {{- else }} |
| 92 | + {{- /* Per-bundle PDB mode: create one PDB per bundle */}} |
| 93 | + {{- $firstPDB := true }} |
| 94 | + {{- range $bundle := .Values.dagProcessor.dagBundleConfigList }} |
| 95 | + {{- $bundleName := $bundle.name }} |
| 96 | + {{- $bundleOverrides := index $.Values.dagProcessor.deployPerBundle.bundleOverrides $bundleName | default dict | deepCopy }} |
| 97 | + {{- $baseConfig := $.Values.dagProcessor | deepCopy }} |
| 98 | + {{- $mergedConfig := mergeOverwrite $baseConfig $bundleOverrides }} |
| 99 | + {{- $_ := set $mergedConfig "dagBundleConfigList" $.Values.dagProcessor.dagBundleConfigList }} |
| 100 | + {{- if $mergedConfig.podDisruptionBudget.enabled }} |
| 101 | + {{- if not $firstPDB }} |
| 102 | +--- |
| 103 | + {{- end }} |
| 104 | + {{- $firstPDB = false }} |
| 105 | + {{- $bundleValues := merge (dict "dagProcessor" $mergedConfig) $.Values }} |
| 106 | + {{- $context := dict "Values" $bundleValues "Release" $.Release "Chart" $.Chart "Template" $.Template "Files" $.Files "bundleName" $bundleName "deployPerBundle" true "bundleOverrides" $bundleOverrides }} |
| 107 | + {{- include "dag-processor.poddisruptionbudget" $context }} |
| 108 | + {{- end }} |
| 109 | + {{- end }} |
| 110 | + {{- end }} |
48 | 111 | {{- end }} |
0 commit comments