unit test + nil check pointers

This commit is contained in:
MatthewHink
2022-04-09 08:56:43 -04:00
parent 86624a6980
commit 086401a07c
3 changed files with 46 additions and 3 deletions

View File

@@ -61,14 +61,16 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error {
config.Nodes[nodeID].ClusterName = node.ClusterName.GetReal()
config.Nodes[nodeID].Ipxe = node.Ipxe.GetReal()
config.Nodes[nodeID].Init = node.Init.GetReal()
if node.Kernel.Override.GotReal() || node.Kernel.Args.GotReal() {
if node.Kernel != nil && (node.Kernel.Override.GotReal() || node.Kernel.Args.GotReal()) {
config.Nodes[nodeID].Kernel = new(KernelConf)
config.Nodes[nodeID].Kernel.Override = node.Kernel.Override.GetReal()
config.Nodes[nodeID].Kernel.Args = node.Kernel.Args.GetReal()
}
if node.Ipmi.Ipaddr.GotReal() || node.Ipmi.Netmask.GotReal() ||
if node.Ipmi != nil && (node.Ipmi.Ipaddr.GotReal() || node.Ipmi.Netmask.GotReal() ||
node.Ipmi.Port.GotReal() || node.Ipmi.Gateway.GotReal() || node.Ipmi.UserName.GotReal() ||
node.Ipmi.Password.GotReal() || node.Ipmi.Interface.GotReal() || node.Ipmi.Write.GotReal() {
node.Ipmi.Password.GotReal() || node.Ipmi.Interface.GotReal() || node.Ipmi.Write.GotReal()) {
config.Nodes[nodeID].Ipmi = new(IpmiConf)
config.Nodes[nodeID].Ipmi.Ipaddr = node.Ipmi.Ipaddr.GetReal()
config.Nodes[nodeID].Ipmi.Netmask = node.Ipmi.Netmask.GetReal()

View File

@@ -0,0 +1,40 @@
package node
import (
"testing"
"gopkg.in/yaml.v2"
"github.com/stretchr/testify/assert"
)
func TestNodeUpdate(t *testing.T) {
var nodeConfig = `
WW_INTERNAL: 43
nodeprofiles:
default:
comment: This profile is automatically included for each node
nodes:
n0000:
discoverable: true
profiles:
- default
network devices:
default:
onboot: true
device: eth0
hwaddr: 08:00:27:39:46:70
ipaddr: 10.0.8.150
`
var nodeYaml nodeYaml
err := yaml.Unmarshal([]byte(nodeConfig), &nodeYaml)
assert.NoError(t, err)
err = nodeYaml.NodeUpdate(
NodeInfo{
Id: Entry {
value: []string{"n0000"},
},
},
)
assert.NoError(t, err)
}