Skip to content

Commit 93ca425

Browse files
(fix) remove omitempty from nested struct JSON tags in API scaffolds
Remove omitempty from JSON tags on nested struct fields such as metav1 ObjectMeta Status and metav1 ListMeta in API type scaffolds The omitempty tag has no effect on nested structs in Go and triggers linter warnings For Go version 1.24+ and later omitzero correctly handles nested structs and omits them when empty making omitempty redundant and misleading The optional markers already indicate optional fields for CRD schema generation Updated JSON tags: - metav1 ObjectMeta metadata omitempty omitzero becomes metadata omitzero - Status fields status omitempty omitzero becomes status omitzero - metav1 ListMeta metadata omitempty becomes metadata omitzero This resolves linter warnings from gopls modernize analyzer and kube api linter while maintaining correct behavior for projects using Go 1.24+ Signed-off-by: Camila Macedo <7708031+camilamacedo86@users.noreply.github.com>
1 parent 08a0d45 commit 93ca425

File tree

28 files changed

+84
-84
lines changed

28 files changed

+84
-84
lines changed

docs/book/src/cronjob-tutorial/testdata/project/api/v1/cronjob_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,23 +192,23 @@ type CronJob struct {
192192

193193
// metadata is a standard object metadata
194194
// +optional
195-
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`
195+
metav1.ObjectMeta `json:"metadata,omitzero"`
196196

197197
// spec defines the desired state of CronJob
198198
// +required
199199
Spec CronJobSpec `json:"spec"`
200200

201201
// status defines the observed state of CronJob
202202
// +optional
203-
Status CronJobStatus `json:"status,omitempty,omitzero"`
203+
Status CronJobStatus `json:"status,omitzero"`
204204
}
205205

206206
// +kubebuilder:object:root=true
207207

208208
// CronJobList contains a list of CronJob
209209
type CronJobList struct {
210210
metav1.TypeMeta `json:",inline"`
211-
metav1.ListMeta `json:"metadata,omitempty"`
211+
metav1.ListMeta `json:"metadata,omitzero"`
212212
Items []CronJob `json:"items"`
213213
}
214214

docs/book/src/getting-started/testdata/project/api/v1alpha1/memcached_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,23 +75,23 @@ type Memcached struct {
7575

7676
// metadata is a standard object metadata
7777
// +optional
78-
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`
78+
metav1.ObjectMeta `json:"metadata,omitzero"`
7979

8080
// spec defines the desired state of Memcached
8181
// +required
8282
Spec MemcachedSpec `json:"spec"`
8383

8484
// status defines the observed state of Memcached
8585
// +optional
86-
Status MemcachedStatus `json:"status,omitempty,omitzero"`
86+
Status MemcachedStatus `json:"status,omitzero"`
8787
}
8888

8989
// +kubebuilder:object:root=true
9090

9191
// MemcachedList contains a list of Memcached
9292
type MemcachedList struct {
9393
metav1.TypeMeta `json:",inline"`
94-
metav1.ListMeta `json:"metadata,omitempty"`
94+
metav1.ListMeta `json:"metadata,omitzero"`
9595
Items []Memcached `json:"items"`
9696
}
9797

docs/book/src/multiversion-tutorial/testdata/project/api/v1/cronjob_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,15 @@ type CronJob struct {
156156

157157
// metadata is a standard object metadata
158158
// +optional
159-
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`
159+
metav1.ObjectMeta `json:"metadata,omitzero"`
160160

161161
// spec defines the desired state of CronJob
162162
// +required
163163
Spec CronJobSpec `json:"spec"`
164164

165165
// status defines the observed state of CronJob
166166
// +optional
167-
Status CronJobStatus `json:"status,omitempty,omitzero"`
167+
Status CronJobStatus `json:"status,omitzero"`
168168
}
169169

170170
/*
@@ -175,7 +175,7 @@ type CronJob struct {
175175
// CronJobList contains a list of CronJob
176176
type CronJobList struct {
177177
metav1.TypeMeta `json:",inline"`
178-
metav1.ListMeta `json:"metadata,omitempty"`
178+
metav1.ListMeta `json:"metadata,omitzero"`
179179
Items []CronJob `json:"items"`
180180
}
181181

docs/book/src/multiversion-tutorial/testdata/project/api/v2/cronjob_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,23 +186,23 @@ type CronJob struct {
186186

187187
// metadata is a standard object metadata
188188
// +optional
189-
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`
189+
metav1.ObjectMeta `json:"metadata,omitzero"`
190190

191191
// spec defines the desired state of CronJob
192192
// +required
193193
Spec CronJobSpec `json:"spec"`
194194

195195
// status defines the observed state of CronJob
196196
// +optional
197-
Status CronJobStatus `json:"status,omitempty,omitzero"`
197+
Status CronJobStatus `json:"status,omitzero"`
198198
}
199199

