mirror of
https://github.com/truenas/charts.git
synced 2026-04-05 11:48:55 +08:00
* Adapt charts CI and improve/fix common * add check on permissions contaienr * add postgres template * update comments * Update create_app.sh * add check * update script * auto gen item.yaml from Chart,yaml * rename readme on dest * duplicate readme from the same source * correct comment * reoder * remove extra space * keep both README and app-readme * update regex, to also allow 2 letter names, which is also valid * No need to check host network if there aren't any pod values * use same pattern as the pod.name label (not prepending release-name * update deps * add chart dirs to ci * Add a validation to check if there is any yaml errors after merging files * update charts path on ci * common/1.0.0/ -> common/ * update common-test dep path * temp update create_app script * make permissions container name configurable, incase we want to change order of execution * update naming convention * fix typo and a missed name change * do not allow `--` in names
96 lines
4.4 KiB
Smarty
96 lines
4.4 KiB
Smarty
{{/* Returns volumeMount list */}}
|
|
{{/* Call this template:
|
|
{{ include "ix.v1.common.lib.container.volumeMount" (dict "rootCtx" $ "objectData" $objectData) }}
|
|
rootCtx: The root context of the chart.
|
|
objectData: The object data to be used to render the container.
|
|
*/}}
|
|
{{- define "ix.v1.common.lib.container.volumeMount" -}}
|
|
{{- $rootCtx := .rootCtx -}}
|
|
{{- $objectData := .objectData -}}
|
|
|
|
{{- $volMounts := list -}}
|
|
|
|
{{- $keys := (list "persistence") -}}
|
|
|
|
{{- range $key := $keys -}}
|
|
{{- range $persistenceName, $persistenceValues := (get $rootCtx.Values $key) -}}
|
|
|
|
{{/* Initialize from the default values */}}
|
|
{{- $volMount := dict -}}
|
|
{{- $_ := set $volMount "name" $persistenceName -}}
|
|
{{- $_ := set $volMount "key" $key -}}
|
|
{{- $_ := set $volMount "mountPath" ($persistenceValues.mountPath | default "") -}}
|
|
{{- $_ := set $volMount "subPath" ($persistenceValues.subPath | default "") -}}
|
|
{{- $_ := set $volMount "readOnly" ($persistenceValues.readOnly | default false) -}}
|
|
{{- $_ := set $volMount "mountPropagation" ($persistenceValues.mountPropagation | default "") -}}
|
|
|
|
{{/* If persistence is enabled... */}}
|
|
{{- if $persistenceValues.enabled -}}
|
|
{{/* If targetSelectAll is set, means all pods/containers */}} {{/* targetSelectAll does not make sense for vct */}}
|
|
{{- if and $persistenceValues.targetSelectAll -}}
|
|
{{- $volMounts = mustAppend $volMounts $volMount -}}
|
|
|
|
{{/* Else if selector is defined */}}
|
|
{{- else if $persistenceValues.targetSelector -}}
|
|
{{/* If pod is selected */}}
|
|
{{- if mustHas $objectData.podShortName ($persistenceValues.targetSelector | keys) -}}
|
|
{{- $selectorValues := (get $persistenceValues.targetSelector $objectData.podShortName) -}}
|
|
{{- if not (kindIs "map" $selectorValues) -}}
|
|
{{- fail (printf "%s - Expected <targetSelector.%s> to be a [dict], but got [%s]" (camelcase $key) $objectData.podShortName (kindOf $selectorValues)) -}}
|
|
{{- end -}}
|
|
|
|
{{- if not $selectorValues -}}
|
|
{{- fail (printf "%s - Expected non-empty <targetSelector.%s>" (camelcase $key) $objectData.podShortName) -}}
|
|
{{- end -}}
|
|
|
|
{{/* If container is selected */}}
|
|
{{- if mustHas $objectData.shortName ($selectorValues | keys) -}}
|
|
{{/* Merge with values that might be set for the specific container */}}
|
|
{{- $volMount = mustMergeOverwrite $volMount (get $selectorValues $objectData.shortName) -}}
|
|
{{- $volMounts = mustAppend $volMounts $volMount -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* Else if not selector, but pod and container is primary */}}
|
|
{{- else if and $objectData.podPrimary $objectData.primary -}}
|
|
{{- $volMounts = mustAppend $volMounts $volMount -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- range $volMount := $volMounts -}}
|
|
{{/* Expand values */}}
|
|
{{- $_ := set $volMount "mountPath" (tpl $volMount.mountPath $rootCtx) -}}
|
|
{{- $_ := set $volMount "subPath" (tpl $volMount.subPath $rootCtx) -}}
|
|
{{- $_ := set $volMount "mountPropagation" (tpl $volMount.mountPropagation $rootCtx) -}}
|
|
|
|
{{- if not $volMount.mountPath -}}
|
|
{{- fail (printf "%s - Expected non-empty <mountPath>" (camelcase $volMount.key)) -}}
|
|
{{- end -}}
|
|
|
|
{{- if not (hasPrefix "/" $volMount.mountPath) -}}
|
|
{{- fail (printf "%s - Expected <mountPath> to start with a forward slash [/]" (camelcase $volMount.key)) -}}
|
|
{{- end -}}
|
|
|
|
{{- $propagationTypes := (list "None" "HostToContainer" "Bidirectional") -}}
|
|
{{- if and $volMount.mountPropagation (not (mustHas $volMount.mountPropagation $propagationTypes)) -}}
|
|
{{- fail (printf "%s - Expected <mountPropagation> to be one of [%s], but got [%s]" (camelcase $volMount.key) (join ", " $propagationTypes) $volMount.mountPropagation) -}}
|
|
{{- end -}}
|
|
|
|
{{- if not (kindIs "bool" $volMount.readOnly) -}}
|
|
{{- fail (printf "%s - Expected <readOnly> to be [boolean], but got [%s]" (camelcase $volMount.key) (kindOf $volMount.readOnly)) -}}
|
|
{{- end }}
|
|
- name: {{ $volMount.name }}
|
|
mountPath: {{ $volMount.mountPath }}
|
|
readOnly: {{ $volMount.readOnly }}
|
|
{{- with $volMount.subPath }}
|
|
subPath: {{ . }}
|
|
{{- end -}}
|
|
{{- with $volMount.mountPropagation }}
|
|
mountPropagation: {{ . }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- end -}}
|