Better handling for missing NetDev.Device

- Closes: #1777

Overlays:
- ifcfg
- NetworkManager

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
Jonathon Anderson
2025-02-24 22:24:13 -07:00
parent 93fc742d80
commit 3a1e581f93
6 changed files with 157 additions and 3 deletions

View File

@@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixed
- Fix nightly builds.
- Better handling for missing NetDev.Device. #1777
## v4.6.0rc3, 2025-02-23

View File

@@ -50,7 +50,7 @@ Filename: warewulf-unmanaged.conf
plugins=keyfile
[keyfile]
unmanaged-devices=except:mac:e6:92:39:49:7b:03,except:interface-name:wwnet0,except:mac:9a:77:29:73:14:f1,except:interface-name:wwnet1,
unmanaged-devices=except:mac:e6:92:39:49:7b:03,except:interface-name:wwnet0,except:mac:9a:77:29:73:14:f1,except:interface-name:wwnet1
`,
},
"NetworkManager:ww4-managed.ww": {
@@ -119,6 +119,74 @@ gateway=192.168.3.1
dns=8.8.8.8;8.8.4.4;
dns-search=example.com;example.net;
[ipv6]
addr-gen-mode=stable-privacy
method=ignore
never-default=true
`,
},
"NetworkManager:ww4-managed.ww without device": {
nodes_conf: `
nodes:
node1:
network devices:
default:
onboot: true
hwaddr: e6:92:39:49:7b:03
ipaddr: 192.168.3.21
netmask: 255.255.255.0
gateway: 192.168.3.1
secondary:
onboot: true
hwaddr: 9a:77:29:73:14:f1
ipaddr: 192.168.3.22
netmask: 255.255.255.0
gateway: 192.168.3.1
tags:
DNS1: 8.8.8.8
DNS2: 8.8.4.4
DNSSEARCH: "example.com;example.net;"
`,
args: []string{"--render", "node1", "NetworkManager", "etc/NetworkManager/system-connections/ww4-managed.ww"},
log: `backupFile: true
writeFile: true
Filename: warewulf-default.conf
# This file is autogenerated by warewulf
[connection]
id=default
type=ethernet
autoconnect=true
[ethernet]
mac-address=e6:92:39:49:7b:03
[ipv4]
method=manual
address=192.168.3.21/24
gateway=192.168.3.1
[ipv6]
addr-gen-mode=stable-privacy
method=ignore
never-default=true
backupFile: true
writeFile: true
Filename: warewulf-secondary.conf
# This file is autogenerated by warewulf
[connection]
id=secondary
type=ethernet
autoconnect=true
[ethernet]
mac-address=9a:77:29:73:14:f1
[ipv4]
method=manual
address=192.168.3.22/24
gateway=192.168.3.1
dns=8.8.8.8;8.8.4.4;
dns-search=example.com;example.net;
[ipv6]
addr-gen-mode=stable-privacy
method=ignore
@@ -158,7 +226,7 @@ Filename: warewulf-unmanaged.conf
plugins=keyfile
[keyfile]
unmanaged-devices=except:interface-name:wwnet0,except:mac:9a:77:29:73:14:f1,except:interface-name:wwnet1,
unmanaged-devices=except:interface-name:wwnet0,except:mac:9a:77:29:73:14:f1,except:interface-name:wwnet1
`,
},
"NetworkManager:ww4-managed.ww with vlan": {

View File

@@ -5,4 +5,15 @@
plugins=keyfile
[keyfile]
unmanaged-devices={{ range $connection_id, $netdev := .NetDevs }}{{ if $netdev.Hwaddr }}except:mac:{{ $netdev.Hwaddr }},{{ end }}{{ if $netdev.Device }}except:interface-name:{{ $netdev.Device }},{{ end }}{{ end }}
{{- $unmanaged := list }}
{{- range $_, $netdev := .NetDevs }}
{{- if $netdev.Hwaddr }}
{{- $unmanaged = append $unmanaged (printf "except:mac:%s" $netdev.Hwaddr) }}
{{- end }}
{{- if $netdev.Device }}
{{- $unmanaged = append $unmanaged (printf "except:interface-name:%s" $netdev.Device) }}
{{- end }}
{{- end }}
{{- if $unmanaged }}
unmanaged-devices={{ join "," $unmanaged }}
{{- end }}

View File

@@ -4,7 +4,9 @@
[connection]
id={{ $devname }}
{{- if $netdev.Device }}
interface-name={{ $netdev.Device }}
{{- end }}
type={{ default "ethernet" (lower $netdev.Type) }}
{{- if $netdev.Tags.master }}
master={{ $netdev.Tags.master }}
@@ -78,7 +80,9 @@ ipaddr="{{ $netdev.Ipaddr6 }}"
{{- if eq $netdev.Type "vlan" }}
[vlan]
{{- if $netdev.Device }}
interface-name={{ $netdev.Device }}
{{- end }}
parent={{ $netdev.Tags.parent_device }}
id={{ $netdev.Tags.vlan_id }}
{{- end }}

View File

@@ -86,6 +86,74 @@ IPV6_FAILURE_FATAL=no
DNS1=8.8.8.8
DNS2=8.8.4.4
DOMAIN="example.net example.com"
`,
},
"ifcfg:ifcfg.ww without device": {
nodes_conf: `
nodes:
node1:
network devices:
default:
hwaddr: e6:92:39:49:7b:03
ipaddr: 192.168.3.21
netmask: 255.255.255.0
gateway: 192.168.3.1
tags:
DNS1: 1.1.1.1
DNS2: 1.0.0.1
DNSSEARCH: "example.com example.net"
secondary:
hwaddr: 9a:77:29:73:14:f1
ipaddr: 192.168.3.22
netmask: 255.255.255.0
gateway: 192.168.3.1
tags:
DNS1: 8.8.8.8
DNS2: 8.8.4.4
DNSSEARCH: "example.net;example.com;"
`,
args: []string{"--render", "node1", "ifcfg", "etc/sysconfig/network-scripts/ifcfg.ww"},
log: `backupFile: true
writeFile: true
Filename: ifcfg-default.conf
# This file is autogenerated by warewulf
TYPE=Ethernet
NAME=default
BOOTPROTO=static
DEVTIMEOUT=10
IPADDR=192.168.3.21
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
HWADDR=e6:92:39:49:7b:03
ONBOOT=true
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
DNS1=1.1.1.1
DNS2=1.0.0.1
DOMAIN="example.com example.net"
backupFile: true
writeFile: true
Filename: ifcfg-secondary.conf
# This file is autogenerated by warewulf
TYPE=Ethernet
NAME=secondary
BOOTPROTO=static
DEVTIMEOUT=10
IPADDR=192.168.3.22
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
HWADDR=9a:77:29:73:14:f1
ONBOOT=true
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
DNS1=8.8.8.8
DNS2=8.8.4.4
DOMAIN="example.net example.com"
`,
},
"ifcfg:network.ww": {

View File

@@ -9,7 +9,9 @@ TYPE={{ default "Ethernet" $netdev.Type }}
{{- if $netdev.Tags.master }}
MASTER={{ $netdev.Tags.master }}
{{- end }}
{{- if $netdev.Device }}
DEVICE={{ $netdev.Device }}
{{- end }}
NAME={{ $devname }}
{{- if $netdev.MTU }}
MTU={{ $netdev.MTU }}