127 lines
2.5 KiB
Go
127 lines
2.5 KiB
Go
package warewulfd
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/warewulf/warewulf/internal/pkg/testenv"
|
|
)
|
|
|
|
func Test_GetNodeOrSetDiscoverable(t *testing.T) {
|
|
var tests = map[string]struct {
|
|
nodesConf string
|
|
hwaddr string
|
|
node string
|
|
err bool
|
|
initFiles []string
|
|
removedFiles []string
|
|
}{
|
|
"empty": {
|
|
nodesConf: `
|
|
nodes: {}
|
|
`,
|
|
hwaddr: "00:00:00:00:00:00",
|
|
err: true,
|
|
},
|
|
"configured": {
|
|
nodesConf: `
|
|
nodes:
|
|
n1:
|
|
network devices:
|
|
default:
|
|
hwaddr: 00:00:00:00:00:01
|
|
`,
|
|
hwaddr: "00:00:00:00:00:01",
|
|
node: "n1",
|
|
},
|
|
"discoverable": {
|
|
nodesConf: `
|
|
nodes:
|
|
n1:
|
|
discoverable: true
|
|
network devices:
|
|
default: {}
|
|
`,
|
|
hwaddr: "00:00:00:00:00:01",
|
|
node: "n1",
|
|
},
|
|
"discoverable autobuild": {
|
|
initFiles: []string{
|
|
"/srv/warewulf/overlays/n1/__SYSTEM__.img",
|
|
"/srv/warewulf/overlays/n1/__SYSTEM__.img.gz",
|
|
"/srv/warewulf/overlays/n1/__RUNTIME__.img",
|
|
"/srv/warewulf/overlays/n1/__RUNTIME__.img.gz",
|
|
},
|
|
removedFiles: []string{
|
|
"/srv/warewulf/overlays/n1/__SYSTEM__.img",
|
|
"/srv/warewulf/overlays/n1/__SYSTEM__.img.gz",
|
|
"/srv/warewulf/overlays/n1/__RUNTIME__.img",
|
|
"/srv/warewulf/overlays/n1/__RUNTIME__.img.gz",
|
|
},
|
|
nodesConf: `
|
|
nodes:
|
|
n1:
|
|
discoverable: true
|
|
network devices:
|
|
default: {}
|
|
`,
|
|
hwaddr: "00:00:00:00:00:01",
|
|
node: "n1",
|
|
},
|
|
"discoverable with primary": {
|
|
nodesConf: `
|
|
nodes:
|
|
n1:
|
|
discoverable: true
|
|
primary netdev: default
|
|
network devices:
|
|
default: {}
|
|
`,
|
|
hwaddr: "00:00:00:00:00:01",
|
|
node: "n1",
|
|
},
|
|
"discoverable without network": {
|
|
nodesConf: `
|
|
nodeprofiles:
|
|
default:
|
|
network devices:
|
|
default:
|
|
netmask: 255.255.255.0
|
|
nodes:
|
|
n1:
|
|
profiles:
|
|
- default
|
|
discoverable: true
|
|
`,
|
|
hwaddr: "00:00:00:00:00:01",
|
|
node: "n1",
|
|
},
|
|
}
|
|
|
|
for name, tt := range tests {
|
|
t.Run(name, func(t *testing.T) {
|
|
env := testenv.New(t)
|
|
for _, file := range tt.initFiles {
|
|
env.CreateFile(file)
|
|
}
|
|
defer env.RemoveAll()
|
|
env.WriteFile("/etc/warewulf/nodes.conf", tt.nodesConf)
|
|
|
|
err := LoadNodeDB()
|
|
assert.NoError(t, err)
|
|
|
|
node, err := GetNodeOrSetDiscoverable(tt.hwaddr, true)
|
|
if tt.err {
|
|
assert.Error(t, err)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tt.node, node.Id())
|
|
}
|
|
for _, file := range tt.removedFiles {
|
|
assert.NoFileExists(t, env.GetPath(file), "File should not exist: %s", file)
|
|
}
|
|
})
|
|
}
|
|
}
|