@@ -3041,6 +3041,8 @@ func TestKubeadmControlPlaneReconciler_reconcileDelete(t *testing.T) {
3041
3041
g .Expect (result ).To (Equal (ctrl.Result {RequeueAfter : deleteRequeueAfter }))
3042
3042
g .Expect (err ).ToNot (HaveOccurred ())
3043
3043
g .Expect (kcp .Finalizers ).To (ContainElement (controlplanev1 .KubeadmControlPlaneFinalizer ))
3044
+ g .Expect (controlPlane .DeletingReason ).To (Equal (controlplanev1 .KubeadmControlPlaneDeletingWaitingForMachineDeletionV1Beta2Reason ))
3045
+ g .Expect (controlPlane .DeletingMessage ).To (Equal ("Deleting 3 Machines" ))
3044
3046
3045
3047
controlPlaneMachines := clusterv1.MachineList {}
3046
3048
g .Expect (fakeClient .List (ctx , & controlPlaneMachines )).To (Succeed ())
@@ -3067,6 +3069,8 @@ func TestKubeadmControlPlaneReconciler_reconcileDelete(t *testing.T) {
3067
3069
g .Expect (result ).To (BeComparableTo (ctrl.Result {}))
3068
3070
g .Expect (err ).ToNot (HaveOccurred ())
3069
3071
g .Expect (kcp .Finalizers ).To (BeEmpty ())
3072
+ g .Expect (controlPlane .DeletingReason ).To (Equal (controlplanev1 .KubeadmControlPlaneDeletingDeletionCompletedV1Beta2Reason ))
3073
+ g .Expect (controlPlane .DeletingMessage ).To (BeEmpty ())
3070
3074
})
3071
3075
3072
3076
t .Run ("does not remove any control plane Machines if other Machines exist" , func (t * testing.T ) {
@@ -3075,18 +3079,20 @@ func TestKubeadmControlPlaneReconciler_reconcileDelete(t *testing.T) {
3075
3079
cluster , kcp , _ := createClusterWithControlPlane (metav1 .NamespaceDefault )
3076
3080
controllerutil .AddFinalizer (kcp , controlplanev1 .KubeadmControlPlaneFinalizer )
3077
3081
3078
- workerMachine := & clusterv1.Machine {
3079
- ObjectMeta : metav1.ObjectMeta {
3080
- Name : "worker" ,
3081
- Namespace : cluster .Namespace ,
3082
- Labels : map [string ]string {
3083
- clusterv1 .ClusterNameLabel : cluster .Name ,
3082
+ initObjs := []client.Object {cluster .DeepCopy (), kcp .DeepCopy ()}
3083
+
3084
+ for i := range 10 {
3085
+ initObjs = append (initObjs , & clusterv1.Machine {
3086
+ ObjectMeta : metav1.ObjectMeta {
3087
+ Name : fmt .Sprintf ("worker-%d" , i ),
3088
+ Namespace : cluster .Namespace ,
3089
+ Labels : map [string ]string {
3090
+ clusterv1 .ClusterNameLabel : cluster .Name ,
3091
+ },
3084
3092
},
3085
- },
3093
+ })
3086
3094
}
3087
3095
3088
- initObjs := []client.Object {cluster .DeepCopy (), kcp .DeepCopy (), workerMachine .DeepCopy ()}
3089
-
3090
3096
machines := collections .New ()
3091
3097
for i := range 3 {
3092
3098
m , _ := createMachineNodePair (fmt .Sprintf ("test-%d" , i ), cluster , kcp , true )
@@ -3115,8 +3121,9 @@ func TestKubeadmControlPlaneReconciler_reconcileDelete(t *testing.T) {
3115
3121
result , err := r .reconcileDelete (ctx , controlPlane )
3116
3122
g .Expect (result ).To (BeComparableTo (ctrl.Result {RequeueAfter : deleteRequeueAfter }))
3117
3123
g .Expect (err ).ToNot (HaveOccurred ())
3118
-
3119
3124
g .Expect (kcp .Finalizers ).To (ContainElement (controlplanev1 .KubeadmControlPlaneFinalizer ))
3125
+ g .Expect (controlPlane .DeletingReason ).To (Equal (controlplanev1 .KubeadmControlPlaneDeletingWaitingForWorkersDeletionV1Beta2Reason ))
3126
+ g .Expect (controlPlane .DeletingMessage ).To (Equal ("KCP deletion blocked because worker Machines: worker-0, worker-1, worker-2, worker-3, worker-4, ... (5 more) still exist" ))
3120
3127
3121
3128
controlPlaneMachines := clusterv1.MachineList {}
3122
3129
labels := map [string ]string {
@@ -3133,18 +3140,20 @@ func TestKubeadmControlPlaneReconciler_reconcileDelete(t *testing.T) {
3133
3140
cluster , kcp , _ := createClusterWithControlPlane (metav1 .NamespaceDefault )
3134
3141
controllerutil .AddFinalizer (kcp , controlplanev1 .KubeadmControlPlaneFinalizer )
3135
3142
3136
- workerMachinePool := & expv1.MachinePool {
3137
- ObjectMeta : metav1.ObjectMeta {
3138
- Name : "worker" ,
3139
- Namespace : cluster .Namespace ,
3140
- Labels : map [string ]string {
3141
- clusterv1 .ClusterNameLabel : cluster .Name ,
3143
+ initObjs := []client.Object {cluster .DeepCopy (), kcp .DeepCopy ()}
3144
+
3145
+ for i := range 10 {
3146
+ initObjs = append (initObjs , & expv1.MachinePool {
3147
+ ObjectMeta : metav1.ObjectMeta {
3148
+ Name : fmt .Sprintf ("mp-%d" , i ),
3149
+ Namespace : cluster .Namespace ,
3150
+ Labels : map [string ]string {
3151
+ clusterv1 .ClusterNameLabel : cluster .Name ,
3152
+ },
3142
3153
},
3143
- },
3154
+ })
3144
3155
}
3145
3156
3146
- initObjs := []client.Object {cluster .DeepCopy (), kcp .DeepCopy (), workerMachinePool .DeepCopy ()}
3147
-
3148
3157
machines := collections .New ()
3149
3158
for i := range 3 {
3150
3159
m , _ := createMachineNodePair (fmt .Sprintf ("test-%d" , i ), cluster , kcp , true )
@@ -3173,8 +3182,9 @@ func TestKubeadmControlPlaneReconciler_reconcileDelete(t *testing.T) {
3173
3182
result , err := r .reconcileDelete (ctx , controlPlane )
3174
3183
g .Expect (result ).To (BeComparableTo (ctrl.Result {RequeueAfter : deleteRequeueAfter }))
3175
3184
g .Expect (err ).ToNot (HaveOccurred ())
3176
-
3177
3185
g .Expect (kcp .Finalizers ).To (ContainElement (controlplanev1 .KubeadmControlPlaneFinalizer ))
3186
+ g .Expect (controlPlane .DeletingReason ).To (Equal (controlplanev1 .KubeadmControlPlaneDeletingWaitingForWorkersDeletionV1Beta2Reason ))
3187
+ g .Expect (controlPlane .DeletingMessage ).To (Equal ("KCP deletion blocked because MachinePools: mp-0, mp-1, mp-2, mp-3, mp-4, ... (5 more) still exist" ))
3178
3188
3179
3189
controlPlaneMachines := clusterv1.MachineList {}
3180
3190
labels := map [string ]string {
@@ -3211,9 +3221,56 @@ func TestKubeadmControlPlaneReconciler_reconcileDelete(t *testing.T) {
3211
3221
g .Expect (result ).To (BeComparableTo (ctrl.Result {}))
3212
3222
g .Expect (err ).ToNot (HaveOccurred ())
3213
3223
g .Expect (kcp .Finalizers ).To (BeEmpty ())
3224
+ g .Expect (controlPlane .DeletingReason ).To (Equal (controlplanev1 .KubeadmControlPlaneDeletingDeletionCompletedV1Beta2Reason ))
3225
+ g .Expect (controlPlane .DeletingMessage ).To (BeEmpty ())
3214
3226
})
3215
3227
}
3216
3228
3229
+ func TestObjectsPendingDelete (t * testing.T ) {
3230
+ c := & clusterv1.Cluster {
3231
+ ObjectMeta : metav1.ObjectMeta {
3232
+ Name : "test-cluster" ,
3233
+ },
3234
+ }
3235
+
3236
+ cpMachineLabels := map [string ]string {
3237
+ clusterv1 .ClusterNameLabel : c .Name ,
3238
+ clusterv1 .MachineControlPlaneLabel : "" ,
3239
+ }
3240
+ workerMachineLabels := map [string ]string {
3241
+ clusterv1 .ClusterNameLabel : c .Name ,
3242
+ }
3243
+
3244
+ allMachines := collections .FromMachineList (& clusterv1.MachineList {
3245
+ Items : []clusterv1.Machine {
3246
+ * machine ("cp1" , withLabels (cpMachineLabels )),
3247
+ * machine ("cp2" , withLabels (cpMachineLabels )),
3248
+ * machine ("cp3" , withLabels (cpMachineLabels )),
3249
+ * machine ("w1" , withLabels (workerMachineLabels )),
3250
+ * machine ("w2" , withLabels (workerMachineLabels )),
3251
+ * machine ("w3" , withLabels (workerMachineLabels )),
3252
+ * machine ("w4" , withLabels (workerMachineLabels )),
3253
+ * machine ("w5" , withLabels (workerMachineLabels )),
3254
+ * machine ("w6" , withLabels (workerMachineLabels )),
3255
+ * machine ("w7" , withLabels (workerMachineLabels )),
3256
+ * machine ("w8" , withLabels (workerMachineLabels )),
3257
+ },
3258
+ })
3259
+ machinePools := & expv1.MachinePoolList {
3260
+ Items : []expv1.MachinePool {
3261
+ {
3262
+ ObjectMeta : metav1.ObjectMeta {
3263
+ Name : "mp1" ,
3264
+ },
3265
+ },
3266
+ },
3267
+ }
3268
+
3269
+ g := NewWithT (t )
3270
+
3271
+ g .Expect (objectsPendingDeleteNames (allMachines , machinePools , c )).To (Equal ("MachinePools: mp1; worker Machines: w1, w2, w3, w4, w5, ... (3 more)" ))
3272
+ }
3273
+
3217
3274
// test utils.
3218
3275
3219
3276
func newFakeClient (initObjs ... client.Object ) client.Client {
0 commit comments