Skip to content

Commit 77b84ab

Browse files
committed
fix(registry): service label selector doesn't include resourceversion
1 parent 7a5409f commit 77b84ab

File tree

2 files changed

+38
-18
lines changed

2 files changed

+38
-18
lines changed

pkg/controller/operators/catalog/operator.go

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,14 @@ func NewOperator(kubeconfigPath string, logger *logrus.Logger, wakeupInterval ti
119119
for _, namespace := range watchedNamespaces {
120120
nsInformerFactory := externalversions.NewSharedInformerFactoryWithOptions(crClient, wakeupInterval, externalversions.WithNamespace(namespace))
121121
catsrcInformer := nsInformerFactory.Operators().V1alpha1().CatalogSources()
122+
122123
// Register queue and QueueInformer
123-
queueName := fmt.Sprintf("%s/catsrc", namespace)
124+
var queueName string
125+
if namespace == corev1.NamespaceAll {
126+
queueName = "catsrc"
127+
} else {
128+
queueName = fmt.Sprintf("%s/catsrc", namespace)
129+
}
124130
catsrcQueue := workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), queueName)
125131
op.RegisterQueueInformer(queueinformer.NewInformer(catsrcQueue, catsrcInformer.Informer(), op.syncCatalogSources, deleteCatSrc, queueName, metrics.NewMetricsCatalogSource(op.client), logger))
126132
op.catSrcQueueSet[namespace] = catsrcQueue
@@ -239,7 +245,7 @@ func (o *Operator) syncObject(obj interface{}) (syncError error) {
239245
defer o.sourcesLock.RUnlock()
240246
if _, ok := o.sources[sourceKey]; ok {
241247
logger.Debug("requeueing owner CatalogSource")
242-
if err := o.catSrcQueueSet.Requeue(owner.Name, metaObj.GetNamespace()); err!=nil {
248+
if err := o.catSrcQueueSet.Requeue(owner.Name, metaObj.GetNamespace()); err != nil {
243249
logger.Warn(err.Error())
244250
}
245251
}
@@ -266,22 +272,36 @@ func (o *Operator) handleDeletion(obj interface{}) {
266272
}
267273

268274
if owner := ownerutil.GetOwnerByKind(ownee, v1alpha1.CatalogSourceKind); owner != nil {
269-
if err := o.catSrcQueueSet.Requeue(owner.Name, ownee.GetNamespace()); err!=nil {
270-
o.Log.Warn(err.Error())
271-
}
275+
if err := o.catSrcQueueSet.Requeue(owner.Name, ownee.GetNamespace()); err != nil {
276+
o.Log.Warn(err.Error())
277+
}
272278
}
273279
}
274280

275281
func (o *Operator) handleCatSrcDeletion(obj interface{}) {
276-
if catsrc, ok := obj.(*v1alpha1.CatalogSource); ok {
277-
sourceKey := resolver.CatalogKey{Name: catsrc.GetName(), Namespace: catsrc.GetNamespace()}
278-
func() {
279-
o.sourcesLock.Lock()
280-
defer o.sourcesLock.Unlock()
281-
delete(o.sources, sourceKey)
282-
}()
283-
o.Log.WithField("source", sourceKey).Info("removed client for deleted catalogsource")
282+
catsrc, ok := obj.(metav1.Object)
283+
if !ok {
284+
if !ok {
285+
tombstone, ok := obj.(cache.DeletedFinalStateUnknown)
286+
if !ok {
287+
utilruntime.HandleError(fmt.Errorf("Couldn't get object from tombstone %#v", obj))
288+
return
289+
}
290+
291+
catsrc, ok = tombstone.Obj.(metav1.Object)
292+
if !ok {
293+
utilruntime.HandleError(fmt.Errorf("Tombstone contained object that is not a Namespace %#v", obj))
294+
return
295+
}
296+
}
284297
}
298+
sourceKey := resolver.CatalogKey{Name: catsrc.GetName(), Namespace: catsrc.GetNamespace()}
299+
func() {
300+
o.sourcesLock.Lock()
301+
defer o.sourcesLock.Unlock()
302+
delete(o.sources, sourceKey)
303+
}()
304+
o.Log.WithField("source", sourceKey).Info("removed client for deleted catalogsource")
285305
}
286306

287307
func (o *Operator) syncCatalogSources(obj interface{}) (syncError error) {

pkg/controller/registry/reconciler.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ func (s *catalogSourceDecorator) roleName() string {
3333
return s.GetName() + "-configmap-reader"
3434
}
3535

36-
func (s *catalogSourceDecorator) Selector() labels.Selector {
37-
return labels.SelectorFromValidatedSet(map[string]string{
36+
func (s *catalogSourceDecorator) Selector() map[string]string {
37+
return map[string]string{
3838
"olm.catalogSource": s.GetName(),
39-
})
39+
}
4040
}
4141

4242
func (s *catalogSourceDecorator) Labels() map[string]string {
@@ -70,7 +70,7 @@ func (s *catalogSourceDecorator) Service() *v1.Service {
7070
TargetPort: intstr.FromInt(50051),
7171
},
7272
},
73-
Selector: s.Labels(),
73+
Selector: s.Selector(),
7474
},
7575
}
7676
ownerutil.AddOwner(svc, s.CatalogSource, false, false)
@@ -228,7 +228,7 @@ func (c *ConfigMapRegistryReconciler) currentRoleBinding(source catalogSourceDec
228228

229229
func (c *ConfigMapRegistryReconciler) currentPods(source catalogSourceDecorator, image string) []*v1.Pod {
230230
podName := source.Pod(image).GetName()
231-
pods, err := c.Lister.CoreV1().PodLister().Pods(source.GetNamespace()).List(source.Selector())
231+
pods, err := c.Lister.CoreV1().PodLister().Pods(source.GetNamespace()).List(labels.SelectorFromSet(source.Labels()))
232232
if err != nil {
233233
logrus.WithField("pod", podName).WithError(err).Warn("couldn't find pod in cache")
234234
return nil

0 commit comments

Comments
 (0)