@@ -371,14 +371,61 @@ var _ = Describe("application", func() {
371
371
Expect (err ).NotTo (HaveOccurred ())
372
372
})
373
373
374
- It ("should support watching For & Owns as metadata" , func () {
374
+ It ("should support watching For, Owns, and Watch as metadata" , func () {
375
+ statefulSetMaps := make (chan * metav1.PartialObjectMetadata )
376
+
375
377
bldr := ControllerManagedBy (mgr ).
376
378
For (& appsv1.Deployment {}, OnlyMetadata ).
377
- Owns (& appsv1.ReplicaSet {}, OnlyMetadata )
379
+ Owns (& appsv1.ReplicaSet {}, OnlyMetadata ).
380
+ Watches (& source.Kind {Type : & appsv1.StatefulSet {}},
381
+ handler .EnqueueRequestsFromMapFunc (func (o client.Object ) []reconcile.Request {
382
+ ometa := o .(* metav1.PartialObjectMetadata )
383
+ statefulSetMaps <- ometa
384
+ return nil
385
+ }),
386
+ OnlyMetadata )
378
387
379
388
ctx , cancel := context .WithCancel (context .Background ())
380
389
defer cancel ()
381
390
doReconcileTest (ctx , "8" , bldr , mgr , true )
391
+
392
+ By ("Creating a new stateful set" )
393
+ set := & appsv1.StatefulSet {
394
+ ObjectMeta : metav1.ObjectMeta {
395
+ Namespace : "default" ,
396
+ Name : "test1" ,
397
+ Labels : map [string ]string {
398
+ "foo" : "bar" ,
399
+ },
400
+ },
401
+ Spec : appsv1.StatefulSetSpec {
402
+ Selector : & metav1.LabelSelector {
403
+ MatchLabels : map [string ]string {"foo" : "bar" },
404
+ },
405
+ Template : corev1.PodTemplateSpec {
406
+ ObjectMeta : metav1.ObjectMeta {Labels : map [string ]string {"foo" : "bar" }},
407
+ Spec : corev1.PodSpec {
408
+ Containers : []corev1.Container {
409
+ {
410
+ Name : "nginx" ,
411
+ Image : "nginx" ,
412
+ },
413
+ },
414
+ },
415
+ },
416
+ },
417
+ }
418
+ err := mgr .GetClient ().Create (context .TODO (), set )
419
+ Expect (err ).NotTo (HaveOccurred ())
420
+
421
+ By ("Checking that the mapping function has been called" )
422
+ Eventually (func () bool {
423
+ metaSet := <- statefulSetMaps
424
+ Expect (metaSet .Name ).To (Equal (set .Name ))
425
+ Expect (metaSet .Namespace ).To (Equal (set .Namespace ))
426
+ Expect (metaSet .Labels ).To (Equal (set .Labels ))
427
+ return true
428
+ }).Should (BeTrue ())
382
429
})
383
430
})
384
431
})
0 commit comments