// newSourceApiserverFromLW holds creates a config source that watches and pulls from the apiserver. func newSourceApiserverFromLW(lw cache.ListerWatcher, updates chan<- interface{}) { send := func(objs []interface{}) { var pods []*api.Pod for _, o := range objs { pods = append(pods, o.(*api.Pod)) } updates <- kubelet.PodUpdate{pods, kubelet.SET, kubelet.ApiserverSource} } cache.NewReflector(lw, &api.Pod{}, cache.NewUndeltaStore(send, cache.MetaNamespaceKeyFunc), 0).Run() }
func newEndpointsSourceApiFromLW(endpointsLW cache.ListerWatcher, period time.Duration, endpointsChan chan<- EndpointsUpdate) { endpointsPush := func(objs []interface{}) { var endpoints []api.Endpoints for _, o := range objs { endpoints = append(endpoints, *(o.(*api.Endpoints))) } endpointsChan <- EndpointsUpdate{Op: SET, Endpoints: endpoints} } endpointQueue := cache.NewUndeltaStore(endpointsPush, cache.MetaNamespaceKeyFunc) cache.NewReflector(endpointsLW, &api.Endpoints{}, endpointQueue, period).Run() }
func newServicesSourceApiFromLW(servicesLW cache.ListerWatcher, period time.Duration, servicesChan chan<- ServiceUpdate) { servicesPush := func(objs []interface{}) { var services []api.Service for _, o := range objs { services = append(services, *(o.(*api.Service))) } servicesChan <- ServiceUpdate{Op: SET, Services: services} } serviceQueue := cache.NewUndeltaStore(servicesPush, cache.MetaNamespaceKeyFunc) cache.NewReflector(servicesLW, &api.Service{}, serviceQueue, period).Run() }
// newSourceApiserverFromLW holds creates a config source that watches and pulls from the apiserver. func newSourceApiserverFromLW(lw cache.ListerWatcher, updates chan<- interface{}) { send := func(objs []interface{}) { var pods []api.Pod for _, o := range objs { pod := o.(*api.Pod) // Make a dummy self link so that references to this pod will work. pod.SelfLink = "/api/v1beta1/pods/" + pod.Name pods = append(pods, *pod) } updates <- kubelet.PodUpdate{pods, kubelet.SET, kubelet.ApiserverSource} } cache.NewReflector(lw, &api.Pod{}, cache.NewUndeltaStore(send, cache.MetaNamespaceKeyFunc), 0).Run() }
// newSourceApiserverFromLW holds creates a config source that watches an pulls from the apiserver. func newSourceApiserverFromLW(lw cache.ListerWatcher, updates chan<- interface{}) { send := func(objs []interface{}) { var bpods []api.BoundPod for _, o := range objs { pod := o.(*api.Pod) bpod := api.BoundPod{} if err := api.Scheme.Convert(pod, &bpod); err != nil { glog.Errorf("Unable to interpret Pod from apiserver as a BoundPod: %v: %+v", err, pod) continue } // Make a dummy self link so that references to this bound pod will work. bpod.SelfLink = "/api/v1beta1/boundPods/" + bpod.Name bpods = append(bpods, bpod) } updates <- kubelet.PodUpdate{bpods, kubelet.SET, kubelet.ApiserverSource} } cache.NewReflector(lw, &api.Pod{}, cache.NewUndeltaStore(send)).Run() }