Skip to content

Commit 4fea3b8

Browse files
committed
Remove pointer, add omitzero & MinProperties for initialization fields/structs
1 parent 438ce9e commit 4fea3b8

File tree

97 files changed

+385
-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.

97 files changed

+385
-760
lines changed

.golangci-kal.yml

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

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
@@ -464,7 +464,7 @@ type KubeadmConfigStatus struct {
464464
// initialization provides observations of the KubeadmConfig initialization process.
465465
// NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.
466466
// +optional
467-
Initialization *KubeadmConfigInitializationStatus `json:"initialization,omitempty"`
467+
Initialization KubeadmConfigInitializationStatus `json:"initialization,omitempty,omitzero"`
468468

469469
// dataSecretName is the name of the secret that stores the bootstrap data script.
470470
// +optional
@@ -483,6 +483,7 @@ type KubeadmConfigStatus struct {
483483
}
484484

485485
// KubeadmConfigInitializationStatus provides observations of the KubeadmConfig initialization process.
486+
// +kubebuilder:validation:MinProperties=1
486487
type KubeadmConfigInitializationStatus struct {
487488
// dataSecretCreated is true when the Machine's boostrap secret is created.
488489
// 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
@@ -638,7 +638,7 @@ type KubeadmControlPlaneStatus struct {
638638
// initialization provides observations of the KubeadmControlPlane initialization process.
639639
// NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.
640640
// +optional
641-
Initialization *KubeadmControlPlaneInitializationStatus `json:"initialization,omitempty"`
641+
Initialization KubeadmControlPlaneInitializationStatus `json:"initialization,omitempty,omitzero"`
642642

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

691691
// KubeadmControlPlaneInitializationStatus provides observations of the KubeadmControlPlane initialization process.
692+
// +kubebuilder:validation:MinProperties=1
692693
type KubeadmControlPlaneInitializationStatus struct {
693694
// controlPlaneInitialized is true when the KubeadmControlPlane provider reports that the Kubernetes control plane is initialized;
694695
// 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.

api/core/v1beta1/conversion.go

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,12 @@ func (src *Cluster) ConvertTo(dstRaw conversion.Hub) error {
7777
clusterv1.Convert_bool_To_Pointer_bool(src.Spec.Paused, ok, restored.Spec.Paused, &dst.Spec.Paused)
7878

7979
initialization := clusterv1.ClusterInitializationStatus{}
80-
var restoredControlPlaneInitialized, restoredInfrastructureProvisioned *bool
81-
if restored.Status.Initialization != nil {
82-
restoredControlPlaneInitialized = restored.Status.Initialization.ControlPlaneInitialized
83-
restoredInfrastructureProvisioned = restored.Status.Initialization.InfrastructureProvisioned
84-
}
80+
restoredControlPlaneInitialized := restored.Status.Initialization.ControlPlaneInitialized
81+
restoredInfrastructureProvisioned := restored.Status.Initialization.InfrastructureProvisioned
8582
clusterv1.Convert_bool_To_Pointer_bool(src.Status.ControlPlaneReady, ok, restoredControlPlaneInitialized, &initialization.ControlPlaneInitialized)
8683
clusterv1.Convert_bool_To_Pointer_bool(src.Status.InfrastructureReady, ok, restoredInfrastructureProvisioned, &initialization.InfrastructureProvisioned)
8784
if !reflect.DeepEqual(initialization, clusterv1.ClusterInitializationStatus{}) {
88-
dst.Status.Initialization = &initialization
85+
dst.Status.Initialization = initialization
8986
}
9087
return nil
9188
}
@@ -381,15 +378,12 @@ func (src *Machine) ConvertTo(dstRaw conversion.Hub) error {
381378

382379
// Recover intent for bool values converted to *bool.
383380
initialization := clusterv1.MachineInitializationStatus{}
384-
var restoredBootstrapDataSecretCreated, restoredInfrastructureProvisioned *bool
385-
if restored.Status.Initialization != nil {
386-
restoredBootstrapDataSecretCreated = restored.Status.Initialization.BootstrapDataSecretCreated
387-
restoredInfrastructureProvisioned = restored.Status.Initialization.InfrastructureProvisioned
388-
}
381+
restoredBootstrapDataSecretCreated := restored.Status.Initialization.BootstrapDataSecretCreated
382+
restoredInfrastructureProvisioned := restored.Status.Initialization.InfrastructureProvisioned
389383
clusterv1.Convert_bool_To_Pointer_bool(src.Status.BootstrapReady, ok, restoredBootstrapDataSecretCreated, &initialization.BootstrapDataSecretCreated)
390384
clusterv1.Convert_bool_To_Pointer_bool(src.Status.InfrastructureReady, ok, restoredInfrastructureProvisioned, &initialization.InfrastructureProvisioned)
391385
if !reflect.DeepEqual(initialization, clusterv1.MachineInitializationStatus{}) {
392-
dst.Status.Initialization = &initialization
386+
dst.Status.Initialization = initialization
393387
}
394388

395389
// Recover other values.
@@ -553,15 +547,12 @@ func (src *MachinePool) ConvertTo(dstRaw conversion.Hub) error {
553547

554548
// Recover intent for bool values converted to *bool.
555549
initialization := clusterv1.MachinePoolInitializationStatus{}
556-
var restoredBootstrapDataSecretCreated, restoredInfrastructureProvisioned *bool
557-
if restored.Status.Initialization != nil {
558-
restoredBootstrapDataSecretCreated = restored.Status.Initialization.BootstrapDataSecretCreated
559-
restoredInfrastructureProvisioned = restored.Status.Initialization.InfrastructureProvisioned
560-
}
550+
restoredBootstrapDataSecretCreated := restored.Status.Initialization.BootstrapDataSecretCreated
551+
restoredInfrastructureProvisioned := restored.Status.Initialization.InfrastructureProvisioned
561552
clusterv1.Convert_bool_To_Pointer_bool(src.Status.BootstrapReady, ok, restoredBootstrapDataSecretCreated, &initialization.BootstrapDataSecretCreated)
562553
clusterv1.Convert_bool_To_Pointer_bool(src.Status.InfrastructureReady, ok, restoredInfrastructureProvisioned, &initialization.InfrastructureProvisioned)
563554
if !reflect.DeepEqual(initialization, clusterv1.MachinePoolInitializationStatus{}) {
564-
dst.Status.Initialization = &initialization
555+
dst.Status.Initialization = initialization
565556
}
566557

567558
return nil
@@ -917,10 +908,8 @@ func Convert_v1beta2_ClusterStatus_To_v1beta1_ClusterStatus(in *clusterv1.Cluste
917908
}
918909

919910
// Move initialization to old fields
920-
if in.Initialization != nil {
921-
out.ControlPlaneReady = ptr.Deref(in.Initialization.ControlPlaneInitialized, false)
922-
out.InfrastructureReady = ptr.Deref(in.Initialization.InfrastructureProvisioned, false)
923-
}
911+
out.ControlPlaneReady = ptr.Deref(in.Initialization.ControlPlaneInitialized, false)
912+
out.InfrastructureReady = ptr.Deref(in.Initialization.InfrastructureProvisioned, false)
924913

925914
// Move FailureDomains
926915
if in.FailureDomains != nil {
@@ -1316,10 +1305,8 @@ func Convert_v1beta2_MachineStatus_To_v1beta1_MachineStatus(in *clusterv1.Machin
13161305
}
13171306

13181307
// Move initialization to old fields
1319-
if in.Initialization != nil {
1320-
out.BootstrapReady = ptr.Deref(in.Initialization.BootstrapDataSecretCreated, false)
1321-
out.InfrastructureReady = ptr.Deref(in.Initialization.InfrastructureProvisioned, false)
1322-
}
1308+
out.BootstrapReady = ptr.Deref(in.Initialization.BootstrapDataSecretCreated, false)
1309+
out.InfrastructureReady = ptr.Deref(in.Initialization.InfrastructureProvisioned, false)
13231310

13241311
// Move new conditions (v1beta2) to the v1beta2 field.
13251312
if in.Conditions == nil {
@@ -1436,10 +1423,8 @@ func Convert_v1beta2_MachinePoolStatus_To_v1beta1_MachinePoolStatus(in *clusterv
14361423
}
14371424

14381425
// Move initialization to old fields
1439-
if in.Initialization != nil {
1440-
out.BootstrapReady = ptr.Deref(in.Initialization.BootstrapDataSecretCreated, false)
1441-
out.InfrastructureReady = ptr.Deref(in.Initialization.InfrastructureProvisioned, false)
1442-
}
1426+
out.BootstrapReady = ptr.Deref(in.Initialization.BootstrapDataSecretCreated, false)
1427+
out.InfrastructureReady = ptr.Deref(in.Initialization.InfrastructureProvisioned, false)
14431428

14441429
// Move new conditions (v1beta2) and replica counters to the v1beta2 field.
14451430
if in.Conditions == nil && in.ReadyReplicas == nil && in.AvailableReplicas == nil && in.UpToDateReplicas == nil {

0 commit comments

Comments
 (0)