Skip to content

Commit 0dc3dc1

Browse files
authored
K8s: Template handle scaledJobOptions with value is zero (#3054)
Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
1 parent 4c20853 commit 0dc3dc1

4 files changed

Lines changed: 58 additions & 4 deletions

File tree

charts/selenium-grid/templates/_helpers.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ Common autoscaling spec template
263263
{{- if and $spec (not (empty $spec)) -}}
264264
{{- $cleanSpec := dict -}}
265265
{{- range $key, $value := $spec -}}
266-
{{- if not (empty $value) -}}
266+
{{- if or (kindIs "float64" $value) (kindIs "int64" $value) (kindIs "bool" $value) (not (empty $value)) -}}
267267
{{- $cleanSpec = set $cleanSpec $key $value -}}
268268
{{- end -}}
269269
{{- end -}}

tests/charts/bootstrap.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ helm template --debug ${RELEASE_NAME} --values tests/charts/templates/render/dum
2323
--set-file 'uploaderConfigMap.extraScripts.setFromCommand\.sh=tests/charts/templates/render/dummy_external.sh' \
2424
tests/tests/selenium-grid-1.0.0-SNAPSHOT.tgz > ./tests/tests/dummy_job_template_manifests.yaml
2525

26+
python3 tests/charts/templates/test_scaled_job.py "./tests/tests/dummy_job_template_manifests.yaml"
27+
if [ $? -ne 0 ]; then
28+
echo "Failed to validate the chart for ScaledJob"
29+
exit 1
30+
fi
31+
2632
helm template --debug ${RELEASE_NAME} --values tests/charts/templates/render/dummy.yaml \
2733
--set-file 'nodeConfigMap.extraScripts.setFromCommand\.sh=tests/charts/templates/render/dummy_external.sh' \
2834
--set-file 'recorderConfigMap.extraScripts.setFromCommand\.sh=tests/charts/templates/render/dummy_external.sh' \

tests/charts/templates/render/dummy.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ autoscaling:
7676
parallelism: 1
7777
completions: 1
7878
activeDeadlineSeconds: 600
79-
backoffLimit: 6
79+
backoffLimit: 0
8080
template:
8181
pollingInterval: 30
82-
successfulJobsHistoryLimit: 5
82+
successfulJobsHistoryLimit: 0
8383
failedJobsHistoryLimit: 5
84-
minReplicaCount: 10
84+
minReplicaCount: 0
8585
maxReplicaCount: 100
8686
rolloutStrategy: gradual
8787
rollout:
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import logging
2+
import sys
3+
import unittest
4+
5+
import yaml
6+
7+
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
8+
logger = logging.getLogger(__name__)
9+
10+
11+
def load_template(yaml_file):
12+
try:
13+
with open(yaml_file) as file:
14+
documents = yaml.safe_load_all(file)
15+
list_of_documents = [doc for doc in documents]
16+
return list_of_documents
17+
except yaml.YAMLError as error:
18+
print("Error in configuration file: ", error)
19+
20+
21+
class ScaledJobTemplateTests(unittest.TestCase):
22+
def test_scaled_job_has_zero_limits(self):
23+
scaled_jobs = [doc for doc in LIST_OF_DOCUMENTS if doc and doc.get("kind") == "ScaledJob"]
24+
self.assertTrue(scaled_jobs, "No ScaledJob resources found")
25+
for doc in scaled_jobs:
26+
logger.info(f"Assert ScaledJob limits are set to 0 in {doc['metadata']['name']}")
27+
self.assertEqual(doc.get("apiVersion"), "keda.sh/v1alpha1")
28+
spec = doc.get("spec", {})
29+
job_target_ref = spec.get("jobTargetRef", {})
30+
self.assertEqual(job_target_ref.get("backoffLimit"), 0)
31+
self.assertEqual(spec.get("minReplicaCount"), 0)
32+
self.assertEqual(spec.get("successfulJobsHistoryLimit"), 0)
33+
34+
35+
if __name__ == "__main__":
36+
failed = False
37+
try:
38+
FILE_NAME = sys.argv[1]
39+
LIST_OF_DOCUMENTS = load_template(FILE_NAME)
40+
suite = unittest.TestLoader().loadTestsFromTestCase(ScaledJobTemplateTests)
41+
test_runner = unittest.TextTestRunner(verbosity=3)
42+
failed = not test_runner.run(suite).wasSuccessful()
43+
except Exception as e:
44+
logger.fatal(e)
45+
failed = True
46+
47+
if failed:
48+
exit(1)

0 commit comments

Comments
 (0)