func (ic *IngressController) Run(stopChan <-chan struct{}) { glog.Infof("Starting Ingress Controller") go ic.ingressInformerController.Run(stopChan) glog.Infof("... Starting Ingress Federated Informer") ic.ingressFederatedInformer.Start() glog.Infof("... Starting ConfigMap Federated Informer") ic.configMapFederatedInformer.Start() go func() { <-stopChan glog.Infof("Stopping Ingress Federated Informer") ic.ingressFederatedInformer.Stop() glog.Infof("Stopping ConfigMap Federated Informer") ic.configMapFederatedInformer.Stop() glog.Infof("Stopoing ingress deliverer") ic.ingressDeliverer.Stop() glog.Infof("Stopping configmap deliverer") ic.configMapDeliverer.Stop() glog.Infof("Stopping cluster deliverer") ic.clusterDeliverer.Stop() }() ic.ingressDeliverer.StartWithHandler(func(item *util.DelayingDelivererItem) { ingress := item.Value.(types.NamespacedName) glog.V(4).Infof("Ingress change delivered, reconciling: %v", ingress) ic.reconcileIngress(ingress) }) ic.clusterDeliverer.StartWithHandler(func(item *util.DelayingDelivererItem) { clusterName := item.Key if clusterName != allClustersKey { glog.V(4).Infof("Cluster change delivered for cluster %q, reconciling configmap and ingress for that cluster", clusterName) } else { glog.V(4).Infof("Cluster change delivered for all clusters, reconciling configmaps and ingresses for all clusters") } ic.reconcileIngressesOnClusterChange(clusterName) ic.reconcileConfigMapForCluster(clusterName) }) ic.configMapDeliverer.StartWithHandler(func(item *util.DelayingDelivererItem) { clusterName := item.Key if clusterName != allClustersKey { glog.V(4).Infof("ConfigMap change delivered for cluster %q, reconciling configmap for that cluster", clusterName) } else { glog.V(4).Infof("ConfigMap change delivered for all clusters, reconciling configmaps for all clusters") } ic.reconcileConfigMapForCluster(clusterName) }) util.StartBackoffGC(ic.ingressBackoff, stopChan) util.StartBackoffGC(ic.configMapBackoff, stopChan) }
func (frsc *ReplicaSetController) Run(workers int, stopCh <-chan struct{}) { go frsc.replicaSetController.Run(stopCh) frsc.fedReplicaSetInformer.Start() frsc.fedPodInformer.Start() frsc.replicasetDeliverer.StartWithHandler(func(item *fedutil.DelayingDelivererItem) { frsc.replicasetWorkQueue.Add(item.Key) }) frsc.clusterDeliverer.StartWithHandler(func(_ *fedutil.DelayingDelivererItem) { frsc.reconcileReplicaSetsOnClusterChange() }) for !frsc.isSynced() { time.Sleep(5 * time.Millisecond) } for i := 0; i < workers; i++ { go wait.Until(frsc.worker, time.Second, stopCh) } fedutil.StartBackoffGC(frsc.replicaSetBackoff, stopCh) <-stopCh glog.Infof("Shutting down ReplicaSetController") frsc.replicasetDeliverer.Stop() frsc.clusterDeliverer.Stop() frsc.replicasetWorkQueue.ShutDown() frsc.fedReplicaSetInformer.Stop() frsc.fedPodInformer.Stop() }
func (fdc *DeploymentController) Run(workers int, stopCh <-chan struct{}) { go fdc.deploymentController.Run(stopCh) fdc.fedDeploymentInformer.Start() fdc.fedPodInformer.Start() fdc.deploymentDeliverer.StartWithHandler(func(item *fedutil.DelayingDelivererItem) { fdc.deploymentWorkQueue.Add(item.Key) }) fdc.clusterDeliverer.StartWithHandler(func(_ *fedutil.DelayingDelivererItem) { fdc.reconcileDeploymentsOnClusterChange() }) // Wait until the cluster is synced to prevent the update storm at the very beginning. for !fdc.isSynced() { time.Sleep(5 * time.Millisecond) glog.V(3).Infof("Waiting for controller to sync up") } for i := 0; i < workers; i++ { go wait.Until(fdc.worker, time.Second, stopCh) } fedutil.StartBackoffGC(fdc.deploymentBackoff, stopCh) <-stopCh glog.Infof("Shutting down DeploymentController") fdc.deploymentDeliverer.Stop() fdc.clusterDeliverer.Stop() fdc.deploymentWorkQueue.ShutDown() fdc.fedDeploymentInformer.Stop() fdc.fedPodInformer.Stop() }
func (nc *NamespaceController) Run(stopChan <-chan struct{}) { go nc.namespaceInformerController.Run(stopChan) nc.namespaceFederatedInformer.Start() go func() { <-stopChan nc.namespaceFederatedInformer.Stop() }() nc.namespaceDeliverer.StartWithHandler(func(item *util.DelayingDelivererItem) { namespace := item.Value.(string) nc.reconcileNamespace(namespace) }) nc.clusterDeliverer.StartWithHandler(func(_ *util.DelayingDelivererItem) { nc.reconcileNamespacesOnClusterChange() }) util.StartBackoffGC(nc.namespaceBackoff, stopChan) }
func (configmapcontroller *ConfigMapController) Run(stopChan <-chan struct{}) { go configmapcontroller.configmapInformerController.Run(stopChan) configmapcontroller.configmapFederatedInformer.Start() go func() { <-stopChan configmapcontroller.configmapFederatedInformer.Stop() }() configmapcontroller.configmapDeliverer.StartWithHandler(func(item *util.DelayingDelivererItem) { configmap := item.Value.(*types.NamespacedName) configmapcontroller.reconcileConfigMap(*configmap) }) configmapcontroller.clusterDeliverer.StartWithHandler(func(_ *util.DelayingDelivererItem) { configmapcontroller.reconcileConfigMapsOnClusterChange() }) util.StartBackoffGC(configmapcontroller.configmapBackoff, stopChan) }
func (secretcontroller *SecretController) Run(stopChan <-chan struct{}) { go secretcontroller.secretInformerController.Run(stopChan) secretcontroller.secretFederatedInformer.Start() go func() { <-stopChan secretcontroller.secretFederatedInformer.Stop() }() secretcontroller.secretDeliverer.StartWithHandler(func(item *util.DelayingDelivererItem) { secret := item.Value.(*types.NamespacedName) secretcontroller.reconcileSecret(*secret) }) secretcontroller.clusterDeliverer.StartWithHandler(func(_ *util.DelayingDelivererItem) { secretcontroller.reconcileSecretsOnClusterChange() }) util.StartBackoffGC(secretcontroller.secretBackoff, stopChan) }
func (daemonsetcontroller *DaemonSetController) Run(stopChan <-chan struct{}) { glog.V(1).Infof("Starting daemonset controllr") go daemonsetcontroller.daemonsetInformerController.Run(stopChan) glog.V(1).Infof("Starting daemonset federated informer") daemonsetcontroller.daemonsetFederatedInformer.Start() go func() { <-stopChan daemonsetcontroller.daemonsetFederatedInformer.Stop() }() glog.V(1).Infof("Starting daemonset deliverers") daemonsetcontroller.daemonsetDeliverer.StartWithHandler(func(item *util.DelayingDelivererItem) { daemonset := item.Value.(*types.NamespacedName) glog.V(4).Infof("Trigerring reconciliation of daemonset %s", daemonset.String()) daemonsetcontroller.reconcileDaemonSet(daemonset.Namespace, daemonset.Name) }) daemonsetcontroller.clusterDeliverer.StartWithHandler(func(_ *util.DelayingDelivererItem) { glog.V(4).Infof("Triggering reconciliation of all daemonsets") daemonsetcontroller.reconcileDaemonSetsOnClusterChange() }) util.StartBackoffGC(daemonsetcontroller.daemonsetBackoff, stopChan) }