This is an automated email from the ASF dual-hosted git repository. kaxilnaik pushed a commit to branch v1-10-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit b3d566642945374d3e5f2ca985c64120125421d4 Author: dstandish <[email protected]> AuthorDate: Mon Dec 21 02:19:26 2020 -0800 Fix parenthesis preventing Keda ScaledObject creation (#13183) (cherry picked from commit a9d562e1c3c16c98750c9e3be74347f882acb97a) --- chart/templates/workers/worker-kedaautoscaler.yaml | 2 +- chart/tests/helm_template_generator.py | 7 +-- chart/tests/test_keda.py | 57 ++++++++++++++++++++++ 3 files changed, 62 insertions(+), 4 deletions(-) diff --git a/chart/templates/workers/worker-kedaautoscaler.yaml b/chart/templates/workers/worker-kedaautoscaler.yaml index e135076..1493133 100644 --- a/chart/templates/workers/worker-kedaautoscaler.yaml +++ b/chart/templates/workers/worker-kedaautoscaler.yaml @@ -18,7 +18,7 @@ ################################ ## Airflow Worker KEDA Scaler ################################# -{{- if (and .Values.workers.keda.enabled ( or (eq .Values.executor "CeleryExecutor")) (eq .Values.executor "CeleryKubernetesExecutor")) }} +{{- if (and .Values.workers.keda.enabled ( or (eq .Values.executor "CeleryExecutor") (eq .Values.executor "CeleryKubernetesExecutor"))) }} apiVersion: keda.k8s.io/v1alpha1 kind: ScaledObject metadata: diff --git a/chart/tests/helm_template_generator.py b/chart/tests/helm_template_generator.py index d8e3f49..8b9fdb2 100644 --- a/chart/tests/helm_template_generator.py +++ b/chart/tests/helm_template_generator.py @@ -61,7 +61,7 @@ def validate_k8s_object(instance): validate.validate(instance) -def render_chart(name="RELEASE-NAME", values=None, show_only=None): +def render_chart(name="RELEASE-NAME", values=None, show_only=None, validate_schema=True): """ Function that renders a helm chart into dictionaries. For helm chart testing only """ @@ -77,8 +77,9 @@ def render_chart(name="RELEASE-NAME", values=None, show_only=None): templates = subprocess.check_output(command) k8s_objects = yaml.load_all(templates) k8s_objects = [k8s_object for k8s_object in k8s_objects if k8s_object] # type: ignore - for k8s_object in k8s_objects: - validate_k8s_object(k8s_object) + if validate_schema: + for k8s_object in k8s_objects: + validate_k8s_object(k8s_object) return k8s_objects diff --git a/chart/tests/test_keda.py b/chart/tests/test_keda.py new file mode 100644 index 0000000..57da31a --- /dev/null +++ b/chart/tests/test_keda.py @@ -0,0 +1,57 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +import unittest + +import jmespath +from parameterized import parameterized + +from tests.helm_template_generator import render_chart + + +class KedaTest(unittest.TestCase): + def test_keda_disabled_by_default(self): + """disabled by default""" + docs = render_chart( + values={}, + show_only=["templates/workers/worker-kedaautoscaler.yaml"], + validate_schema=False, + ) + self.assertListEqual(docs, []) + + @parameterized.expand( + [ + ('SequentialExecutor', False), + ('CeleryExecutor', True), + ('CeleryKubernetesExecutor', True), + ] + ) + def test_keda_enabled(self, executor, is_created): + """ + ScaledObject should only be created when set to enabled and executor is Celery or CeleryKubernetes + """ + docs = render_chart( + values={ + "workers": {"keda": {"enabled": True}, "persistence": {"enabled": False}}, + 'executor': executor, + }, + show_only=["templates/workers/worker-kedaautoscaler.yaml"], + validate_schema=False, + ) + if is_created: + self.assertEqual("RELEASE-NAME-worker", jmespath.search("metadata.name", docs[0])) + else: + self.assertListEqual(docs, [])
