| {{/* vim: set filetype=mustache: */}} |
| {{/* |
| Expand the name of the chart. |
| */}} |
| {{- define "couchdb.name" -}} |
| {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} |
| {{- end -}} |
| |
| {{/* |
| Create a default fully qualified app name. |
| We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). |
| */}} |
| {{- define "couchdb.fullname" -}} |
| {{- if .Values.fullnameOverride -}} |
| {{- printf "%s-%s" .Values.fullnameOverride .Chart.Name | trunc 63 | trimSuffix "-" -}} |
| {{- else -}} |
| {{- $name := default .Chart.Name .Values.nameOverride -}} |
| {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} |
| {{- end -}} |
| {{- end -}} |
| |
| {{/* |
| In the event that we create both a headless service and a traditional one, |
| ensure that the latter gets a unique name. |
| */}} |
| {{- define "couchdb.svcname" -}} |
| {{- if .Values.fullnameOverride -}} |
| {{- printf "%s-svc-%s" .Values.fullnameOverride .Chart.Name | trunc 63 | trimSuffix "-" -}} |
| {{- else -}} |
| {{- $name := default .Chart.Name .Values.nameOverride -}} |
| {{- printf "%s-svc-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} |
| {{- end -}} |
| {{- end -}} |
| |
| {{/* |
| Create a random string if the supplied key does not exist |
| */}} |
| {{- define "couchdb.defaultsecret" -}} |
| {{- if . -}} |
| {{- . | b64enc | quote -}} |
| {{- else -}} |
| {{- randAlphaNum 20 | b64enc | quote -}} |
| {{- end -}} |
| {{- end -}} |
| |
| {{- /* |
| Create a random string if the supplied "secret" key does not exist. Otherwise create the key in a persistent fashion |
| using `lookup` and `get`. The "key", "ns", and "secretName" keys need to be provided for this to work |
| */ -}} |
| {{- define "couchdb.defaultsecret-stateful" -}} |
| {{- if .secret -}} |
| {{- .secret | b64enc | quote -}} |
| {{- else -}} |
| {{- /* generate secret, which will be overwritten if already exists */ -}} |
| {{- $autoSecret := randAlphaNum 20 | b64enc -}} |
| {{- if and (not (empty .key)) (not (empty .secretName)) }} |
| {{- $currentSecret := lookup "v1" "Secret" .ns .secretName }} |
| {{- if $currentSecret }} |
| {{- /* already exists, looking up */ -}} |
| {{- $autoSecret = get $currentSecret.data .key -}} |
| {{- end }} |
| {{- end }} |
| {{- print $autoSecret | quote -}} |
| {{- end -}} |
| {{- end -}} |
| |
| {{/* |
| Labels used to define Pods in the CouchDB statefulset |
| */}} |
| {{- define "couchdb.ss.selector" -}} |
| app: {{ template "couchdb.name" . }} |
| release: {{ .Release.Name }} |
| {{- end -}} |
| |
| {{/* |
| Generates a comma delimited list of nodes in the cluster |
| */}} |
| {{- define "couchdb.seedlist" -}} |
| {{- $nodeCount := min 5 .Values.clusterSize | int }} |
| {{- range $index0 := until $nodeCount -}} |
| {{- $index1 := $index0 | add1 -}} |
| {{ $.Values.erlangFlags.name }}@{{ template "couchdb.fullname" $ }}-{{ $index0 }}.{{ template "couchdb.fullname" $ }}.{{ $.Release.Namespace }}.svc.{{ $.Values.dns.clusterDomainSuffix }}{{ if ne $index1 $nodeCount }},{{ end }} |
| {{- end -}} |
| {{- end -}} |
| |
| {{/* |
| If serviceAccount.name is specified, use that, else use the couchdb instance name |
| */}} |
| {{- define "couchdb.serviceAccount" -}} |
| {{- if .Values.serviceAccount.name -}} |
| {{- .Values.serviceAccount.name }} |
| {{- else -}} |
| {{- template "couchdb.fullname" . -}} |
| {{- end -}} |
| {{- end -}} |
| |
| {{/* |
| Fail if couchdbConfig.couchdb.uuid is undefined |
| */}} |
| {{- define "couchdb.uuid" -}} |
| {{- required "A value for couchdbConfig.couchdb.uuid must be set" (.Values.couchdbConfig.couchdb | default dict).uuid -}} |
| {{- end -}} |
| |
| {{/* |
| Repurpose volume claim metadata whether using the new volume claim template |
| or existing volume claims. |
| */}} |
| {{- define "persistentVolume.metadata" -}} |
| {{- $context := index . "context" -}} |
| {{- $claim := index . "claim" -}} |
| name: {{ $claim.claimName | default "database-storage" }} |
| labels: |
| app: {{ template "couchdb.name" $context }} |
| release: {{ $context.Release.Name }} |
| {{- with $context.Values.persistentVolume.annotations }} |
| annotations: |
| {{- toYaml . | nindent 6 }} |
| {{- end }} |
| {{- end -}} |
| |
| {{/* |
| Repurpose volume claim spec whether using the new volume claim template |
| or an existing volume claim. |
| */}} |
| {{- define "persistentVolume.spec" -}} |
| {{- $context := index . "context" -}} |
| {{- $claim := index . "claim" -}} |
| accessModes: |
| {{- range $context.Values.persistentVolume.accessModes }} |
| - {{ . | quote }} |
| {{- end }} |
| resources: |
| requests: |
| storage: {{ $context.Values.persistentVolume.size | quote }} |
| {{- if $context.Values.persistentVolume.storageClass }} |
| {{- if (eq "-" $context.Values.persistentVolume.storageClass) }} |
| storageClassName: "" |
| {{- else }} |
| storageClassName: "{{ $context.Values.persistentVolume.storageClass }}" |
| {{- end }} |
| {{- end }} |
| {{- if $claim.persistentVolumeName }} |
| volumeName: {{ $claim.persistentVolumeName }} |
| {{- end }} |
| {{- end -}} |