Skip to content

Commit

Permalink
caclculate default address by gateway, use deviceSelectors
Browse files Browse the repository at this point in the history
Signed-off-by: Andrei Kvapil <[email protected]>
  • Loading branch information
kvaps committed May 3, 2024
1 parent 465868a commit 31b595d
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 20 deletions.
7 changes: 4 additions & 3 deletions charts/cozystack/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ machine:
nameservers: {{ include "talm.discovered.default_resolvers" . }}
{{- (include "talm.discovered.physical_links_info" .) | nindent 4 }}
interfaces:
{{- $defaultLink := (include "talm.discovered.default_link_name" .) }}
- interface: {{ include "talm.predictable_link_name" $defaultLink }}
addresses: {{ include "talm.discovered.default_addresses" . }}
- deviceSelector:
hardwareAddr: "{{ include "talm.discovered.default_link_address_by_gateway" . }}"
addresses: {{ include "talm.discovered.default_addresses_by_gateway" . }}
routes:
- network: 0.0.0.0/0
gateway: {{ include "talm.discovered.default_gateway" . }}
Expand All @@ -44,6 +44,7 @@ machine:
ip: {{ . }}
{{- end }}


cluster:
network:
cni:
Expand Down
6 changes: 3 additions & 3 deletions charts/generic/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ machine:
nameservers: {{ include "talm.discovered.default_resolvers" . }}
{{- (include "talm.discovered.physical_links_info" .) | nindent 4 }}
interfaces:
{{- $defaultLink := (include "talm.discovered.default_link_name" .) }}
- interface: {{ include "talm.predictable_link_name" $defaultLink }}
addresses: {{ include "talm.discovered.default_addresses" . }}
- deviceSelector:
hardwareAddr: "{{ include "talm.discovered.default_link_address_by_gateway" . }}"
addresses: {{ include "talm.discovered.default_addresses_by_gateway" . }}
routes:
- network: 0.0.0.0/0
gateway: {{ include "talm.discovered.default_gateway" . }}
Expand Down
41 changes: 37 additions & 4 deletions charts/talm/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,33 @@
{{- end }}
{{- end }}

{{- define "talm.discovered.default_addresses_by_gateway" }}
{{- $linkName := "" }}
{{- $family := "" }}
{{- range (lookup "routes" "" "").items }}
{{- if and (eq .spec.dst "") (not (eq .spec.gateway "")) }}
{{- $linkName = .spec.outLinkName }}
{{- $family = .spec.family }}
{{- end }}
{{- end }}
{{- $addresses := list }}
{{- range (lookup "addresses" "" "").items }}
{{- if and (eq .spec.linkName $linkName) (eq .spec.family $family) (not (eq .spec.scope "host")) }}
{{- $addresses = append $addresses .spec.address }}
{{- end }}
{{- end }}
{{- toJson $addresses }}
{{- end }}

{{- define "talm.discovered.physical_links_info" }}
# -- Discovered interfaces:
{{- range (lookup "links" "" "").items }}
{{- if regexMatch "^(eno|eth|enp|enx|ens)" .metadata.id }}
# enx{{ .spec.hardwareAddr | replace ":" "" }}:
# name: {{ .metadata.id }}
# mac:{{ .spec.hardwareAddr }}
# bus:{{ .spec.busPath }}
# driver:{{ .spec.driver }}
# id: {{ .metadata.id }}
# hardwareAddr:{{ .spec.hardwareAddr }}
# busPath: {{ .spec.busPath }}
# driver: {{ .spec.driver }}
# vendor: {{ .spec.vendor }}
# product: {{ .spec.product }})
{{- end }}
Expand All @@ -68,6 +85,22 @@
{{- end }}
{{- end }}

{{- define "talm.discovered.default_link_name_by_gateway" }}
{{- range (lookup "routes" "" "").items }}
{{- if and (eq .spec.dst "") (not (eq .spec.gateway "")) }}
{{- .spec.outLinkName }}
{{- end }}
{{- end }}
{{- end }}

{{- define "talm.discovered.default_link_address_by_gateway" }}
{{- range (lookup "routes" "" "").items }}
{{- if and (eq .spec.dst "") (not (eq .spec.gateway "")) }}
{{- (lookup "links" "" .spec.outLinkName).spec.hardwareAddr }}
{{- end }}
{{- end }}
{{- end }}

