Skip to content

Commit 30f2150

Browse files
*: address comments
Signed-off-by: Steve Kuznetsov <[email protected]>
1 parent 3aa08f8 commit 30f2150

File tree

6 files changed

+19
-49
lines changed

6 files changed

+19
-49
lines changed

cmd/olm/manager.go

+1-38
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,10 @@ package main
33
import (
44
"context"
55

6-
appsv1 "k8s.io/api/apps/v1"
7-
corev1 "k8s.io/api/core/v1"
8-
rbacv1 "k8s.io/api/rbac/v1"
9-
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
106
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
117
"k8s.io/apimachinery/pkg/labels"
128
"k8s.io/apimachinery/pkg/runtime"
139
"k8s.io/apimachinery/pkg/selection"
14-
apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
1510
ctrl "sigs.k8s.io/controller-runtime"
1611
"sigs.k8s.io/controller-runtime/pkg/cache"
1712
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -56,40 +51,8 @@ func Manager(ctx context.Context, debug bool) (ctrl.Manager, error) {
5651
Scheme: scheme,
5752
MetricsBindAddress: "0", // TODO(njhale): Enable metrics on non-conflicting port (not 8080)
5853
Cache: cache.Options{
54+
DefaultLabelSelector: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
5955
ByObject: map[client.Object]cache.ByObject{
60-
&appsv1.Deployment{}: {
61-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
62-
},
63-
&corev1.Service{}: {
64-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
65-
},
66-
&apiextensionsv1.CustomResourceDefinition{}: {
67-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
68-
},
69-
&apiregistrationv1.APIService{}: {
70-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
71-
},
72-
&corev1.ConfigMap{}: {
73-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
74-
},
75-
&corev1.ServiceAccount{}: {
76-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
77-
},
78-
&rbacv1.Role{}: {
79-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
80-
},
81-
&rbacv1.RoleBinding{}: {
82-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
83-
},
84-
&rbacv1.ClusterRole{}: {
85-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
86-
},
87-
&rbacv1.ClusterRoleBinding{}: {
88-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
89-
},
90-
&corev1.Secret{}: {
91-
Label: labels.SelectorFromValidatedSet(map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}),
92-
},
9356
&operatorsv1alpha1.ClusterServiceVersion{}: {
9457
Label: copiedLabelDoesNotExist,
9558
},

pkg/controller/operators/labeller/labels.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ func ObjectPatchLabeler(
123123
if gvrFullyLabelled {
124124
allObjectsLabelled := done()
125125
if allObjectsLabelled {
126-
logrus.Fatal("detected that every object is labelled, exiting...")
126+
logrus.Info("detected that every object is labelled, exiting to re-start the process...")
127+
os.Exit(0)
127128
}
128129
}
129130
return nil

pkg/controller/operators/labeller/rbac.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package labeller
33
import (
44
"context"
55
"fmt"
6+
"os"
67

78
"github.com/operator-framework/api/pkg/operators/v1alpha1"
89
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver"
@@ -52,7 +53,8 @@ func ContentHashLabeler[T metav1.Object, A ApplyConfig[A]](
5253
if gvrFullyLabelled {
5354
allObjectsLabelled := done()
5455
if allObjectsLabelled {
55-
logrus.Fatal("detected that every object is labelled, exiting...")
56+
logrus.Info("detected that every object is labelled, exiting to re-start the process...")
57+
os.Exit(0)
5658
}
5759
}
5860
return nil

pkg/controller/operators/olm/operator.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,13 @@ func (a *Operator) getRuleChecker() func(*v1alpha1.ClusterServiceVersion) *insta
136136
clusterRolesLister := sif.Rbac().V1().ClusterRoles().Lister()
137137
clusterRoleBindingsLister := sif.Rbac().V1().ClusterRoleBindings().Lister()
138138

139-
done := make(chan struct{})
140-
go func() {
141-
<-a.ctx.Done()
142-
done <- struct{}{}
143-
}()
144-
sif.Start(done)
145-
sif.WaitForCacheSync(done)
139+
sif.Start(a.ctx.Done())
140+
sif.WaitForCacheSync(a.ctx.Done())
141+
142+
if a.ctx.Err() != nil {
143+
a.ruleChecker = nil
144+
return nil
145+
}
146146

147147
a.ruleChecker = func(csv *v1alpha1.ClusterServiceVersion) *install.CSVRuleChecker {
148148
return install.NewCSVRuleChecker(

pkg/controller/operators/olm/requirements.go

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package olm
33
import (
44
"context"
55
"encoding/json"
6+
"errors"
67
"fmt"
78
"strings"
89

@@ -349,6 +350,9 @@ func (a *Operator) permissionStatus(strategyDetailsDeployment *v1alpha1.Strategy
349350
// if we have not filtered our informers or if we were unable to detect the correct permissions, we have
350351
// no choice but to page in the world and see if the user pre-created permissions for this CSV
351352
ruleChecker := a.getRuleChecker()(csv)
353+
if ruleChecker == nil {
354+
return false, errors.New("could not create a rule checker (are we shutting down?)")
355+
}
352356
for _, rule := range perm.Rules {
353357
dependent := v1alpha1.DependentStatus{
354358
Group: "rbac.authorization.k8s.io",

pkg/lib/scoped/syncer.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ func (s *UserDefinedServiceAccountSyncer) SyncOperatorGroup(in *v1.OperatorGroup
100100
return
101101
}
102102

103-
// A service account has been specified, but likely does not have the labels we expect it to have so it will
104-
// show up in our listers, so let's add that and queue again later
103+
// A service account has been specified, but likely does not have the labels we require it to have to ensure it
104+
// shows up in our listers, so let's add that and queue again later
105105
config := corev1applyconfigurations.ServiceAccount(serviceAccountName, namespace)
106106
config.Labels = map[string]string{install.OLMManagedLabelKey: install.OLMManagedLabelValue}
107107
if _, err := s.client.KubernetesInterface().CoreV1().ServiceAccounts(namespace).Apply(context.TODO(), config, metav1.ApplyOptions{FieldManager: "operator-lifecycle-manager"}); err != nil {

0 commit comments

Comments
 (0)