Skip to content

Commit 9e6ca24

Browse files
committed
Apply review of @jscheffi - Add deploymentOverride in dagBundleConfigList
1 parent 8782cab commit 9e6ca24

5 files changed

Lines changed: 131 additions & 139 deletions

File tree

chart/templates/dag-processor/dag-processor-deployment.yaml

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,12 @@ Expects context with:
3838
{{- $containerSecurityContextLogGroomerSidecar := include "containerSecurityContext" (list $mergedConfig.logGroomerSidecar .Values) }}
3939
{{- $containerSecurityContextWaitForMigrations := include "containerSecurityContext" (list $mergedConfig.waitForMigrations .Values) }}
4040
{{- $containerLifecycleHooks := or $mergedConfig.containerLifecycleHooks .Values.containerLifecycleHooks }}
41-
{{- /* Prepare args: use per-bundle args if enabled, otherwise use default args */}}
41+
{{- /* Prepare args: append --bundle-name to the base args for per-bundle deployments */}}
4242
{{- $args := $mergedConfig.args }}
43-
{{- if and $deployPerBundle .Values.dagProcessor.deployPerBundle.args }}
44-
{{- $args = list }}
45-
{{- range .Values.dagProcessor.deployPerBundle.args }}
46-
{{- $arg := . | toString | replace "{{ bundleName }}" $bundleName }}
47-
{{- $args = append $args $arg }}
48-
{{- end }}
43+
{{- if $deployPerBundle }}
44+
{{- $lastIdx := sub (len $args) 1 }}
45+
{{- $lastArg := printf "%s --bundle-name %s" (index $args (int $lastIdx)) $bundleName }}
46+
{{- $args = mustInitial $args | append $lastArg }}
4947
{{- end }}
5048
{{- /* Determine deployment name suffix */}}
5149
{{- $nameSuffix := "" }}
@@ -323,7 +321,7 @@ spec:
323321
{{- if eq $enabled nil}}
324322
{{ $enabled = ternary true false (semverCompare ">=3.0.0" .Values.airflowVersion) }}
325323
{{- end }}
326-
{{- $deployPerBundle := .Values.dagProcessor.deployPerBundle.enabled | default false }}
324+
{{- $deployPerBundle := .Values.dagProcessor.deployPerBundle | default false }}
327325
{{- if $enabled }}
328326
{{- if not $deployPerBundle }}
329327
{{- /* Single deployment mode: use base dagProcessor config */}}
@@ -334,7 +332,7 @@ spec:
334332
{{- $firstBundle := true }}
335333
{{- range $bundle := .Values.dagProcessor.dagBundleConfigList }}
336334
{{- $bundleName := $bundle.name }}
337-
{{- $bundleOverrides := index $.Values.dagProcessor.deployPerBundle.bundleOverrides $bundleName | default dict | deepCopy }}
335+
{{- $bundleOverrides := $bundle.deploymentOverride | default dict | deepCopy }}
338336
{{- $baseConfig := $.Values.dagProcessor | deepCopy }}
339337
{{- $mergedConfig := mergeOverwrite $baseConfig $bundleOverrides }}
340338
{{- $_ := set $mergedConfig "dagBundleConfigList" $.Values.dagProcessor.dagBundleConfigList }}

chart/templates/dag-processor/dag-processor-poddisruptionbudget.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Expects context with:
2323
- .Values.dagProcessor: dag processor configuration (may be merged with bundle overrides)
2424
- .bundleName: bundle name (empty string if not per-bundle mode)
2525
- .deployPerBundle: boolean indicating if per-bundle mode is enabled
26+
- .bundleOverrides: raw bundle deploymentOverride dict (for PDB config resolution)
2627
*/}}
2728
{{- define "dag-processor.poddisruptionbudget" }}
2829
{{- $bundleName := .bundleName | default "" }}
@@ -82,7 +83,7 @@ spec:
8283
{{- if eq $enabled nil}}
8384
{{ $enabled = ternary true false (semverCompare ">=3.0.0" .Values.airflowVersion) }}
8485
{{- end }}
85-
{{- $deployPerBundle := .Values.dagProcessor.deployPerBundle.enabled | default false }}
86+
{{- $deployPerBundle := .Values.dagProcessor.deployPerBundle | default false }}
8687
{{- if and $enabled .Values.dagProcessor.podDisruptionBudget.enabled }}
8788
{{- if not $deployPerBundle }}
8889
{{- /* Single PDB mode: use base dagProcessor config */}}
@@ -93,7 +94,7 @@ spec:
9394
{{- $firstPDB := true }}
9495
{{- range $bundle := .Values.dagProcessor.dagBundleConfigList }}
9596
{{- $bundleName := $bundle.name }}
96-
{{- $bundleOverrides := index $.Values.dagProcessor.deployPerBundle.bundleOverrides $bundleName | default dict | deepCopy }}
97+
{{- $bundleOverrides := $bundle.deploymentOverride | default dict | deepCopy }}
9798
{{- $baseConfig := $.Values.dagProcessor | deepCopy }}
9899
{{- $mergedConfig := mergeOverwrite $baseConfig $bundleOverrides }}
99100
{{- $_ := set $mergedConfig "dagBundleConfigList" $.Values.dagProcessor.dagBundleConfigList }}

