Skip to content

Commit 39ea65a

Browse files
Merge pull request #798 from neisw/update-event-recorder
Bug OCPBUGS-716: Add support for kube event recorder
2 parents 9947431 + 3125d0b commit 39ea65a

File tree

9 files changed

+50
-21
lines changed

9 files changed

+50
-21
lines changed

manifests/07-operator-ibm-cloud-managed.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ spec:
3131
valueFrom:
3232
fieldRef:
3333
fieldPath: metadata.namespace
34+
- name: POD_NAME
35+
valueFrom:
36+
fieldRef:
37+
fieldPath: metadata.name
3438
- name: OPERATOR_NAME
3539
value: cluster-image-registry-operator
3640
- name: IMAGE

manifests/07-operator.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ spec:
5959
valueFrom:
6060
fieldRef:
6161
fieldPath: metadata.namespace
62+
- name: POD_NAME
63+
valueFrom:
64+
fieldRef:
65+
fieldPath: metadata.name
6266
- name: OPERATOR_NAME
6367
value: "cluster-image-registry-operator"
6468
- name: IMAGE

pkg/operator/controller.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
imageregistryinformers "github.com/openshift/client-go/imageregistry/informers/externalversions"
2929
routeclient "github.com/openshift/client-go/route/clientset/versioned"
3030
routeinformers "github.com/openshift/client-go/route/informers/externalversions"
31+
"github.com/openshift/library-go/pkg/operator/events"
3132

