feat(common): Release version 2.0.0-beta.1 (#173)

This commit is contained in:
Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs 2023-09-13 11:24:23 +02:00 committed by GitHub
parent 19767d668c
commit 7b6ee00be6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
189 changed files with 3110 additions and 3023 deletions

View file

@ -2,9 +2,12 @@
Return the enabled ports for a given Service object.
*/}}
{{- define "bjw-s.common.lib.service.enabledPorts" -}}
{{- $rootContext := .rootContext -}}
{{- $serviceObject := .serviceObject -}}
{{- $enabledPorts := dict -}}
{{- range $name, $port := .values.ports -}}
{{- range $name, $port := $serviceObject.ports -}}
{{- if kindIs "map" $port -}}
{{- $portEnabled := true -}}
{{- if hasKey $port "enabled" -}}

View file

@ -2,17 +2,22 @@
Return the enabled services.
*/}}
{{- define "bjw-s.common.lib.service.enabledServices" -}}
{{- $rootContext := .rootContext -}}
{{- $enabledServices := dict -}}
{{- range $name, $service := .Values.service -}}
{{- range $name, $service := $rootContext.Values.service -}}
{{- if kindIs "map" $service -}}
{{- /* Enable Service by default, but allow override */ -}}
{{- $serviceEnabled := true -}}
{{- if hasKey $service "enabled" -}}
{{- $serviceEnabled = $service.enabled -}}
{{- end -}}
{{- if $serviceEnabled -}}
{{- $_ := set $enabledServices $name . -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $enabledServices | toYaml -}}
{{- end -}}

View file

@ -0,0 +1,13 @@
{{/*
Return a service Object by its Identifier.
*/}}
{{- define "bjw-s.common.lib.service.getByIdentifier" -}}
{{- $rootContext := .rootContext -}}
{{- $identifier := .id -}}
{{- range $name, $serviceValues := $rootContext.Values.service -}}
{{- if eq $name $identifier -}}
{{- include "bjw-s.common.lib.service.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $serviceValues) -}}
{{- end -}}
{{- end -}}
{{- end -}}

View file

@ -1,18 +0,0 @@
{{/*
Return the primary service object
*/}}
{{- define "bjw-s.common.lib.service.primary" -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" $ | fromYaml ) }}
{{- $result := "" -}}
{{- range $name, $service := $enabledServices -}}
{{- if and (hasKey $service "primary") $service.primary -}}
{{- $result = $name -}}
{{- end -}}
{{- end -}}
{{- if not $result -}}
{{- $result = keys $enabledServices | first -}}
{{- end -}}
{{- $result -}}
{{- end -}}

View file

@ -0,0 +1,30 @@
{{/*
Return the primary service object for a controller
*/}}
{{- define "bjw-s.common.lib.service.primaryForController" -}}
{{- $rootContext := .rootContext -}}
{{- $controllerIdentifier := .controllerIdentifier -}}
{{- $identifier := "" -}}
{{- $result := dict -}}
{{- /* Loop over all enabled services */ -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) }}
{{- if $enabledServices -}}
{{- range $name, $service := $enabledServices -}}
{{- /* Determine the Service that has been marked as primary */ -}}
{{- if and (hasKey $service "primary") $service.primary -}}
{{- $identifier = $name -}}
{{- $result = $service -}}
{{- end -}}
{{- end -}}
{{- /* Return the first Service if none has been explicitly marked as primary */ -}}
{{- if not $result -}}
{{- $identifier = keys $enabledServices | first -}}
{{- $result = get $enabledServices $identifier -}}
{{- end -}}
{{- include "bjw-s.common.lib.service.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $result) -}}
{{- end -}}
{{- end -}}

View file

@ -2,17 +2,24 @@
Return the primary port for a given Service object.
*/}}
{{- define "bjw-s.common.lib.service.primaryPort" -}}
{{- $enabledPorts := (include "bjw-s.common.lib.service.enabledPorts" . | fromYaml) }}
{{- $rootContext := .rootContext -}}
{{- $serviceObject := .serviceObject -}}
{{- $result := "" -}}
{{- /* Loop over all enabled ports */ -}}
{{- $enabledPorts := include "bjw-s.common.lib.service.enabledPorts" (dict "rootContext" $rootContext "serviceObject" $serviceObject) | fromYaml }}
{{- range $name, $port := $enabledPorts -}}
{{- /* Determine the port that has been marked as primary */ -}}
{{- if and (hasKey $port "primary") $port.primary -}}
{{- $result = $name -}}
{{- $result = $port -}}
{{- end -}}
{{- end -}}
{{- /* Return the first port if none has been explicitly marked as primary */ -}}
{{- if not $result -}}
{{- $result = keys $enabledPorts | first -}}
{{- $firstPortKey := keys $enabledPorts | first -}}
{{- $result = get $enabledPorts $firstPortKey -}}
{{- end -}}
{{- $result -}}
{{- $result | toYaml -}}
{{- end -}}

View file

@ -0,0 +1,37 @@
{{/*
Validate Service values
*/}}
{{- define "bjw-s.common.lib.service.validate" -}}
{{- $rootContext := .rootContext -}}
{{- $serviceObject := .object -}}
{{- if empty (get $serviceObject "controller") -}}
{{- fail (printf "controller is required for Service. (service: %s)" $serviceObject.identifier) -}}
{{- end -}}
{{- /* Validate Service type */ -}}
{{- $validServiceTypes := (list "ClusterIP" "LoadBalancer" "NodePort" "ExternalName" "ExternalIP") -}}
{{- if and $serviceObject.type (not (mustHas $serviceObject.type $validServiceTypes)) -}}
{{- fail (
printf "invalid service type \"%s\" for Service with key \"%s\". Allowed values are [%s]"
$serviceObject.type
$serviceObject.identifier
(join ", " $validServiceTypes)
) -}}
{{- end -}}
{{- if ne $serviceObject.type "ExternalName" -}}
{{- $enabledPorts := include "bjw-s.common.lib.service.enabledPorts" (dict "rootContext" $rootContext "serviceObject" $serviceObject) | fromYaml }}
{{- /* Validate at least one port is enabled */ -}}
{{- if not $enabledPorts -}}
{{- fail (printf "no ports are enabled for Service with key \"%s\"" $serviceObject.identifier) -}}
{{- end -}}
{{- range $name, $port := $enabledPorts -}}
{{- /* Validate a port number is configured */ -}}
{{- if not $port.port -}}
{{- fail (printf "no port number is configured for port \"%s\" under Service with key \"%s\"" $name $serviceObject.identifier) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}

View file

@ -0,0 +1,24 @@
{{/*
Convert Service values to an object
*/}}
{{- define "bjw-s.common.lib.service.valuesToObject" -}}
{{- $rootContext := .rootContext -}}
{{- $identifier := .id -}}
{{- $objectValues := .values -}}
{{- /* Determine and inject the Service name */ -}}
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
{{- if $objectValues.nameOverride -}}
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
{{- else -}}
{{- if not $objectValues.primary -}}
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
{{- end -}}
{{- end -}}
{{- $_ := set $objectValues "name" $objectName -}}
{{- $_ := set $objectValues "identifier" $identifier -}}
{{- /* Return the Service object */ -}}
{{- $objectValues | toYaml -}}
{{- end -}}