@@ -97,7 +97,7 @@ type Operator struct {
9797 csvQueueSet * queueinformer.ResourceQueueSet
9898 olmConfigQueue workqueue.TypedRateLimitingInterface [types.NamespacedName ]
9999 csvCopyQueueSet * queueinformer.ResourceQueueSet
100- copiedCSVGCQueueSet * queueinformer.ResourceQueueSet
100+ copiedCSVQueueSet * queueinformer.ResourceQueueSet
101101 nsQueueSet workqueue.TypedRateLimitingInterface [types.NamespacedName ]
102102 apiServiceQueue workqueue.TypedRateLimitingInterface [types.NamespacedName ]
103103 csvIndexers map [string ]cache.Indexer
@@ -216,8 +216,8 @@ func newOperatorWithConfig(ctx context.Context, config *operatorConfig) (*Operat
216216 Name : "olmConfig" ,
217217 }),
218218
219- csvCopyQueueSet : queueinformer .NewEmptyResourceQueueSet (),
220- copiedCSVGCQueueSet : queueinformer .NewEmptyResourceQueueSet (),
219+ csvCopyQueueSet : queueinformer .NewEmptyResourceQueueSet (),
220+ copiedCSVQueueSet : queueinformer .NewEmptyResourceQueueSet (),
221221 apiServiceQueue : workqueue .NewTypedRateLimitingQueueWithConfig [types.NamespacedName ](
222222 workqueue .DefaultTypedControllerRateLimiter [types.NamespacedName ](),
223223 workqueue.TypedRateLimitingQueueConfig [types.NamespacedName ]{
@@ -371,25 +371,26 @@ func newOperatorWithConfig(ctx context.Context, config *operatorConfig) (*Operat
371371 informersByNamespace [namespace ].CopiedCSVInformer = copiedCSVInformer
372372 informersByNamespace [namespace ].CopiedCSVLister = op .copiedCSVLister
373373
374- // Register separate queue for gcing copied csvs
375- copiedCSVGCQueue := workqueue .NewTypedRateLimitingQueueWithConfig [types.NamespacedName ](
374+ // Register separate queue for gcing/syncing/deletion of copied csvs
375+ copiedCSVQueue := workqueue .NewTypedRateLimitingQueueWithConfig [types.NamespacedName ](
376376 workqueue .DefaultTypedControllerRateLimiter [types.NamespacedName ](),
377377 workqueue.TypedRateLimitingQueueConfig [types.NamespacedName ]{
378- Name : fmt .Sprintf ("%s/csv-gc-revert " , namespace ),
378+ Name : fmt .Sprintf ("%s/csv-copied-sync " , namespace ),
379379 })
380- op .copiedCSVGCQueueSet .Set (namespace , copiedCSVGCQueue )
381- copiedCSVGCQueueInformer , err := queueinformer .NewQueueInformer (
380+ op .copiedCSVQueueSet .Set (namespace , copiedCSVQueue )
381+ copiedCSVQueueInformer , err := queueinformer .NewQueueInformer (
382382 ctx ,
383383 queueinformer .WithInformer (copiedCSVInformer ),
384384 queueinformer .WithLogger (op .logger ),
385- queueinformer .WithQueue (copiedCSVGCQueue ),
385+ queueinformer .WithQueue (copiedCSVQueue ),
386386 queueinformer .WithIndexer (copiedCSVInformer .GetIndexer ()),
387- queueinformer .WithSyncer (queueinformer .LegacySyncHandler (op .syncResyncCsv ).ToSyncer ()),
387+ queueinformer .WithSyncer (queueinformer .LegacySyncHandler (op .syncCopiedCsv ).ToSyncer ()),
388+ queueinformer .WithDeletionHandler (op .deleteCopiedCsv ),
388389 )
389390 if err != nil {
390391 return nil , err
391392 }
392- if err := op .RegisterQueueInformer (copiedCSVGCQueueInformer ); err != nil {
393+ if err := op .RegisterQueueInformer (copiedCSVQueueInformer ); err != nil {
393394 return nil , err
394395 }
395396
@@ -1266,7 +1267,7 @@ func (a *Operator) handleClusterServiceVersionDeletion(obj interface{}) {
12661267 for _ , namespace := range namespaces {
12671268 if namespace != operatorNamespace {
12681269 logger .WithField ("targetNamespace" , namespace ).Debug ("requeueing child csv for deletion" )
1269- if err := a .copiedCSVGCQueueSet .Requeue (namespace , clusterServiceVersion .GetName ()); err != nil {
1270+ if err := a .copiedCSVQueueSet .Requeue (namespace , clusterServiceVersion .GetName ()); err != nil {
12701271 logger .WithError (err ).Warn ("unable to requeue" )
12711272 }
12721273 }
@@ -1929,7 +1930,35 @@ func (a *Operator) createCSVCopyingDisabledEvent(csv *v1alpha1.ClusterServiceVer
19291930 return nil
19301931}
19311932
1932- func (a * Operator ) syncResyncCsv (obj interface {}) error {
1933+ func (a * Operator ) requeueParentCsv (csv * v1alpha1.ClusterServiceVersion ) error {
1934+ name := csv .GetName ()
1935+ copiedNamespace := csv .GetNamespace ()
1936+ a .logger .WithField ("csv" , fmt .Sprintf ("%s/%s" , copiedNamespace , name )).Debug ("syncing copied CSV" )
1937+
1938+ // Requeue parent CSV to deal with any changes to the copied CSV
1939+ copiedFromNamespace , ok := csv .GetLabels ()[v1alpha1 .CopiedLabelKey ]
1940+ if ! ok {
1941+ a .logger .Infof ("no %q label found in CSV, skipping requeue" , v1alpha1 .CopiedLabelKey )
1942+ return nil
1943+ }
1944+ return a .csvCopyQueueSet .Requeue (copiedFromNamespace , name )
1945+ }
1946+
1947+ func (a * Operator ) deleteCopiedCsv (obj interface {}) {
1948+ csv , ok := obj .(* v1alpha1.ClusterServiceVersion )
1949+ if ! ok {
1950+ a .logger .Debugf ("casting ClusterServiceVersion failed: wrong type: %#v" , obj )
1951+ return
1952+ }
1953+ if ! v1alpha1 .IsCopied (csv ) {
1954+ return
1955+ }
1956+
1957+ // Trigger partent reconciliation
1958+ a .requeueParentCsv (csv )
1959+ }
1960+
1961+ func (a * Operator ) syncCopiedCsv (obj interface {}) error {
19331962 csv , ok := obj .(* v1alpha1.ClusterServiceVersion )
19341963 if ! ok {
19351964 a .logger .Debugf ("wrong type: %#v" , obj )
@@ -1939,23 +1968,14 @@ func (a *Operator) syncResyncCsv(obj interface{}) error {
19391968 return nil
19401969 }
19411970
1942- name := csv .GetName ()
1943- copiedNamespace := csv .GetNamespace ()
1944- a .logger .WithField ("csv" , fmt .Sprintf ("%s/%s" , copiedNamespace , name )).Debug ("syncing copied CSV" )
1945-
19461971 // check for any garbage collection
19471972 err := a .removeDanglingChildCSVs (csv )
19481973 if err != nil {
19491974 return err
19501975 }
19511976
1952- // Requeue parent CSV to deal with any changes to the copied CSV
1953- copiedFromNamespace , ok := csv .GetLabels ()[v1alpha1 .CopiedLabelKey ]
1954- if ! ok {
1955- a .logger .Infof ("no %q label found in CSV, skipping requeue" , v1alpha1 .CopiedLabelKey )
1956- return nil
1957- }
1958- return a .csvCopyQueueSet .Requeue (copiedFromNamespace , name )
1977+ // Trigger partent reconciliation
1978+ return a .requeueParentCsv (csv )
19591979}
19601980
19611981// operatorGroupFromAnnotations returns the OperatorGroup for the CSV only if the CSV is active one in the group
0 commit comments