3233
regopclient "github.com/openshift/cluster-image-registry-operator/pkg/client"
3334
"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
@@ -64,6 +65,7 @@ func (e permanentError) Error() string {
6465
// This controller keeps track of resources needed in order to have openshift
6566
// internal registry working.
6667
func NewController(
68+
eventRecorder events.Recorder,
6769
kubeconfig *restclient.Config,
6870
kubeClient kubeclient.Interface,
6971
configClient configclient.Interface,
@@ -81,7 +83,7 @@ func NewController(
8183
clients := &regopclient.Clients{}
8284
c := &Controller{
8385
kubeconfig: kubeconfig,
84-
generator: resource.NewGenerator(kubeconfig, clients, listers),
86+
generator: resource.NewGenerator(eventRecorder, kubeconfig, clients, listers),
8587
workqueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "Changes"),
8688
listers: listers,
8789
clients: clients,

pkg/operator/nodecadaemon.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@ import (
2020
"k8s.io/klog/v2"
2121

2222
operatorv1 "github.com/openshift/api/operator/v1"
23+
"github.com/openshift/library-go/pkg/operator/events"
2324
"github.com/openshift/library-go/pkg/operator/v1helpers"
2425

2526
"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
2627
"github.com/openshift/cluster-image-registry-operator/pkg/resource"
2728
)
2829

2930
type NodeCADaemonController struct {
31+
eventRecorder events.Recorder
3032
appsClient appsv1client.AppsV1Interface
3133
operatorClient v1helpers.OperatorClient
3234
daemonSetLister appsv1listers.DaemonSetNamespaceLister
@@ -37,12 +39,14 @@ type NodeCADaemonController struct {
3739
}
3840

3941
func NewNodeCADaemonController(
42+
eventRecorder events.Recorder,
4043
appsClient appsv1client.AppsV1Interface,
4144
operatorClient v1helpers.OperatorClient,
4245
daemonSetInformer appsv1informers.DaemonSetInformer,
4346
serviceInformer corev1informers.ServiceInformer,
4447
) *NodeCADaemonController {
4548
c := &NodeCADaemonController{
49+
eventRecorder: eventRecorder,
4650
appsClient: appsClient,
4751
operatorClient: operatorClient,
4852
daemonSetLister: daemonSetInformer.Lister().DaemonSets(defaults.ImageRegistryOperatorNamespace),
@@ -102,7 +106,7 @@ func (c *NodeCADaemonController) processNextWorkItem() bool {
102106

103107
func (c *NodeCADaemonController) sync() error {
104108
ctx := context.TODO()
105-
gen := resource.NewGeneratorNodeCADaemonSet(c.daemonSetLister, c.serviceLister, c.appsClient, c.operatorClient)
109+
gen := resource.NewGeneratorNodeCADaemonSet(c.eventRecorder, c.daemonSetLister, c.serviceLister, c.appsClient, c.operatorClient)
106110

107111
availableCondition := operatorv1.OperatorCondition{
108112
Type: "NodeCADaemonAvailable",

pkg/operator/starter.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
kubeinformers "k8s.io/client-go/informers"
77
kubeclient "k8s.io/client-go/kubernetes"
88
restclient "k8s.io/client-go/rest"
9+
"k8s.io/klog/v2"
910

1011
configv1 "github.com/openshift/api/config/v1"
1112
configclient "github.com/openshift/client-go/config/clientset/versioned"
@@ -59,7 +60,16 @@ func RunOperator(ctx context.Context, kubeconfig *restclient.Config) error {
5960
imageregistryInformers.Imageregistry().V1().Configs(),
6061
)
6162

63+
// library-go just logs a warning and continues
64+
// https://github.com/openshift/library-go/blob/4362aa519714a4b62b00ab8318197ba2bba51cb7/pkg/controller/controllercmd/builder.go#L230
65+
controllerRef, err := events.GetControllerReferenceForCurrentPod(context.TODO(), kubeClient, defaults.ImageRegistryOperatorNamespace, nil)
66+
if err != nil {
67+
klog.Warningf("unable to get owner reference (falling back to namespace): %v", err)
68+
}
69+
eventRecorder := events.NewKubeRecorder(kubeClient.CoreV1().Events(defaults.ImageRegistryOperatorNamespace), "image-registry-operator", controllerRef)
70+
6271
controller := NewController(
72+
eventRecorder,
6373
kubeconfig,
6474
kubeClient,
6575
configClient,
@@ -112,6 +122,7 @@ func RunOperator(ctx context.Context, kubeconfig *restclient.Config) error {
112122
)
113123

114124
nodeCADaemonController := NewNodeCADaemonController(
125+
eventRecorder,
115126
kubeClient.AppsV1(),
116127
configOperatorClient,
117128
kubeInformers.Apps().V1().DaemonSets(),
@@ -128,7 +139,7 @@ func RunOperator(ctx context.Context, kubeconfig *restclient.Config) error {
128139

129140
loggingController := loglevel.NewClusterOperatorLoggingController(
130141
configOperatorClient,
131-
events.NewLoggingEventRecorder("image-registry"),
142+
eventRecorder,
132143
)
133144

134145
azureStackCloudController := NewAzureStackCloudController(

pkg/resource/deployment.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
var _ Mutator = &generatorDeployment{}
3131

3232
type generatorDeployment struct {
33-
recorder events.Recorder
33+
eventRecorder events.Recorder
3434
lister appslisters.DeploymentNamespaceLister
3535
configMapLister corelisters.ConfigMapNamespaceLister
3636
secretLister corelisters.SecretNamespaceLister
@@ -41,9 +41,9 @@ type generatorDeployment struct {
4141
cr *imageregistryv1.Config
4242
}
4343

44-
func newGeneratorDeployment(lister appslisters.DeploymentNamespaceLister, configMapLister corelisters.ConfigMapNamespaceLister, secretLister corelisters.SecretNamespaceLister, proxyLister configlisters.ProxyLister, coreClient coreset.CoreV1Interface, client appsset.AppsV1Interface, driver storage.Driver, cr *imageregistryv1.Config) *generatorDeployment {
44+
func newGeneratorDeployment(eventRecorder events.Recorder, lister appslisters.DeploymentNamespaceLister, configMapLister corelisters.ConfigMapNamespaceLister, secretLister corelisters.SecretNamespaceLister, proxyLister configlisters.ProxyLister, coreClient coreset.CoreV1Interface, client appsset.AppsV1Interface, driver storage.Driver, cr *imageregistryv1.Config) *generatorDeployment {
4545
return &generatorDeployment{
46-
recorder: events.NewLoggingEventRecorder("image-registry-operator"),
46+
eventRecorder: eventRecorder,
4747
lister: lister,
4848
configMapLister: configMapLister,
4949
secretLister: secretLister,
@@ -193,7 +193,7 @@ func (gd *generatorDeployment) Create() (runtime.Object, error) {
193193
}
194194

195195
dep, _, err := resourceapply.ApplyDeployment(
196-
context.TODO(), gd.client, gd.recorder, exp.(*appsapi.Deployment), -1,
196+
context.TODO(), gd.client, gd.eventRecorder, exp.(*appsapi.Deployment), -1,
197197
)
198198
if err != nil {
199199
return nil, err
@@ -210,7 +210,7 @@ func (gd *generatorDeployment) Update(o runtime.Object) (runtime.Object, bool, e
210210
}
211211

212212
dep, updated, err := resourceapply.ApplyDeployment(
213-
context.TODO(), gd.client, gd.recorder, exp.(*appsapi.Deployment), gd.LastGeneration(),
213+
context.TODO(), gd.client, gd.eventRecorder, exp.(*appsapi.Deployment), gd.LastGeneration(),
214214
)
215215
if err != nil {
216216
return o, false, err

pkg/resource/generator.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"k8s.io/klog/v2"
1616

1717
imageregistryv1 "github.com/openshift/api/imageregistry/v1"
18+
"github.com/openshift/library-go/pkg/operator/events"
1819

1920
"github.com/openshift/cluster-image-registry-operator/pkg/client"
2021
"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
@@ -63,18 +64,20 @@ func ApplyMutator(gen Mutator) error {
6364
})
6465
}
6566

66-
func NewGenerator(kubeconfig *rest.Config, clients *client.Clients, listers *client.Listers) *Generator {
67+
func NewGenerator(eventRecorder events.Recorder, kubeconfig *rest.Config, clients *client.Clients, listers *client.Listers) *Generator {
6768
return &Generator{
68-
kubeconfig: kubeconfig,
69-
listers: listers,
70-
clients: clients,
69+
eventRecorder: eventRecorder,
70+
kubeconfig: kubeconfig,
71+
listers: listers,
72+
clients: clients,
7173
}
7274
}
7375

7476
type Generator struct {
75-
kubeconfig *rest.Config
76-
listers *client.Listers
77-
clients *client.Clients
77+
eventRecorder events.Recorder
78+
kubeconfig *rest.Config
79+
listers *client.Listers
80+
clients *client.Clients
7881
}
7982

8083
func (g *Generator) listRoutes(cr *imageregistryv1.Config) []Mutator {
@@ -105,7 +108,7 @@ func (g *Generator) List(cr *imageregistryv1.Config) ([]Mutator, error) {
105108
mutators = append(mutators, newGeneratorPullSecret(g.clients.Core))
106109
mutators = append(mutators, newGeneratorSecret(g.listers.Secrets, g.clients.Core, driver))
107110
mutators = append(mutators, newGeneratorService(g.listers.Services, g.clients.Core))
108-
mutators = append(mutators, newGeneratorDeployment(g.listers.Deployments, g.listers.ConfigMaps, g.listers.Secrets, g.listers.ProxyConfigs, g.clients.Core, g.clients.Apps, driver, cr))
111+
mutators = append(mutators, newGeneratorDeployment(g.eventRecorder, g.listers.Deployments, g.listers.ConfigMaps, g.listers.Secrets, g.listers.ProxyConfigs, g.clients.Core, g.clients.Apps, driver, cr))
109112
mutators = append(mutators, newGeneratorPodDisruptionBudget(g.listers.PodDisruptionBudgets, g.clients.Kube.PolicyV1(), cr))
110113
mutators = append(mutators, g.listRoutes(cr)...)
111114

pkg/resource/nodecadaemon.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ import (
2525
var _ Mutator = &generatorNodeCADaemonSet{}
2626

2727
type generatorNodeCADaemonSet struct {
28-
recorder events.Recorder
28+
eventRecorder events.Recorder
2929
daemonSetLister appsv1listers.DaemonSetNamespaceLister
3030
serviceLister corev1listers.ServiceNamespaceLister
3131
client appsv1client.AppsV1Interface
3232
operatorClient v1helpers.OperatorClient
3333
}
3434

35-
func NewGeneratorNodeCADaemonSet(daemonSetLister appsv1listers.DaemonSetNamespaceLister, serviceLister corev1listers.ServiceNamespaceLister, client appsv1client.AppsV1Interface, operatorClient v1helpers.OperatorClient) Mutator {
35+
func NewGeneratorNodeCADaemonSet(eventRecorder events.Recorder, daemonSetLister appsv1listers.DaemonSetNamespaceLister, serviceLister corev1listers.ServiceNamespaceLister, client appsv1client.AppsV1Interface, operatorClient v1helpers.OperatorClient) Mutator {
3636
return &generatorNodeCADaemonSet{
37-
recorder: events.NewLoggingEventRecorder("image-registry-operator"),
37+
eventRecorder: eventRecorder,
3838
daemonSetLister: daemonSetLister,
3939
serviceLister: serviceLister,
4040
client: client,
@@ -79,7 +79,7 @@ func (ds *generatorNodeCADaemonSet) Update(o runtime.Object) (runtime.Object, bo
7979
actualDaemonSet, updated, err := resourceapply.ApplyDaemonSet(
8080
context.TODO(),
8181
ds.client,
82-
ds.recorder,
82+
ds.eventRecorder,
8383
desiredDaemonSet,
8484
resourcemerge.ExpectedDaemonSetGeneration(desiredDaemonSet, opStatus.Generations),
8585
)

pkg/resource/nodecadaemon_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
imageregistryv1 "github.com/openshift/api/imageregistry/v1"
1515
imageregistryfake "github.com/openshift/client-go/imageregistry/clientset/versioned/fake"
1616
imageregistryinformers "github.com/openshift/client-go/imageregistry/informers/externalversions"
17+
"github.com/openshift/library-go/pkg/operator/events"
1718

1819
"github.com/openshift/cluster-image-registry-operator/pkg/client"
1920
)
@@ -52,7 +53,7 @@ func TestNodeCADaemon(t *testing.T) {
5253
imageregistryInformers.Start(ctx.Done())
5354
imageregistryInformers.WaitForCacheSync(ctx.Done())
5455

55-
g := NewGeneratorNodeCADaemonSet(nil, nil, clientset.AppsV1(), operatorClient)
56+
g := NewGeneratorNodeCADaemonSet(events.NewInMemoryRecorder("image-registry-operator"), nil, nil, clientset.AppsV1(), operatorClient)
5657
obj, err := g.Create()
5758
if err != nil {
5859
t.Fatal(err)

0 commit comments

Comments
 (0)