_workloadValidation.tpl 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. {{/* Workload Basic Validation */}}
  2. {{/* Call this template:
  3. {{ include "ix.v1.common.lib.workload.primaryValidation" $ -}}
  4. */}}
  5. {{- define "ix.v1.common.lib.workload.primaryValidation" -}}
  6. {{/* Initialize values */}}
  7. {{- $hasPrimary := false -}}
  8. {{- $hasEnabled := false -}}
  9. {{/* Go over workload */}}
  10. {{- range $name, $workload := .Values.workload -}}
  11. {{/* If workload is enabled */}}
  12. {{- if $workload.enabled -}}
  13. {{- $types := (list "Deployment" "Job" "CronJob") -}}
  14. {{- if not (mustHas $workload.type $types) -}}
  15. {{- fail (printf "Workload - Expected <type> to be one of [%s], but got [%s]" (join ", " $types) $workload.type) -}}
  16. {{- end -}}
  17. {{- $hasEnabled = true -}}
  18. {{/* And workload is primary */}}
  19. {{- if $workload.primary -}}
  20. {{/* Fail if there is already a primary workload */}}
  21. {{- if $hasPrimary -}}
  22. {{- fail "Workload - Only one workload can be primary" -}}
  23. {{- end -}}
  24. {{- $hasPrimary = true -}}
  25. {{- end -}}
  26. {{- end -}}
  27. {{- end -}}
  28. {{/* Require at one primary workload, if any enabled */}}
  29. {{- if and $hasEnabled (not $hasPrimary) -}}
  30. {{- fail "Workload - One enabled workload must be primary" -}}
  31. {{- end -}}
  32. {{- end -}}