35 lines
1.3 KiB
YAML
35 lines
1.3 KiB
YAML
{{/*
|
|
Complex logic ahead...
|
|
We have three sets of values, in order of precedence (last wins):
|
|
1. The builtin values.yaml defaults
|
|
2. The profile the user selects
|
|
3. Users input (-f or --set)
|
|
|
|
Unfortunately, Helm provides us (1) and (3) together (as .Values), making it hard to insert (2).
|
|
|
|
However, we can workaround this by placing all of (1) under a specific key (.Values.defaults).
|
|
We can then merge the profile onto the defaults, then the user settings onto that.
|
|
Finally, we can set all of that under .Values so the chart behaves without awareness.
|
|
*/}}
|
|
{{- $defaults := $.Values.defaults }}
|
|
{{- $_ := unset $.Values "defaults" }}
|
|
{{- $profile := dict }}
|
|
{{- with .Values.profile }}
|
|
{{- with $.Files.Get (printf "files/profile-%s.yaml" .)}}
|
|
{{- $profile = (. | fromYaml) }}
|
|
{{- else }}
|
|
{{ fail (cat "unknown profile" $.Values.profile) }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- with .Values.compatibilityVersion }}
|
|
{{- with $.Files.Get (printf "files/profile-compatibility-version-%s.yaml" .) }}
|
|
{{- $ignore := mustMergeOverwrite $profile (. | fromYaml) }}
|
|
{{- else }}
|
|
{{ fail (cat "unknown compatibility version" $.Values.compatibilityVersion) }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if $profile }}
|
|
{{- $a := mustMergeOverwrite $defaults $profile }}
|
|
{{- end }}
|
|
{{- $b := set $ "Values" (mustMergeOverwrite $defaults $.Values) }}
|