Skip to content

Commit defe3df

Browse files
committed
emit events when resolution fails
1 parent 43ba786 commit defe3df

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

pkg/controller/operators/catalog/operator.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"k8s.io/client-go/informers"
3535
"k8s.io/client-go/tools/cache"
3636
"k8s.io/client-go/tools/clientcmd"
37+
"k8s.io/client-go/tools/record"
3738
"k8s.io/client-go/util/retry"
3839
"k8s.io/client-go/util/workqueue"
3940

@@ -48,6 +49,7 @@ import (
4849
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc"
4950
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/reconciler"
5051
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver"
52+
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/event"
5153
index "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/index"
5254
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
5355
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister"
@@ -90,6 +92,7 @@ type Operator struct {
9092
ipQueueSet *queueinformer.ResourceQueueSet
9193
nsResolveQueue workqueue.RateLimitingInterface
9294
namespace string
95+
recorder record.EventRecorder
9396
sources *grpc.SourceStore
9497
sourcesLastUpdate sharedtime.SharedTime
9598
resolver resolver.StepResolver
@@ -133,6 +136,12 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
133136
// Create an OperatorLister
134137
lister := operatorlister.NewLister()
135138

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+
136145
// Allocate the new instance of an Operator.
137146
op := &Operator{
138147
Operator: queueOperator,
@@ -143,6 +152,7 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
143152
client: crClient,
144153
lister: lister,
145154
namespace: operatorNamespace,
155+
recorder: eventRecorder,
146156
catsrcQueueSet: queueinformer.NewEmptyResourceQueueSet(),
147157
subQueueSet: queueinformer.NewEmptyResourceQueueSet(),
148158
ipQueueSet: queueinformer.NewEmptyResourceQueueSet(),
@@ -854,6 +864,7 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
854864
// resolve a set of steps to apply to a cluster, a set of subscriptions to create/update, and any errors
855865
steps, bundleLookups, updatedSubs, err := o.resolver.ResolveSteps(namespace, querier)
856866
if err != nil {
867+
go o.recorder.Event(ns, corev1.EventTypeWarning,"ResolutionFailed", err.Error())
857868
return err
858869
}
859870

@@ -1211,7 +1222,7 @@ func (o *Operator) gcInstallPlans(log logrus.FieldLogger, namespace string) {
12111222

12121223
// we only consider maxDeletesPerSweep more than the allowed number of installplans for delete at one time
12131224
ips := allIps
1214-
if len(ips) > maxInstallPlanCount + maxDeletesPerSweep {
1225+
if len(ips) > maxInstallPlanCount+maxDeletesPerSweep {
12151226
ips = allIps[:maxInstallPlanCount+maxDeletesPerSweep]
12161227
}
12171228

pkg/lib/event/event.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package event
22

33
import (
44
v1 "k8s.io/api/core/v1"
5+
kscheme "k8s.io/client-go/kubernetes/scheme"
56
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
67
"k8s.io/client-go/tools/record"
78
"k8s.io/klog"
@@ -11,13 +12,21 @@ import (
1112

1213
const component string = "operator-lifecycle-manager"
1314

15+
var s = scheme.Scheme
16+
17+
func init() {
18+
if err := kscheme.AddToScheme(s); err != nil {
19+
panic(err)
20+
}
21+
}
22+
1423
// NewRecorder returns an EventRecorder type that can be
1524
// used to post Events to different object's lifecycles.
1625
func NewRecorder(event typedcorev1.EventInterface) (record.EventRecorder, error) {
1726
eventBroadcaster := record.NewBroadcaster()
1827
eventBroadcaster.StartLogging(klog.Infof)
1928
eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: event})
20-
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: component})
29+
recorder := eventBroadcaster.NewRecorder(s, v1.EventSource{Component: component})
2130

2231
return recorder, nil
2332
}

0 commit comments

Comments
 (0)