diff --git a/charts/cozystack/templates/_helpers.tpl b/charts/cozystack/templates/_helpers.tpl index bf09d27..3f00f96 100644 --- a/charts/cozystack/templates/_helpers.tpl +++ b/charts/cozystack/templates/_helpers.tpl @@ -76,11 +76,32 @@ machine: {{- $existingInterfacesConfiguration | nindent 4 }} {{- else }} {{- $defaultLinkName := include "talm.discovered.default_link_name_by_gateway" . }} - - interface: {{ $defaultLinkName }} - {{- $bondConfig := include "talm.discovered.bond_config" $defaultLinkName }} + {{- $isVlan := include "talm.discovered.is_vlan" $defaultLinkName }} + {{- $parentLinkName := "" }} + {{- if $isVlan }} + {{- $parentLinkName = include "talm.discovered.parent_link_name" $defaultLinkName }} + {{- end }} + {{- $interfaceName := $defaultLinkName }} + {{- if and $isVlan $parentLinkName }} + {{- $interfaceName = $parentLinkName }} + {{- end }} + - interface: {{ $interfaceName }} + {{- $bondConfig := include "talm.discovered.bond_config" $interfaceName }} {{- if $bondConfig }} {{- $bondConfig | nindent 6 }} {{- end }} + {{- if $isVlan }} + vlans: + - vlanId: {{ include "talm.discovered.vlan_id" $defaultLinkName }} + addresses: {{ include "talm.discovered.default_addresses_by_gateway" . }} + routes: + - network: 0.0.0.0/0 + gateway: {{ include "talm.discovered.default_gateway" . }} + {{- if and .Values.floatingIP (eq .MachineType "controlplane") }} + vip: + ip: {{ .Values.floatingIP }} + {{- end }} + {{- else }} addresses: {{ include "talm.discovered.default_addresses_by_gateway" . }} routes: - network: 0.0.0.0/0 @@ -89,6 +110,7 @@ machine: vip: ip: {{ .Values.floatingIP }} {{- end }} + {{- end }} {{- end }} cluster: diff --git a/charts/generic/templates/_helpers.tpl b/charts/generic/templates/_helpers.tpl index 14581bc..80c264d 100644 --- a/charts/generic/templates/_helpers.tpl +++ b/charts/generic/templates/_helpers.tpl @@ -22,11 +22,32 @@ machine: {{- $existingInterfacesConfiguration | nindent 4 }} {{- else }} {{- $defaultLinkName := include "talm.discovered.default_link_name_by_gateway" . }} - - interface: {{ $defaultLinkName }} - {{- $bondConfig := include "talm.discovered.bond_config" $defaultLinkName }} + {{- $isVlan := include "talm.discovered.is_vlan" $defaultLinkName }} + {{- $parentLinkName := "" }} + {{- if $isVlan }} + {{- $parentLinkName = include "talm.discovered.parent_link_name" $defaultLinkName }} + {{- end }} + {{- $interfaceName := $defaultLinkName }} + {{- if and $isVlan $parentLinkName }} + {{- $interfaceName = $parentLinkName }} + {{- end }} + - interface: {{ $interfaceName }} + {{- $bondConfig := include "talm.discovered.bond_config" $interfaceName }} {{- if $bondConfig }} {{- $bondConfig | nindent 6 }} {{- end }} + {{- if $isVlan }} + vlans: + - vlanId: {{ include "talm.discovered.vlan_id" $defaultLinkName }} + addresses: {{ include "talm.discovered.default_addresses_by_gateway" . }} + routes: + - network: 0.0.0.0/0 + gateway: {{ include "talm.discovered.default_gateway" . }} + {{- if and .Values.floatingIP (eq .MachineType "controlplane") }} + vip: + ip: {{ .Values.floatingIP }} + {{- end }} + {{- else }} addresses: {{ include "talm.discovered.default_addresses_by_gateway" . }} routes: - network: 0.0.0.0/0 @@ -35,6 +56,7 @@ machine: vip: ip: {{ .Values.floatingIP }} {{- end }} + {{- end }} {{- end }} cluster: diff --git a/charts/talm/templates/_helpers.tpl b/charts/talm/templates/_helpers.tpl index 40819f3..40d27e8 100644 --- a/charts/talm/templates/_helpers.tpl +++ b/charts/talm/templates/_helpers.tpl @@ -224,3 +224,45 @@ bond: true {{- end -}} {{- end -}} + +{{- /* Check if a link is a vlan interface */ -}} +{{- define "talm.discovered.is_vlan" -}} +{{- $linkName := . -}} +{{- $link := lookup "links" "" $linkName -}} +{{- if and $link (eq $link.spec.kind "vlan") -}} +true +{{- end -}} +{{- end -}} + +{{- /* Get parent link name by linkIndex */ -}} +{{- define "talm.discovered.parent_link_name" -}} +{{- $linkName := . -}} +{{- $link := lookup "links" "" $linkName -}} +{{- if and $link $link.spec.linkIndex -}} +{{- $parentIndex := $link.spec.linkIndex -}} +{{- range (lookup "links" "" "").items -}} +{{- if eq (int .spec.index) (int $parentIndex) -}} +{{- .metadata.id -}} +{{- end -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{- /* Get vlan ID from link */ -}} +{{- define "talm.discovered.vlan_id" -}} +{{- $linkName := . -}} +{{- $link := lookup "links" "" $linkName -}} +{{- if and $link $link.spec.vlan -}} +{{- $link.spec.vlan.vlanID -}} +{{- end -}} +{{- end -}} + +{{- /* Generate vlan configuration */ -}} +{{- define "talm.discovered.vlan_config" -}} +{{- $linkName := . -}} +{{- $link := lookup "links" "" $linkName -}} +{{- if and $link (eq $link.spec.kind "vlan") -}} +vlans: + - vlanId: {{ $link.spec.vlan.vlanID }} +{{- end -}} +{{- end -}}