Skip to content

Commit 087c08d

Browse files
committed
Change omitempty to omitzero on non-pointer API structs
The "modernize" analyzer of "gopls" recommends this change, and it simplifies some validation tests. The old tag implies "+optional" for backward compatibility. The new tag does not, so a few fields need the marker. Issue: PGO-2582
1 parent d62abd7 commit 087c08d

13 files changed

+81
-111
lines changed

internal/bridge/client.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ type ClusterApiResource struct {
7171
Network string `json:"network_id,omitempty"`
7272
Parent string `json:"parent_id,omitempty"`
7373
Plan string `json:"plan_id,omitempty"`
74-
PostgresVersion intstr.IntOrString `json:"postgres_version_id,omitempty"`
74+
PostgresVersion intstr.IntOrString `json:"postgres_version_id,omitzero"`
7575
Provider string `json:"provider_id,omitempty"`
7676
Region string `json:"region_id,omitempty"`
7777
Replicas []*ClusterApiResource `json:"replicas,omitempty"`
@@ -188,7 +188,7 @@ type PostClustersRequestPayload struct {
188188
IsHA bool `json:"is_ha,omitempty"`
189189
Keychain string `json:"keychain_id,omitempty"`
190190
Network string `json:"network_id,omitempty"`
191-
PostgresVersion intstr.IntOrString `json:"postgres_version_id,omitempty"`
191+
PostgresVersion intstr.IntOrString `json:"postgres_version_id,omitzero"`
192192
Provider string `json:"provider_id,omitempty"`
193193
Region string `json:"region_id,omitempty"`
194194
Storage int64 `json:"storage,omitempty"`
@@ -198,7 +198,7 @@ type PostClustersRequestPayload struct {
198198
// changing its plan, upgrading its major version, or increasing its storage size.
199199
type PostClustersUpgradeRequestPayload struct {
200200
Plan string `json:"plan_id,omitempty"`
201-
PostgresVersion intstr.IntOrString `json:"postgres_version_id,omitempty"`
201+
PostgresVersion intstr.IntOrString `json:"postgres_version_id,omitzero"`
202202
UpgradeStartTime string `json:"starting_from,omitempty"`
203203
Storage int64 `json:"storage,omitempty"`
204204
}
@@ -207,7 +207,7 @@ type PostClustersUpgradeRequestPayload struct {
207207
// TODO: Implement the ability to update an upgrade (this isn't currently being used)
208208
type PutClustersUpgradeRequestPayload struct {
209209
Plan string `json:"plan_id,omitempty"`
210-
PostgresVersion intstr.IntOrString `json:"postgres_version_id,omitempty"`
210+
PostgresVersion intstr.IntOrString `json:"postgres_version_id,omitzero"`
211211
UpgradeStartTime string `json:"starting_from,omitempty"`
212212
Storage int64 `json:"storage,omitempty"`
213213
UseMaintenanceWindow *bool `json:"use_cluster_maintenance_window,omitempty"`

internal/testing/validation/postgrescluster_test.go

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@ func TestPostgresAuthenticationRules(t *testing.T) {
3232
// Start with a bunch of required fields.
3333
require.UnmarshalInto(t, &base.Spec, `{
3434
postgresVersion: 16,
35-
backups: {
36-
pgbackrest: {
37-
repos: [{ name: repo1 }],
38-
},
39-
},
4035
instances: [{
4136
dataVolumeClaimSpec: {
4237
accessModes: [ReadWriteOnce],
@@ -246,11 +241,6 @@ func TestPostgresConfigParameters(t *testing.T) {
246241
// Start with a bunch of required fields.
247242
require.UnmarshalInto(t, &base.Spec, `{
248243
postgresVersion: 16,
249-
backups: {
250-
pgbackrest: {
251-
repos: [{ name: repo1 }],
252-
},
253-
},
254244
instances: [{
255245
dataVolumeClaimSpec: {
256246
accessModes: [ReadWriteOnce],
@@ -439,11 +429,6 @@ func TestPostgresUserOptions(t *testing.T) {
439429
// Start with a bunch of required fields.
440430
require.UnmarshalInto(t, &base.Spec, `{
441431
postgresVersion: 16,
442-
backups: {
443-
pgbackrest: {
444-
repos: [{ name: repo1 }],
445-
},
446-
},
447432
instances: [{
448433
dataVolumeClaimSpec: {
449434
accessModes: [ReadWriteOnce],
@@ -551,11 +536,6 @@ func TestPostgresUserInterfaceAcrossVersions(t *testing.T) {
551536
},
552537
},
553538
postgresVersion: 16,
554-
backups: {
555-
pgbackrest: {
556-
repos: [{ name: repo1 }],
557-
},
558-
},
559539
instances: [{
560540
dataVolumeClaimSpec: {
561541
accessModes: [ReadWriteOnce],
@@ -578,11 +558,6 @@ func TestPostgresUserInterfaceAcrossVersions(t *testing.T) {
578558
},
579559
},
580560
postgresVersion: 16,
581-
backups: {
582-
pgbackrest: {
583-
repos: [{ name: repo1 }],
584-
},
585-
},
586561
instances: [{
587562
dataVolumeClaimSpec: {
588563
accessModes: [ReadWriteOnce],

pkg/apis/postgres-operator.crunchydata.com/v1/postgrescluster_types.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ type PostgresClusterSpec struct {
2929

3030
// PostgreSQL backup configuration
3131
// +optional
32-
Backups Backups `json:"backups,omitempty"`
32+
Backups Backups `json:"backups,omitzero"`
3333

3434
// General configuration of the PostgreSQL server
3535
// +optional
@@ -294,7 +294,7 @@ type PostgresClusterDataSource struct {
294294

295295
// Resource requirements for the pgBackRest restore Job.
296296
// +optional
297-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
297+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
298298

299299
// Scheduling constraints of the pgBackRest restore Job.
300300
// More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
@@ -363,7 +363,7 @@ type PostgresClusterStatus struct {
363363
InstanceSets []PostgresInstanceSetStatus `json:"instances,omitempty"`
364364

365365
// +optional
366-
Patroni v1beta1.PatroniStatus `json:"patroni,omitempty"`
366+
Patroni v1beta1.PatroniStatus `json:"patroni,omitzero"`
367367

368368
// Status information for pgBackRest
369369
// +optional
@@ -382,7 +382,7 @@ type PostgresClusterStatus struct {
382382

383383
// Current state of the PostgreSQL proxy.
384384
// +optional
385-
Proxy PostgresProxyStatus `json:"proxy,omitempty"`
385+
Proxy PostgresProxyStatus `json:"proxy,omitzero"`
386386

387387
// The instance that should be started first when bootstrapping and/or starting a
388388
// PostgresCluster.
@@ -402,7 +402,7 @@ type PostgresClusterStatus struct {
402402

403403
// Current state of PostgreSQL cluster monitoring tool configuration
404404
// +optional
405-
Monitoring MonitoringStatus `json:"monitoring,omitempty"`
405+
Monitoring MonitoringStatus `json:"monitoring,omitzero"`
406406

407407
// DatabaseInitSQL state of custom database initialization in the cluster
408408
// +optional
@@ -495,7 +495,7 @@ type PostgresInstanceSetSpec struct {
495495

496496
// Compute resources of a PostgreSQL container.
497497
// +optional
498-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
498+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
499499

500500
// Configuration for instance sidecar containers
501501
// +optional
@@ -617,7 +617,8 @@ type RegistrationRequirementStatus struct {
617617
}
618618

619619
type PostgresProxyStatus struct {
620-
PGBouncer v1beta1.PGBouncerPodStatus `json:"pgBouncer,omitempty"`
620+
// +optional
621+
PGBouncer v1beta1.PGBouncerPodStatus `json:"pgBouncer,omitzero"`
621622
}
622623

623624
// PostgresStandbySpec defines if/how the cluster should be a hot standby.
@@ -663,7 +664,8 @@ func (s *UserInterfaceSpec) Default() {
663664
type PostgresUserInterfaceStatus struct {
664665

665666
// The state of the pgAdmin user interface.
666-
PGAdmin v1beta1.PGAdminPodStatus `json:"pgAdmin,omitempty"`
667+
// +optional
668+
PGAdmin v1beta1.PGAdminPodStatus `json:"pgAdmin,omitzero"`
667669
}
668670

669671
// +kubebuilder:object:root=true
@@ -676,14 +678,17 @@ type PostgresCluster struct {
676678
// - https://docs.k8s.io/concepts/overview/working-with-objects/names/#dns-subdomain-names
677679
// - https://releases.k8s.io/v1.21.0/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/validator.go#L60
678680

679-
metav1.TypeMeta `json:",inline"`
680-
metav1.ObjectMeta `json:"metadata,omitempty"`
681+
metav1.TypeMeta `json:",inline"`
682+
// +optional
683+
metav1.ObjectMeta `json:"metadata,omitzero"`
681684

682685
// NOTE(cbandy): Every PostgresCluster needs a Spec, but it is optional here
683686
// so ObjectMeta can be managed independently.
684687

685-
Spec PostgresClusterSpec `json:"spec,omitempty"`
686-
Status PostgresClusterStatus `json:"status,omitempty"`
688+
// +optional
689+
Spec PostgresClusterSpec `json:"spec,omitzero"`
690+
// +optional
691+
Status PostgresClusterStatus `json:"status,omitzero"`
687692
}
688693

689694
// Default implements "sigs.k8s.io/controller-runtime/pkg/webhook.Defaulter" so
@@ -704,7 +709,7 @@ func (c *PostgresCluster) Default() {
704709
// PostgresClusterList contains a list of PostgresCluster
705710
type PostgresClusterList struct {
706711
metav1.TypeMeta `json:",inline"`
707-
metav1.ListMeta `json:"metadata,omitempty"`
712+
metav1.ListMeta `json:"metadata,omitzero"`
708713
Items []PostgresCluster `json:"items"`
709714
}
710715

pkg/apis/postgres-operator.crunchydata.com/v1beta1/crunchy_bridgecluster_types.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,14 +204,17 @@ type CrunchyBridgeCluster struct {
204204
// - https://releases.k8s.io/v1.21.0/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/validator.go#L60
205205

206206
// In Bridge json, meta.name is "name"
207-
metav1.TypeMeta `json:",inline"`
208-
metav1.ObjectMeta `json:"metadata,omitempty"`
207+
metav1.TypeMeta `json:",inline"`
208+
// +optional
209+
metav1.ObjectMeta `json:"metadata,omitzero"`
209210

210211
// NOTE(cbandy): Every CrunchyBridgeCluster needs a Spec, but it is optional here
211212
// so ObjectMeta can be managed independently.
212213

213-
Spec CrunchyBridgeClusterSpec `json:"spec,omitempty"`
214-
Status CrunchyBridgeClusterStatus `json:"status,omitempty"`
214+
// +optional
215+
Spec CrunchyBridgeClusterSpec `json:"spec,omitzero"`
216+
// +optional
217+
Status CrunchyBridgeClusterStatus `json:"status,omitzero"`
215218
}
216219

217220
// Default implements "sigs.k8s.io/controller-runtime/pkg/webhook.Defaulter" so
@@ -231,7 +234,9 @@ func (c *CrunchyBridgeCluster) Default() {
231234
// CrunchyBridgeClusterList contains a list of CrunchyBridgeCluster
232235
type CrunchyBridgeClusterList struct {
233236
metav1.TypeMeta `json:",inline"`
234-
metav1.ListMeta `json:"metadata,omitempty"`
237+
238+
// +optional
239+
metav1.ListMeta `json:"metadata,omitzero"`
235240
Items []CrunchyBridgeCluster `json:"items"`
236241
}
237242

pkg/apis/postgres-operator.crunchydata.com/v1beta1/instrumentation_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ type InstrumentationSpec struct {
1818
// Resources holds the resource requirements for the collector container.
1919
// ---
2020
// +optional
21-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
21+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
2222

2323
// Config is the place for users to configure exporters and provide files.
2424
// ---

pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgadmin_types.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ type PGAdminPodSpec struct {
4444
// values will be loaded without validation. Be careful, as
4545
// you may put pgAdmin into an unusable state.
4646
// +optional
47-
Config PGAdminConfiguration `json:"config,omitempty"`
47+
Config PGAdminConfiguration `json:"config,omitzero"`
4848

4949
// Defines a PersistentVolumeClaim for pgAdmin data.
5050
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
@@ -76,7 +76,7 @@ type PGAdminPodSpec struct {
7676
// pgAdmin to restart.
7777
// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
7878
// +optional
79-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
79+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
8080

8181
// Specification of the service that exposes pgAdmin.
8282
// +optional

pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgbackrest_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ type BackupJobs struct {
153153
// Resource limits for backup jobs. Includes manual, scheduled and replica
154154
// create backups
155155
// +optional
156-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
156+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
157157

158158
// Priority class name for the pgBackRest backup Job pods.
159159
// More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
@@ -208,7 +208,7 @@ type PGBackRestRepoHost struct {
208208

209209
// Resource requirements for a pgBackRest repository host
210210
// +optional
211-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
211+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
212212

213213
// Tolerations of a PgBackRest repo host pod. Changing this value causes a restart.
214214
// More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
@@ -442,7 +442,7 @@ type PGBackRestDataSource struct {
442442

443443
// Resource requirements for the pgBackRest restore Job.
444444
// +optional
445-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
445+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
446446

447447
// Scheduling constraints of the pgBackRest restore Job.
448448
// More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node

pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgbouncer_types.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ type PGBouncerPodSpec struct {
6060
// you may put PgBouncer into an unusable state.
6161
// More info: https://www.pgbouncer.org/usage.html#reload
6262
// +optional
63-
Config PGBouncerConfiguration `json:"config,omitempty"`
63+
Config PGBouncerConfiguration `json:"config,omitzero"`
6464

6565
// Custom sidecars for a PgBouncer pod. Changing this value causes
6666
// PgBouncer to restart.
@@ -110,7 +110,7 @@ type PGBouncerPodSpec struct {
110110
// PgBouncer to restart.
111111
// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
112112
// +optional
113-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
113+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
114114

115115
// Specification of the service that exposes PgBouncer.
116116
// +optional

pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgmonitor_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@ type ExporterSpec struct {
3535
// Changing this value causes PostgreSQL and the exporter to restart.
3636
// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
3737
// +optional
38-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
38+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
3939
}

pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgupgrade_types.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ type PGUpgradeSpec struct {
4949

5050
// Resource requirements for the PGUpgrade container.
5151
// +optional
52-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
52+
Resources corev1.ResourceRequirements `json:"resources,omitzero"`
5353

5454
// Scheduling constraints of the PGUpgrade pod.
5555
// More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
@@ -140,19 +140,22 @@ type PGUpgradeStatus struct {
140140

141141
// PGUpgrade is the Schema for the pgupgrades API
142142
type PGUpgrade struct {
143-
metav1.TypeMeta `json:",inline"`
144-
metav1.ObjectMeta `json:"metadata,omitempty"`
143+
metav1.TypeMeta `json:",inline"`
144+
// +optional
145+
metav1.ObjectMeta `json:"metadata,omitzero"`
145146

146-
Spec PGUpgradeSpec `json:"spec,omitempty"`
147-
Status PGUpgradeStatus `json:"status,omitempty"`
147+
// +optional
148+
Spec PGUpgradeSpec `json:"spec,omitzero"`
149+
// +optional
150+
Status PGUpgradeStatus `json:"status,omitzero"`
148151
}
149152

150153
//+kubebuilder:object:root=true
151154

152155
// PGUpgradeList contains a list of PGUpgrade
153156
type PGUpgradeList struct {
154157
metav1.TypeMeta `json:",inline"`
155-
metav1.ListMeta `json:"metadata,omitempty"`
158+
metav1.ListMeta `json:"metadata,omitzero"`
156159
Items []PGUpgrade `json:"items"`
157160
}
158161

0 commit comments

Comments
 (0)