_env.tpl 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. {{/* Returns Env */}}
  2. {{/* Call this template:
  3. {{ include "ix.v1.common.lib.container.env" (dict "rootCtx" $ "objectData" $objectData) }}
  4. rootCtx: The root context of the chart.
  5. objectData: The object data to be used to render the container.
  6. */}}
  7. {{- define "ix.v1.common.lib.container.env" -}}
  8. {{- $rootCtx := .rootCtx -}}
  9. {{- $objectData := .objectData -}}
  10. {{- range $k, $v := $objectData.env -}}
  11. {{- include "ix.v1.common.helper.container.envDupeCheck" (dict "rootCtx" $rootCtx "objectData" $objectData "source" "env" "key" $k) }}
  12. - name: {{ $k | quote }}
  13. {{- if not (kindIs "map" $v) -}}
  14. {{- $value := "" -}}
  15. {{/* Only tpl valid values, there are cases that empty values after merges can be "<nil>" */}}
  16. {{- if not (kindIs "invalid" $v) -}}
  17. {{- $value = $v -}}
  18. {{- if kindIs "string" $v -}}
  19. {{- $value = tpl $v $rootCtx -}}
  20. {{- end -}}
  21. {{- end }}
  22. value: {{ include "ix.v1.common.helper.makeIntOrNoop" $value | quote }}
  23. {{- else if kindIs "map" $v }}
  24. valueFrom:
  25. {{- $refs := (list "configMapKeyRef" "secretKeyRef" "fieldRef") -}}
  26. {{- if or (ne (len ($v | keys)) 1) (not (mustHas ($v | keys | first) $refs)) -}}
  27. {{- fail (printf "Container - Expected <env> with a ref to have one of [%s], but got [%s]" (join ", " $refs) (join ", " ($v | keys | sortAlpha))) -}}
  28. {{- end -}}
  29. {{- $expandName := true -}}
  30. {{- $name := "" -}}
  31. {{- range $key := (list "configMapKeyRef" "secretKeyRef") -}}
  32. {{- if hasKey $v $key }}
  33. {{ $key }}:
  34. {{- $obj := get $v $key -}}
  35. {{- if not $obj.name -}}
  36. {{- fail (printf "Container - Expected non-empty <env.%s.name>" $key) -}}
  37. {{- end -}}
  38. {{- if not $obj.key -}}
  39. {{- fail (printf "Container - Expected non-empty <env.%s.key>" $key) -}}
  40. {{- end }}
  41. key: {{ $obj.key | quote }}
  42. {{- $name = tpl $obj.name $rootCtx -}}
  43. {{- if kindIs "bool" $obj.expandObjectName -}}
  44. {{- $expandName = $obj.expandObjectName -}}
  45. {{- end -}}
  46. {{- if $expandName -}}
  47. {{- $item := ($key | trimSuffix "KeyRef" | lower) -}}
  48. {{- $data := (get $rootCtx.Values $item) -}}
  49. {{- $data = (get $data $name) -}}
  50. {{- if not $data -}}
  51. {{- fail (printf "Container - Expected in <env> the referenced %s [%s] to be defined" (camelcase $item) $name) -}}
  52. {{- end -}}
  53. {{- $found := false -}}
  54. {{- range $k, $v := $data.data -}}
  55. {{- if eq $k $obj.key -}}
  56. {{- $found = true -}}
  57. {{- end -}}
  58. {{- end -}}
  59. {{- if not $found -}}
  60. {{- fail (printf "Container - Expected in <env> the referenced key [%s] in %s [%s] to be defined" $obj.key (camelcase $item) $name) -}}
  61. {{- end -}}
  62. {{- $name = (printf "%s-%s" (include "ix.v1.common.lib.chart.names.fullname" $rootCtx) $name) -}}
  63. {{- end }}
  64. name: {{ $name | quote }}
  65. {{- end -}}
  66. {{- end -}}
  67. {{- if hasKey $v "fieldRef" }}
  68. fieldRef:
  69. {{- if not $v.fieldRef.fieldPath -}}
  70. {{- fail "Container - Expected non-empty <env.fieldRef.fieldPath>" -}}
  71. {{- end }}
  72. fieldPath: {{ $v.fieldRef.fieldPath | quote }}
  73. {{- if $v.fieldRef.apiVersion }}
  74. apiVersion: {{ $v.fieldRef.apiVersion | quote }}
  75. {{- end -}}
  76. {{- end -}}
  77. {{- end -}}
  78. {{- end -}}
  79. {{- end -}}