200200
// +kubebuilder:object:root=true
201201

202202
// CronJobList contains a list of CronJob
203203
type CronJobList struct {
204204
metav1.TypeMeta `json:",inline"`
205-
metav1.ListMeta `json:"metadata,omitempty"`
205+
metav1.ListMeta `json:"metadata,omitzero"`
206206
Items []CronJob `json:"items"`
207207
}
208208

pkg/plugins/golang/deploy-image/v1alpha1/scaffolds/internal/templates/api/types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,23 +126,23 @@ type {{ .Resource.Kind }} struct {
126126
127127
// metadata is a standard object metadata
128128
// +optional
129-
metav1.ObjectMeta ` + "`" + `json:"metadata,omitempty,omitzero"` + "`" + `
129+
metav1.ObjectMeta ` + "`" + `json:"metadata,omitzero"` + "`" + `
130130
131131
// spec defines the desired state of {{ .Resource.Kind }}
132132
// +required
133133
Spec {{ .Resource.Kind }}Spec ` + "`" + `json:"spec"` + "`" + `
134134
135135
// status defines the observed state of {{ .Resource.Kind }}
136136
// +optional
137-
Status {{ .Resource.Kind }}Status ` + "`" + `json:"status,omitempty,omitzero"` + "`" + `
137+
Status {{ .Resource.Kind }}Status ` + "`" + `json:"status,omitzero"` + "`" + `
138138
}
139139
140140
// +kubebuilder:object:root=true
141141
142142
// {{ .Resource.Kind }}List contains a list of {{ .Resource.Kind }}
143143
type {{ .Resource.Kind }}List struct {
144144
metav1.TypeMeta ` + "`" + `json:",inline"` + "`" + `
145-
metav1.ListMeta ` + "`" + `json:"metadata,omitempty"` + "`" + `
145+
metav1.ListMeta ` + "`" + `json:"metadata,omitzero"` + "`" + `
146146
Items []{{ .Resource.Kind }} ` + "`" + `json:"items"` + "`" + `
147147
}
148148

pkg/plugins/golang/v4/scaffolds/internal/templates/api/types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,23 +124,23 @@ type {{ .Resource.Kind }} struct {
124124
125125
// metadata is a standard object metadata
126126
// +optional
127-
metav1.ObjectMeta ` + "`" + `json:"metadata,omitempty,omitzero"` + "`" + `
127+
metav1.ObjectMeta ` + "`" + `json:"metadata,omitzero"` + "`" + `
128128
129129
// spec defines the desired state of {{ .Resource.Kind }}
130130
// +required
131131
Spec {{ .Resource.Kind }}Spec ` + "`" + `json:"spec"` + "`" + `
132132
133133
// status defines the observed state of {{ .Resource.Kind }}
134134
// +optional
135-
Status {{ .Resource.Kind }}Status ` + "`" + `json:"status,omitempty,omitzero"` + "`" + `
135+
Status {{ .Resource.Kind }}Status ` + "`" + `json:"status,omitzero"` + "`" + `
136136
}
137137
138138
// +kubebuilder:object:root=true
139139
140140
// {{ .Resource.Kind }}List contains a list of {{ .Resource.Kind }}
141141
type {{ .Resource.Kind }}List struct {
142142
metav1.TypeMeta ` + "`" + `json:",inline"` + "`" + `
143-
metav1.ListMeta ` + "`" + `json:"metadata,omitempty"` + "`" + `
143+
metav1.ListMeta ` + "`" + `json:"metadata,omitzero"` + "`" + `
144144
Items []{{ .Resource.Kind }} ` + "`" + `json:"items"` + "`" + `
145145
}
146146

