{{- define "lib.component.workload.allowed" -}} {{- /* define[0] */ -}}
{{- include "lib.error.noCtx" . -}}
{{ index .ctx.Chart.Annotations "allowed_workload_kinds" }}
{{- end -}} {{- /* /define[0] */ -}}

{{- define "lib.component.workload" -}} {{- /* define[0] */ -}}
{{- include "lib.error.noCtx" . -}}
{{-
	$labels := include "lib.metadata.mergeLabels"
	(dict
		"ctx" .ctx
		"global" ((.ctx.Values).metadata).labels
		"local" (((.ctx.Values.base).workload).metadata).labels
	)
}}
{{- 
	$metadata := include "lib.metadata" 
	(dict 
		"ctx" .ctx 
		"annotations" (((.ctx.Values.base).workload).metadata).annotations
		"labels" $labels
	) 
}}
{{-
	$securityContext := include "lib.core.pod.securityContext"
	(dict
		"securityContext" .ctx.Values.base.workload.securityContext
	)
}}

{{
	$containers := include "lib.core.pod.containers"
	(dict
	"ctx" .ctx
	"containers" .ctx.Values.base.workload.containers
	)
}}

{{
	$volumes := include "lib.core.pod.volumes"
	(dict
		"ctx" .ctx
		"files" (.ctx.Values.config).files
		"storage" .ctx.Values.storage
		"extraVolumes" .ctx.Values.extraVolumes
	)
}}

{{- if eq .ctx.Values.base.workload.kind "Deployment" -}} {{- /* if[0] */ -}}
{{- if contains .ctx.Values.base.workload.kind (include "lib.component.workload.allowed" (dict "ctx" .ctx)) }}{{- /* if[0] */ -}}
{{- 
	include "lib.core.deployment" 
	(dict 
		"ctx" .ctx 
		"metadata" $metadata
		"securityContext" $securityContext
		"containers" $containers
		"volumes" $volumes
	) 
}} 
{{- else -}}
{{- fail (printf "workload kind is not allowed: %s" .ctx.Values.base.workload.kind) -}}
{{- end }}{{- /* if[1] */ -}}
{{- end -}} {{- /* /if[0]*/ -}}
{{- end -}}{{- /* /define[0] */ -}}
