-
Notifications
You must be signed in to change notification settings - Fork 30
/
_homepage.tpl
101 lines (83 loc) · 4.43 KB
/
_homepage.tpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
{{- 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 -}}
{{- include "tc.v1.common.lib.ingress.integration.homepage.validation" (dict "objectData" $objectData) -}}
{{- $svcData := (include "tc.v1.common.lib.ingress.targetSelector" (dict "rootCtx" $rootCtx "objectData" $objectData) | fromYaml) -}}
{{- $name := $homepage.name | default ($rootCtx.Chart.Name | camelcase) -}}
{{- $desc := $homepage.description | default $rootCtx.Chart.Description -}}
{{- $icon := $homepage.icon | default $rootCtx.Chart.Icon -}}
{{- $type := ( $homepage.widget.type | default $rootCtx.Chart.Name ) | lower -}}
{{- $type = regexReplaceAll "\\W+" $type "" -}}
{{- $url := $homepage.widget.url -}}
{{- $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 := $svcData.name -}}
{{- $port := $svcData.port -}}
{{- $ns := printf "%s" (include "tc.v1.common.lib.metadata.namespace" (dict "rootCtx" $rootCtx "objectData" $objectData "caller" "Ingress")) -}}
{{- $url = printf "http://%s.$ns.svc:%s" $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) -}}
{{- $_ := set $objectData.annotations "gethomepage.dev/widget.type" (tpl $type $rootCtx) -}}
{{- with $homepage.group -}}
{{- $_ := set $objectData.annotations "gethomepage.dev/group" (tpl . $rootCtx) -}}
{{- end -}}
{{- with $homepage.weight -}}
{{- $_ := set $objectData.annotations "gethomepage.dev/weight" (. | toString) -}}
{{- end -}}
{{- with $url -}}
{{- $_ := set $objectData.annotations "gethomepage.dev/widget.url" (tpl $url $rootCtx) -}}
{{- end -}}
{{- if $homepage.widget.custom -}}
{{- range $k, $v := $homepage.widget.custom -}}
{{- $_ := set $objectData.annotations (printf "gethomepage.dev/widget.%s" $k) (tpl $v $rootCtx | toString) -}}
{{- end -}}
{{- range $homepage.widget.customkv -}}
{{- $_ := set $objectData.annotations (printf "gethomepage.dev/widget.%s" .key ) (tpl .value $rootCtx | toString) -}}
{{- end -}}
{{- end -}}
{{- with $homepage.podSelector -}}
{{- $selector := (printf "pod.name in (%s)" (join "," .)) -}}
{{- $_ := set $objectData.annotations "gethomepage.dev/pod-selector" $selector -}}
{{- 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 -}}