I was in a need to detect whether the content of a variable is an IP address or not. I guess the function is not perfect, but it fulfills the basic need:
{{/*
Test if the given value is an IP address
*/}}
{{- define "prefix.isIpAddress" -}}
{{- $rc := . -}}
{{- $parts := splitList "." . -}}
{{- if eq (len $parts) 4 -}}
{{- range $parts -}}
{{- if and (not (atoi .)) (ne . "0") -}}
{{- $rc = "" -}}
{{- end -}}
{{- end -}}
{{- else -}}
{{- $rc = "" -}}
{{- end -}}
{{- print $rc }}
{{- end -}}
The function at least detects these values correctly:
{{ include "prefix.isIpAddress" "1.2.3.4" }}
{{ include "prefix.isIpAddress" "1.0.3.4" }}
{{ include "prefix.isIpAddress" "1.2.3.4.5" }}
{{ include "prefix.isIpAddress" "hello" }}
{{ include "prefix.isIpAddress" "hello.svc" }}
{{ include "prefix.isIpAddress" "hello.svc.tld.com" }}
One reply on “HELM template to detect IP address”
[…] on my previous post, here comes a snippet that will correctly produce a full DNS name of a service in the cluster from […]