Use object informers instead of listers (#669)

We'll need these informers for
https://github.com/virtual-kubelet/virtual-kubelet/pull/586

Changing this now means we don't need to make API changes later.
This commit is contained in:
Brian Goff
2019-06-17 10:00:02 -07:00
committed by Pires
parent c6fdae931a
commit 9bcc381ca3
2 changed files with 24 additions and 21 deletions

View File

@@ -181,9 +181,9 @@ func runRootCommand(ctx context.Context, c Opts) error {
PodInformer: podInformer, PodInformer: podInformer,
EventRecorder: eb.NewRecorder(scheme.Scheme, corev1.EventSource{Component: path.Join(pNode.Name, "pod-controller")}), EventRecorder: eb.NewRecorder(scheme.Scheme, corev1.EventSource{Component: path.Join(pNode.Name, "pod-controller")}),
Provider: p, Provider: p,
SecretLister: secretInformer.Lister(), SecretInformer: secretInformer,
ConfigMapLister: configMapInformer.Lister(), ConfigMapInformer: configMapInformer,
ServiceLister: serviceInformer.Lister(), ServiceInformer: serviceInformer,
}) })
if err != nil { if err != nil {
return errors.Wrap(err, "error setting up pod controller") return errors.Wrap(err, "error setting up pod controller")

View File

@@ -110,33 +110,36 @@ type PodControllerConfig struct {
Provider PodLifecycleHandler Provider PodLifecycleHandler
// Listers used for filling details for things like downward API in pod spec. // Informers used for filling details for things like downward API in pod spec.
ConfigMapLister corev1listers.ConfigMapLister //
SecretLister corev1listers.SecretLister // We are using informers here instead of listers because we'll need the
ServiceLister corev1listers.ServiceLister // informer for certain features (like notifications for updated ConfigMaps)
ConfigMapInformer corev1informers.ConfigMapInformer
SecretInformer corev1informers.SecretInformer
ServiceInformer corev1informers.ServiceInformer
} }
func NewPodController(cfg PodControllerConfig) (*PodController, error) { func NewPodController(cfg PodControllerConfig) (*PodController, error) {
if cfg.PodClient == nil { if cfg.PodClient == nil {
return nil, errdefs.InvalidInput("must set core client") return nil, errdefs.InvalidInput("missing core client")
} }
if cfg.EventRecorder == nil { if cfg.EventRecorder == nil {
return nil, errdefs.InvalidInput("must set event recorder") return nil, errdefs.InvalidInput("missing event recorder")
} }
if cfg.PodInformer == nil { if cfg.PodInformer == nil {
return nil, errdefs.InvalidInput("must set informer") return nil, errdefs.InvalidInput("missing pod informer")
} }
if cfg.ConfigMapLister == nil { if cfg.ConfigMapInformer == nil {
return nil, errdefs.InvalidInput("must set config map lister") return nil, errdefs.InvalidInput("missing config map informer")
} }
if cfg.SecretLister == nil { if cfg.SecretInformer == nil {
return nil, errdefs.InvalidInput("must set secret lister") return nil, errdefs.InvalidInput("missing secret informer")
} }
if cfg.ServiceLister == nil { if cfg.ServiceInformer == nil {
return nil, errdefs.InvalidInput("must set service lister") return nil, errdefs.InvalidInput("missing service informer")
} }
rm, err := manager.NewResourceManager(cfg.PodInformer.Lister(), cfg.SecretLister, cfg.ConfigMapLister, cfg.ServiceLister) rm, err := manager.NewResourceManager(cfg.PodInformer.Lister(), cfg.SecretInformer.Lister(), cfg.ConfigMapInformer.Lister(), cfg.ServiceInformer.Lister())
if err != nil { if err != nil {
return nil, pkgerrors.Wrap(err, "could not create resource manager") return nil, pkgerrors.Wrap(err, "could not create resource manager")
} }