Skip to content

Commit c8c6237

Browse files
committed
cleaned up recorder; need to collaspe events to single event per get
Signed-off-by: Monis Khan <[email protected]>
1 parent 7faebfe commit c8c6237

File tree

1 file changed

+24
-15
lines changed

1 file changed

+24
-15
lines changed

pkg/serviceaccounts/oauthclient/oauthclientregistry.go

+24-15
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ var legacyRouteGroupKind = routeapi.LegacySchemeGroupVersion.WithKind(routeKind)
5858
type saOAuthClientAdapter struct {
5959
saClient kcoreclient.ServiceAccountsGetter
6060
secretClient kcoreclient.SecretsGetter
61-
eventsClient kcoreclient.EventsGetter
61+
recorder record.EventRecorder
6262
routeClient osclient.RoutesNamespacer
6363
// TODO add ingress support
6464
//ingressClient ??
@@ -185,8 +185,26 @@ func (uri *redirectURI) merge(m *model) {
185185

186186
var _ oauthclient.Getter = &saOAuthClientAdapter{}
187187

188-
func NewServiceAccountOAuthClientGetter(saClient kcoreclient.ServiceAccountsGetter, secretClient kcoreclient.SecretsGetter, eventClient kcoreclient.EventsGetter, routeClient osclient.RoutesNamespacer, delegate oauthclient.Getter, grantMethod oauthapi.GrantHandlerType) oauthclient.Getter {
189-
return &saOAuthClientAdapter{saClient: saClient, secretClient: secretClient, eventsClient: eventClient, routeClient: routeClient, delegate: delegate, grantMethod: grantMethod, decoder: kapi.Codecs.UniversalDecoder()}
188+
func NewServiceAccountOAuthClientGetter(
189+
saClient kcoreclient.ServiceAccountsGetter,
190+
secretClient kcoreclient.SecretsGetter,
191+
eventClient kcoreclient.EventsGetter,
192+
routeClient osclient.RoutesNamespacer,
193+
delegate oauthclient.Getter,
194+
grantMethod oauthapi.GrantHandlerType,
195+
) oauthclient.Getter {
196+
eventBroadcaster := record.NewBroadcaster()
197+
eventBroadcaster.StartRecordingToSink(&kcoreclient.EventSinkImpl{Interface: eventClient.Events("")})
198+
recorder := eventBroadcaster.NewRecorder(kapi.EventSource{Component: "service-account-oauth-client-getter"})
199+
return &saOAuthClientAdapter{
200+
saClient: saClient,
201+
secretClient: secretClient,
202+
recorder: recorder,
203+
routeClient: routeClient,
204+
delegate: delegate,
205+
grantMethod: grantMethod,
206+
decoder: kapi.Codecs.UniversalDecoder(),
207+
}
190208
}
191209

192210
func (a *saOAuthClientAdapter) GetClient(ctx kapi.Context, name string) (*oauthapi.OAuthClient, error) {
@@ -200,16 +218,14 @@ func (a *saOAuthClientAdapter) GetClient(ctx kapi.Context, name string) (*oautha
200218
return nil, err
201219
}
202220

203-
recorder := a.getEventRecorder(saNamespace)
204-
205221
redirectURIs := []string{}
206-
if modelsMap := parseModelsMap(sa, a.decoder, recorder); len(modelsMap) > 0 {
222+
if modelsMap := parseModelsMap(sa, a.decoder, a.recorder); len(modelsMap) > 0 {
207223
if uris := a.extractRedirectURIs(modelsMap, saNamespace); len(uris) > 0 {
208224
redirectURIs = append(redirectURIs, uris.extractValidRedirectURIStrings()...)
209225
}
210226
}
211227
if len(redirectURIs) == 0 {
212-
recorder.Event(sa, kapi.EventTypeWarning, "OAuthNoRedirectURIs", "Has no redirectURIs")
228+
a.recorder.Event(sa, kapi.EventTypeWarning, "OAuthNoRedirectURIs", "Has no redirectURIs")
213229
return nil, fmt.Errorf(
214230
"%v has no redirectURIs; set %v<some-value>=<redirect> or create a dynamic URI using %v<some-value>=<reference>",
215231
name, OAuthRedirectModelAnnotationURIPrefix, OAuthRedirectModelAnnotationReferencePrefix,
@@ -241,18 +257,11 @@ func (a *saOAuthClientAdapter) GetClient(ctx kapi.Context, name string) (*oautha
241257
}
242258

243259
// TODO: is this safe to tell - could leak Route info?
244-
recorder.Eventf(sa, kapi.EventTypeNormal, "OAuthAllRedirectURIs", "Has the following redirectURIs: %v", saClient.RedirectURIs)
260+
a.recorder.Eventf(sa, kapi.EventTypeNormal, "OAuthAllRedirectURIs", "Has the following redirectURIs: %v", saClient.RedirectURIs)
245261

246262
return saClient, nil
247263
}
248264

249-
// TODO this is super naive and inefficient
250-
func (a *saOAuthClientAdapter) getEventRecorder(namespace string) record.EventRecorder {
251-
eventBroadcaster := record.NewBroadcaster()
252-
eventBroadcaster.StartRecordingToSink(&kcoreclient.EventSinkImpl{Interface: a.eventsClient.Events(namespace)})
253-
return eventBroadcaster.NewRecorder(kapi.EventSource{Component: "service-account-oauth-client-getter"})
254-
}
255-
256265
// parseModelsMap builds a map of model name to model using a service account's annotations.
257266
// The model name is only used for building the map (it ties together the uri and reference annotations)
258267
// and serves no functional purpose other than making testing easier.

0 commit comments

Comments
 (0)