diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4006da0c..474baf70 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -52,6 +52,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Don't use DHCP for interfaces attached to a bond. #1743
- Wait until ignition has completed before trying to mount.
- Fix timeout problem for wwclient. #1741
+- Fixed default "true" state of NetDev.OnBoot. #1754
### Removed
diff --git a/internal/pkg/node/checkconf.go b/internal/pkg/node/checkconf.go
index f053ed4f..1c881d2e 100644
--- a/internal/pkg/node/checkconf.go
+++ b/internal/pkg/node/checkconf.go
@@ -7,7 +7,6 @@ import (
"strconv"
"strings"
- "github.com/warewulf/warewulf/internal/pkg/util"
"github.com/warewulf/warewulf/internal/pkg/wwtype"
)
@@ -74,7 +73,7 @@ func check(infoType reflect.Type, infoVal reflect.Value) (err error) {
}
func checker(value string, valType string) (niceValue string, err error) {
- if valType == "" || value == "" || util.InSlice(wwtype.GetUnsetVerbs(), value) {
+ if valType == "" || value == "" || wwtype.IsUnsetVerb(value) {
return "", nil
}
switch valType {
diff --git a/internal/pkg/wwtype/constants.go b/internal/pkg/wwtype/constants.go
index 223bf471..521f9f97 100644
--- a/internal/pkg/wwtype/constants.go
+++ b/internal/pkg/wwtype/constants.go
@@ -1,5 +1,15 @@
package wwtype
+import (
+ "strings"
+
+ "github.com/warewulf/warewulf/internal/pkg/util"
+)
+
func GetUnsetVerbs() []string {
- return []string{"UNSET", "DELETE", "UNDEF", "undef", "--", "nil", "0.0.0.0"}
+ return []string{"unset", "delete", "undef", "--", "nil", "0.0.0.0"}
+}
+
+func IsUnsetVerb(value string) bool {
+ return util.InSlice(GetUnsetVerbs(), strings.ToLower(value))
}
diff --git a/internal/pkg/wwtype/wwbool.go b/internal/pkg/wwtype/wwbool.go
index 650f96a2..bd9d65a4 100644
--- a/internal/pkg/wwtype/wwbool.go
+++ b/internal/pkg/wwtype/wwbool.go
@@ -4,8 +4,6 @@ import (
"fmt"
"strconv"
"strings"
-
- "github.com/warewulf/warewulf/internal/pkg/util"
)
// Simple string which can be converted to bool. Backend storage
@@ -16,17 +14,38 @@ type WWbool string
Transform the underlying string value to bool
*/
func (val WWbool) Bool() bool {
- str := string(val)
- if util.InSlice(GetUnsetVerbs(), str) {
+ str := strings.ToLower(string(val))
+ if IsUnsetVerb(str) {
return false
}
- if strings.ToLower(str) == "yes" {
+ switch str {
+ case "yes":
+ return true
+ case "no", "":
+ return false
+ }
+ bval, err := strconv.ParseBool(str)
+ if err != nil {
+ return false
+ }
+ return bval
+}
+
+func (val WWbool) BoolDefaultTrue() bool {
+ str := strings.ToLower(string(val))
+ if IsUnsetVerb(str) {
+ return false
+ }
+ switch str {
+ case "yes", "":
+ return true
+ case "no":
+ return false
+ }
+ bval, err := strconv.ParseBool(str)
+ if err != nil {
return true
}
- if strings.ToLower(str) == "no" {
- return false
- }
- bval, _ := strconv.ParseBool(str)
return bval
}
@@ -34,7 +53,7 @@ func (val WWbool) Bool() bool {
Set the string, only accept bool values like true, false, but also UNDEF
*/
func (val *WWbool) Set(str string) error {
- if util.InSlice(GetUnsetVerbs(), str) {
+ if IsUnsetVerb(str) {
// run the unset verb trough, will be filtered out later
*val = WWbool(str)
return nil
diff --git a/overlays/NetworkManager/internal/networkmanager_test.go b/overlays/NetworkManager/internal/networkmanager_test.go
index b80b61af..3d106194 100644
--- a/overlays/NetworkManager/internal/networkmanager_test.go
+++ b/overlays/NetworkManager/internal/networkmanager_test.go
@@ -256,6 +256,7 @@ Filename: warewulf-bond0.conf
id=bond0
interface-name=bond0
type=bond
+autoconnect=true
[bond]
downdelay=0
miimon=100
@@ -282,6 +283,7 @@ interface-name=en1
type=ethernet
master=bond0
slave-type=bond
+autoconnect=true
[ethernet]
mac-address=e6:92:39:49:7b:03
[ipv4]
@@ -300,6 +302,7 @@ interface-name=en2
type=ethernet
master=bond0
slave-type=bond
+autoconnect=true
[ethernet]
mac-address=9a:77:29:73:14:f1
[ipv4]
diff --git a/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww b/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww
index 15f0431d..ae70f38b 100644
--- a/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww
+++ b/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww
@@ -10,9 +10,7 @@ type={{ default "ethernet" (lower $netdev.Type) }}
master={{ $netdev.Tags.master }}
slave-type=bond
{{- end }}
-{{- if $netdev.OnBoot }}
-autoconnect=true
-{{- end }}
+autoconnect={{ $netdev.OnBoot.BoolDefaultTrue }}
{{- if eq (lower $netdev.Type) "bond" }}
[bond]
diff --git a/overlays/debian.interfaces/internal/debian_interfaces_test.go b/overlays/debian.interfaces/internal/debian_interfaces_test.go
index a94da343..c90503d3 100644
--- a/overlays/debian.interfaces/internal/debian_interfaces_test.go
+++ b/overlays/debian.interfaces/internal/debian_interfaces_test.go
@@ -54,6 +54,7 @@ writeFile: true
Filename: default
# This file is autogenerated by warewulf
+auto wwnet0
allow-hotplug wwnet0
iface wwnet0 inet static
address 192.168.3.21
@@ -65,6 +66,7 @@ backupFile: true
writeFile: true
Filename: secondary
# This file is autogenerated by warewulf
+auto wwnet1
allow-hotplug wwnet1
iface wwnet1 inet static
address 192.168.3.22
diff --git a/overlays/debian.interfaces/rootfs/etc/network/interfaces.d/default.ww b/overlays/debian.interfaces/rootfs/etc/network/interfaces.d/default.ww
index 302536db..ecc54df7 100644
--- a/overlays/debian.interfaces/rootfs/etc/network/interfaces.d/default.ww
+++ b/overlays/debian.interfaces/rootfs/etc/network/interfaces.d/default.ww
@@ -1,7 +1,7 @@
{{- range $devname, $netdev := .ThisNode.NetDevs }}
{{ file $devname }}
# This file is autogenerated by warewulf
-{{- if $netdev.OnBoot }}
+{{- if $netdev.OnBoot.BoolDefaultTrue }}
auto {{ $netdev.Device }}
{{- end }}
allow-hotplug {{ $netdev.Device }}
diff --git a/overlays/debug/internal/debug_test.go b/overlays/debug/internal/debug_test.go
index 16dab229..e8989cd9 100644
--- a/overlays/debug/internal/debug_test.go
+++ b/overlays/debug/internal/debug_test.go
@@ -169,7 +169,7 @@ node methods in addition to its fields.
- Tags:
- NetDevs[default]:
- Type:
- - OnBoot: true
+ - OnBoot: true (true)
- Device: wwnet0
- Hwaddr: e6:92:39:49:7b:03
- Ipaddr: 192.168.3.21
@@ -182,7 +182,7 @@ node methods in addition to its fields.
- Tags:
- NetDevs[secondary]:
- Type:
- - OnBoot: true
+ - OnBoot: true (true)
- Device: wwnet1
- Hwaddr: 9a:77:29:73:14:f1
- Ipaddr: 192.168.3.22
diff --git a/overlays/debug/rootfs/tstruct.md.ww b/overlays/debug/rootfs/tstruct.md.ww
index b70bd838..2d30f140 100644
--- a/overlays/debug/rootfs/tstruct.md.ww
+++ b/overlays/debug/rootfs/tstruct.md.ww
@@ -114,7 +114,7 @@ node methods in addition to its fields.
{{- range $index, $netdev := .NetDevs }}
- NetDevs[{{ $index }}]:
- Type: {{ $netdev.Type }}
- - OnBoot: {{ $netdev.OnBoot }}
+ - OnBoot: {{ $netdev.OnBoot }} ({{ $netdev.OnBoot.BoolDefaultTrue }})
- Device: {{ $netdev.Device }}
- Hwaddr: {{ $netdev.Hwaddr }}
- Ipaddr: {{ $netdev.Ipaddr }}
diff --git a/overlays/ifcfg/internal/ifcfg_test.go b/overlays/ifcfg/internal/ifcfg_test.go
index ff154b5b..654ec2d4 100644
--- a/overlays/ifcfg/internal/ifcfg_test.go
+++ b/overlays/ifcfg/internal/ifcfg_test.go
@@ -57,6 +57,7 @@ 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
@@ -77,6 +78,7 @@ 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
@@ -202,6 +204,7 @@ BOOTPROTO=static
DEVTIMEOUT=10
IPADDR=192.168.3.110
NETMASK=255.255.255.0
+ONBOOT=true
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
@@ -217,6 +220,7 @@ NAME=en1
BOOTPROTO=static
DEVTIMEOUT=10
HWADDR=e6:92:39:49:7b:03
+ONBOOT=true
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
@@ -232,6 +236,7 @@ NAME=en2
BOOTPROTO=static
DEVTIMEOUT=10
HWADDR=9a:77:29:73:14:f1
+ONBOOT=true
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
@@ -266,6 +271,54 @@ backupFile: true
writeFile: true
Filename: route-untagged.conf
# This file is autogenerated by warewulf
+`,
+ },
+ "ifcfg:ifcfg.ww (onBoot)": {
+ nodes_conf: `
+nodes:
+ node1:
+ primary network: untagged
+ network devices:
+ untagged:
+ onboot: false
+ device: eth0
+ tagged:
+ onboot: true
+ type: vlan
+ device: eth0.902
+ tags:
+ route1: "192.168.1.0/24,192.168.2.254"
+`,
+ args: []string{"--render", "node1", "ifcfg", "etc/sysconfig/network-scripts/ifcfg.ww"},
+ log: `backupFile: true
+writeFile: true
+Filename: ifcfg-tagged.conf
+
+# This file is autogenerated by warewulf
+VLAN=yes
+DEVICE=eth0.902
+NAME=tagged
+BOOTPROTO=static
+DEVTIMEOUT=10
+ONBOOT=true
+IPV6INIT=yes
+IPV6_AUTOCONF=yes
+IPV6_DEFROUTE=yes
+IPV6_FAILURE_FATAL=no
+backupFile: true
+writeFile: true
+Filename: ifcfg-untagged.conf
+# This file is autogenerated by warewulf
+TYPE=Ethernet
+DEVICE=eth0
+NAME=untagged
+BOOTPROTO=static
+DEVTIMEOUT=10
+ONBOOT=false
+IPV6INIT=yes
+IPV6_AUTOCONF=yes
+IPV6_DEFROUTE=yes
+IPV6_FAILURE_FATAL=no
`,
},
}
diff --git a/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww b/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww
index a4849cac..7086ff5e 100644
--- a/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww
+++ b/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww
@@ -28,9 +28,7 @@ GATEWAY={{ $netdev.Gateway }}
{{- if $netdev.Hwaddr }}
HWADDR={{ $netdev.Hwaddr }}
{{- end }}
-{{- if $netdev.OnBoot }}
-ONBOOT=true
-{{- end }}
+ONBOOT={{ $netdev.OnBoot.BoolDefaultTrue }}
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
diff --git a/overlays/wicked/internal/wicked_test.go b/overlays/wicked/internal/wicked_test.go
index c3cc7c46..4972b11a 100644
--- a/overlays/wicked/internal/wicked_test.go
+++ b/overlays/wicked/internal/wicked_test.go
@@ -66,7 +66,7 @@ This file is autogenerated by warewulf
wwnet0
ethernet
- manual
+ boot
@@ -101,7 +101,7 @@ This file is autogenerated by warewulf
wwnet1
ethernet
- manual
+ boot
diff --git a/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww b/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww
index fe32bb33..139d60ca 100644
--- a/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww
+++ b/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww
@@ -18,7 +18,7 @@ This file is autogenerated by warewulf
{{ $netdev.MTU }}
{{- end }}
- {{ if $netdev.OnBoot }}boot{{ else }}manual{{ end }}
+ {{ if $netdev.OnBoot.BoolDefaultTrue }}boot{{ else }}manual{{ end }}
diff --git a/overlays/wwinit/rootfs/warewulf/config.ww b/overlays/wwinit/rootfs/warewulf/config.ww
index d583902d..4ae9d323 100644
--- a/overlays/wwinit/rootfs/warewulf/config.ww
+++ b/overlays/wwinit/rootfs/warewulf/config.ww
@@ -7,4 +7,4 @@ WWIPMI_NETMASK="{{$.Ipmi.Netmask}}"
WWIPMI_GATEWAY="{{$.Ipmi.Gateway}}"
WWIPMI_USER="{{$.Ipmi.UserName}}"
WWIPMI_PASSWORD="{{$.Ipmi.Password}}"
-WWIPMI_WRITE="{{$.Ipmi.Write}}"
+WWIPMI_WRITE="{{$.Ipmi.Write.Bool}}"