// launchRouter launches a template router that communicates with the // api via the provided clients. func launchRouter(oc osclient.Interface, kc kclient.Interface, maxDelay int32, name string, reloadInterval int, reloadCounts map[string]int) (templatePlugin *templateplugin.TemplatePlugin) { r := templateplugin.NewFakeTemplateRouter() reloadCounts[name] = 0 r.EnableRateLimiter(reloadInterval, func() error { reloadCounts[name]++ return nil }) templatePlugin = &templateplugin.TemplatePlugin{Router: r} statusPlugin := controller.NewStatusAdmitter(templatePlugin, oc, name) validationPlugin := controller.NewExtendedValidator(statusPlugin, controller.RejectionRecorder(statusPlugin)) uniquePlugin := controller.NewUniqueHost(validationPlugin, controller.HostForRoute, controller.RejectionRecorder(statusPlugin)) var plugin router.Plugin = uniquePlugin if maxDelay > 0 { plugin = NewDelayPlugin(plugin, maxDelay) } factory := controllerfactory.NewDefaultRouterControllerFactory(oc, kc) controller := factory.Create(plugin) controller.Run() return }
// NewFactory initializes a factory that will watch the requested routes func (o *RouterSelection) NewFactory(oc oclient.Interface, kc kclient.Interface) *controllerfactory.RouterControllerFactory { factory := controllerfactory.NewDefaultRouterControllerFactory(oc, kc) factory.Labels = o.Labels factory.Fields = o.Fields factory.Namespace = o.Namespace factory.ResyncInterval = o.ResyncInterval if len(factory.Namespace) > 0 { glog.Infof("Router is only using resources in namespace %s", factory.Namespace) } return factory }
// NewFactory initializes a factory that will watch the requested routes func (o *RouterSelection) NewFactory(oc oclient.Interface, kc kclient.Interface) *controllerfactory.RouterControllerFactory { factory := controllerfactory.NewDefaultRouterControllerFactory(oc, kc) factory.Labels = o.Labels factory.Fields = o.Fields factory.Namespace = o.Namespace factory.ResyncInterval = o.ResyncInterval switch { case o.NamespaceLabels != nil: glog.Infof("Router is only using routes in namespaces matching %s", o.NamespaceLabels) factory.Namespaces = namespaceNames{kc.Namespaces(), o.NamespaceLabels} case o.ProjectLabels != nil: glog.Infof("Router is only using routes in projects matching %s", o.ProjectLabels) factory.Namespaces = projectNames{oc.Projects(), o.ProjectLabels} case len(factory.Namespace) > 0: glog.Infof("Router is only using resources in namespace %s", factory.Namespace) default: glog.Infof("Router is including routes in all namespaces") } return factory }