chart/values.schema.json

Lines changed: 8 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4475,7 +4475,6 @@
44754475
],
44764476
"items": {
44774477
"type": "object",
4478-
"additionalProperties": false,
44794478
"required": [
44804479
"name",
44814480
"classpath"
@@ -4501,51 +4500,19 @@
45014500
"null"
45024501
]
45034502
}
4503+
},
4504+
"deploymentOverride": {
4505+
"description": "Per-bundle deployment overrides. Only used when deployPerBundle is true. Overrides base dagProcessor settings for this bundle.",
4506+
"type": "object",
4507+
"additionalProperties": {}
45044508
}
45054509
}
45064510
}
45074511
},
45084512
"deployPerBundle": {
4509-
"description": "Per-bundle deployment option. When enabled, creates a separate deployment for each bundle in `dagBundleConfigList`.",
4510-
"type": "object",
4511-
"additionalProperties": false,
4512-
"properties": {
4513-
"enabled": {
4514-
"description": "Enable per-bundle deployments. When true, creates a separate deployment for each bundle.",
4515-
"type": "boolean",
4516-
"default": false
4517-
},
4518-
"args": {
4519-
"description": "Command args template for per-bundle deployments. `{{ bundleName }}` will be replaced with the actual bundle name.",
4520-
"type": "array",
4521-
"default": [
4522-
"bash",
4523-
"-c",
4524-
"exec airflow dag-processor --bundle-name {{ bundleName }}"
4525-
],
4526-
"items": {
4527-
"type": "string"
4528-
}
4529-
},
4530-
"bundleOverrides": {
4531-
"description": "Per-bundle specific overrides. Each key should match a bundle name from `dagBundleConfigList`.",
4532-
"type": "object",
4533-
"additionalProperties": {
4534-
"type": "object",
4535-
"additionalProperties": {}
4536-
},
4537-
"default": {}
4538-
}
4539-
},
4540-
"default": {
4541-
"enabled": false,
4542-
"args": [
4543-
"bash",
4544-
"-c",
4545-
"exec airflow dag-processor --bundle-name {{ bundleName }}"
4546-
],
4547-
"bundleOverrides": {}
4548-
}
4513+
"description": "When true, creates a separate deployment for each bundle in dagBundleConfigList.",
4514+
"type": "boolean",
4515+
"default": false
45494516
},
45504517
"livenessProbe": {
45514518
"description": "Liveness probe configuration for dag processor.",

chart/values.yaml

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2298,6 +2298,25 @@ dagProcessor:
22982298
# subdir: "dags"
22992299
# tracking_ref: "main"
23002300
# refresh_interval: 60
2301+
# # Per-bundle deployment overrides (only used when deployPerBundle is true)
2302+
# deploymentOverride:
2303+
# replicas: 3
2304+
# resources:
2305+
# requests:
2306+
# memory: "2Gi"
2307+
# cpu: "1000m"
2308+
# limits:
2309+
# memory: "4Gi"
2310+
# cpu: "2000m"
2311+
# nodeSelector:
2312+
# workload-type: production
2313+
# env:
2314+
# - name: SOME_ENV_VAR
2315+
# value: "20"
2316+
# podDisruptionBudget:
2317+
# enabled: true
2318+
# config:
2319+
# minAvailable: 1
23012320
# - name: bundle2
23022321
# classpath: "airflow.providers.git.bundles.git.GitDagBundle"
23032322
# kwargs:
@@ -2310,37 +2329,9 @@ dagProcessor:
23102329
# kwargs: {}
23112330

23122331
# Per-bundle deployment option
2313-
# When enabled, creates a separate deployment for each bundle in `dagBundleConfigList`
2314-
deployPerBundle:
2315-
enabled: false
2316-
# Command args template for per-bundle deployments
2317-
# `{{ bundleName }}` will be replaced with the actual bundle name
2318-
args: ["bash", "-c", "exec airflow dag-processor --bundle-name {{ bundleName }}"]
2319-
2320-
# Per-bundle specific overrides (optional)
2321-
# Each key should match a bundle name from `dagBundleConfigList`
2322-
# These settings override the base dagProcessor configuration for each bundle
2323-
bundleOverrides: {}
2324-
# Example: Override settings for a specific bundle
2325-
# bundleOverrides:
2326-
# bundle1:
2327-
# replicas: 3
2328-
# resources:
2329-
# requests:
2330-
# memory: "2Gi"
2331-
# cpu: "1000m"
2332-
# limits:
2333-
# memory: "4Gi"
2334-
# cpu: "2000m"
2335-
# nodeSelector:
2336-
# workload-type: production
2337-
# env:
2338-
# - name: SOME_ENV_VAR
2339-
# value: "20"
2340-
# podDisruptionBudget:
2341-
# enabled: true
2342-
# config:
2343-
# minAvailable: 1
2332+
# When enabled, creates a separate deployment for each bundle in `dagBundleConfigList`.
2333+
# Bundle-specific deployment overrides can be set via `deploymentOverride` in each bundle entry.
2334+
deployPerBundle: false
23442335

23452336
# Number of airflow dag processors in the deployment
23462337
replicas: 1

0 commit comments

Comments
 (0)