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