testdata/project-v4-multigroup/api/crew/v1/captain_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,23 +67,23 @@ type Captain struct {
6767

6868
// metadata is a standard object metadata
6969
// +optional
70-
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`
70+
metav1.ObjectMeta `json:"metadata,omitzero"`
7171

7272
// spec defines the desired state of Captain
7373
// +required
7474
Spec CaptainSpec `json:"spec"`
7575

7676
// status defines the observed state of Captain
7777
// +optional
78-
Status CaptainStatus `json:"status,omitempty,omitzero"`
78+
Status CaptainStatus `json:"status,omitzero"`
7979
}
8080

8181
// +kubebuilder:object:root=true
8282

8383
// CaptainList contains a list of Captain
8484
type CaptainList struct {
8585
metav1.TypeMeta `json:",inline"`
86-
metav1.ListMeta `json:"metadata,omitempty"`
86+
metav1.ListMeta `json:"metadata,omitzero"`
8787
Items []Captain `json:"items"`
8888
}
8989

testdata/project-v4-multigroup/api/example.com/v1/wordpress_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,23 @@ type Wordpress struct {
6868

6969
// metadata is a standard object metadata
7070
// +optional
71-
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`
71+
metav1.ObjectMeta `json:"metadata,omitzero"`
7272

7373
// spec defines the desired state of Wordpress
7474
// +required
7575
Spec WordpressSpec `json:"spec"`
7676

7777
// status defines the observed state of Wordpress
7878
// +optional
79-
Status WordpressStatus `json:"status,omitempty,omitzero"`
79+
Status WordpressStatus `json:"status,omitzero"`
8080
}
8181

8282
// +kubebuilder:object:root=true
8383

8484
// WordpressList contains a list of Wordpress
8585
type WordpressList struct {
8686
metav1.TypeMeta `json:",inline"`
87-
metav1.ListMeta `json:"metadata,omitempty"`
87+
metav1.ListMeta `json:"metadata,omitzero"`
8888
Items []Wordpress `json:"items"`
8989
}
9090

testdata/project-v4-multigroup/api/example.com/v1alpha1/busybox_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,23 +66,23 @@ type Busybox struct {
6666

6767
// metadata is a standard object metadata
6868
// +optional
69-
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`
69+
metav1.ObjectMeta `json:"metadata,omitzero"`
7070

7171
// spec defines the desired state of Busybox
7272
// +required
7373
Spec BusyboxSpec `json:"spec"`
7474

7575
// status defines the observed state of Busybox
7676
// +optional
77-
Status BusyboxStatus `json:"status,omitempty,omitzero"`
77+
Status BusyboxStatus `json:"status,omitzero"`
7878
}
7979

8080
// +kubebuilder:object:root=true
8181

8282
// BusyboxList contains a list of Busybox
8383
type BusyboxList struct {
8484
metav1.TypeMeta `json:",inline"`
85-
metav1.ListMeta `json:"metadata,omitempty"`
85+
metav1.ListMeta `json:"metadata,omitzero"`
8686
Items []Busybox `json:"items"`
8787
}
8888

testdata/project-v4-multigroup/api/example.com/v1alpha1/memcached_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,23 @@ type Memcached struct {
7070

7171
// metadata is a standard object metadata
7272
// +optional
73-
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`
73+
metav1.ObjectMeta `json:"metadata,omitzero"`
7474

7575
// spec defines the desired state of Memcached
7676
// +required
7777
Spec MemcachedSpec `json:"spec"`
7878

7979
// status defines the observed state of Memcached
8080
// +optional
81-
Status MemcachedStatus `json:"status,omitempty,omitzero"`
81+
Status MemcachedStatus `json:"status,omitzero"`
8282
}
8383

8484
// +kubebuilder:object:root=true
8585

8686
// MemcachedList contains a list of Memcached
8787
type MemcachedList struct {
8888
metav1.TypeMeta `json:",inline"`
89-
metav1.ListMeta `json:"metadata,omitempty"`
89+
metav1.ListMeta `json:"metadata,omitzero"`
9090
Items []Memcached `json:"items"`
9191
}
9292

0 commit comments

Comments
 (0)