@@ -541,6 +541,49 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
541
541
return nil , err
542
542
}
543
543
544
+ {
545
+ gvr := servicesgvk
546
+ informer := serviceInformer .Informer ()
547
+
548
+ logger := op .logger .WithFields (logrus.Fields {"gvr" : gvr .String ()})
549
+ logger .Info ("registering owner reference fixer" )
550
+
551
+ queue := workqueue .NewRateLimitingQueueWithConfig (workqueue .DefaultControllerRateLimiter (), workqueue.RateLimitingQueueConfig {
552
+ Name : gvr .String (),
553
+ })
554
+ queueInformer , err := queueinformer .NewQueueInformer (
555
+ ctx ,
556
+ queueinformer .WithQueue (queue ),
557
+ queueinformer .WithLogger (op .logger ),
558
+ queueinformer .WithInformer (informer ),
559
+ queueinformer .WithSyncer (queueinformer .LegacySyncHandler (func (obj interface {}) error {
560
+ service , ok := obj .(* corev1.Service )
561
+ if ! ok {
562
+ err := fmt .Errorf ("wrong type %T, expected %T: %#v" , obj , new (* corev1.Service ), obj )
563
+ logger .WithError (err ).Error ("casting failed" )
564
+ return fmt .Errorf ("casting failed: %w" , err )
565
+ }
566
+
567
+ deduped := sets .New (service .OwnerReferences ... ).UnsortedList ()
568
+ if len (deduped ) != len (service .OwnerReferences ) {
569
+ localCopy := service .DeepCopy ()
570
+ localCopy .OwnerReferences = deduped
571
+ if _ , err := op .opClient .KubernetesInterface ().CoreV1 ().Services (service .Namespace ).Update (ctx , localCopy , metav1.UpdateOptions {}); err != nil {
572
+ return err
573
+ }
574
+ }
575
+ return nil
576
+ }).ToSyncer ()),
577
+ )
578
+ if err != nil {
579
+ return nil , err
580
+ }
581
+
582
+ if err := op .RegisterQueueInformer (queueInformer ); err != nil {
583
+ return nil , err
584
+ }
585
+ }
586
+
544
587
// Wire Pods for CatalogSource
545
588
catsrcReq , err := labels .NewRequirement (reconciler .CatalogSourceLabelKey , selection .Exists , nil )
546
589
if err != nil {
0 commit comments