Skip to content

Commit 8f1c686

Browse files
authored
Merge pull request #662 from wunderio/feature/SLT-901-cronjob-defaults
SLT-901: Added cronjob defaults and updated cronjob resource inheritance logic
2 parents 5cbc04d + 5924bad commit 8f1c686

File tree

4 files changed

+101
-14
lines changed

4 files changed

+101
-14
lines changed

charts/drupal/templates/drupal-cron.yaml

+33-10
Original file line numberDiff line numberDiff line change
@@ -112,25 +112,48 @@ spec:
112112
exit "$exit_code"
113113
114114
resources:
115-
{{ if $job.resources }}
116-
{{- $job.resources | toYaml | nindent 14 }}
117-
{{ else }}
115+
{{- if $job.resources }}
116+
{{- if ($.Values.php.cronJobDefaults).resources }}
117+
{{- merge $job.resources (merge $.Values.php.cronJobDefaults.resources $.Values.php.resources) | toYaml | nindent 14 }}
118+
{{- else }}
119+
{{- merge $job.resources $.Values.php.resources | toYaml | nindent 14 }}
120+
{{- end }}
121+
{{- else }}
122+
{{- if ($.Values.php.cronJobDefaults).resources }}
123+
{{- merge $.Values.php.cronJobDefaults.resources $.Values.php.resources | toYaml | nindent 14 }}
124+
{{- else }}
118125
{{- $.Values.php.resources | toYaml | nindent 14 }}
119126
{{- end }}
127+
{{- end }}
120128
restartPolicy: Never
121129
nodeSelector:
122-
{{ if $job.nodeSelector }}
123-
{{- $job.nodeSelector | toYaml | nindent 12 }}
124-
{{ else }}
130+
{{- if $job.nodeSelector }}
131+
{{- if ($.Values.php.cronJobDefaults).nodeSelector }}
132+
{{- merge $job.nodeSelector (merge $.Values.php.cronJobDefaults.nodeSelector $.Values.php.nodeSelector) | toYaml | nindent 12 }}
133+
{{- else }}
134+
{{- merge $job.nodeSelector $.Values.php.nodeSelector | toYaml | nindent 12 }}
135+
{{- end }}
136+
{{- else }}
137+
{{- if ($.Values.php.cronJobDefaults).nodeSelector }}
138+
{{- merge $.Values.php.cronJobDefaults.nodeSelector $.Values.php.nodeSelector | toYaml | nindent 12 }}
139+
{{- else }}
125140
{{- $.Values.php.nodeSelector | toYaml | nindent 12 }}
126141
{{- end }}
142+
{{- end }}
127143
tolerations:
128-
{{ if $job.nodeSelector }}
129-
{{- include "drupal.tolerations" $job.nodeSelector | nindent 12 }}
130-
{{ else }}
144+
{{- if $job.nodeSelector }}
145+
{{- if ($.Values.php.cronJobDefaults).nodeSelector }}
146+
{{- include "drupal.tolerations" (merge $job.nodeSelector (merge $.Values.php.cronJobDefaults.nodeSelector $.Values.php.nodeSelector)) | nindent 12 }}
147+
{{- else }}
148+
{{- include "drupal.tolerations" (merge $job.nodeSelector $.Values.php.nodeSelector) | nindent 12 }}
149+
{{- end }}
150+
{{- else }}
151+
{{- if ($.Values.php.cronJobDefaults).nodeSelector }}
152+
{{- include "drupal.tolerations" (merge $.Values.php.cronJobDefaults.nodeSelector $.Values.php.nodeSelector) | nindent 12 }}
153+
{{- else }}
131154
{{- include "drupal.tolerations" $.Values.php.nodeSelector | nindent 12 }}
132155
{{- end }}
133-
156+
{{- end }}
134157
volumes:
135158
{{- include "drupal.volumes" $ | nindent 12 }}
136159

charts/drupal/tests/drupal_cron_test.yaml

+28-4
Original file line numberDiff line numberDiff line change
@@ -119,19 +119,43 @@ tests:
119119
limits:
120120
cpu: 234m
121121
memory: 2G
122+
123+
- it: uses default resource requests and limits overriden by cronJobDefaults resources
124+
template: drupal-cron.yaml
125+
set:
126+
php:
127+
# Unset cron-specific resources.
128+
cron:
129+
drupal:
130+
resources: null
131+
resources:
132+
requests:
133+
cpu: 111m
134+
memory: 1G
135+
limits:
136+
cpu: 222m
137+
memory: 2G
138+
cronJobDefaults:
139+
resources:
140+
requests:
141+
cpu: 333m
142+
memory: 3G
143+
limits:
144+
cpu: 444m
145+
memory: 4G
122146
asserts:
123147
- equal:
124148
path: spec.jobTemplate.spec.template.spec.containers[0].resources.requests.cpu
125-
value: 123m
149+
value: 333m
126150
- equal:
127151
path: spec.jobTemplate.spec.template.spec.containers[0].resources.requests.memory
128-
value: 1G
152+
value: 3G
129153
- equal:
130154
path: spec.jobTemplate.spec.template.spec.containers[0].resources.limits.cpu
131-
value: 234m
155+
value: 444m
132156
- equal:
133157
path: spec.jobTemplate.spec.template.spec.containers[0].resources.limits.memory
134-
value: 2G
158+
value: 4G
135159

136160
- it: takes custom resource requests and limits
137161
template: drupal-cron.yaml

charts/drupal/values.schema.json

+30
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,36 @@
242242
}
243243
}
244244
},
245+
"cronJobDefaults": {
246+
"type": ["object", "null"],
247+
"additionalProperties": false,
248+
"properties": {
249+
"resources": {
250+
"type": ["object", "null"],
251+
"additionalProperties": false,
252+
"properties": {
253+
"requests": {
254+
"type": "object",
255+
"properties": {
256+
"cpu": { "type": ["integer", "string"] },
257+
"memory": { "type": "string" }
258+
}
259+
},
260+
"limits": {
261+
"type": "object",
262+
"properties": {
263+
"cpu": { "type": ["integer", "string"] },
264+
"memory": { "type": "string" }
265+
}
266+
}
267+
}
268+
},
269+
"nodeSelector": {
270+
"type": "object",
271+
"additionalProperties": { "type": "string" }
272+
}
273+
}
274+
},
245275
"cron": {
246276
"type": "object",
247277
"additionalProperties": {

charts/drupal/values.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,16 @@ php:
261261
status_page:
262262
enabled: true
263263

264+
cronJobDefaults:
265+
# resources:
266+
# requests:
267+
# cpu: 500m
268+
# memory: 488Mi
269+
# limits:
270+
# memory: 488Mi
271+
# nodeSelector:
272+
# cloud.google.com/gke-nodepool: static-ip
273+
264274
# Cron tasks, each of which will be run into a dedicated temporary pod.
265275
cron:
266276
drupal:

0 commit comments

Comments
 (0)