Remove resourcemanager from conroller public API (#664)

We still use it internally, but this does not need to be part of the
public API. Instead just have callers pass us the relevent listers and
we create our own resource manager.
This commit is contained in:
Brian Goff
2019-06-12 13:42:03 -07:00
committed by GitHub
parent 665b23d273
commit 3346e9e28c
2 changed files with 23 additions and 5 deletions

View File

@@ -181,7 +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,
ResourceManager: rm, SecretLister: secretInformer.Lister(),
ConfigMapLister: configMapInformer.Lister(),
ServiceLister: serviceInformer.Lister(),
}) })
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

@@ -93,7 +93,7 @@ type PodController struct {
client corev1client.PodsGetter client corev1client.PodsGetter
resourceManager *manager.ResourceManager // TODO: can we eliminate this? resourceManager *manager.ResourceManager
} }
// PodControllerConfig is used to configure a new PodController. // PodControllerConfig is used to configure a new PodController.
@@ -110,8 +110,10 @@ type PodControllerConfig struct {
Provider PodLifecycleHandler Provider PodLifecycleHandler
// TODO: get rid of this // Listers used for filling details for things like downward API in pod spec.
ResourceManager *manager.ResourceManager ConfigMapLister corev1listers.ConfigMapLister
SecretLister corev1listers.SecretLister
ServiceLister corev1listers.ServiceLister
} }
func NewPodController(cfg PodControllerConfig) (*PodController, error) { func NewPodController(cfg PodControllerConfig) (*PodController, error) {
@@ -124,13 +126,27 @@ func NewPodController(cfg PodControllerConfig) (*PodController, error) {
if cfg.PodInformer == nil { if cfg.PodInformer == nil {
return nil, errdefs.InvalidInput("must set informer") return nil, errdefs.InvalidInput("must set informer")
} }
if cfg.ConfigMapLister == nil {
return nil, errdefs.InvalidInput("must set config map lister")
}
if cfg.SecretLister == nil {
return nil, errdefs.InvalidInput("must set secret lister")
}
if cfg.ServiceLister == nil {
return nil, errdefs.InvalidInput("must set service lister")
}
rm, err := manager.NewResourceManager(cfg.PodInformer.Lister(), cfg.SecretLister, cfg.ConfigMapLister, cfg.ServiceLister)
if err != nil {
return nil, pkgerrors.Wrap(err, "could not create resource manager")
}
return &PodController{ return &PodController{
client: cfg.PodClient, client: cfg.PodClient,
podsInformer: cfg.PodInformer, podsInformer: cfg.PodInformer,
podsLister: cfg.PodInformer.Lister(), podsLister: cfg.PodInformer.Lister(),
provider: cfg.Provider, provider: cfg.Provider,
resourceManager: cfg.ResourceManager, resourceManager: rm,
ready: make(chan struct{}), ready: make(chan struct{}),
recorder: cfg.EventRecorder, recorder: cfg.EventRecorder,
}, nil }, nil