This is an automated email from the ASF dual-hosted git repository.
jscheffl pushed a commit to branch chart/v1-2x-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/chart/v1-2x-test by this push:
new 8018e5a3d25 [chart/v1-2x-test] fix(helm-chart): fix go-template if
statements for log groomer retention values (#66012) (#66050)
8018e5a3d25 is described below
commit 8018e5a3d25473d22c66fa3bfcd59d191e2bdc3e
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Apr 28 23:50:37 2026 +0200
[chart/v1-2x-test] fix(helm-chart): fix go-template if statements for log
groomer retention values (#66012) (#66050)
* fix(helm-chart): fix go-template if statements for log groomer retention
values
* refactor(helm-chart): simplify go-template if statements for log groomer
retention values as empty string is already excluded via JSON schema
* test(helm-chart): fix log groomer helm-tests by adding test for
logGroomerSidecar.retentionMinutes
(cherry picked from commit 56b364bd2561583204a7d29739fcb36358c70348)
Co-authored-by: n-badtke-cg <[email protected]>
---
chart/templates/NOTES.txt | 10 +++---
.../dag-processor/dag-processor-deployment.yaml | 4 +--
.../templates/scheduler/scheduler-deployment.yaml | 4 +--
.../templates/triggerer/triggerer-deployment.yaml | 4 +--
chart/templates/workers/worker-deployment.yaml | 4 +--
chart/values.schema.json | 18 ++++++----
helm-tests/tests/chart_utils/log_groomer.py | 42 ++++++++++++++++++++--
7 files changed, 64 insertions(+), 22 deletions(-)
diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt
index 57d94edf22c..7ae67ff09cf 100644
--- a/chart/templates/NOTES.txt
+++ b/chart/templates/NOTES.txt
@@ -861,7 +861,7 @@ DEPRECATION WARNING:
{{- end }}
-{{- if ne (int .Values.workers.logGroomerSidecar.retentionDays) 15 }}
+{{- if ne .Values.workers.logGroomerSidecar.retentionDays nil }}
DEPRECATION WARNING:
`workers.logGroomerSidecar.retentionDays` has been renamed to
`workers.celery.logGroomerSidecar.retentionDays`.
@@ -869,7 +869,7 @@ DEPRECATION WARNING:
{{- end }}
-{{- if ne (int .Values.workers.logGroomerSidecar.retentionMinutes) 0 }}
+{{- if ne .Values.workers.logGroomerSidecar.retentionMinutes nil }}
DEPRECATION WARNING:
`workers.logGroomerSidecar.retentionMinutes` has been renamed to
`workers.celery.logGroomerSidecar.retentionMinutes`.
@@ -877,7 +877,7 @@ DEPRECATION WARNING:
{{- end }}
-{{- if ne (int .Values.workers.logGroomerSidecar.frequencyMinutes) 15 }}
+{{- if ne .Values.workers.logGroomerSidecar.frequencyMinutes nil }}
DEPRECATION WARNING:
`workers.logGroomerSidecar.frequencyMinutes` has been renamed to
`workers.celery.logGroomerSidecar.frequencyMinutes`.
@@ -885,7 +885,7 @@ DEPRECATION WARNING:
{{- end }}
-{{- if ne (int .Values.workers.logGroomerSidecar.maxSizeBytes) 0 }}
+{{- if ne .Values.workers.logGroomerSidecar.maxSizeBytes nil }}
DEPRECATION WARNING:
`workers.logGroomerSidecar.maxSizeBytes` has been renamed to
`workers.celery.logGroomerSidecar.maxSizeBytes`.
@@ -893,7 +893,7 @@ DEPRECATION WARNING:
{{- end }}
-{{- if ne (int .Values.workers.logGroomerSidecar.maxSizePercent) 0 }}
+{{- if ne .Values.workers.logGroomerSidecar.maxSizePercent nil }}
DEPRECATION WARNING:
`workers.logGroomerSidecar.maxSizePercent` has been renamed to
`workers.celery.logGroomerSidecar.maxSizePercent`.
diff --git a/chart/templates/dag-processor/dag-processor-deployment.yaml
b/chart/templates/dag-processor/dag-processor-deployment.yaml
index f2286315bf4..f228d0b7ef5 100644
--- a/chart/templates/dag-processor/dag-processor-deployment.yaml
+++ b/chart/templates/dag-processor/dag-processor-deployment.yaml
@@ -210,11 +210,11 @@ spec:
args: {{- tpl (toYaml .Values.dagProcessor.logGroomerSidecar.args) .
| nindent 12 }}
{{- end }}
env:
- {{- if .Values.dagProcessor.logGroomerSidecar.retentionDays }}
+ {{- if ne .Values.dagProcessor.logGroomerSidecar.retentionDays nil }}
- name: AIRFLOW__LOG_RETENTION_DAYS
value: "{{ .Values.dagProcessor.logGroomerSidecar.retentionDays
}}"
{{- end }}
- {{- if .Values.dagProcessor.logGroomerSidecar.retentionMinutes }}
+ {{- if ne .Values.dagProcessor.logGroomerSidecar.retentionMinutes
nil }}
- name: AIRFLOW__LOG_RETENTION_MINUTES
value: "{{
.Values.dagProcessor.logGroomerSidecar.retentionMinutes }}"
{{- end }}
diff --git a/chart/templates/scheduler/scheduler-deployment.yaml
b/chart/templates/scheduler/scheduler-deployment.yaml
index 4371b09beb2..650fbdc315a 100644
--- a/chart/templates/scheduler/scheduler-deployment.yaml
+++ b/chart/templates/scheduler/scheduler-deployment.yaml
@@ -282,11 +282,11 @@ spec:
env:
- name: AIRFLOW_HOME
value: "{{ .Values.airflowHome }}"
- {{- if .Values.scheduler.logGroomerSidecar.retentionDays }}
+ {{- if ne .Values.scheduler.logGroomerSidecar.retentionDays nil }}
- name: AIRFLOW__LOG_RETENTION_DAYS
value: "{{ .Values.scheduler.logGroomerSidecar.retentionDays }}"
{{- end }}
- {{- if .Values.scheduler.logGroomerSidecar.retentionMinutes }}
+ {{- if ne .Values.scheduler.logGroomerSidecar.retentionMinutes nil }}
- name: AIRFLOW__LOG_RETENTION_MINUTES
value: "{{ .Values.scheduler.logGroomerSidecar.retentionMinutes
}}"
{{- end }}
diff --git a/chart/templates/triggerer/triggerer-deployment.yaml
b/chart/templates/triggerer/triggerer-deployment.yaml
index fa7a90c033f..b7f50ad4925 100644
--- a/chart/templates/triggerer/triggerer-deployment.yaml
+++ b/chart/templates/triggerer/triggerer-deployment.yaml
@@ -241,11 +241,11 @@ spec:
args: {{- tpl (toYaml .Values.triggerer.logGroomerSidecar.args) . |
nindent 12 }}
{{- end }}
env:
- {{- if .Values.triggerer.logGroomerSidecar.retentionDays }}
+ {{- if ne .Values.triggerer.logGroomerSidecar.retentionDays nil }}
- name: AIRFLOW__LOG_RETENTION_DAYS
value: "{{ .Values.triggerer.logGroomerSidecar.retentionDays }}"
{{- end }}
- {{- if .Values.triggerer.logGroomerSidecar.retentionMinutes }}
+ {{- if ne .Values.triggerer.logGroomerSidecar.retentionMinutes nil }}
- name: AIRFLOW__LOG_RETENTION_MINUTES
value: "{{ .Values.triggerer.logGroomerSidecar.retentionMinutes
}}"
{{- end }}
diff --git a/chart/templates/workers/worker-deployment.yaml
b/chart/templates/workers/worker-deployment.yaml
index 92f30253b23..58879077e7c 100644
--- a/chart/templates/workers/worker-deployment.yaml
+++ b/chart/templates/workers/worker-deployment.yaml
@@ -364,11 +364,11 @@ spec:
args: {{ tpl (toYaml .Values.workers.logGroomerSidecar.args) . |
nindent 12 }}
{{- end }}
env:
- {{- if .Values.workers.logGroomerSidecar.retentionDays }}
+ {{- if ne .Values.workers.logGroomerSidecar.retentionDays nil }}
- name: AIRFLOW__LOG_RETENTION_DAYS
value: "{{ .Values.workers.logGroomerSidecar.retentionDays }}"
{{- end }}
- {{- if .Values.workers.logGroomerSidecar.retentionMinutes }}
+ {{- if ne .Values.workers.logGroomerSidecar.retentionMinutes nil }}
- name: AIRFLOW__LOG_RETENTION_MINUTES
value: "{{ .Values.workers.logGroomerSidecar.retentionMinutes }}"
{{- end }}
diff --git a/chart/values.schema.json b/chart/values.schema.json
index c85923b2120..05ff1a99eaa 100644
--- a/chart/values.schema.json
+++ b/chart/values.schema.json
@@ -2478,12 +2478,14 @@
"retentionDays": {
"description": "Number of days to retain the logs
when running the Airflow log groomer sidecar (deprecated, use
``workers.celery.logGroomerSidecar.retentionDays`` instead). Total retention
time is ``retentionDays`` + ``retentionMinutes``.",
"type": "integer",
- "default": 15
+ "default": 15,
+ "minimum": 0
},
"retentionMinutes": {
"description": "Number of minutes to retain the
logs when running the Airflow log groomer sidecar (deprecated, use
``workers.celery.logGroomerSidecar.retentionMinutes`` instead). Total retention
time is ``retentionDays`` + ``retentionMinutes``.",
"type": "integer",
- "default": 0
+ "default": 0,
+ "minimum": 0
},
"frequencyMinutes": {
"description": "Number of minutes between attempts
to groom the Airflow logs in log groomer sidecar (deprecated, use
``workers.celery.logGroomerSidecar.frequencyMinutes`` instead).",
@@ -3710,7 +3712,8 @@
"integer",
"null"
],
- "default": null
+ "default": null,
+ "minimum": 0
},
"retentionMinutes": {
"description": "Number of minutes to
retain the logs when running the Airflow log groomer sidecar. Total retention
time is ``retentionDays`` + ``retentionMinutes``.",
@@ -3718,7 +3721,8 @@
"integer",
"null"
],
- "default": null
+ "default": null,
+ "minimum": 0
},
"frequencyMinutes": {
"description": "Number of minutes between
attempts to groom the Airflow logs in log groomer sidecar.",
@@ -15268,12 +15272,14 @@
"retentionDays": {
"description": "Number of days to retain the logs when
running the Airflow log groomer sidecar. Total retention time is
``retentionDays`` + ``retentionMinutes``.",
"type": "integer",
- "default": 15
+ "default": 15,
+ "minimum": 0
},
"retentionMinutes": {
"description": "Number of minutes to retain the logs when
running the Airflow log groomer sidecar. Total retention time is
``retentionDays`` + ``retentionMinutes``.",
"type": "integer",
- "default": 0
+ "default": 0,
+ "minimum": 0
},
"frequencyMinutes": {
"description": "Number of minutes between attempts to
groom the Airflow logs in log groomer sidecar.",
diff --git a/helm-tests/tests/chart_utils/log_groomer.py
b/helm-tests/tests/chart_utils/log_groomer.py
index 36a2c1eb7ae..c5018fd482d 100644
--- a/helm-tests/tests/chart_utils/log_groomer.py
+++ b/helm-tests/tests/chart_utils/log_groomer.py
@@ -187,7 +187,7 @@ class LogGroomerTestBase:
assert jmespath.search("spec.template.spec.containers[1].command",
docs[0]) == ["release-name"]
assert jmespath.search("spec.template.spec.containers[1].args",
docs[0]) == ["Helm"]
- @pytest.mark.parametrize(("retention_days", "retention_result"), [(None,
None), (30, "30")])
+ @pytest.mark.parametrize(("retention_days", "retention_result"), [(None,
None), (30, "30"), (0, "0")])
def test_log_groomer_retention_days_overrides(self, retention_days,
retention_result):
if self.obj_name == "dag-processor":
values = {
@@ -218,7 +218,43 @@ class LogGroomerTestBase:
== "15"
)
else:
- assert len(jmespath.search("spec.template.spec.containers[1].env",
docs[0])) == 2
+ assert len(jmespath.search("spec.template.spec.containers[1].env",
docs[0])) == 3
+
+ @pytest.mark.parametrize(("retention_minutes", "retention_result"),
[(None, None), (0, "0"), (60, "60")])
+ def test_log_groomer_retention_minutes_overrides(self, retention_minutes,
retention_result):
+ if self.obj_name == "dag-processor":
+ values = {
+ "dagProcessor": {
+ "enabled": True,
+ "logGroomerSidecar": {"retentionMinutes":
retention_minutes},
+ }
+ }
+ elif self.obj_name == "workers-celery":
+ values = {"workers": {"celery": {"logGroomerSidecar":
{"retentionMinutes": retention_minutes}}}}
+ else:
+ values = {f"{self.folder}": {"logGroomerSidecar":
{"retentionMinutes": retention_minutes}}}
+
+ docs = render_chart(values=values, show_only=self.get_show_only())
+
+ if retention_result:
+ assert (
+ jmespath.search(
+
"spec.template.spec.containers[1].env[?name=='AIRFLOW__LOG_RETENTION_MINUTES'].value
| [0]",
+ docs[0],
+ )
+ == retention_result
+ )
+ elif self.obj_name == "workers-celery" and retention_result is None:
+ # Testing backward compatibility of move from workers to
workers.celery
+ assert (
+ jmespath.search(
+
"spec.template.spec.containers[1].env[?name=='AIRFLOW__LOG_RETENTION_MINUTES'].value
| [0]",
+ docs[0],
+ )
+ == "0"
+ )
+ else:
+ assert len(jmespath.search("spec.template.spec.containers[1].env",
docs[0])) == 3
@pytest.mark.parametrize(("frequency_minutes", "frequency_result"),
[(None, None), (20, "20")])
def test_log_groomer_frequency_minutes_overrides(self, frequency_minutes,
frequency_result):
@@ -254,7 +290,7 @@ class LogGroomerTestBase:
== "15"
)
else:
- assert len(jmespath.search("spec.template.spec.containers[1].env",
docs[0])) == 2
+ assert len(jmespath.search("spec.template.spec.containers[1].env",
docs[0])) == 3
@pytest.mark.parametrize(
("max_size_bytes", "max_size_result"), [(None, None), (1234567890,
"1234567890")]