Open exklamationmark opened 1 month ago
I believe this could be changed by making the Template
field a pointer, like so:
type ListGenerator struct {
// +kubebuilder:validation:Optional
Elements []apiextensionsv1.JSON `json:"elements" protobuf:"bytes,1,name=elements"`
Template *ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,2,name=template"` // <--- changed to pointer
ElementsYaml string `json:"elementsYaml,omitempty" protobuf:"bytes,3,opt,name=elementsYaml"`
}
I also don't mind making a PR for it
A quick attempt at this:
make codegen
=> did not change anythingpkg/apis/application/v1alpha1
package => failed$> go build ./pkg/apis/application/v1alpha1/
# github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:1644:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:1837:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:1994:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:2466:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:2520:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:2549:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:2834:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:2966:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go:3824:27: cannot use &out.Template (value of type **ApplicationSetTemplate) as *ApplicationSetTemplate value in argument to in.Template.DeepCopyInto
I might be missing some steps in the codegen, but the script doesn't seem to pickup the fact that the type has changed.
Checklist:
argocd version
.Describe the bug
When creating an
ApplicationSet
programmatically, various generators (ListGenerator
,ClusterGenerator
, etc) generates an extratemplate
field when encoded to JSON. This happen even if we leave theirTemplate
field zero-valued.To Reproduce
Output:
This is not impacting the
ApplicationSet
's functionality, but could be confusing when users see something they didn't declared.We are observing this as we have another program that creates
ApplicationSet
through API calls, instead ofkubectl apply
.Expected behavior
Definition:
At a glance, the field is defined with
omitempty
. So we expected it to not be included in the JSON. However, theTemplate
field is actually a struct, so it is not considered a "zero-value" inencoding/json
:Screenshots
N/A
Version
Logs