120 lines
5.2 KiB
Smarty
120 lines
5.2 KiB
Smarty
{{- define "tc.v1.common.lib.ingress.integration.homepage" -}}
|
|
{{- $objectData := .objectData -}}
|
|
{{- $rootCtx := .rootCtx -}}
|
|
|
|
{{- $homepage := $objectData.integrations.homepage -}}
|
|
{{- if and $homepage $homepage.enabled -}}
|
|
{{- if not (hasKey $homepage "widget") -}}
|
|
{{- $_ := set $objectData.integrations.homepage "widget" dict -}}
|
|
{{- end -}}
|
|
|
|
{{- $widEnabled := true -}}
|
|
{{- if and (hasKey $homepage.widget "enabled") (kindIs "bool" $homepage.widget.enabled) -}}
|
|
{{- $widEnabled = $homepage.widget.enabled -}}
|
|
{{- end -}}
|
|
|
|
{{- include "tc.v1.common.lib.ingress.integration.homepage.validation" (dict "objectData" $objectData) -}}
|
|
|
|
{{- $name := $homepage.name | default ($rootCtx.Release.Name | camelcase | title) -}}
|
|
{{- $desc := $homepage.description | default $rootCtx.Chart.Description -}}
|
|
{{- $icon := $homepage.icon | default $rootCtx.Chart.Icon -}}
|
|
{{- $defaultType := $rootCtx.Chart.Name | lower -}}
|
|
{{/* Remove any non-characters from the default type */}}
|
|
{{- $defaultType = regexReplaceAll "\\W+" $defaultType "" -}}
|
|
{{- $type := $homepage.widget.type | default $defaultType -}}
|
|
{{- $url := $homepage.widget.url -}}
|
|
{{- $version := $homepage.widget.version | default 1 | toString -}}
|
|
{{- $href := $homepage.href -}}
|
|
|
|
{{- if not $href -}}
|
|
{{- $fHost := $objectData.hosts | mustFirst -}}
|
|
{{- $fPath := $fHost.paths | mustFirst -}}
|
|
{{- $host := tpl $fHost.host $rootCtx -}}
|
|
{{- $path := tpl $fPath.path $rootCtx -}}
|
|
|
|
{{- $href = printf "https://%s/%s" $host ($path | trimPrefix "/") -}}
|
|
{{- end -}}
|
|
|
|
{{- if not $url -}}
|
|
{{- $svc := $objectData.selectedService.name -}}
|
|
{{- $port := $objectData.selectedService.port -}}
|
|
{{- $prot := $objectData.selectedService.protocol -}}
|
|
{{- $ns := include "tc.v1.common.lib.metadata.namespace" (dict "rootCtx" $rootCtx "objectData" $objectData "caller" "Ingress") -}}
|
|
|
|
{{- $url = printf "%s://%s.%s.svc:%s" $prot $svc $ns $port -}}
|
|
{{- end -}}
|
|
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/enabled" "true" -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/name" (tpl $name $rootCtx) -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/href" (tpl $href $rootCtx) -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/description" (tpl $desc $rootCtx) -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/icon" (tpl $icon $rootCtx) -}}
|
|
{{- with $homepage.group -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/group" (tpl . $rootCtx) -}}
|
|
{{- end -}}
|
|
|
|
{{- with $homepage.weight -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/weight" (. | toString) -}}
|
|
{{- end -}}
|
|
|
|
{{- $selector := printf "app.kubernetes.io/instance=%s,pod.lifecycle in (permanent)" $rootCtx.Release.Name -}}
|
|
{{- with $homepage.podSelector -}}
|
|
{{- $selector = (printf "pod.name in (%s),pod.lifecycle in (permanent)" (join "," .)) -}}
|
|
{{- end -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/pod-selector" $selector -}}
|
|
|
|
{{- if $widEnabled -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/widget.type" (tpl $type $rootCtx) -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/widget.version" (tpl $version $rootCtx) -}}
|
|
|
|
{{- with $url -}}
|
|
{{- $_ := set $objectData.annotations "gethomepage.dev/widget.url" (tpl $url $rootCtx) -}}
|
|
{{- end -}}
|
|
|
|
{{- if $homepage.widget.custom -}}
|
|
{{- range $k, $v := $homepage.widget.custom -}}
|
|
{{- if $v -}}
|
|
{{- $_ := set $objectData.annotations (printf "gethomepage.dev/widget.%s" $k) (tpl $v $rootCtx | toString) -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- range $homepage.widget.customkv -}}
|
|
{{- if .value -}}
|
|
{{- $_ := set $objectData.annotations (printf "gethomepage.dev/widget.%s" .key ) (tpl .value $rootCtx | toString) -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- end -}}
|
|
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- define "tc.v1.common.lib.ingress.integration.homepage.validation" -}}
|
|
{{- $objectData := .objectData -}}
|
|
|
|
{{- $homepage := $objectData.integrations.homepage -}}
|
|
|
|
{{- with $homepage.podSelector -}}
|
|
{{- if not (kindIs "slice" .) -}}
|
|
{{- fail (printf "Ingress - Expected [integrations.homepage.podSelector] to be a [slice], but got [%s]" (kindOf .)) -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- if $homepage.widget.custom -}}
|
|
{{- if not (kindIs "map" $homepage.widget.custom) -}}
|
|
{{- fail (printf "Ingress - Expected [integrations.homepage.widget.custom] to be a [map], but got [%s]" (kindOf $homepage.widget.custom)) -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- if $homepage.widget.customkv -}}
|
|
{{- if not (kindIs "slice" $homepage.widget.customkv) -}}
|
|
{{- fail (printf "Ingress - Expected [integrations.homepage.widget.customkv] to be a [slice], but got [%s]" (kindOf $homepage.widget.customkv)) -}}
|
|
{{- end -}}
|
|
{{- range $item := $homepage.widget.customkv -}}
|
|
{{- if not $item.key -}}
|
|
{{- fail "Ingress - Expected non-empty [key] in [integrations.homepage.widget.customkv]" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|