Skip to content

Commit 2c03b5a

Browse files
committed
Remove pointer, add omitzero & MinProperties for initialization fields/structs
1 parent 330f811 commit 2c03b5a

File tree

98 files changed

+389
-760
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+389
-760
lines changed

.golangci-kal.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ linters:
159159
- kubeapilinter
160160
# KAL does not handle omitzero correctly yet: https://github.com/kubernetes-sigs/kube-api-linter/pull/115
161161
- path: "api/.*"
162-
text: "optionalfields: field Status is optional and should (be a pointer|have the omitempty tag)"
162+
text: "optionalfields: field (Status|Initialization) is optional and should (be a pointer|have the omitempty tag)"
163163
linters:
164164
- kubeapilinter
165165
- path: "api/bootstrap/kubeadm/v1beta2"

.golangci.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ linters:
168168
# CAPI utils
169169
- pkg: sigs.k8s.io/cluster-api/util/conditions/deprecated/v1beta1
170170
alias: v1beta1conditions
171+
- pkg: sigs.k8s.io/cluster-api/util/conditions
172+
alias: ""
173+
- pkg: sigs.k8s.io/cluster-api/util/patch
174+
alias: ""
171175
- pkg: sigs.k8s.io/cluster-api/internal/topology/names
172176
alias: topologynames
173177
# CAPD

