@@ -2528,6 +2528,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2528
2528
name string
2529
2529
cluster * clusterv1.Cluster
2530
2530
machine * clusterv1.Machine
2531
+ infraMachine * unstructured.Unstructured
2531
2532
expectedError error
2532
2533
}{
2533
2534
{
@@ -2554,6 +2555,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2554
2555
},
2555
2556
Status : clusterv1.MachineStatus {},
2556
2557
},
2558
+ infraMachine : nil ,
2557
2559
expectedError : errNilNodeRef ,
2558
2560
},
2559
2561
{
@@ -2584,6 +2586,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2584
2586
},
2585
2587
},
2586
2588
},
2589
+ infraMachine : nil ,
2587
2590
expectedError : errNoControlPlaneNodes ,
2588
2591
},
2589
2592
{
@@ -2616,6 +2619,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2616
2619
},
2617
2620
},
2618
2621
},
2622
+ infraMachine : nil ,
2619
2623
expectedError : errNoControlPlaneNodes ,
2620
2624
},
2621
2625
{
@@ -2646,6 +2650,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2646
2650
},
2647
2651
},
2648
2652
},
2653
+ infraMachine : nil ,
2649
2654
expectedError : nil ,
2650
2655
},
2651
2656
{
@@ -2659,6 +2664,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2659
2664
},
2660
2665
},
2661
2666
machine : & clusterv1.Machine {},
2667
+ infraMachine : nil ,
2662
2668
expectedError : errClusterIsBeingDeleted ,
2663
2669
},
2664
2670
{
@@ -2697,6 +2703,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2697
2703
},
2698
2704
},
2699
2705
},
2706
+ infraMachine : nil ,
2700
2707
expectedError : nil ,
2701
2708
},
2702
2709
{
@@ -2735,6 +2742,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2735
2742
},
2736
2743
},
2737
2744
},
2745
+ infraMachine : nil ,
2738
2746
expectedError : errControlPlaneIsBeingDeleted ,
2739
2747
},
2740
2748
{
@@ -2773,8 +2781,40 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2773
2781
},
2774
2782
},
2775
2783
},
2784
+ infraMachine : nil ,
2776
2785
expectedError : errControlPlaneIsBeingDeleted ,
2777
2786
},
2787
+ {
2788
+ name : "no nodeRef, infrastructure machine has providerID" ,
2789
+ cluster : & clusterv1.Cluster {
2790
+ ObjectMeta : metav1.ObjectMeta {
2791
+ Name : "test-cluster" ,
2792
+ Namespace : metav1 .NamespaceDefault ,
2793
+ },
2794
+ },
2795
+ machine : & clusterv1.Machine {
2796
+ ObjectMeta : metav1.ObjectMeta {
2797
+ Name : "created" ,
2798
+ Namespace : metav1 .NamespaceDefault ,
2799
+ Labels : map [string ]string {
2800
+ clusterv1 .ClusterNameLabel : "test-cluster" ,
2801
+ },
2802
+ Finalizers : []string {clusterv1 .MachineFinalizer },
2803
+ },
2804
+ Spec : clusterv1.MachineSpec {
2805
+ ClusterName : "test-cluster" ,
2806
+ InfrastructureRef : corev1.ObjectReference {},
2807
+ Bootstrap : clusterv1.Bootstrap {DataSecretName : ptr .To ("data" )},
2808
+ },
2809
+ Status : clusterv1.MachineStatus {},
2810
+ },
2811
+ infraMachine : & unstructured.Unstructured {Object : map [string ]interface {}{
2812
+ "spec" : map [string ]interface {}{
2813
+ "providerID" : "test-node-1" ,
2814
+ },
2815
+ }},
2816
+ expectedError : nil ,
2817
+ },
2778
2818
}
2779
2819
2780
2820
emp := & unstructured.Unstructured {
@@ -2813,6 +2853,16 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2813
2853
empBeingDeleted .SetDeletionTimestamp (& metav1.Time {Time : time .Now ()})
2814
2854
empBeingDeleted .SetFinalizers ([]string {"block-deletion" })
2815
2855
2856
+ testNodeA := & corev1.Node {
2857
+ ObjectMeta : metav1.ObjectMeta {
2858
+ Name : "node-1" ,
2859
+ },
2860
+ Spec : corev1.NodeSpec {
2861
+ ProviderID : "test-node-1" ,
2862
+ },
2863
+ }
2864
+ remoteClient := fake .NewClientBuilder ().WithIndex (& corev1.Node {}, "spec.providerID" , index .NodeByProviderID ).WithObjects (testNodeA ).Build ()
2865
+
2816
2866
for _ , tc := range testCases {
2817
2867
t .Run (tc .name , func (t * testing.T ) {
2818
2868
g := NewWithT (t )
@@ -2873,10 +2923,11 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2873
2923
empBeingDeleted ,
2874
2924
).Build ()
2875
2925
mr := & Reconciler {
2876
- Client : c ,
2926
+ Client : c ,
2927
+ ClusterCache : clustercache .NewFakeClusterCache (remoteClient , client .ObjectKeyFromObject (tc .cluster )),
2877
2928
}
2878
2929
2879
- err := mr .isDeleteNodeAllowed (ctx , tc .cluster , tc .machine )
2930
+ err := mr .isDeleteNodeAllowed (ctx , tc .cluster , tc .machine , tc . infraMachine )
2880
2931
if tc .expectedError == nil {
2881
2932
g .Expect (err ).ToNot (HaveOccurred ())
2882
2933
} else {
0 commit comments