Skip to content

Commit 19d1bbc

Browse files
committed
Change .status.replicas fields to pointer + omitempty
1 parent 1f629e1 commit 19d1bbc

File tree

52 files changed

+284
-134
lines changed

Some content is hidden

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

52 files changed

+284
-134
lines changed

api/v1beta1/conversion_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,11 @@ func hubMachineSetStatus(in *clusterv1.MachineSetStatus, c fuzz.Continue) {
275275
if in.Deprecated.V1Beta1 == nil {
276276
in.Deprecated.V1Beta1 = &clusterv1.MachineSetV1Beta1DeprecatedStatus{}
277277
}
278+
// nil becomes &0 after hub => spoke => hub conversion
279+
// This is acceptable as usually Replicas is set and controllers using older apiVersions are not writing MachineSet status.
280+
if in.Replicas == nil {
281+
in.Replicas = ptr.To(int32(0))
282+
}
278283
}
279284

280285
func spokeMachineSetStatus(in *MachineSetStatus, c fuzz.Continue) {
@@ -303,6 +308,11 @@ func hubMachineDeploymentStatus(in *clusterv1.MachineDeploymentStatus, c fuzz.Co
303308
if in.Deprecated.V1Beta1 == nil {
304309
in.Deprecated.V1Beta1 = &clusterv1.MachineDeploymentV1Beta1DeprecatedStatus{}
305310
}
311+
// nil becomes &0 after hub => spoke => hub conversion
312+
// This is acceptable as usually Replicas is set and controllers using older apiVersions are not writing MachineSet status.
313+
if in.Replicas == nil {
314+
in.Replicas = ptr.To(int32(0))
315+
}
306316
}
307317

308318
func spokeMachineDeploymentStatus(in *MachineDeploymentStatus, c fuzz.Continue) {

api/v1beta1/zz_generated.conversion.go

Lines changed: 12 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta2/machinedeployment_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ type MachineDeploymentStatus struct {
474474
// replicas is the total number of non-terminated machines targeted by this deployment
475475
// (their labels match the selector).
476476
// +optional
477-
Replicas int32 `json:"replicas"`
477+
Replicas *int32 `json:"replicas,omitempty"`
478478

479479
// readyReplicas is the number of ready replicas for this MachineDeployment. A machine is considered ready when Machine's Ready condition is true.
480480
// +optional

api/v1beta2/machineset_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ type MachineSetStatus struct {
301301

302302
// replicas is the most recently observed number of replicas.
303303
// +optional
304-
Replicas int32 `json:"replicas"`
304+
Replicas *int32 `json:"replicas,omitempty"`
305305

306306
// readyReplicas is the number of ready replicas for this MachineSet. A machine is considered ready when Machine's Ready condition is true.
307307
// +optional

api/v1beta2/zz_generated.deepcopy.go

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta2/zz_generated.openapi.go

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controlplane/kubeadm/api/v1beta1/conversion_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
fuzz "github.com/google/gofuzz"
2626
"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
2727
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
28+
"k8s.io/utils/ptr"
2829

2930
bootstrapv1beta1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1"
3031
controlplanev1 "sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta2"
@@ -70,6 +71,12 @@ func hubKubeadmControlPlaneStatus(in *controlplanev1.KubeadmControlPlaneStatus,
7071
in.Initialization = nil
7172
}
7273
}
74+
75+
// nil becomes &0 after hub => spoke => hub conversion
76+
// This is acceptable as usually Replicas is set and controllers using older apiVersions are not writing MachineSet status.
77+
if in.Replicas == nil {
78+
in.Replicas = ptr.To(int32(0))
79+
}
7380
}
7481

7582
func spokeKubeadmControlPlaneStatus(in *KubeadmControlPlaneStatus, c fuzz.Continue) {

controlplane/kubeadm/api/v1beta1/zz_generated.conversion.go

Lines changed: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controlplane/kubeadm/api/v1beta2/kubeadm_control_plane_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ type KubeadmControlPlaneStatus struct {
650650
// replicas is the total number of non-terminated machines targeted by this control plane
651651
// (their labels match the selector).
652652
// +optional
653-
Replicas int32 `json:"replicas"`
653+
Replicas *int32 `json:"replicas,omitempty"`
654654

655655
// readyReplicas is the number of ready replicas for this KubeadmControlPlane. A machine is considered ready when Machine's Ready condition is true.
656656
// +optional

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

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

controlplane/kubeadm/internal/controllers/controller_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,7 +1385,7 @@ kubernetesVersion: metav1.16.1
13851385
g.Expect(kcp.Finalizers).To(ContainElement(controlplanev1.KubeadmControlPlaneFinalizer))
13861386

13871387
g.Expect(kcp.Status.Selector).NotTo(BeEmpty())
1388-
g.Expect(kcp.Status.Replicas).To(BeEquivalentTo(1))
1388+
g.Expect(ptr.Deref(kcp.Status.Replicas, 0)).To(BeEquivalentTo(1))
13891389
g.Expect(v1beta1conditions.IsFalse(kcp, controlplanev1.AvailableV1Beta1Condition)).To(BeTrue())
13901390
g.Expect(conditions.IsFalse(kcp, controlplanev1.KubeadmControlPlaneInitializedCondition)).To(BeTrue())
13911391

@@ -1626,7 +1626,7 @@ kubernetesVersion: metav1.16.1`,
16261626
g.Expect(kcp.Finalizers).To(ContainElement(controlplanev1.KubeadmControlPlaneFinalizer))
16271627

16281628
g.Expect(kcp.Status.Selector).NotTo(BeEmpty())
1629-
g.Expect(kcp.Status.Replicas).To(BeEquivalentTo(1))
1629+
g.Expect(ptr.Deref(kcp.Status.Replicas, 0)).To(BeEquivalentTo(1))
16301630
g.Expect(v1beta1conditions.IsFalse(kcp, controlplanev1.AvailableV1Beta1Condition)).To(BeTrue())
16311631

16321632
// Verify that the kubeconfig is using the custom CA

controlplane/kubeadm/internal/controllers/status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ func setReplicas(_ context.Context, kcp *controlplanev1.KubeadmControlPlane, mac
188188
}
189189
}
190190

191-
kcp.Status.Replicas = int32(len(machines))
191+
kcp.Status.Replicas = ptr.To(int32(len(machines)))
192192
kcp.Status.ReadyReplicas = ptr.To(readyReplicas)
193193
kcp.Status.AvailableReplicas = ptr.To(availableReplicas)
194194
kcp.Status.UpToDateReplicas = ptr.To(upToDateReplicas)

controlplane/kubeadm/internal/controllers/status_test.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ func TestSetReplicas(t *testing.T) {
130130
setReplicas(ctx, c.KCP, c.Machines)
131131

132132
g.Expect(kcp.Status).ToNot(BeNil())
133-
g.Expect(kcp.Status.Replicas).To(Equal(int32(6)))
133+
g.Expect(kcp.Status.Replicas).ToNot(BeNil())
134+
g.Expect(*kcp.Status.Replicas).To(Equal(int32(6)))
134135
g.Expect(kcp.Status.ReadyReplicas).ToNot(BeNil())
135136
g.Expect(*kcp.Status.ReadyReplicas).To(Equal(int32(3)))
136137
g.Expect(kcp.Status.AvailableReplicas).ToNot(BeNil())
@@ -304,7 +305,7 @@ func Test_setScalingUpCondition(t *testing.T) {
304305
controlPlane: &internal.ControlPlane{
305306
KCP: &controlplanev1.KubeadmControlPlane{
306307
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(3))},
307-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
308+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
308309
},
309310
Machines: collections.FromMachines(
310311
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -323,7 +324,7 @@ func Test_setScalingUpCondition(t *testing.T) {
323324
controlPlane: &internal.ControlPlane{
324325
KCP: &controlplanev1.KubeadmControlPlane{
325326
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(3)), MachineTemplate: controlplanev1.KubeadmControlPlaneMachineTemplate{InfrastructureRef: corev1.ObjectReference{Kind: "AWSTemplate"}}},
326-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
327+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
327328
},
328329
Machines: collections.FromMachines(
329330
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -344,7 +345,7 @@ func Test_setScalingUpCondition(t *testing.T) {
344345
controlPlane: &internal.ControlPlane{
345346
KCP: &controlplanev1.KubeadmControlPlane{
346347
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(5))},
347-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
348+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
348349
},
349350
Machines: collections.FromMachines(
350351
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -365,7 +366,7 @@ func Test_setScalingUpCondition(t *testing.T) {
365366
KCP: &controlplanev1.KubeadmControlPlane{
366367
ObjectMeta: metav1.ObjectMeta{DeletionTimestamp: ptr.To(metav1.Time{Time: time.Now()})},
367368
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(5))},
368-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
369+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
369370
},
370371
Machines: collections.FromMachines(
371372
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -384,7 +385,7 @@ func Test_setScalingUpCondition(t *testing.T) {
384385
controlPlane: &internal.ControlPlane{
385386
KCP: &controlplanev1.KubeadmControlPlane{
386387
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(5)), MachineTemplate: controlplanev1.KubeadmControlPlaneMachineTemplate{InfrastructureRef: corev1.ObjectReference{Kind: "AWSTemplate"}}},
387-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
388+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
388389
},
389390
Machines: collections.FromMachines(
390391
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -413,7 +414,7 @@ func Test_setScalingUpCondition(t *testing.T) {
413414
},
414415
KCP: &controlplanev1.KubeadmControlPlane{
415416
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(5))},
416-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
417+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
417418
},
418419
Machines: collections.FromMachines(
419420
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -475,7 +476,7 @@ func Test_setScalingDownCondition(t *testing.T) {
475476
controlPlane: &internal.ControlPlane{
476477
KCP: &controlplanev1.KubeadmControlPlane{
477478
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(3))},
478-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
479+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
479480
},
480481
Machines: collections.FromMachines(
481482
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -494,7 +495,7 @@ func Test_setScalingDownCondition(t *testing.T) {
494495
controlPlane: &internal.ControlPlane{
495496
KCP: &controlplanev1.KubeadmControlPlane{
496497
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(3))},
497-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 5},
498+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(5))},
498499
},
499500
Machines: collections.FromMachines(
500501
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -517,7 +518,7 @@ func Test_setScalingDownCondition(t *testing.T) {
517518
KCP: &controlplanev1.KubeadmControlPlane{
518519
ObjectMeta: metav1.ObjectMeta{DeletionTimestamp: ptr.To(metav1.Time{Time: time.Now()})},
519520
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(3))},
520-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 5},
521+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(5))},
521522
},
522523
Machines: collections.FromMachines(
523524
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},
@@ -539,7 +540,7 @@ func Test_setScalingDownCondition(t *testing.T) {
539540
controlPlane: &internal.ControlPlane{
540541
KCP: &controlplanev1.KubeadmControlPlane{
541542
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(1))},
542-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
543+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
543544
},
544545
Machines: collections.FromMachines(
545546
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1", DeletionTimestamp: ptr.To(metav1.Time{Time: time.Now().Add(-1 * time.Hour)})},
@@ -579,7 +580,7 @@ After above Pods have been removed from the Node, the following Pods will be evi
579580
controlPlane: &internal.ControlPlane{
580581
KCP: &controlplanev1.KubeadmControlPlane{
581582
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(1))},
582-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
583+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
583584
},
584585
Machines: collections.FromMachines(
585586
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1", DeletionTimestamp: ptr.To(metav1.Time{Time: time.Now().Add(-1 * time.Hour)})}},
@@ -607,7 +608,7 @@ After above Pods have been removed from the Node, the following Pods will be evi
607608
},
608609
KCP: &controlplanev1.KubeadmControlPlane{
609610
Spec: controlplanev1.KubeadmControlPlaneSpec{Replicas: ptr.To(int32(1))},
610-
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: 3},
611+
Status: controlplanev1.KubeadmControlPlaneStatus{Replicas: ptr.To(int32(3))},
611612
},
612613
Machines: collections.FromMachines(
613614
&clusterv1.Machine{ObjectMeta: metav1.ObjectMeta{Name: "m1"}},

exp/api/v1beta1/conversion_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
fuzz "github.com/google/gofuzz"
2626
"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
2727
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
28+
"k8s.io/utils/ptr"
2829

2930
expv1 "sigs.k8s.io/cluster-api/exp/api/v1beta2"
3031
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
@@ -63,6 +64,12 @@ func hubMachinePoolStatus(in *expv1.MachinePoolStatus, c fuzz.Continue) {
6364
in.Initialization = nil
6465
}
6566
}
67+
68+
// nil becomes &0 after hub => spoke => hub conversion
69+
// This is acceptable as usually Replicas is set and controllers using older apiVersions are not writing MachineSet status.
70+
if in.Replicas == nil {
71+
in.Replicas = ptr.To(int32(0))
72+
}
6673
}
6774

6875
func spokeMachinePoolStatus(in *MachinePoolStatus, c fuzz.Continue) {

exp/api/v1beta1/zz_generated.conversion.go

Lines changed: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

exp/api/v1beta2/machinepool_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ type MachinePoolStatus struct {
9898

9999
// replicas is the most recently observed number of replicas.
100100
// +optional
101-
Replicas int32 `json:"replicas"`
101+
Replicas *int32 `json:"replicas,omitempty"`
102102

103103
// readyReplicas is the number of ready replicas for this MachinePool. A machine is considered ready when Machine's Ready condition is true.
104104
// +optional

exp/api/v1beta2/zz_generated.deepcopy.go

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

0 commit comments

Comments
 (0)