api/bootstrap/kubeadm/v1beta1/conversion.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,10 @@ func (src *KubeadmConfig) ConvertTo(dstRaw conversion.Hub) error {
4747

4848
// Recover intent for bool values converted to *bool.
4949
initialization := bootstrapv1.KubeadmConfigInitializationStatus{}
50-
var restoredBootstrapDataSecretCreated *bool
51-
if restored.Status.Initialization != nil {
52-
restoredBootstrapDataSecretCreated = restored.Status.Initialization.DataSecretCreated
53-
}
50+
restoredBootstrapDataSecretCreated := restored.Status.Initialization.DataSecretCreated
5451
clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredBootstrapDataSecretCreated, &initialization.DataSecretCreated)
5552
if !reflect.DeepEqual(initialization, bootstrapv1.KubeadmConfigInitializationStatus{}) {
56-
dst.Status.Initialization = &initialization
53+
dst.Status.Initialization = initialization
5754
}
5855
if err := RestoreBoolIntentKubeadmConfigSpec(&src.Spec, &dst.Spec, ok, &restored.Spec); err != nil {
5956
return err
@@ -363,9 +360,7 @@ func Convert_v1beta2_KubeadmConfigStatus_To_v1beta1_KubeadmConfigStatus(in *boot
363360
}
364361

365362
// Move initialization to old fields
366-
if in.Initialization != nil {
367-
out.Ready = ptr.Deref(in.Initialization.DataSecretCreated, false)
368-
}
363+
out.Ready = ptr.Deref(in.Initialization.DataSecretCreated, false)
369364

370365
// Move new conditions (v1beta2) to the v1beta2 field.
371366
if in.Conditions == nil {

api/bootstrap/kubeadm/v1beta1/conversion_test.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,6 @@ func hubKubeadmConfigStatus(in *bootstrapv1.KubeadmConfigStatus, c randfill.Cont
102102
if in.Deprecated.V1Beta1 == nil {
103103
in.Deprecated.V1Beta1 = &bootstrapv1.KubeadmConfigV1Beta1DeprecatedStatus{}
104104
}
105-
106-
// Drop empty structs with only omit empty fields.
107-
if in.Initialization != nil {
108-
if reflect.DeepEqual(in.Initialization, &bootstrapv1.KubeadmConfigInitializationStatus{}) {
109-
in.Initialization = nil
110-
}
111-
}
112105
}
113106

114107
func hubKubeadmConfigSpec(in *bootstrapv1.KubeadmConfigSpec, c randfill.Continue) {

api/bootstrap/kubeadm/v1beta2/kubeadmconfig_types.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ type KubeadmConfigStatus struct {
470470
// initialization provides observations of the KubeadmConfig initialization process.
471471
// NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.
472472
// +optional
473-
Initialization *KubeadmConfigInitializationStatus `json:"initialization,omitempty"`
473+
Initialization KubeadmConfigInitializationStatus `json:"initialization,omitempty,omitzero"`
474474

475475
// dataSecretName is the name of the secret that stores the bootstrap data script.
476476
// +optional
@@ -489,6 +489,7 @@ type KubeadmConfigStatus struct {
489489
}
490490

491491
// KubeadmConfigInitializationStatus provides observations of the KubeadmConfig initialization process.
492+
// +kubebuilder:validation:MinProperties=1
492493
type KubeadmConfigInitializationStatus struct {
493494
// dataSecretCreated is true when the Machine's boostrap secret is created.
494495
// NOTE: this field is part of the Cluster API contract, and it is used to orchestrate initial Machine provisioning.

api/bootstrap/kubeadm/v1beta2/zz_generated.deepcopy.go

Lines changed: 1 addition & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/controlplane/kubeadm/v1beta1/conversion.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,10 @@ func (src *KubeadmControlPlane) ConvertTo(dstRaw conversion.Hub) error {
6565

6666
// Recover intent for bool values converted to *bool.
6767
initialization := controlplanev1.KubeadmControlPlaneInitializationStatus{}
68-
var restoredControlPlaneInitialized *bool
69-
if restored.Status.Initialization != nil {
70-
restoredControlPlaneInitialized = restored.Status.Initialization.ControlPlaneInitialized
71-
}
68+
restoredControlPlaneInitialized := restored.Status.Initialization.ControlPlaneInitialized
7269
clusterv1.Convert_bool_To_Pointer_bool(src.Status.Initialized, ok, restoredControlPlaneInitialized, &initialization.ControlPlaneInitialized)
7370
if !reflect.DeepEqual(initialization, controlplanev1.KubeadmControlPlaneInitializationStatus{}) {
74-
dst.Status.Initialization = &initialization
71+
dst.Status.Initialization = initialization
7572
}
7673

7774
if err := bootstrapv1beta1.RestoreBoolIntentKubeadmConfigSpec(&src.Spec.KubeadmConfigSpec, &dst.Spec.KubeadmConfigSpec, ok, &restored.Spec.KubeadmConfigSpec); err != nil {
@@ -201,9 +198,7 @@ func Convert_v1beta2_KubeadmControlPlaneStatus_To_v1beta1_KubeadmControlPlaneSta
201198
}
202199

203200
// Move initialized to ControlPlaneInitialized, rebuild ready
204-
if in.Initialization != nil {
205-
out.Initialized = ptr.Deref(in.Initialization.ControlPlaneInitialized, false)
206-
}
201+
out.Initialized = ptr.Deref(in.Initialization.ControlPlaneInitialized, false)
207202
out.Ready = out.ReadyReplicas > 0
208203

209204
// Move new conditions (v1beta2) and replica counter to the v1beta2 field.

api/controlplane/kubeadm/v1beta1/conversion_test.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,6 @@ func hubKubeadmControlPlaneStatus(in *controlplanev1.KubeadmControlPlaneStatus,
174174
in.Deprecated.V1Beta1 = &controlplanev1.KubeadmControlPlaneV1Beta1DeprecatedStatus{}
175175
}
176176

177-
// Drop empty structs with only omit empty fields.
178-
if in.Initialization != nil {
179-
if reflect.DeepEqual(in.Initialization, &controlplanev1.KubeadmControlPlaneInitializationStatus{}) {
180-
in.Initialization = nil
181-
}
182-
}
183-
184177
// nil becomes &0 after hub => spoke => hub conversion
185178
// This is acceptable as usually Replicas is set and controllers using older apiVersions are not writing MachineSet status.
186179
if in.Replicas == nil {

api/controlplane/kubeadm/v1beta2/kubeadm_control_plane_types.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ type KubeadmControlPlaneStatus struct {
637637
// initialization provides observations of the KubeadmControlPlane initialization process.
638638
// NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.
639639
// +optional
640-
Initialization *KubeadmControlPlaneInitializationStatus `json:"initialization,omitempty"`
640+
Initialization KubeadmControlPlaneInitializationStatus `json:"initialization,omitempty,omitzero"`
641641

642642
// selector is the label selector in string format to avoid introspection
643643
// by clients, and is used to provide the CRD-based integration for the
@@ -688,6 +688,7 @@ type KubeadmControlPlaneStatus struct {
688688
}
689689

690690
// KubeadmControlPlaneInitializationStatus provides observations of the KubeadmControlPlane initialization process.
691+
// +kubebuilder:validation:MinProperties=1
691692
type KubeadmControlPlaneInitializationStatus struct {
692693
// controlPlaneInitialized is true when the KubeadmControlPlane provider reports that the Kubernetes control plane is initialized;
693694
// A control plane is considered initialized when it can accept requests, no matter if this happens before

api/controlplane/kubeadm/v1beta2/zz_generated.deepcopy.go

Lines changed: 1 addition & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)