{{- define "talm.predictable_link_name" -}}
{{ printf "enx%s" (lookup "links" "" . | dig "spec" "hardwareAddr" . | replace ":" "") }}
{{- end }}
Expand Down
54 changes: 44 additions & 10 deletions pkg/generated/presets.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ machine:
nameservers: {{ include "talm.discovered.default_resolvers" . }}
{{- (include "talm.discovered.physical_links_info" .) | nindent 4 }}
interfaces:
{{- $defaultLink := (include "talm.discovered.default_link_name" .) }}
- interface: {{ include "talm.predictable_link_name" $defaultLink }}
addresses: {{ include "talm.discovered.default_addresses" . }}
- deviceSelector:
hardwareAddr: "{{ include "talm.discovered.default_link_address_by_gateway" . }}"
addresses: {{ include "talm.discovered.default_addresses_by_gateway" . }}
routes:
- network: 0.0.0.0/0
gateway: {{ include "talm.discovered.default_gateway" . }}
Expand All @@ -74,6 +74,7 @@ machine:
ip: {{ . }}
{{- end }}
cluster:
network:
cni:
Expand Down Expand Up @@ -164,9 +165,9 @@ machine:
nameservers: {{ include "talm.discovered.default_resolvers" . }}
{{- (include "talm.discovered.physical_links_info" .) | nindent 4 }}
interfaces:
{{- $defaultLink := (include "talm.discovered.default_link_name" .) }}
- interface: {{ include "talm.predictable_link_name" $defaultLink }}
addresses: {{ include "talm.discovered.default_addresses" . }}
- deviceSelector:
hardwareAddr: "{{ include "talm.discovered.default_link_address_by_gateway" . }}"
addresses: {{ include "talm.discovered.default_addresses_by_gateway" . }}
routes:
- network: 0.0.0.0/0
gateway: {{ include "talm.discovered.default_gateway" . }}
Expand Down Expand Up @@ -257,16 +258,33 @@ description: A library Talm chart for Talos Linux
{{- end }}
{{- end }}
{{- define "talm.discovered.default_addresses_by_gateway" }}
{{- $linkName := "" }}
{{- $family := "" }}
{{- range (lookup "routes" "" "").items }}
{{- if and (eq .spec.dst "") (not (eq .spec.gateway "")) }}
{{- $linkName = .spec.outLinkName }}
{{- $family = .spec.family }}
{{- end }}
{{- end }}
{{- $addresses := list }}
{{- range (lookup "addresses" "" "").items }}
{{- if and (eq .spec.linkName $linkName) (eq .spec.family $family) (not (eq .spec.scope "host")) }}
{{- $addresses = append $addresses .spec.address }}
{{- end }}
{{- end }}
{{- toJson $addresses }}
{{- end }}
{{- define "talm.discovered.physical_links_info" }}
# -- Discovered interfaces:
{{- range (lookup "links" "" "").items }}
{{- if regexMatch "^(eno|eth|enp|enx|ens)" .metadata.id }}
# enx{{ .spec.hardwareAddr | replace ":" "" }}:
# name: {{ .metadata.id }}
# mac:{{ .spec.hardwareAddr }}
# bus:{{ .spec.busPath }}
# driver:{{ .spec.driver }}
# id: {{ .metadata.id }}
# hardwareAddr:{{ .spec.hardwareAddr }}
# busPath: {{ .spec.busPath }}
# driver: {{ .spec.driver }}
# vendor: {{ .spec.vendor }}
# product: {{ .spec.product }})
{{- end }}
Expand All @@ -281,6 +299,22 @@ description: A library Talm chart for Talos Linux
{{- end }}
{{- end }}
{{- define "talm.discovered.default_link_name_by_gateway" }}
{{- range (lookup "routes" "" "").items }}
{{- if and (eq .spec.dst "") (not (eq .spec.gateway "")) }}
{{- .spec.outLinkName }}
{{- end }}
{{- end }}
{{- end }}
{{- define "talm.discovered.default_link_address_by_gateway" }}
{{- range (lookup "routes" "" "").items }}
{{- if and (eq .spec.dst "") (not (eq .spec.gateway "")) }}
{{- (lookup "links" "" .spec.outLinkName).spec.hardwareAddr }}
{{- end }}
{{- end }}
{{- end }}
{{- define "talm.predictable_link_name" -}}
{{ printf "enx%s" (lookup "links" "" . | dig "spec" "hardwareAddr" . | replace ":" "") }}
{{- end }}
Expand Down

0 comments on commit 31b595d

Please sign in to comment.