@@ -2604,6 +2604,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2604
2604
name string
2605
2605
cluster * clusterv1.Cluster
2606
2606
machine * clusterv1.Machine
2607
+ infraMachine * unstructured.Unstructured
2607
2608
expectedError error
2608
2609
}{
2609
2610
{
@@ -2630,6 +2631,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2630
2631
},
2631
2632
Status : clusterv1.MachineStatus {},
2632
2633
},
2634
+ infraMachine : nil ,
2633
2635
expectedError : errNilNodeRef ,
2634
2636
},
2635
2637
{
@@ -2660,6 +2662,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2660
2662
},
2661
2663
},
2662
2664
},
2665
+ infraMachine : nil ,
2663
2666
expectedError : errNoControlPlaneNodes ,
2664
2667
},
2665
2668
{
@@ -2692,6 +2695,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2692
2695
},
2693
2696
},
2694
2697
},
2698
+ infraMachine : nil ,
2695
2699
expectedError : errNoControlPlaneNodes ,
2696
2700
},
2697
2701
{
@@ -2722,6 +2726,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2722
2726
},
2723
2727
},
2724
2728
},
2729
+ infraMachine : nil ,
2725
2730
expectedError : nil ,
2726
2731
},
2727
2732
{
@@ -2735,6 +2740,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2735
2740
},
2736
2741
},
2737
2742
machine : & clusterv1.Machine {},
2743
+ infraMachine : nil ,
2738
2744
expectedError : errClusterIsBeingDeleted ,
2739
2745
},
2740
2746
{
@@ -2773,6 +2779,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2773
2779
},
2774
2780
},
2775
2781
},
2782
+ infraMachine : nil ,
2776
2783
expectedError : nil ,
2777
2784
},
2778
2785
{
@@ -2811,6 +2818,7 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2811
2818
},
2812
2819
},
2813
2820
},
2821
+ infraMachine : nil ,
2814
2822
expectedError : errControlPlaneIsBeingDeleted ,
2815
2823
},
2816
2824
{
@@ -2849,8 +2857,40 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2849
2857
},
2850
2858
},
2851
2859
},
2860
+ infraMachine : nil ,
2852
2861
expectedError : errControlPlaneIsBeingDeleted ,
2853
2862
},
2863
+ {
2864
+ name : "no nodeRef, infrastructure machine has providerID" ,
2865
+ cluster : & clusterv1.Cluster {
2866
+ ObjectMeta : metav1.ObjectMeta {
2867
+ Name : "test-cluster" ,
2868
+ Namespace : metav1 .NamespaceDefault ,
2869
+ },
2870
+ },
2871
+ machine : & clusterv1.Machine {
2872
+ ObjectMeta : metav1.ObjectMeta {
2873
+ Name : "created" ,
2874
+ Namespace : metav1 .NamespaceDefault ,
2875
+ Labels : map [string ]string {
2876
+ clusterv1 .ClusterNameLabel : "test-cluster" ,
2877
+ },
2878
+ Finalizers : []string {clusterv1 .MachineFinalizer },
2879
+ },
2880
+ Spec : clusterv1.MachineSpec {
2881
+ ClusterName : "test-cluster" ,
2882
+ InfrastructureRef : corev1.ObjectReference {},
2883
+ Bootstrap : clusterv1.Bootstrap {DataSecretName : ptr .To ("data" )},
2884
+ },
2885
+ Status : clusterv1.MachineStatus {},
2886
+ },
2887
+ infraMachine : & unstructured.Unstructured {Object : map [string ]interface {}{
2888
+ "spec" : map [string ]interface {}{
2889
+ "providerID" : "test-node-1" ,
2890
+ },
2891
+ }},
2892
+ expectedError : nil ,
2893
+ },
2854
2894
}
2855
2895
2856
2896
emp := & unstructured.Unstructured {
@@ -2889,6 +2929,16 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2889
2929
empBeingDeleted .SetDeletionTimestamp (& metav1.Time {Time : time .Now ()})
2890
2930
empBeingDeleted .SetFinalizers ([]string {"block-deletion" })
2891
2931
2932
+ testNodeA := & corev1.Node {
2933
+ ObjectMeta : metav1.ObjectMeta {
2934
+ Name : "node-1" ,
2935
+ },
2936
+ Spec : corev1.NodeSpec {
2937
+ ProviderID : "test-node-1" ,
2938
+ },
2939
+ }
2940
+ remoteClient := fake .NewClientBuilder ().WithIndex (& corev1.Node {}, "spec.providerID" , index .NodeByProviderID ).WithObjects (testNodeA ).Build ()
2941
+
2892
2942
for _ , tc := range testCases {
2893
2943
t .Run (tc .name , func (t * testing.T ) {
2894
2944
g := NewWithT (t )
@@ -2949,10 +2999,11 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
2949
2999
empBeingDeleted ,
2950
3000
).Build ()
2951
3001
mr := & Reconciler {
2952
- Client : c ,
3002
+ Client : c ,
3003
+ ClusterCache : clustercache .NewFakeClusterCache (remoteClient , client .ObjectKeyFromObject (tc .cluster )),
2953
3004
}
2954
3005
2955
- err := mr .isDeleteNodeAllowed (ctx , tc .cluster , tc .machine )
3006
+ err := mr .isDeleteNodeAllowed (ctx , tc .cluster , tc .machine , tc . infraMachine )
2956
3007
if tc .expectedError == nil {
2957
3008
g .Expect (err ).ToNot (HaveOccurred ())
2958
3009
} else {
0 commit comments