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,
EventRecorder: eb.NewRecorder(scheme.Scheme, corev1.EventSource{Component: path.Join(pNode.Name, "pod-controller")}),
Provider: p,
ResourceManager: rm,
SecretLister: secretInformer.Lister(),
ConfigMapLister: configMapInformer.Lister(),
ServiceLister: serviceInformer.Lister(),
})
if err != nil {
return errors.Wrap(err, "error setting up pod controller")

View File

@@ -93,7 +93,7 @@ type PodController struct {
client corev1client.PodsGetter
resourceManager *manager.ResourceManager // TODO: can we eliminate this?
resourceManager *manager.ResourceManager
}
// PodControllerConfig is used to configure a new PodController.
@@ -110,8 +110,10 @@ type PodControllerConfig struct {
Provider PodLifecycleHandler
// TODO: get rid of this
ResourceManager *manager.ResourceManager
// Listers used for filling details for things like downward API in pod spec.
ConfigMapLister corev1listers.ConfigMapLister
SecretLister corev1listers.SecretLister
ServiceLister corev1listers.ServiceLister
}
func NewPodController(cfg PodControllerConfig) (*PodController, error) {
@@ -124,13 +126,27 @@ func NewPodController(cfg PodControllerConfig) (*PodController, error) {
if cfg.PodInformer == nil {
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{
client: cfg.PodClient,
podsInformer: cfg.PodInformer,
podsLister: cfg.PodInformer.Lister(),
provider: cfg.Provider,
resourceManager: cfg.ResourceManager,
resourceManager: rm,
ready: make(chan struct{}),
recorder: cfg.EventRecorder,
}, nil