This is an automated email from the ASF dual-hosted git repository. potiuk pushed a commit to branch v1-10-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit ffcbf6fa66199e4ddaf90fa6b7c70444b49108f8 Author: Florent Chehab <[email protected]> AuthorDate: Sat Oct 31 18:55:50 2020 +0100 fix helm scheduler deployment / scheduler logs (#11685) Based on the airflow image entrypoint, we should use airflow commands directly. The container exits otherwise. (cherry picked from commit 069b1f71cf9fbeaea3af2dfdc14681996dd09f4b) --- .../templates/scheduler/scheduler-deployment.yaml | 2 +- chart/tests/test_basic_helm_chart.py | 31 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/chart/templates/scheduler/scheduler-deployment.yaml b/chart/templates/scheduler/scheduler-deployment.yaml index 1ed1c3a..771dd1a 100644 --- a/chart/templates/scheduler/scheduler-deployment.yaml +++ b/chart/templates/scheduler/scheduler-deployment.yaml @@ -169,7 +169,7 @@ spec: - name: scheduler-logs image: {{ template "airflow_image" . }} imagePullPolicy: {{ .Values.images.airflow.pullPolicy }} - args: ["airflow", "serve_logs"] + args: ["serve_logs"] ports: - name: worker-logs containerPort: {{ .Values.ports.workerLogs }} diff --git a/chart/tests/test_basic_helm_chart.py b/chart/tests/test_basic_helm_chart.py index 767a073..89a6f5a 100644 --- a/chart/tests/test_basic_helm_chart.py +++ b/chart/tests/test_basic_helm_chart.py @@ -16,6 +16,7 @@ # under the License. import unittest +from typing import Any, Dict, List, Union import jmespath @@ -84,3 +85,33 @@ class TestBaseChartTest(unittest.TestCase): ] self.assertNotIn(('Job', 'TEST-BASIC-create-user'), list_of_kind_names_tuples) self.assertEqual(OBJECT_COUNT_IN_BASIC_DEPLOYMENT - 1, len(k8s_objects)) + + def test_chart_is_consistent_with_official_airflow_image(self): + def get_k8s_objs_with_image(obj: Union[List[Any], Dict[str, Any]]) -> List[Dict[str, Any]]: + """ + Recursive helper to retrieve all the k8s objects that have an "image" key + inside k8s obj or list of k8s obj + """ + out = [] + if isinstance(obj, list): + for item in obj: + out += get_k8s_objs_with_image(item) + if isinstance(obj, dict): + if "image" in obj: + out += [obj] + # include sub objs, just in case + for val in obj.values(): + out += get_k8s_objs_with_image(val) + return out + + image_repo = "test-airflow-repo/airflow" + k8s_objects = render_chart("TEST-BASIC", {"defaultAirflowRepository": image_repo}) + + objs_with_image = get_k8s_objs_with_image(k8s_objects) + for obj in objs_with_image: + image: str = obj["image"] # pylint: disable=invalid-sequence-index + if image.startswith(image_repo): + # Make sure that a command is not specified + self.assertNotIn("command", obj) + # Make sure that the first arg is never airflow + self.assertNotEqual(obj["args"][0], "airflow") # pylint: disable=invalid-sequence-index
