@@ -34,6 +34,7 @@ import (
34
34
"k8s.io/client-go/informers"
35
35
"k8s.io/client-go/tools/cache"
36
36
"k8s.io/client-go/tools/clientcmd"
37
+ "k8s.io/client-go/tools/record"
37
38
"k8s.io/client-go/util/retry"
38
39
"k8s.io/client-go/util/workqueue"
39
40
@@ -48,6 +49,7 @@ import (
48
49
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc"
49
50
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/reconciler"
50
51
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver"
52
+ "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/event"
51
53
index "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/index"
52
54
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
53
55
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister"
@@ -90,6 +92,7 @@ type Operator struct {
90
92
ipQueueSet * queueinformer.ResourceQueueSet
91
93
nsResolveQueue workqueue.RateLimitingInterface
92
94
namespace string
95
+ recorder record.EventRecorder
93
96
sources * grpc.SourceStore
94
97
sourcesLastUpdate sharedtime.SharedTime
95
98
resolver resolver.StepResolver
@@ -133,6 +136,12 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
133
136
// Create an OperatorLister
134
137
lister := operatorlister .NewLister ()
135
138
139
+ // eventRecorder can emit events
140
+ eventRecorder , err := event .NewRecorder (opClient .KubernetesInterface ().CoreV1 ().Events (metav1 .NamespaceAll ))
141
+ if err != nil {
142
+ return nil , err
143
+ }
144
+
136
145
// Allocate the new instance of an Operator.
137
146
op := & Operator {
138
147
Operator : queueOperator ,
@@ -143,6 +152,7 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
143
152
client : crClient ,
144
153
lister : lister ,
145
154
namespace : operatorNamespace ,
155
+ recorder : eventRecorder ,
146
156
catsrcQueueSet : queueinformer .NewEmptyResourceQueueSet (),
147
157
subQueueSet : queueinformer .NewEmptyResourceQueueSet (),
148
158
ipQueueSet : queueinformer .NewEmptyResourceQueueSet (),
@@ -854,6 +864,7 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
854
864
// resolve a set of steps to apply to a cluster, a set of subscriptions to create/update, and any errors
855
865
steps , bundleLookups , updatedSubs , err := o .resolver .ResolveSteps (namespace , querier )
856
866
if err != nil {
867
+ go o .recorder .Event (ns , corev1 .EventTypeWarning ,"ResolutionFailed" , err .Error ())
857
868
return err
858
869
}
859
870
@@ -1211,7 +1222,7 @@ func (o *Operator) gcInstallPlans(log logrus.FieldLogger, namespace string) {
1211
1222
1212
1223
// we only consider maxDeletesPerSweep more than the allowed number of installplans for delete at one time
1213
1224
ips := allIps
1214
- if len (ips ) > maxInstallPlanCount + maxDeletesPerSweep {
1225
+ if len (ips ) > maxInstallPlanCount + maxDeletesPerSweep {
1215
1226
ips = allIps [:maxInstallPlanCount + maxDeletesPerSweep ]
1216
1227
}
1217
1228
0 commit comments