Skip to content
This repository has been archived by the owner on Apr 25, 2023. It is now read-only.

Commit

Permalink
Merge pull request #1195 from mesosphere/sreis/snaproute-mino/unstruc…
Browse files Browse the repository at this point in the history
…tured-reflector-for-logging

(Updated) #1083: use unstructured runtime.Object for more detailed reflector logging
  • Loading branch information
k8s-ci-robot authored Feb 27, 2020
2 parents 9271f47 + 638f523 commit 6da5997
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 15 deletions.
5 changes: 2 additions & 3 deletions pkg/controller/status/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,9 @@ func newKubeFedStatusController(controllerConfig *util.ControllerConfig, typeCon

targetNamespace := controllerConfig.TargetNamespace

s.federatedStore, s.federatedController = util.NewResourceInformer(federatedTypeClient, targetNamespace, enqueueObj)
s.statusStore, s.statusController = util.NewResourceInformer(statusClient, targetNamespace, enqueueObj)

targetAPIResource := typeConfig.GetTargetType()
s.federatedStore, s.federatedController = util.NewResourceInformer(federatedTypeClient, targetNamespace, &targetAPIResource, enqueueObj)
s.statusStore, s.statusController = util.NewResourceInformer(statusClient, targetNamespace, statusAPIResource, enqueueObj)

// Federated informer for resources in member clusters
s.informer, err = util.NewFederatedInformer(
Expand Down
6 changes: 3 additions & 3 deletions pkg/controller/sync/accessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func NewFederatedResourceAccessor(
if err != nil {
return nil, err
}
a.federatedStore, a.federatedController = util.NewResourceInformer(federatedTypeClient, targetNamespace, enqueueObj)
a.federatedStore, a.federatedController = util.NewResourceInformer(federatedTypeClient, targetNamespace, &federatedTypeAPIResource, enqueueObj)

if a.targetIsNamespace {
// Initialize an informer for namespaces. The namespace
Expand All @@ -106,7 +106,7 @@ func NewFederatedResourceAccessor(
if err != nil {
return nil, err
}
a.namespaceStore, a.namespaceController = util.NewResourceInformer(namespaceTypeClient, targetNamespace, enqueueObj)
a.namespaceStore, a.namespaceController = util.NewResourceInformer(namespaceTypeClient, targetNamespace, &namespaceAPIResource, enqueueObj)
}

if typeConfig.GetNamespaced() {
Expand All @@ -133,7 +133,7 @@ func NewFederatedResourceAccessor(
if err != nil {
return nil, err
}
a.fedNamespaceStore, a.fedNamespaceController = util.NewResourceInformer(fedNamespaceClient, targetNamespace, fedNamespaceEnqueue)
a.fedNamespaceStore, a.fedNamespaceController = util.NewResourceInformer(fedNamespaceClient, targetNamespace, fedNamespaceAPIResource, fedNamespaceEnqueue)
}

a.versionManager = version.NewVersionManager(
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/util/federated_informer.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ func NewFederatedInformer(
return nil, nil, err
}
targetNamespace := NamespaceForCluster(cluster.Name, config.TargetNamespace)
store, controller := NewManagedResourceInformer(resourceClient, targetNamespace, triggerFunc)
store, controller := NewManagedResourceInformer(resourceClient, targetNamespace, apiResource, triggerFunc)
return store, controller, nil
}

Expand Down
21 changes: 14 additions & 7 deletions pkg/controller/util/resourceinformer.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,31 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/labels"
pkgruntime "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/tools/cache"
)

// NewManagedResourceInformer returns an unfiltered informer.
func NewResourceInformer(client ResourceClient, namespace string, triggerFunc func(pkgruntime.Object)) (cache.Store, cache.Controller) {
return newResourceInformer(client, namespace, triggerFunc, "")
// NewResourceInformer returns an unfiltered informer.
func NewResourceInformer(client ResourceClient, namespace string, apiResource *metav1.APIResource, triggerFunc func(pkgruntime.Object)) (cache.Store, cache.Controller) {
return newResourceInformer(client, namespace, apiResource, triggerFunc, "")
}

// NewManagedResourceInformer returns an informer limited to resources
// managed by KubeFed as indicated by labeling.
func NewManagedResourceInformer(client ResourceClient, namespace string, triggerFunc func(pkgruntime.Object)) (cache.Store, cache.Controller) {
func NewManagedResourceInformer(client ResourceClient, namespace string, apiResource *metav1.APIResource, triggerFunc func(pkgruntime.Object)) (cache.Store, cache.Controller) {
labelSelector := labels.Set(map[string]string{ManagedByKubeFedLabelKey: ManagedByKubeFedLabelValue}).AsSelector().String()
return newResourceInformer(client, namespace, triggerFunc, labelSelector)
return newResourceInformer(client, namespace, apiResource, triggerFunc, labelSelector)
}

func newResourceInformer(client ResourceClient, namespace string, triggerFunc func(pkgruntime.Object), labelSelector string) (cache.Store, cache.Controller) {
func newResourceInformer(client ResourceClient, namespace string, apiResource *metav1.APIResource, triggerFunc func(pkgruntime.Object), labelSelector string) (cache.Store, cache.Controller) {
obj := &unstructured.Unstructured{}

if apiResource != nil {
gvk := schema.GroupVersionKind{Group: apiResource.Group, Version: apiResource.Version, Kind: apiResource.Kind}
obj.SetGroupVersionKind(gvk)
}
return cache.NewInformer(
&cache.ListWatch{
ListFunc: func(options metav1.ListOptions) (pkgruntime.Object, error) {
Expand All @@ -52,7 +59,7 @@ func newResourceInformer(client ResourceClient, namespace string, triggerFunc fu
return client.Resources(namespace).Watch(options)
},
},
nil, // Skip checks for expected type since the type will depend on the client
obj, // use an unstructured type with apiVersion / kind populated for informer logging purposes
NoResyncPeriod,
NewTriggerOnAllChanges(triggerFunc),
)
Expand Down
2 changes: 1 addition & 1 deletion pkg/schedulingtypes/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func NewPlugin(controllerConfig *util.ControllerConfig, eventHandlers SchedulerE
if err != nil {
return nil, err
}
p.federatedStore, p.federatedController = util.NewResourceInformer(p.federatedTypeClient, targetNamespace, kubeFedEventHandler)
p.federatedStore, p.federatedController = util.NewResourceInformer(p.federatedTypeClient, targetNamespace, &federatedTypeAPIResource, kubeFedEventHandler)

return p, nil
}
Expand Down

0 comments on commit 6da5997

Please sign in to comment.