From 6bfcfc5fda96a616759fd330029ed1211eb8d638 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Thu, 6 Feb 2025 16:43:21 -0700 Subject: [PATCH] Prevent merging of zero-value net.IP fields - Fixes: #1710 Signed-off-by: Jonathon Anderson --- CHANGELOG.md | 1 + internal/pkg/node/mergo.go | 2 +- internal/pkg/node/mergo_test.go | 13 ++++++++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 051e1c01..e5836469 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Create site overlay directory. #1690 - Set execute permissions for intermediate directories during `wwctl overlay import --parents`. #1655 - Fix log output formatting during overlay build. +- Prevent merging of zero-value net.IP fields. #1710 ## v4.6.0rc1, 2025-01-29 diff --git a/internal/pkg/node/mergo.go b/internal/pkg/node/mergo.go index 7f0b3cce..cb92c5e9 100644 --- a/internal/pkg/node/mergo.go +++ b/internal/pkg/node/mergo.go @@ -71,7 +71,7 @@ type Transformer struct{} func (t Transformer) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { if typ == reflect.TypeOf(net.IP{}) { return func(dst, src reflect.Value) error { - if !src.IsValid() || !src.CanSet() { + if !src.IsValid() || src.IsZero() { return nil } dst.Set(src) diff --git a/internal/pkg/node/mergo_test.go b/internal/pkg/node/mergo_test.go index 9b507d39..ac569a82 100644 --- a/internal/pkg/node/mergo_test.go +++ b/internal/pkg/node/mergo_test.go @@ -935,11 +935,14 @@ nodeprofiles: nodes: n1: profiles: - - p1`, - node: "n1", - field: "NetDevs[default].Netmask", - source: "p1", - value: "255.255.255.0", + - p1 + network devices: + default: + ipaddr: 192.168.1.1`, + nodes: []string{"n1", "n1"}, + fields: []string{"NetDevs[default].Netmask", "NetDevs[default].Ipaddr"}, + sources: []string{"p1", ""}, + values: []string{"255.255.255.0", "192.168.1.1"}, }, }