From 9bcc381ca36c471735eb73a7bdb5370dd4c91648 Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Mon, 17 Jun 2019 10:00:02 -0700 Subject: [PATCH] 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. --- cmd/virtual-kubelet/commands/root/root.go | 14 +++++----- node/podcontroller.go | 31 +++++++++++++---------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/cmd/virtual-kubelet/commands/root/root.go b/cmd/virtual-kubelet/commands/root/root.go index ab4186948..c33702aca 100644 --- a/cmd/virtual-kubelet/commands/root/root.go +++ b/cmd/virtual-kubelet/commands/root/root.go @@ -177,13 +177,13 @@ func runRootCommand(ctx context.Context, c Opts) error { eb.StartRecordingToSink(&corev1client.EventSinkImpl{Interface: client.CoreV1().Events(c.KubeNamespace)}) pc, err := node.NewPodController(node.PodControllerConfig{ - PodClient: client.CoreV1(), - PodInformer: podInformer, - EventRecorder: eb.NewRecorder(scheme.Scheme, corev1.EventSource{Component: path.Join(pNode.Name, "pod-controller")}), - Provider: p, - SecretLister: secretInformer.Lister(), - ConfigMapLister: configMapInformer.Lister(), - ServiceLister: serviceInformer.Lister(), + PodClient: client.CoreV1(), + PodInformer: podInformer, + EventRecorder: eb.NewRecorder(scheme.Scheme, corev1.EventSource{Component: path.Join(pNode.Name, "pod-controller")}), + Provider: p, + SecretInformer: secretInformer, + ConfigMapInformer: configMapInformer, + ServiceInformer: serviceInformer, }) if err != nil { return errors.Wrap(err, "error setting up pod controller") diff --git a/node/podcontroller.go b/node/podcontroller.go index a7431512f..013470c64 100644 --- a/node/podcontroller.go +++ b/node/podcontroller.go @@ -110,33 +110,36 @@ type PodControllerConfig struct { Provider PodLifecycleHandler - // Listers used for filling details for things like downward API in pod spec. - ConfigMapLister corev1listers.ConfigMapLister - SecretLister corev1listers.SecretLister - ServiceLister corev1listers.ServiceLister + // Informers used for filling details for things like downward API in pod spec. + // + // We are using informers here instead of listers because we'll need the + // informer for certain features (like notifications for updated ConfigMaps) + ConfigMapInformer corev1informers.ConfigMapInformer + SecretInformer corev1informers.SecretInformer + ServiceInformer corev1informers.ServiceInformer } func NewPodController(cfg PodControllerConfig) (*PodController, error) { if cfg.PodClient == nil { - return nil, errdefs.InvalidInput("must set core client") + return nil, errdefs.InvalidInput("missing core client") } if cfg.EventRecorder == nil { - return nil, errdefs.InvalidInput("must set event recorder") + return nil, errdefs.InvalidInput("missing event recorder") } if cfg.PodInformer == nil { - return nil, errdefs.InvalidInput("must set informer") + return nil, errdefs.InvalidInput("missing pod informer") } - if cfg.ConfigMapLister == nil { - return nil, errdefs.InvalidInput("must set config map lister") + if cfg.ConfigMapInformer == nil { + return nil, errdefs.InvalidInput("missing config map informer") } - if cfg.SecretLister == nil { - return nil, errdefs.InvalidInput("must set secret lister") + if cfg.SecretInformer == nil { + return nil, errdefs.InvalidInput("missing secret informer") } - if cfg.ServiceLister == nil { - return nil, errdefs.InvalidInput("must set service lister") + if cfg.ServiceInformer == nil { + 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 { return nil, pkgerrors.Wrap(err, "could not create resource manager") }