Files
warewulf/overlays/wicked/internal/wicked_test.go
Jonathon Anderson c209dadc1f Update network interface bonding configuration and documentation
- Closes: #1482
- Closes: #1280

This also corrects poor handling of whitespace around the "file" function
throughout the templates, given experiences with the network templates while
implementing the bond behavior. Since the file function actually does produce
output (that is parsed by Warewulf itself) it should not collaps prefix
whitespace.

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
2025-01-21 09:42:27 -07:00

202 lines
4.3 KiB
Go

package wicked
import (
"bytes"
"testing"
"github.com/stretchr/testify/assert"
"github.com/warewulf/warewulf/internal/app/wwctl/overlay/show"
"github.com/warewulf/warewulf/internal/pkg/testenv"
"github.com/warewulf/warewulf/internal/pkg/wwlog"
)
func Test_wickedOverlay(t *testing.T) {
env := testenv.New(t)
defer env.RemoveAll()
env.ImportFile("var/lib/warewulf/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww", "../rootfs/etc/wicked/ifconfig/ifcfg.xml.ww")
tests := []struct {
name string
nodes_conf string
args []string
log string
}{
{
name: "wicked",
nodes_conf: "nodes.conf",
args: []string{"--render", "node1", "wicked", "etc/wicked/ifconfig/ifcfg.xml.ww"},
log: wicked,
},
{
name: "wicked-vlans",
nodes_conf: "nodes.conf-vlan",
args: []string{"--render", "node1", "wicked", "etc/wicked/ifconfig/ifcfg.xml.ww"},
log: wicked_vlans,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
env.ImportFile("etc/warewulf/nodes.conf", tt.nodes_conf)
cmd := show.GetCommand()
cmd.SetArgs(tt.args)
stdout := bytes.NewBufferString("")
stderr := bytes.NewBufferString("")
logbuf := bytes.NewBufferString("")
cmd.SetOut(stdout)
cmd.SetErr(stderr)
wwlog.SetLogWriter(logbuf)
err := cmd.Execute()
assert.NoError(t, err)
assert.Empty(t, stdout.String())
assert.Empty(t, stderr.String())
assert.Equal(t, tt.log, logbuf.String())
})
}
}
const wicked string = `backupFile: true
writeFile: true
Filename: ifcfg-default.xml
<!--
This file is autogenerated by warewulf
-->
<interface origin="static generated warewulf config">
<name>wwnet0</name>
<link-type>ethernet</link-type>
<control>
<mode>manual</mode>
</control>
<firewall/>
<link/>
<ipv4>
<enabled>true</enabled>
<arp-verify>true</arp-verify>
</ipv4>
<ipv4:static>
<address>
<local>192.168.3.21/24</local>
</address>
<route>
<nexthop>
<gateway>192.168.3.1</gateway>
</nexthop>
</route>
</ipv4:static>
<ipv6>
<enabled>true</enabled>
<privacy>prefer-public</privacy>
<accept-redirects>false</accept-redirects>
</ipv6>
</interface>
backupFile: true
writeFile: true
Filename: ifcfg-secondary.xml
<!--
This file is autogenerated by warewulf
-->
<interface origin="static generated warewulf config">
<name>wwnet1</name>
<link-type>ethernet</link-type>
<control>
<mode>manual</mode>
</control>
<firewall/>
<link/>
<ipv4>
<enabled>true</enabled>
<arp-verify>true</arp-verify>
</ipv4>
<ipv4:static>
<address>
<local>192.168.3.22/24</local>
</address>
<route>
<nexthop>
<gateway>192.168.3.1</gateway>
</nexthop>
</route>
</ipv4:static>
<ipv6>
<enabled>true</enabled>
<privacy>prefer-public</privacy>
<accept-redirects>false</accept-redirects>
</ipv6>
</interface>
`
const wicked_vlans string = `backupFile: true
writeFile: true
Filename: ifcfg-tagged.xml
<!--
This file is autogenerated by warewulf
-->
<interface origin="static generated warewulf config">
<name>eth0.902</name>
<link-type>vlan</link-type>
<vlan>
<device>eth0</device>
<tag>902</tag>
<protocol>ieee802-1Q</protocol>
</vlan>
<control>
<mode>boot</mode>
</control>
<firewall/>
<link/>
<ipv4>
<enabled>true</enabled>
<arp-verify>true</arp-verify>
</ipv4>
<ipv4:static>
<address>
<local><nil></local>
</address>
<route>
<destination>192.168.1.0/24</destination>
<nexthop>
<gateway>192.168.2.254</gateway>
</nexthop>
</route>
</ipv4:static>
<ipv6>
<enabled>true</enabled>
<privacy>prefer-public</privacy>
<accept-redirects>false</accept-redirects>
</ipv6>
</interface>
backupFile: true
writeFile: true
Filename: ifcfg-untagged.xml
<!--
This file is autogenerated by warewulf
-->
<interface origin="static generated warewulf config">
<name>eth0</name>
<link-type>ethernet</link-type>
<control>
<mode>boot</mode>
</control>
<firewall/>
<link/>
<ipv4>
<enabled>true</enabled>
<arp-verify>true</arp-verify>
</ipv4>
<ipv4:static>
<address>
<local><nil></local>
</address>
</ipv4:static>
<ipv6>
<enabled>true</enabled>
<privacy>prefer-public</privacy>
<accept-redirects>false</accept-redirects>
</ipv6>
</interface>
`