@@ -17,7 +17,6 @@ limitations under the License.
1717package machine
1818
1919import (
20- "context"
2120 "fmt"
2221 "testing"
2322 "time"
@@ -32,17 +31,12 @@ import (
3231 ctrl "sigs.k8s.io/controller-runtime"
3332 "sigs.k8s.io/controller-runtime/pkg/client"
3433 "sigs.k8s.io/controller-runtime/pkg/client/fake"
35- "sigs.k8s.io/controller-runtime/pkg/controller"
36- "sigs.k8s.io/controller-runtime/pkg/handler"
37- "sigs.k8s.io/controller-runtime/pkg/reconcile"
3834
3935 clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
4036 "sigs.k8s.io/cluster-api/api/core/v1beta2/index"
4137 "sigs.k8s.io/cluster-api/controllers/clustercache"
42- "sigs.k8s.io/cluster-api/controllers/remote"
4338 "sigs.k8s.io/cluster-api/feature"
4439 "sigs.k8s.io/cluster-api/internal/topology/ownerrefs"
45- capicontrollerutil "sigs.k8s.io/cluster-api/internal/util/controller"
4640 "sigs.k8s.io/cluster-api/util"
4741 "sigs.k8s.io/cluster-api/util/kubeconfig"
4842 "sigs.k8s.io/cluster-api/util/test/builder"
@@ -336,45 +330,14 @@ func TestReconcileNode(t *testing.T) {
336330}
337331
338332func TestGetNode (t * testing.T ) {
339- g := NewWithT (t )
340-
341- ns , err := env .CreateNamespace (ctx , "test-get-node" )
342- g .Expect (err ).ToNot (HaveOccurred ())
343-
344- // Set up cluster to test against.
345- testCluster := & clusterv1.Cluster {
346- ObjectMeta : metav1.ObjectMeta {
347- GenerateName : "test-get-node-" ,
348- Namespace : ns .Name ,
349- },
350- Spec : clusterv1.ClusterSpec {
351- ControlPlaneRef : clusterv1.ContractVersionedObjectReference {
352- APIGroup : builder .ControlPlaneGroupVersion .Group ,
353- Kind : builder .GenericControlPlaneKind ,
354- Name : "cp1" ,
355- },
356- },
357- }
358-
359- g .Expect (env .Create (ctx , testCluster )).To (Succeed ())
360- // Set InfrastructureReady to true so ClusterCache creates the clusterAccessor.
361- patch := client .MergeFrom (testCluster .DeepCopy ())
362- testCluster .Status .Initialization .InfrastructureProvisioned = ptr .To (true )
363- g .Expect (env .Status ().Patch (ctx , testCluster , patch )).To (Succeed ())
364-
365- g .Expect (env .CreateKubeconfigSecret (ctx , testCluster )).To (Succeed ())
366- defer func (do ... client.Object ) {
367- g .Expect (env .Cleanup (ctx , do ... )).To (Succeed ())
368- }(ns , testCluster )
369-
370333 testCases := []struct {
371334 name string
372335 node * corev1.Node
373336 providerIDInput string
374337 error error
375338 }{
376339 {
377- name : "full providerID matches" ,
340+ name : "providerID matches" ,
378341 node : & corev1.Node {
379342 ObjectMeta : metav1.ObjectMeta {
380343 Name : "test-get-node-node-1" ,
@@ -386,31 +349,7 @@ func TestGetNode(t *testing.T) {
386349 providerIDInput : "aws://us-east-1/test-get-node-1" ,
387350 },
388351 {
389- name : "aws prefix: cloudProvider and ID matches" ,
390- node : & corev1.Node {
391- ObjectMeta : metav1.ObjectMeta {
392- Name : "test-get-node-node-2" ,
393- },
394- Spec : corev1.NodeSpec {
395- ProviderID : "aws://us-west-2/test-get-node-2" ,
396- },
397- },
398- providerIDInput : "aws://us-west-2/test-get-node-2" ,
399- },
400- {
401- name : "gce prefix, cloudProvider and ID matches" ,
402- node : & corev1.Node {
403- ObjectMeta : metav1.ObjectMeta {
404- Name : "test-get-node-gce-node-2" ,
405- },
406- Spec : corev1.NodeSpec {
407- ProviderID : "gce://us-central1/test-get-node-2" ,
408- },
409- },
410- providerIDInput : "gce://us-central1/test-get-node-2" ,
411- },
412- {
413- name : "Node is not found" ,
352+ name : "Node is not found, providerID does not match" ,
414353 node : & corev1.Node {
415354 ObjectMeta : metav1.ObjectMeta {
416355 Name : "test-get-node-not-found" ,
@@ -424,64 +363,13 @@ func TestGetNode(t *testing.T) {
424363 },
425364 }
426365
427- nodesToCleanup := make ([]client.Object , 0 , len (testCases ))
428- for _ , tc := range testCases {
429- g .Expect (env .Create (ctx , tc .node )).To (Succeed ())
430- nodesToCleanup = append (nodesToCleanup , tc .node )
431- }
432- defer func (do ... client.Object ) {
433- g .Expect (env .Cleanup (ctx , do ... )).To (Succeed ())
434- }(nodesToCleanup ... )
435-
436- clusterCache , err := clustercache .SetupWithManager (ctx , env .Manager , clustercache.Options {
437- SecretClient : env .GetClient (),
438- Cache : clustercache.CacheOptions {
439- Indexes : []clustercache.CacheOptionsIndex {clustercache .NodeProviderIDIndex },
440- },
441- Client : clustercache.ClientOptions {
442- UserAgent : remote .DefaultClusterAPIUserAgent ("test-controller-manager" ),
443- Cache : clustercache.ClientCacheOptions {
444- DisableFor : []client.Object {
445- // Don't cache ConfigMaps & Secrets.
446- & corev1.ConfigMap {},
447- & corev1.Secret {},
448- },
449- },
450- },
451- }, controller.Options {MaxConcurrentReconciles : 10 , SkipNameValidation : ptr .To (true )})
452- if err != nil {
453- panic (fmt .Sprintf ("Failed to create ClusterCache: %v" , err ))
454- }
455- defer clusterCache .(interface { Shutdown () }).Shutdown ()
456-
457- r := & Reconciler {
458- ClusterCache : clusterCache ,
459- Client : env ,
460- }
461-
462- predicateLog := ctrl .LoggerFrom (ctx ).WithValues ("controller" , "node" )
463- w , err := capicontrollerutil .NewControllerManagedBy (env .Manager , predicateLog ).For (& corev1.Node {}).Build (r )
464- g .Expect (err ).ToNot (HaveOccurred ())
465-
466- // Retry because the ClusterCache might not have immediately created the clusterAccessor.
467- g .Eventually (func (g Gomega ) {
468- g .Expect (clusterCache .Watch (ctx , util .ObjectKey (testCluster ), clustercache .NewWatcher (clustercache.WatcherOptions {
469- Name : "TestGetNode" ,
470- Watcher : w ,
471- Kind : & corev1.Node {},
472- EventHandler : handler .EnqueueRequestsFromMapFunc (func (context.Context , client.Object ) []reconcile.Request {
473- return nil
474- }),
475- }))).To (Succeed ())
476- }, 1 * time .Minute , 5 * time .Second ).Should (Succeed ())
477-
478366 for _ , tc := range testCases {
479367 t .Run (tc .name , func (t * testing.T ) {
480368 g := NewWithT (t )
481- remoteClient , err := r .ClusterCache .GetClient (ctx , util .ObjectKey (testCluster ))
482- g .Expect (err ).ToNot (HaveOccurred ())
483369
484- node , err := r .getNode (ctx , remoteClient , tc .providerIDInput )
370+ remoteClient := fake .NewClientBuilder ().WithObjects (tc .node ).WithIndex (& corev1.Node {}, index .NodeProviderIDField , index .NodeByProviderID ).Build ()
371+
372+ node , err := (& Reconciler {}).getNode (ctx , remoteClient , tc .providerIDInput )
485373 if tc .error != nil {
486374 g .Expect (err ).To (Equal (tc .error ))
487375 return
0 commit comments