From 53be931f87c7a7e128f54c3f432546a479a5a69b Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Tue, 29 Nov 2022 10:53:53 +0100 Subject: [PATCH] fix tests for fransfomer --- internal/pkg/node/transformers.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/internal/pkg/node/transformers.go b/internal/pkg/node/transformers.go index 18a1649a..177d7d49 100644 --- a/internal/pkg/node/transformers.go +++ b/internal/pkg/node/transformers.go @@ -72,7 +72,8 @@ func (nodeConf *NodeConf) getterFrom(nodeInfo NodeInfo, for key, val := range entryMap { confMap[key] = getter(val) } - } else if nodeInfoVal.Field(i).Type().Kind() == reflect.Ptr { + } else if nodeInfoVal.Field(i).Type().Kind() == reflect.Ptr && !nodeInfoVal.Field(i).IsNil() { + // initialize the nested NodeConf structs, but only if these will be set if confField.Addr().Elem().IsZero() { switch confField.Addr().Elem().Type() { case reflect.TypeOf((*KernelConf)(nil)): @@ -341,6 +342,11 @@ func (node *NodeInfo) setterFrom(n *NodeConf, nameArg string, if node.Ipmi == nil { node.Ipmi = new(IpmiEntry) } + // also n could be nil + if n == nil { + myn := NewConf() + n = &myn + } nodeInfoVal := reflect.ValueOf(node) nodeInfoType := reflect.TypeOf(node) nodeConfVal := reflect.ValueOf(n) @@ -509,6 +515,10 @@ Abstract function for setting a NetDevEntry from a NetDevs func (netDev *NetDevEntry) setterFrom(netYaml *NetDevs, nameArg string, setter func(*Entry, string, string), setterSlice func(*Entry, []string, string)) { + // check if netYaml is empty + if netYaml == nil { + netYaml = new(NetDevs) + } netValues := reflect.ValueOf(netDev) netInfoType := reflect.TypeOf(*netYaml) netInfoVal := reflect.ValueOf(*netYaml)