From 9d422db72cf88c13b939c891209f206186d7ecac Mon Sep 17 00:00:00 2001 From: Tomofumi Hayashi Date: Tue, 4 Jun 2024 03:00:18 +0900 Subject: [PATCH] Fix faulty json.Marshal behavior for embeds types.NetConf Signed-off-by: Tomofumi Hayashi --- pkg/types/types.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/types/types.go b/pkg/types/types.go index 193ac46e..d68ca043 100644 --- a/pkg/types/types.go +++ b/pkg/types/types.go @@ -56,8 +56,8 @@ func (n *IPNet) UnmarshalJSON(data []byte) error { return nil } -// NetConf describes a network. -type NetConf struct { +// NetConfType describes a network. +type NetConfType struct { CNIVersion string `json:"cniVersion,omitempty"` Name string `json:"name,omitempty"` @@ -73,6 +73,9 @@ type NetConf struct { ValidAttachments []GCAttachment `json:"cni.dev/valid-attachments,omitempty"` } +// NetConf is defined as different type as custom MarshalJSON() and issue #1096 +type NetConf NetConfType + // GCAttachment is the parameters to a GC call -- namely, // the container ID and ifname pair that represents a // still-valid attachment. @@ -83,11 +86,11 @@ type GCAttachment struct { // Note: DNS should be omit if DNS is empty but default Marshal function // will output empty structure hence need to write a Marshal function -func (n *NetConf) MarshalJSON() ([]byte, error) { +func (n *NetConfType) MarshalJSON() ([]byte, error) { // use type alias to escape recursion for json.Marshal() to MarshalJSON() type fixObjType = NetConf - bytes, err := json.Marshal(fixObjType(*n)) //nolint:all + bytes, err := json.Marshal(fixObjType(*n)) if err != nil { return nil, err }