// FromUnversionedClient adapts a unversioned.Client to a internalclientset.Clientset. // This function is temporary. We will remove it when everyone has moved to using // Clientset. New code should NOT use this function. func FromUnversionedClient(c *unversioned.Client) *internalclientset.Clientset { var clientset internalclientset.Clientset if c != nil { clientset.CoreClient = unversionedcore.New(c.RESTClient) } else { clientset.CoreClient = unversionedcore.New(nil) } if c != nil && c.ExtensionsClient != nil { clientset.ExtensionsClient = unversionedextensions.New(c.ExtensionsClient.RESTClient) } else { clientset.ExtensionsClient = unversionedextensions.New(nil) } if c != nil && c.BatchClient != nil { clientset.BatchClient = unversionedbatch.New(c.BatchClient.RESTClient) } else { clientset.BatchClient = unversionedbatch.New(nil) } if c != nil && c.DiscoveryClient != nil { clientset.DiscoveryClient = discovery.NewDiscoveryClient(c.DiscoveryClient.RESTClient) } else { clientset.DiscoveryClient = discovery.NewDiscoveryClient(nil) } return &clientset }
// NewEndpointController returns a new *EndpointController. func NewEndpointController(podInformer framework.SharedIndexInformer, client *clientset.Clientset) *EndpointController { if client != nil && client.Core().GetRESTClient().GetRateLimiter() != nil { metrics.RegisterMetricAndTrackRateLimiterUsage("endpoint_controller", client.Core().GetRESTClient().GetRateLimiter()) } e := &EndpointController{ client: client, queue: workqueue.New(), } e.serviceStore.Store, e.serviceController = framework.NewInformer( &cache.ListWatch{ ListFunc: func(options api.ListOptions) (runtime.Object, error) { return e.client.Core().Services(api.NamespaceAll).List(options) }, WatchFunc: func(options api.ListOptions) (watch.Interface, error) { return e.client.Core().Services(api.NamespaceAll).Watch(options) }, }, &api.Service{}, // TODO: Can we have much longer period here? FullServiceResyncPeriod, framework.ResourceEventHandlerFuncs{ AddFunc: e.enqueueService, UpdateFunc: func(old, cur interface{}) { e.enqueueService(cur) }, DeleteFunc: e.enqueueService, }, ) podInformer.AddEventHandler(framework.ResourceEventHandlerFuncs{ AddFunc: e.addPod, UpdateFunc: e.updatePod, DeleteFunc: e.deletePod, }) e.podStore.Indexer = podInformer.GetIndexer() e.podController = podInformer.GetController() e.podStoreSynced = podInformer.HasSynced return e }