From 1ce0637b275997d5e065ee89194fda5035a7e812 Mon Sep 17 00:00:00 2001 From: deads2k Date: Fri, 20 Jan 2017 14:10:59 -0500 Subject: [PATCH] move listers out of cache to reduce import tree --- .../federation-controller/replicaset/BUILD | 1 + .../replicaset/replicasetcontroller.go | 3 +- .../pkg/federation-controller/service/BUILD | 1 + .../service/cluster_helper.go | 5 +- .../service/servicecontroller.go | 3 +- pkg/BUILD | 1 + pkg/client/cache/BUILD | 15 - pkg/client/cache/listers.go | 321 +--------------- pkg/client/legacylisters/BUILD | 66 ++++ pkg/client/legacylisters/listers.go | 346 ++++++++++++++++++ .../{cache => legacylisters}/listers_core.go | 57 +-- .../listers_extensions.go | 19 +- .../{cache => legacylisters}/listers_rbac.go | 35 +- .../{cache => legacylisters}/listers_test.go | 25 +- pkg/controller/certificates/BUILD | 1 + .../certificates/certificate_controller.go | 3 +- pkg/controller/daemon/BUILD | 1 + pkg/controller/daemon/daemoncontroller.go | 7 +- pkg/controller/deployment/BUILD | 1 + .../deployment/deployment_controller.go | 7 +- pkg/controller/deployment/util/BUILD | 2 +- .../deployment/util/deployment_util.go | 4 +- pkg/controller/deployment/util/pod_util.go | 4 +- .../deployment/util/replicaset_util.go | 4 +- pkg/controller/disruption/BUILD | 2 + pkg/controller/disruption/disruption.go | 13 +- pkg/controller/disruption/disruption_test.go | 13 +- pkg/controller/endpoint/BUILD | 1 + .../endpoint/endpoints_controller.go | 5 +- pkg/controller/informers/BUILD | 1 + pkg/controller/informers/core.go | 49 +-- pkg/controller/informers/extensions.go | 19 +- pkg/controller/informers/rbac.go | 25 +- pkg/controller/informers/storage.go | 7 +- pkg/controller/job/BUILD | 1 + pkg/controller/job/jobcontroller.go | 3 +- pkg/controller/node/BUILD | 1 + pkg/controller/node/controller_utils.go | 3 +- pkg/controller/node/nodecontroller.go | 7 +- pkg/controller/podgc/BUILD | 1 + pkg/controller/podgc/gc_controller.go | 3 +- pkg/controller/replicaset/BUILD | 2 + pkg/controller/replicaset/replica_set.go | 5 +- pkg/controller/replicaset/replica_set_test.go | 5 +- pkg/controller/replication/BUILD | 1 + .../replication/replication_controller.go | 5 +- pkg/controller/route/BUILD | 1 + pkg/controller/route/routecontroller.go | 3 +- pkg/controller/service/BUILD | 1 + pkg/controller/service/servicecontroller.go | 9 +- pkg/controller/serviceaccount/BUILD | 2 + .../serviceaccounts_controller.go | 5 +- .../serviceaccounts_controller_test.go | 5 +- pkg/controller/statefulset/BUILD | 2 + pkg/controller/statefulset/stateful_set.go | 5 +- .../statefulset/stateful_set_test.go | 5 +- pkg/kubelet/BUILD | 1 + pkg/kubelet/kubelet.go | 5 +- .../pkg/scheduler/algorithm/predicates/BUILD | 2 +- .../algorithm/predicates/predicates.go | 6 +- plugin/pkg/scheduler/factory/BUILD | 1 + plugin/pkg/scheduler/factory/factory.go | 29 +- 62 files changed, 660 insertions(+), 526 deletions(-) create mode 100644 pkg/client/legacylisters/BUILD create mode 100644 pkg/client/legacylisters/listers.go rename pkg/client/{cache => legacylisters}/listers_core.go (87%) rename pkg/client/{cache => legacylisters}/listers_extensions.go (93%) rename pkg/client/{cache => legacylisters}/listers_rbac.go (87%) rename pkg/client/{cache => legacylisters}/listers_test.go (94%) diff --git a/federation/pkg/federation-controller/replicaset/BUILD b/federation/pkg/federation-controller/replicaset/BUILD index a7fc086ea2a..6e7bb078b27 100644 --- a/federation/pkg/federation-controller/replicaset/BUILD +++ b/federation/pkg/federation-controller/replicaset/BUILD @@ -26,6 +26,7 @@ go_library( "//pkg/apis/extensions/v1beta1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/workqueue:go_default_library", diff --git a/federation/pkg/federation-controller/replicaset/replicasetcontroller.go b/federation/pkg/federation-controller/replicaset/replicasetcontroller.go index 101a758a37a..cf26a54d4c6 100644 --- a/federation/pkg/federation-controller/replicaset/replicasetcontroller.go +++ b/federation/pkg/federation-controller/replicaset/replicasetcontroller.go @@ -43,6 +43,7 @@ import ( extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" "k8s.io/kubernetes/pkg/client/cache" kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/util/workqueue" @@ -81,7 +82,7 @@ type ReplicaSetController struct { fedClient fedclientset.Interface replicaSetController cache.Controller - replicaSetStore cache.StoreToReplicaSetLister + replicaSetStore listers.StoreToReplicaSetLister fedReplicaSetInformer fedutil.FederatedInformer fedPodInformer fedutil.FederatedInformer diff --git a/federation/pkg/federation-controller/service/BUILD b/federation/pkg/federation-controller/service/BUILD index 3ba4b610173..5d95a557aa7 100644 --- a/federation/pkg/federation-controller/service/BUILD +++ b/federation/pkg/federation-controller/service/BUILD @@ -31,6 +31,7 @@ go_library( "//pkg/api/v1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/workqueue:go_default_library", diff --git a/federation/pkg/federation-controller/service/cluster_helper.go b/federation/pkg/federation-controller/service/cluster_helper.go index 96c2676c31f..09d52e237ba 100644 --- a/federation/pkg/federation-controller/service/cluster_helper.go +++ b/federation/pkg/federation-controller/service/cluster_helper.go @@ -27,6 +27,7 @@ import ( v1 "k8s.io/kubernetes/pkg/api/v1" cache "k8s.io/kubernetes/pkg/client/cache" kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/util/workqueue" "reflect" @@ -39,11 +40,11 @@ type clusterCache struct { clientset *kubeclientset.Clientset cluster *v1beta1.Cluster // A store of services, populated by the serviceController - serviceStore cache.StoreToServiceLister + serviceStore listers.StoreToServiceLister // Watches changes to all services serviceController cache.Controller // A store of endpoint, populated by the serviceController - endpointStore cache.StoreToEndpointsLister + endpointStore listers.StoreToEndpointsLister // Watches changes to all endpoints endpointController cache.Controller // services that need to be synced diff --git a/federation/pkg/federation-controller/service/servicecontroller.go b/federation/pkg/federation-controller/service/servicecontroller.go index 961e7c271c0..55a7adeb5ce 100644 --- a/federation/pkg/federation-controller/service/servicecontroller.go +++ b/federation/pkg/federation-controller/service/servicecontroller.go @@ -43,6 +43,7 @@ import ( v1 "k8s.io/kubernetes/pkg/api/v1" cache "k8s.io/kubernetes/pkg/client/cache" kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/util/workqueue" @@ -119,7 +120,7 @@ type ServiceController struct { serviceCache *serviceCache clusterCache *clusterClientCache // A store of services, populated by the serviceController - serviceStore cache.StoreToServiceLister + serviceStore listers.StoreToServiceLister // Watches changes to all services serviceController cache.Controller federatedInformer fedutil.FederatedInformer diff --git a/pkg/BUILD b/pkg/BUILD index 917e6bbb100..701c0346223 100644 --- a/pkg/BUILD +++ b/pkg/BUILD @@ -40,6 +40,7 @@ filegroup( "//pkg/client/conditions:all-srcs", "//pkg/client/informers/informers_generated:all-srcs", "//pkg/client/leaderelection:all-srcs", + "//pkg/client/legacylisters:all-srcs", "//pkg/client/listers/apps/internalversion:all-srcs", "//pkg/client/listers/apps/v1beta1:all-srcs", "//pkg/client/listers/authentication/internalversion:all-srcs", diff --git a/pkg/client/cache/BUILD b/pkg/client/cache/BUILD index 948ad6aad44..eb5f74a8abb 100644 --- a/pkg/client/cache/BUILD +++ b/pkg/client/cache/BUILD @@ -20,9 +20,6 @@ go_library( "fifo.go", "index.go", "listers.go", - "listers_core.go", - "listers_extensions.go", - "listers_rbac.go", "listwatch.go", "mutation_detector.go", "reflector.go", @@ -35,14 +32,6 @@ go_library( deps = [ "//pkg/api:go_default_library", "//pkg/api/v1:go_default_library", - "//pkg/apis/apps/v1beta1:go_default_library", - "//pkg/apis/certificates/v1beta1:go_default_library", - "//pkg/apis/extensions:go_default_library", - "//pkg/apis/extensions/v1beta1:go_default_library", - "//pkg/apis/policy/v1beta1:go_default_library", - "//pkg/apis/rbac:go_default_library", - "//pkg/apis/storage:go_default_library", - "//pkg/apis/storage/v1beta1:go_default_library", "//vendor:github.com/golang/glog", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/api/meta", @@ -69,7 +58,6 @@ go_test( "expiration_cache_test.go", "fifo_test.go", "index_test.go", - "listers_test.go", "listwatch_test.go", "mutation_detector_test.go", "processor_listener_test.go", @@ -83,14 +71,11 @@ go_test( "//pkg/api:go_default_library", "//pkg/api/testapi:go_default_library", "//pkg/api/v1:go_default_library", - "//pkg/apis/extensions/v1beta1:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/testing/cache:go_default_library", "//vendor:github.com/google/gofuzz", - "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/fields", - "//vendor:k8s.io/apimachinery/pkg/labels", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apimachinery/pkg/util/sets", "//vendor:k8s.io/apimachinery/pkg/util/wait", diff --git a/pkg/client/cache/listers.go b/pkg/client/cache/listers.go index efbca410434..8bd708e7c43 100644 --- a/pkg/client/cache/listers.go +++ b/pkg/client/cache/listers.go @@ -17,9 +17,8 @@ limitations under the License. package cache import ( - "fmt" - "github.com/golang/glog" + "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -27,12 +26,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/kubernetes/pkg/api/v1" - apps "k8s.io/kubernetes/pkg/apis/apps/v1beta1" - certificates "k8s.io/kubernetes/pkg/apis/certificates/v1beta1" - extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" - policy "k8s.io/kubernetes/pkg/apis/policy/v1beta1" - storageinternal "k8s.io/kubernetes/pkg/apis/storage" - storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1" ) // AppendFunc is used to add a matching item to whatever list the caller is using @@ -166,315 +159,3 @@ func (s *genericNamespaceLister) Get(name string) (runtime.Object, error) { } return obj.(runtime.Object), nil } - -// TODO: generate these classes and methods for all resources of interest using -// a script. Can use "go generate" once 1.4 is supported by all users. - -// NodeConditionPredicate is a function that indicates whether the given node's conditions meet -// some set of criteria defined by the function. -type NodeConditionPredicate func(node *v1.Node) bool - -// StoreToNodeLister makes a Store have the List method of the client.NodeInterface -// The Store must contain (only) Nodes. -type StoreToNodeLister struct { - Store -} - -func (s *StoreToNodeLister) List() (machines v1.NodeList, err error) { - for _, m := range s.Store.List() { - machines.Items = append(machines.Items, *(m.(*v1.Node))) - } - return machines, nil -} - -// NodeCondition returns a storeToNodeConditionLister -func (s *StoreToNodeLister) NodeCondition(predicate NodeConditionPredicate) storeToNodeConditionLister { - // TODO: Move this filtering server side. Currently our selectors don't facilitate searching through a list so we - // have the reflector filter out the Unschedulable field and sift through node conditions in the lister. - return storeToNodeConditionLister{s.Store, predicate} -} - -// storeToNodeConditionLister filters and returns nodes matching the given type and status from the store. -type storeToNodeConditionLister struct { - store Store - predicate NodeConditionPredicate -} - -// List returns a list of nodes that match the conditions defined by the predicate functions in the storeToNodeConditionLister. -func (s storeToNodeConditionLister) List() (nodes []*v1.Node, err error) { - for _, m := range s.store.List() { - node := m.(*v1.Node) - if s.predicate(node) { - nodes = append(nodes, node) - } else { - glog.V(5).Infof("Node %s matches none of the conditions", node.Name) - } - } - return -} - -// StoreToDaemonSetLister gives a store List and Exists methods. The store must contain only DaemonSets. -type StoreToDaemonSetLister struct { - Store -} - -// Exists checks if the given daemon set exists in the store. -func (s *StoreToDaemonSetLister) Exists(ds *extensions.DaemonSet) (bool, error) { - _, exists, err := s.Store.Get(ds) - if err != nil { - return false, err - } - return exists, nil -} - -// List lists all daemon sets in the store. -// TODO: converge on the interface in pkg/client -func (s *StoreToDaemonSetLister) List() (dss extensions.DaemonSetList, err error) { - for _, c := range s.Store.List() { - dss.Items = append(dss.Items, *(c.(*extensions.DaemonSet))) - } - return dss, nil -} - -// GetPodDaemonSets returns a list of daemon sets managing a pod. -// Returns an error if and only if no matching daemon sets are found. -func (s *StoreToDaemonSetLister) GetPodDaemonSets(pod *v1.Pod) (daemonSets []extensions.DaemonSet, err error) { - var selector labels.Selector - var daemonSet extensions.DaemonSet - - if len(pod.Labels) == 0 { - err = fmt.Errorf("no daemon sets found for pod %v because it has no labels", pod.Name) - return - } - - for _, m := range s.Store.List() { - daemonSet = *m.(*extensions.DaemonSet) - if daemonSet.Namespace != pod.Namespace { - continue - } - selector, err = metav1.LabelSelectorAsSelector(daemonSet.Spec.Selector) - if err != nil { - // this should not happen if the DaemonSet passed validation - return nil, err - } - - // If a daemonSet with a nil or empty selector creeps in, it should match nothing, not everything. - if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { - continue - } - daemonSets = append(daemonSets, daemonSet) - } - if len(daemonSets) == 0 { - err = fmt.Errorf("could not find daemon set for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) - } - return -} - -// StoreToEndpointsLister makes a Store that lists endpoints. -type StoreToEndpointsLister struct { - Store -} - -// List lists all endpoints in the store. -func (s *StoreToEndpointsLister) List() (services v1.EndpointsList, err error) { - for _, m := range s.Store.List() { - services.Items = append(services.Items, *(m.(*v1.Endpoints))) - } - return services, nil -} - -// GetServiceEndpoints returns the endpoints of a service, matched on service name. -func (s *StoreToEndpointsLister) GetServiceEndpoints(svc *v1.Service) (ep v1.Endpoints, err error) { - for _, m := range s.Store.List() { - ep = *m.(*v1.Endpoints) - if svc.Name == ep.Name && svc.Namespace == ep.Namespace { - return ep, nil - } - } - err = fmt.Errorf("could not find endpoints for service: %v", svc.Name) - return -} - -// Typed wrapper around a store of PersistentVolumes -type StoreToPVFetcher struct { - Store -} - -// GetPersistentVolumeInfo returns cached data for the PersistentVolume 'id'. -func (s *StoreToPVFetcher) GetPersistentVolumeInfo(id string) (*v1.PersistentVolume, error) { - o, exists, err := s.Get(&v1.PersistentVolume{ObjectMeta: metav1.ObjectMeta{Name: id}}) - - if err != nil { - return nil, fmt.Errorf("error retrieving PersistentVolume '%v' from cache: %v", id, err) - } - - if !exists { - return nil, fmt.Errorf("PersistentVolume '%v' not found", id) - } - - return o.(*v1.PersistentVolume), nil -} - -// StoreToStatefulSetLister gives a store List and Exists methods. The store must contain only StatefulSets. -type StoreToStatefulSetLister struct { - Store -} - -// Exists checks if the given StatefulSet exists in the store. -func (s *StoreToStatefulSetLister) Exists(ps *apps.StatefulSet) (bool, error) { - _, exists, err := s.Store.Get(ps) - if err != nil { - return false, err - } - return exists, nil -} - -// List lists all StatefulSets in the store. -func (s *StoreToStatefulSetLister) List() (psList []apps.StatefulSet, err error) { - for _, ps := range s.Store.List() { - psList = append(psList, *(ps.(*apps.StatefulSet))) - } - return psList, nil -} - -type storeStatefulSetsNamespacer struct { - store Store - namespace string -} - -func (s *StoreToStatefulSetLister) StatefulSets(namespace string) storeStatefulSetsNamespacer { - return storeStatefulSetsNamespacer{s.Store, namespace} -} - -// GetPodStatefulSets returns a list of StatefulSets managing a pod. Returns an error only if no matching StatefulSets are found. -func (s *StoreToStatefulSetLister) GetPodStatefulSets(pod *v1.Pod) (psList []apps.StatefulSet, err error) { - var selector labels.Selector - var ps apps.StatefulSet - - if len(pod.Labels) == 0 { - err = fmt.Errorf("no StatefulSets found for pod %v because it has no labels", pod.Name) - return - } - - for _, m := range s.Store.List() { - ps = *m.(*apps.StatefulSet) - if ps.Namespace != pod.Namespace { - continue - } - selector, err = metav1.LabelSelectorAsSelector(ps.Spec.Selector) - if err != nil { - err = fmt.Errorf("invalid selector: %v", err) - return - } - - // If a StatefulSet with a nil or empty selector creeps in, it should match nothing, not everything. - if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { - continue - } - psList = append(psList, ps) - } - if len(psList) == 0 { - err = fmt.Errorf("could not find StatefulSet for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) - } - return -} - -// StoreToCertificateRequestLister gives a store List and Exists methods. The store must contain only CertificateRequests. -type StoreToCertificateRequestLister struct { - Store -} - -// Exists checks if the given csr exists in the store. -func (s *StoreToCertificateRequestLister) Exists(csr *certificates.CertificateSigningRequest) (bool, error) { - _, exists, err := s.Store.Get(csr) - if err != nil { - return false, err - } - return exists, nil -} - -// StoreToCertificateRequestLister lists all csrs in the store. -func (s *StoreToCertificateRequestLister) List() (csrs certificates.CertificateSigningRequestList, err error) { - for _, c := range s.Store.List() { - csrs.Items = append(csrs.Items, *(c.(*certificates.CertificateSigningRequest))) - } - return csrs, nil -} - -type StoreToPodDisruptionBudgetLister struct { - Store -} - -// GetPodPodDisruptionBudgets returns a list of PodDisruptionBudgets matching a pod. Returns an error only if no matching PodDisruptionBudgets are found. -func (s *StoreToPodDisruptionBudgetLister) GetPodPodDisruptionBudgets(pod *v1.Pod) (pdbList []policy.PodDisruptionBudget, err error) { - var selector labels.Selector - - if len(pod.Labels) == 0 { - err = fmt.Errorf("no PodDisruptionBudgets found for pod %v because it has no labels", pod.Name) - return - } - - for _, m := range s.Store.List() { - pdb, ok := m.(*policy.PodDisruptionBudget) - if !ok { - glog.Errorf("Unexpected: %v is not a PodDisruptionBudget", m) - continue - } - if pdb.Namespace != pod.Namespace { - continue - } - selector, err = metav1.LabelSelectorAsSelector(pdb.Spec.Selector) - if err != nil { - glog.Warningf("invalid selector: %v", err) - // TODO(mml): add an event to the PDB - continue - } - - // If a PDB with a nil or empty selector creeps in, it should match nothing, not everything. - if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { - continue - } - pdbList = append(pdbList, *pdb) - } - if len(pdbList) == 0 { - err = fmt.Errorf("could not find PodDisruptionBudget for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) - } - return -} - -// StorageClassLister knows how to list storage classes -type StorageClassLister interface { - List(selector labels.Selector) (ret []*storage.StorageClass, err error) - Get(name string) (*storage.StorageClass, error) -} - -// storageClassLister implements StorageClassLister -type storageClassLister struct { - indexer Indexer -} - -// NewStorageClassLister returns a new lister. -func NewStorageClassLister(indexer Indexer) StorageClassLister { - return &storageClassLister{indexer: indexer} -} - -// List returns a list of storage classes -func (s *storageClassLister) List(selector labels.Selector) (ret []*storage.StorageClass, err error) { - err = ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*storage.StorageClass)) - }) - return ret, err -} - -// Get returns storage class with name 'name'. -func (s *storageClassLister) Get(name string) (*storage.StorageClass, error) { - key := &storage.StorageClass{ObjectMeta: metav1.ObjectMeta{Name: name}} - obj, exists, err := s.indexer.Get(key) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(storageinternal.Resource("storageclass"), name) - } - return obj.(*storage.StorageClass), nil -} diff --git a/pkg/client/legacylisters/BUILD b/pkg/client/legacylisters/BUILD new file mode 100644 index 00000000000..a51ec3c34af --- /dev/null +++ b/pkg/client/legacylisters/BUILD @@ -0,0 +1,66 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["listers_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//pkg/api/v1:go_default_library", + "//pkg/apis/extensions/v1beta1:go_default_library", + "//pkg/client/cache:go_default_library", + "//vendor:k8s.io/apimachinery/pkg/api/errors", + "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", + "//vendor:k8s.io/apimachinery/pkg/labels", + "//vendor:k8s.io/apimachinery/pkg/util/sets", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "listers.go", + "listers_core.go", + "listers_extensions.go", + "listers_rbac.go", + ], + tags = ["automanaged"], + deps = [ + "//pkg/api:go_default_library", + "//pkg/api/v1:go_default_library", + "//pkg/apis/apps/v1beta1:go_default_library", + "//pkg/apis/certificates/v1beta1:go_default_library", + "//pkg/apis/extensions:go_default_library", + "//pkg/apis/extensions/v1beta1:go_default_library", + "//pkg/apis/policy/v1beta1:go_default_library", + "//pkg/apis/rbac:go_default_library", + "//pkg/apis/storage:go_default_library", + "//pkg/apis/storage/v1beta1:go_default_library", + "//pkg/client/cache:go_default_library", + "//vendor:github.com/golang/glog", + "//vendor:k8s.io/apimachinery/pkg/api/errors", + "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", + "//vendor:k8s.io/apimachinery/pkg/labels", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/pkg/client/legacylisters/listers.go b/pkg/client/legacylisters/listers.go new file mode 100644 index 00000000000..0055489467e --- /dev/null +++ b/pkg/client/legacylisters/listers.go @@ -0,0 +1,346 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package listers + +import ( + "fmt" + + "github.com/golang/glog" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/kubernetes/pkg/api/v1" + apps "k8s.io/kubernetes/pkg/apis/apps/v1beta1" + certificates "k8s.io/kubernetes/pkg/apis/certificates/v1beta1" + extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" + policy "k8s.io/kubernetes/pkg/apis/policy/v1beta1" + storageinternal "k8s.io/kubernetes/pkg/apis/storage" + storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1" + "k8s.io/kubernetes/pkg/client/cache" +) + +// TODO: generate these classes and methods for all resources of interest using +// a script. Can use "go generate" once 1.4 is supported by all users. + +// NodeConditionPredicate is a function that indicates whether the given node's conditions meet +// some set of criteria defined by the function. +type NodeConditionPredicate func(node *v1.Node) bool + +// StoreToNodeLister makes a Store have the List method of the client.NodeInterface +// The Store must contain (only) Nodes. +type StoreToNodeLister struct { + cache.Store +} + +func (s *StoreToNodeLister) List() (machines v1.NodeList, err error) { + for _, m := range s.Store.List() { + machines.Items = append(machines.Items, *(m.(*v1.Node))) + } + return machines, nil +} + +// NodeCondition returns a storeToNodeConditionLister +func (s *StoreToNodeLister) NodeCondition(predicate NodeConditionPredicate) storeToNodeConditionLister { + // TODO: Move this filtering server side. Currently our selectors don't facilitate searching through a list so we + // have the reflector filter out the Unschedulable field and sift through node conditions in the lister. + return storeToNodeConditionLister{s.Store, predicate} +} + +// storeToNodeConditionLister filters and returns nodes matching the given type and status from the store. +type storeToNodeConditionLister struct { + store cache.Store + predicate NodeConditionPredicate +} + +// List returns a list of nodes that match the conditions defined by the predicate functions in the storeToNodeConditionLister. +func (s storeToNodeConditionLister) List() (nodes []*v1.Node, err error) { + for _, m := range s.store.List() { + node := m.(*v1.Node) + if s.predicate(node) { + nodes = append(nodes, node) + } else { + glog.V(5).Infof("Node %s matches none of the conditions", node.Name) + } + } + return +} + +// StoreToDaemonSetLister gives a store List and Exists methods. The store must contain only DaemonSets. +type StoreToDaemonSetLister struct { + cache.Store +} + +// Exists checks if the given daemon set exists in the store. +func (s *StoreToDaemonSetLister) Exists(ds *extensions.DaemonSet) (bool, error) { + _, exists, err := s.Store.Get(ds) + if err != nil { + return false, err + } + return exists, nil +} + +// List lists all daemon sets in the store. +// TODO: converge on the interface in pkg/client +func (s *StoreToDaemonSetLister) List() (dss extensions.DaemonSetList, err error) { + for _, c := range s.Store.List() { + dss.Items = append(dss.Items, *(c.(*extensions.DaemonSet))) + } + return dss, nil +} + +// GetPodDaemonSets returns a list of daemon sets managing a pod. +// Returns an error if and only if no matching daemon sets are found. +func (s *StoreToDaemonSetLister) GetPodDaemonSets(pod *v1.Pod) (daemonSets []extensions.DaemonSet, err error) { + var selector labels.Selector + var daemonSet extensions.DaemonSet + + if len(pod.Labels) == 0 { + err = fmt.Errorf("no daemon sets found for pod %v because it has no labels", pod.Name) + return + } + + for _, m := range s.Store.List() { + daemonSet = *m.(*extensions.DaemonSet) + if daemonSet.Namespace != pod.Namespace { + continue + } + selector, err = metav1.LabelSelectorAsSelector(daemonSet.Spec.Selector) + if err != nil { + // this should not happen if the DaemonSet passed validation + return nil, err + } + + // If a daemonSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + daemonSets = append(daemonSets, daemonSet) + } + if len(daemonSets) == 0 { + err = fmt.Errorf("could not find daemon set for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// StoreToEndpointsLister makes a Store that lists endpoints. +type StoreToEndpointsLister struct { + cache.Store +} + +// List lists all endpoints in the store. +func (s *StoreToEndpointsLister) List() (services v1.EndpointsList, err error) { + for _, m := range s.Store.List() { + services.Items = append(services.Items, *(m.(*v1.Endpoints))) + } + return services, nil +} + +// GetServiceEndpoints returns the endpoints of a service, matched on service name. +func (s *StoreToEndpointsLister) GetServiceEndpoints(svc *v1.Service) (ep v1.Endpoints, err error) { + for _, m := range s.Store.List() { + ep = *m.(*v1.Endpoints) + if svc.Name == ep.Name && svc.Namespace == ep.Namespace { + return ep, nil + } + } + err = fmt.Errorf("could not find endpoints for service: %v", svc.Name) + return +} + +// Typed wrapper around a store of PersistentVolumes +type StoreToPVFetcher struct { + cache.Store +} + +// GetPersistentVolumeInfo returns cached data for the PersistentVolume 'id'. +func (s *StoreToPVFetcher) GetPersistentVolumeInfo(id string) (*v1.PersistentVolume, error) { + o, exists, err := s.Get(&v1.PersistentVolume{ObjectMeta: metav1.ObjectMeta{Name: id}}) + + if err != nil { + return nil, fmt.Errorf("error retrieving PersistentVolume '%v' from cache: %v", id, err) + } + + if !exists { + return nil, fmt.Errorf("PersistentVolume '%v' not found", id) + } + + return o.(*v1.PersistentVolume), nil +} + +// StoreToStatefulSetLister gives a store List and Exists methods. The store must contain only StatefulSets. +type StoreToStatefulSetLister struct { + cache.Store +} + +// Exists checks if the given StatefulSet exists in the store. +func (s *StoreToStatefulSetLister) Exists(ps *apps.StatefulSet) (bool, error) { + _, exists, err := s.Store.Get(ps) + if err != nil { + return false, err + } + return exists, nil +} + +// List lists all StatefulSets in the store. +func (s *StoreToStatefulSetLister) List() (psList []apps.StatefulSet, err error) { + for _, ps := range s.Store.List() { + psList = append(psList, *(ps.(*apps.StatefulSet))) + } + return psList, nil +} + +type storeStatefulSetsNamespacer struct { + store cache.Store + namespace string +} + +func (s *StoreToStatefulSetLister) StatefulSets(namespace string) storeStatefulSetsNamespacer { + return storeStatefulSetsNamespacer{s.Store, namespace} +} + +// GetPodStatefulSets returns a list of StatefulSets managing a pod. Returns an error only if no matching StatefulSets are found. +func (s *StoreToStatefulSetLister) GetPodStatefulSets(pod *v1.Pod) (psList []apps.StatefulSet, err error) { + var selector labels.Selector + var ps apps.StatefulSet + + if len(pod.Labels) == 0 { + err = fmt.Errorf("no StatefulSets found for pod %v because it has no labels", pod.Name) + return + } + + for _, m := range s.Store.List() { + ps = *m.(*apps.StatefulSet) + if ps.Namespace != pod.Namespace { + continue + } + selector, err = metav1.LabelSelectorAsSelector(ps.Spec.Selector) + if err != nil { + err = fmt.Errorf("invalid selector: %v", err) + return + } + + // If a StatefulSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + psList = append(psList, ps) + } + if len(psList) == 0 { + err = fmt.Errorf("could not find StatefulSet for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// StoreToCertificateRequestLister gives a store List and Exists methods. The store must contain only CertificateRequests. +type StoreToCertificateRequestLister struct { + cache.Store +} + +// Exists checks if the given csr exists in the store. +func (s *StoreToCertificateRequestLister) Exists(csr *certificates.CertificateSigningRequest) (bool, error) { + _, exists, err := s.Store.Get(csr) + if err != nil { + return false, err + } + return exists, nil +} + +// StoreToCertificateRequestLister lists all csrs in the store. +func (s *StoreToCertificateRequestLister) List() (csrs certificates.CertificateSigningRequestList, err error) { + for _, c := range s.Store.List() { + csrs.Items = append(csrs.Items, *(c.(*certificates.CertificateSigningRequest))) + } + return csrs, nil +} + +type StoreToPodDisruptionBudgetLister struct { + cache.Store +} + +// GetPodPodDisruptionBudgets returns a list of PodDisruptionBudgets matching a pod. Returns an error only if no matching PodDisruptionBudgets are found. +func (s *StoreToPodDisruptionBudgetLister) GetPodPodDisruptionBudgets(pod *v1.Pod) (pdbList []policy.PodDisruptionBudget, err error) { + var selector labels.Selector + + if len(pod.Labels) == 0 { + err = fmt.Errorf("no PodDisruptionBudgets found for pod %v because it has no labels", pod.Name) + return + } + + for _, m := range s.Store.List() { + pdb, ok := m.(*policy.PodDisruptionBudget) + if !ok { + glog.Errorf("Unexpected: %v is not a PodDisruptionBudget", m) + continue + } + if pdb.Namespace != pod.Namespace { + continue + } + selector, err = metav1.LabelSelectorAsSelector(pdb.Spec.Selector) + if err != nil { + glog.Warningf("invalid selector: %v", err) + // TODO(mml): add an event to the PDB + continue + } + + // If a PDB with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + pdbList = append(pdbList, *pdb) + } + if len(pdbList) == 0 { + err = fmt.Errorf("could not find PodDisruptionBudget for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// StorageClassLister knows how to list storage classes +type StorageClassLister interface { + List(selector labels.Selector) (ret []*storage.StorageClass, err error) + Get(name string) (*storage.StorageClass, error) +} + +// storageClassLister implements StorageClassLister +type storageClassLister struct { + indexer cache.Indexer +} + +// NewStorageClassLister returns a new lister. +func NewStorageClassLister(indexer cache.Indexer) StorageClassLister { + return &storageClassLister{indexer: indexer} +} + +// List returns a list of storage classes +func (s *storageClassLister) List(selector labels.Selector) (ret []*storage.StorageClass, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*storage.StorageClass)) + }) + return ret, err +} + +// Get returns storage class with name 'name'. +func (s *storageClassLister) Get(name string) (*storage.StorageClass, error) { + key := &storage.StorageClass{ObjectMeta: metav1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(storageinternal.Resource("storageclass"), name) + } + return obj.(*storage.StorageClass), nil +} diff --git a/pkg/client/cache/listers_core.go b/pkg/client/legacylisters/listers_core.go similarity index 87% rename from pkg/client/cache/listers_core.go rename to pkg/client/legacylisters/listers_core.go index b709cf7e073..64b85bacf07 100644 --- a/pkg/client/cache/listers_core.go +++ b/pkg/client/legacylisters/listers_core.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cache +package listers import ( "fmt" @@ -24,6 +24,7 @@ import ( "k8s.io/apimachinery/pkg/labels" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" + "k8s.io/kubernetes/pkg/client/cache" ) // TODO: generate these classes and methods for all resources of interest using @@ -39,11 +40,11 @@ import ( // StoreToPodLister helps list pods type StoreToPodLister struct { - Indexer Indexer + Indexer cache.Indexer } func (s *StoreToPodLister) List(selector labels.Selector) (ret []*v1.Pod, err error) { - err = ListAll(s.Indexer, selector, func(m interface{}) { + err = cache.ListAll(s.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.Pod)) }) return ret, err @@ -54,12 +55,12 @@ func (s *StoreToPodLister) Pods(namespace string) storePodsNamespacer { } type storePodsNamespacer struct { - Indexer Indexer + Indexer cache.Indexer namespace string } func (s storePodsNamespacer) List(selector labels.Selector) (ret []*v1.Pod, err error) { - err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*v1.Pod)) }) return ret, err @@ -78,11 +79,11 @@ func (s storePodsNamespacer) Get(name string) (*v1.Pod, error) { // StoreToServiceLister helps list services type StoreToServiceLister struct { - Indexer Indexer + Indexer cache.Indexer } func (s *StoreToServiceLister) List(selector labels.Selector) (ret []*v1.Service, err error) { - err = ListAll(s.Indexer, selector, func(m interface{}) { + err = cache.ListAll(s.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.Service)) }) return ret, err @@ -93,12 +94,12 @@ func (s *StoreToServiceLister) Services(namespace string) storeServicesNamespace } type storeServicesNamespacer struct { - indexer Indexer + indexer cache.Indexer namespace string } func (s storeServicesNamespacer) List(selector labels.Selector) (ret []*v1.Service, err error) { - err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*v1.Service)) }) return ret, err @@ -140,11 +141,11 @@ func (s *StoreToServiceLister) GetPodServices(pod *v1.Pod) (services []*v1.Servi // StoreToReplicationControllerLister helps list rcs type StoreToReplicationControllerLister struct { - Indexer Indexer + Indexer cache.Indexer } func (s *StoreToReplicationControllerLister) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) { - err = ListAll(s.Indexer, selector, func(m interface{}) { + err = cache.ListAll(s.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.ReplicationController)) }) return ret, err @@ -155,12 +156,12 @@ func (s *StoreToReplicationControllerLister) ReplicationControllers(namespace st } type storeReplicationControllersNamespacer struct { - indexer Indexer + indexer cache.Indexer namespace string } func (s storeReplicationControllersNamespacer) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) { - err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*v1.ReplicationController)) }) return ret, err @@ -185,7 +186,7 @@ func (s *StoreToReplicationControllerLister) GetPodControllers(pod *v1.Pod) (con } key := &v1.ReplicationController{ObjectMeta: metav1.ObjectMeta{Namespace: pod.Namespace}} - items, err := s.Indexer.Index(NamespaceIndex, key) + items, err := s.Indexer.Index(cache.NamespaceIndex, key) if err != nil { return } @@ -208,11 +209,11 @@ func (s *StoreToReplicationControllerLister) GetPodControllers(pod *v1.Pod) (con // StoreToServiceAccountLister helps list service accounts type StoreToServiceAccountLister struct { - Indexer Indexer + Indexer cache.Indexer } func (s *StoreToServiceAccountLister) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) { - err = ListAll(s.Indexer, selector, func(m interface{}) { + err = cache.ListAll(s.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.ServiceAccount)) }) return ret, err @@ -223,12 +224,12 @@ func (s *StoreToServiceAccountLister) ServiceAccounts(namespace string) storeSer } type storeServiceAccountsNamespacer struct { - indexer Indexer + indexer cache.Indexer namespace string } func (s storeServiceAccountsNamespacer) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) { - err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*v1.ServiceAccount)) }) return ret, err @@ -247,11 +248,11 @@ func (s storeServiceAccountsNamespacer) Get(name string) (*v1.ServiceAccount, er // StoreToLimitRangeLister helps list limit ranges type StoreToLimitRangeLister struct { - Indexer Indexer + Indexer cache.Indexer } func (s *StoreToLimitRangeLister) List(selector labels.Selector) (ret []*v1.LimitRange, err error) { - err = ListAll(s.Indexer, selector, func(m interface{}) { + err = cache.ListAll(s.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.LimitRange)) }) return ret, err @@ -259,12 +260,12 @@ func (s *StoreToLimitRangeLister) List(selector labels.Selector) (ret []*v1.Limi // StoreToPersistentVolumeClaimLister helps list pvcs type StoreToPersistentVolumeClaimLister struct { - Indexer Indexer + Indexer cache.Indexer } // List returns all persistentvolumeclaims that match the specified selector func (s *StoreToPersistentVolumeClaimLister) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) { - err = ListAll(s.Indexer, selector, func(m interface{}) { + err = cache.ListAll(s.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.PersistentVolumeClaim)) }) return ret, err @@ -275,12 +276,12 @@ func (s *StoreToLimitRangeLister) LimitRanges(namespace string) storeLimitRanges } type storeLimitRangesNamespacer struct { - indexer Indexer + indexer cache.Indexer namespace string } func (s storeLimitRangesNamespacer) List(selector labels.Selector) (ret []*v1.LimitRange, err error) { - err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*v1.LimitRange)) }) return ret, err @@ -303,12 +304,12 @@ func (s *StoreToPersistentVolumeClaimLister) PersistentVolumeClaims(namespace st } type storePersistentVolumeClaimsNamespacer struct { - Indexer Indexer + Indexer cache.Indexer namespace string } func (s storePersistentVolumeClaimsNamespacer) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) { - err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*v1.PersistentVolumeClaim)) }) return ret, err @@ -327,12 +328,12 @@ func (s storePersistentVolumeClaimsNamespacer) Get(name string) (*v1.PersistentV // IndexerToNamespaceLister gives an Indexer List method type IndexerToNamespaceLister struct { - Indexer + cache.Indexer } // List returns a list of namespaces func (i *IndexerToNamespaceLister) List(selector labels.Selector) (ret []*v1.Namespace, err error) { - err = ListAll(i.Indexer, selector, func(m interface{}) { + err = cache.ListAll(i.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.Namespace)) }) return ret, err diff --git a/pkg/client/cache/listers_extensions.go b/pkg/client/legacylisters/listers_extensions.go similarity index 93% rename from pkg/client/cache/listers_extensions.go rename to pkg/client/legacylisters/listers_extensions.go index 7396530d9ea..302f7a0b2cd 100644 --- a/pkg/client/cache/listers_extensions.go +++ b/pkg/client/legacylisters/listers_extensions.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cache +package listers import ( "fmt" @@ -25,6 +25,7 @@ import ( "k8s.io/kubernetes/pkg/api/v1" extensionsinternal "k8s.io/kubernetes/pkg/apis/extensions" extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" + "k8s.io/kubernetes/pkg/client/cache" ) // TODO: generate these classes and methods for all resources of interest using @@ -40,11 +41,11 @@ import ( // StoreToDeploymentLister helps list deployments type StoreToDeploymentLister struct { - Indexer Indexer + Indexer cache.Indexer } func (s *StoreToDeploymentLister) List(selector labels.Selector) (ret []*extensions.Deployment, err error) { - err = ListAll(s.Indexer, selector, func(m interface{}) { + err = cache.ListAll(s.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*extensions.Deployment)) }) return ret, err @@ -55,12 +56,12 @@ func (s *StoreToDeploymentLister) Deployments(namespace string) storeDeployments } type storeDeploymentsNamespacer struct { - Indexer Indexer + Indexer cache.Indexer namespace string } func (s storeDeploymentsNamespacer) List(selector labels.Selector) (ret []*extensions.Deployment, err error) { - err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*extensions.Deployment)) }) return ret, err @@ -141,11 +142,11 @@ func (s *StoreToDeploymentLister) GetDeploymentsForPod(pod *v1.Pod) (deployments // StoreToReplicaSetLister helps list replicasets type StoreToReplicaSetLister struct { - Indexer Indexer + Indexer cache.Indexer } func (s *StoreToReplicaSetLister) List(selector labels.Selector) (ret []*extensions.ReplicaSet, err error) { - err = ListAll(s.Indexer, selector, func(m interface{}) { + err = cache.ListAll(s.Indexer, selector, func(m interface{}) { ret = append(ret, m.(*extensions.ReplicaSet)) }) return ret, err @@ -156,12 +157,12 @@ func (s *StoreToReplicaSetLister) ReplicaSets(namespace string) storeReplicaSets } type storeReplicaSetsNamespacer struct { - Indexer Indexer + Indexer cache.Indexer namespace string } func (s storeReplicaSetsNamespacer) List(selector labels.Selector) (ret []*extensions.ReplicaSet, err error) { - err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*extensions.ReplicaSet)) }) return ret, err diff --git a/pkg/client/cache/listers_rbac.go b/pkg/client/legacylisters/listers_rbac.go similarity index 87% rename from pkg/client/cache/listers_rbac.go rename to pkg/client/legacylisters/listers_rbac.go index 8d8e8cbc331..f710bfece56 100644 --- a/pkg/client/cache/listers_rbac.go +++ b/pkg/client/legacylisters/listers_rbac.go @@ -14,12 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cache +package listers import ( "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" rbac "k8s.io/kubernetes/pkg/apis/rbac" + "k8s.io/kubernetes/pkg/client/cache" ) // TODO: generate these classes and methods for all resources of interest using @@ -33,16 +34,16 @@ import ( // l := clusterRoleLister{s} // l.List() -func NewClusterRoleLister(indexer Indexer) ClusterRoleLister { +func NewClusterRoleLister(indexer cache.Indexer) ClusterRoleLister { return &clusterRoleLister{indexer: indexer} } -func NewClusterRoleBindingLister(indexer Indexer) ClusterRoleBindingLister { +func NewClusterRoleBindingLister(indexer cache.Indexer) ClusterRoleBindingLister { return &clusterRoleBindingLister{indexer: indexer} } -func NewRoleLister(indexer Indexer) RoleLister { +func NewRoleLister(indexer cache.Indexer) RoleLister { return &roleLister{indexer: indexer} } -func NewRoleBindingLister(indexer Indexer) RoleBindingLister { +func NewRoleBindingLister(indexer cache.Indexer) RoleBindingLister { return &roleBindingLister{indexer: indexer} } @@ -70,11 +71,11 @@ type ClusterRoleLister interface { } type clusterRoleLister struct { - indexer Indexer + indexer cache.Indexer } func (s *clusterRoleLister) List(selector labels.Selector) (ret []*rbac.ClusterRole, err error) { - err = ListAll(s.indexer, selector, func(m interface{}) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { ret = append(ret, m.(*rbac.ClusterRole)) }) return ret, err @@ -102,11 +103,11 @@ type ClusterRoleBindingLister interface { } type clusterRoleBindingLister struct { - indexer Indexer + indexer cache.Indexer } func (s *clusterRoleBindingLister) List(selector labels.Selector) (ret []*rbac.ClusterRoleBinding, err error) { - err = ListAll(s.indexer, selector, func(m interface{}) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { ret = append(ret, m.(*rbac.ClusterRoleBinding)) }) return ret, err @@ -139,11 +140,11 @@ type RoleNamespaceLister interface { } type roleLister struct { - indexer Indexer + indexer cache.Indexer } func (s *roleLister) List(selector labels.Selector) (ret []*rbac.Role, err error) { - err = ListAll(s.indexer, selector, func(m interface{}) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { ret = append(ret, m.(*rbac.Role)) }) return ret, err @@ -158,12 +159,12 @@ func (s roleLister) GetRole(namespace, name string) (*rbac.Role, error) { } type roleNamespaceLister struct { - indexer Indexer + indexer cache.Indexer namespace string } func (s roleNamespaceLister) List(selector labels.Selector) (ret []*rbac.Role, err error) { - err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*rbac.Role)) }) return ret, err @@ -192,11 +193,11 @@ type RoleBindingNamespaceLister interface { } type roleBindingLister struct { - indexer Indexer + indexer cache.Indexer } func (s *roleBindingLister) List(selector labels.Selector) (ret []*rbac.RoleBinding, err error) { - err = ListAll(s.indexer, selector, func(m interface{}) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { ret = append(ret, m.(*rbac.RoleBinding)) }) return ret, err @@ -211,12 +212,12 @@ func (s roleBindingLister) ListRoleBindings(namespace string) ([]*rbac.RoleBindi } type roleBindingNamespaceLister struct { - indexer Indexer + indexer cache.Indexer namespace string } func (s roleBindingNamespaceLister) List(selector labels.Selector) (ret []*rbac.RoleBinding, err error) { - err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { ret = append(ret, m.(*rbac.RoleBinding)) }) return ret, err diff --git a/pkg/client/cache/listers_test.go b/pkg/client/legacylisters/listers_test.go similarity index 94% rename from pkg/client/cache/listers_test.go rename to pkg/client/legacylisters/listers_test.go index bda04ff98ab..2c142641c1e 100644 --- a/pkg/client/cache/listers_test.go +++ b/pkg/client/legacylisters/listers_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cache +package listers import ( "testing" @@ -25,10 +25,11 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/kubernetes/pkg/api/v1" extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" + "k8s.io/kubernetes/pkg/client/cache" ) func TestStoreToNodeLister(t *testing.T) { - store := NewStore(MetaNamespaceKeyFunc) + store := cache.NewStore(cache.MetaNamespaceKeyFunc) ids := sets.NewString("foo", "bar", "baz") for id := range ids { store.Add(&v1.Node{ObjectMeta: metav1.ObjectMeta{Name: id}}) @@ -49,7 +50,7 @@ func TestStoreToNodeLister(t *testing.T) { } func TestStoreToNodeConditionLister(t *testing.T) { - store := NewStore(MetaNamespaceKeyFunc) + store := cache.NewStore(cache.MetaNamespaceKeyFunc) nodes := []*v1.Node{ { ObjectMeta: metav1.ObjectMeta{Name: "foo"}, @@ -246,11 +247,11 @@ func TestStoreToReplicationControllerLister(t *testing.T) { if c.onlyIfIndexedByNamespace && !withIndex { continue } - var store Indexer + var store cache.Indexer if withIndex { - store = NewIndexer(MetaNamespaceKeyFunc, Indexers{NamespaceIndex: MetaNamespaceIndexFunc}) + store = cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) } else { - store = NewIndexer(MetaNamespaceKeyFunc, Indexers{}) + store = cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{}) } for _, r := range c.inRCs { @@ -279,7 +280,7 @@ func TestStoreToReplicationControllerLister(t *testing.T) { } func TestStoreToReplicaSetLister(t *testing.T) { - store := NewIndexer(MetaNamespaceKeyFunc, Indexers{NamespaceIndex: MetaNamespaceIndexFunc}) + store := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) lister := StoreToReplicaSetLister{store} testCases := []struct { inRSs []*extensions.ReplicaSet @@ -391,7 +392,7 @@ func TestStoreToReplicaSetLister(t *testing.T) { } func TestStoreToDaemonSetLister(t *testing.T) { - store := NewStore(MetaNamespaceKeyFunc) + store := cache.NewStore(cache.MetaNamespaceKeyFunc) lister := StoreToDaemonSetLister{store} testCases := []struct { inDSs []*extensions.DaemonSet @@ -520,9 +521,9 @@ func TestStoreToPodLister(t *testing.T) { // We test with and without a namespace index, because StoreToPodLister has // special logic to work on namespaces even when no namespace index is // present. - stores := []Indexer{ - NewIndexer(MetaNamespaceKeyFunc, Indexers{NamespaceIndex: MetaNamespaceIndexFunc}), - NewIndexer(MetaNamespaceKeyFunc, Indexers{}), + stores := []cache.Indexer{ + cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}), + cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{}), } for _, store := range stores { ids := []string{"foo", "bar", "baz"} @@ -582,7 +583,7 @@ func TestStoreToPodLister(t *testing.T) { } func TestStoreToServiceLister(t *testing.T) { - store := NewIndexer(MetaNamespaceKeyFunc, Indexers{NamespaceIndex: MetaNamespaceIndexFunc}) + store := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) store.Add(&v1.Service{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: v1.ServiceSpec{ diff --git a/pkg/controller/certificates/BUILD b/pkg/controller/certificates/BUILD index 8fabac0c5ef..2f4e7162810 100644 --- a/pkg/controller/certificates/BUILD +++ b/pkg/controller/certificates/BUILD @@ -25,6 +25,7 @@ go_library( "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/certificates/v1beta1:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/workqueue:go_default_library", diff --git a/pkg/controller/certificates/certificate_controller.go b/pkg/controller/certificates/certificate_controller.go index accc787d191..cbce5dccd61 100644 --- a/pkg/controller/certificates/certificate_controller.go +++ b/pkg/controller/certificates/certificate_controller.go @@ -29,6 +29,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/util/workqueue" @@ -49,7 +50,7 @@ type CertificateController struct { // CSR framework and store csrController cache.Controller - csrStore cache.StoreToCertificateRequestLister + csrStore listers.StoreToCertificateRequestLister syncHandler func(csrKey string) error diff --git a/pkg/controller/daemon/BUILD b/pkg/controller/daemon/BUILD index 7d64d6ca8a4..a0bd541624e 100644 --- a/pkg/controller/daemon/BUILD +++ b/pkg/controller/daemon/BUILD @@ -23,6 +23,7 @@ go_library( "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", "//pkg/client/clientset_generated/clientset/typed/extensions/v1beta1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/informers:go_default_library", diff --git a/pkg/controller/daemon/daemoncontroller.go b/pkg/controller/daemon/daemoncontroller.go index c32c373e7cb..b183ac55c91 100644 --- a/pkg/controller/daemon/daemoncontroller.go +++ b/pkg/controller/daemon/daemoncontroller.go @@ -35,6 +35,7 @@ import ( "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" unversionedextensions "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/extensions/v1beta1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/informers" @@ -74,11 +75,11 @@ type DaemonSetsController struct { // A TTLCache of pod creates/deletes each ds expects to see expectations controller.ControllerExpectationsInterface // A store of daemon sets - dsStore *cache.StoreToDaemonSetLister + dsStore *listers.StoreToDaemonSetLister // A store of pods - podStore *cache.StoreToPodLister + podStore *listers.StoreToPodLister // A store of nodes - nodeStore *cache.StoreToNodeLister + nodeStore *listers.StoreToNodeLister // dsStoreSynced returns true if the daemonset store has been synced at least once. // Added as a member to the struct to allow injection for testing. dsStoreSynced cache.InformerSynced diff --git a/pkg/controller/deployment/BUILD b/pkg/controller/deployment/BUILD index 6804394e712..61ef0d3872f 100644 --- a/pkg/controller/deployment/BUILD +++ b/pkg/controller/deployment/BUILD @@ -26,6 +26,7 @@ go_library( "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/deployment/util:go_default_library", diff --git a/pkg/controller/deployment/deployment_controller.go b/pkg/controller/deployment/deployment_controller.go index b1c63c0b06d..8fdb6615aa4 100644 --- a/pkg/controller/deployment/deployment_controller.go +++ b/pkg/controller/deployment/deployment_controller.go @@ -40,6 +40,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/deployment/util" @@ -77,11 +78,11 @@ type DeploymentController struct { enqueueDeployment func(deployment *extensions.Deployment) // A store of deployments, populated by the dController - dLister *cache.StoreToDeploymentLister + dLister *listers.StoreToDeploymentLister // A store of ReplicaSets, populated by the rsController - rsLister *cache.StoreToReplicaSetLister + rsLister *listers.StoreToReplicaSetLister // A store of pods, populated by the podController - podLister *cache.StoreToPodLister + podLister *listers.StoreToPodLister // dListerSynced returns true if the Deployment store has been synced at least once. // Added as a member to the struct to allow injection for testing. diff --git a/pkg/controller/deployment/util/BUILD b/pkg/controller/deployment/util/BUILD index ca64818d04b..3eeae233966 100644 --- a/pkg/controller/deployment/util/BUILD +++ b/pkg/controller/deployment/util/BUILD @@ -22,10 +22,10 @@ go_library( "//pkg/api/v1:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/apis/extensions/v1beta1:go_default_library", - "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", "//pkg/client/clientset_generated/clientset/typed/extensions/v1beta1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/retry:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/hash:go_default_library", diff --git a/pkg/controller/deployment/util/deployment_util.go b/pkg/controller/deployment/util/deployment_util.go index 52f88b32460..82f6e21f458 100644 --- a/pkg/controller/deployment/util/deployment_util.go +++ b/pkg/controller/deployment/util/deployment_util.go @@ -37,8 +37,8 @@ import ( "k8s.io/kubernetes/pkg/api/v1" internalextensions "k8s.io/kubernetes/pkg/apis/extensions" extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" - "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/controller" intstrutil "k8s.io/kubernetes/pkg/util/intstr" labelsutil "k8s.io/kubernetes/pkg/util/labels" @@ -684,7 +684,7 @@ func WaitForPodsHashPopulated(c clientset.Interface, desiredGeneration int64, na // LabelPodsWithHash labels all pods in the given podList with the new hash label. // The returned bool value can be used to tell if all pods are actually labeled. -func LabelPodsWithHash(podList *v1.PodList, c clientset.Interface, podLister *cache.StoreToPodLister, namespace, name, hash string) error { +func LabelPodsWithHash(podList *v1.PodList, c clientset.Interface, podLister *listers.StoreToPodLister, namespace, name, hash string) error { for _, pod := range podList.Items { // Only label the pod that doesn't already have the new hash if pod.Labels[extensions.DefaultDeploymentUniqueLabelKey] != hash { diff --git a/pkg/controller/deployment/util/pod_util.go b/pkg/controller/deployment/util/pod_util.go index dde13a91757..970ec46c440 100644 --- a/pkg/controller/deployment/util/pod_util.go +++ b/pkg/controller/deployment/util/pod_util.go @@ -25,8 +25,8 @@ import ( errorsutil "k8s.io/apimachinery/pkg/util/errors" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" - "k8s.io/kubernetes/pkg/client/cache" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/retry" hashutil "k8s.io/kubernetes/pkg/util/hash" ) @@ -56,7 +56,7 @@ type updatePodFunc func(pod *v1.Pod) error // UpdatePodWithRetries updates a pod with given applyUpdate function. Note that pod not found error is ignored. // The returned bool value can be used to tell if the pod is actually updated. -func UpdatePodWithRetries(podClient v1core.PodInterface, podLister *cache.StoreToPodLister, namespace, name string, applyUpdate updatePodFunc) (*v1.Pod, error) { +func UpdatePodWithRetries(podClient v1core.PodInterface, podLister *listers.StoreToPodLister, namespace, name string, applyUpdate updatePodFunc) (*v1.Pod, error) { var pod *v1.Pod retryErr := retry.RetryOnConflict(retry.DefaultBackoff, func() error { diff --git a/pkg/controller/deployment/util/replicaset_util.go b/pkg/controller/deployment/util/replicaset_util.go index 48938c65177..83535a4b733 100644 --- a/pkg/controller/deployment/util/replicaset_util.go +++ b/pkg/controller/deployment/util/replicaset_util.go @@ -25,8 +25,8 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" - "k8s.io/kubernetes/pkg/client/cache" unversionedextensions "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/extensions/v1beta1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/retry" labelsutil "k8s.io/kubernetes/pkg/util/labels" ) @@ -37,7 +37,7 @@ type updateRSFunc func(rs *extensions.ReplicaSet) error // UpdateRSWithRetries updates a RS with given applyUpdate function. Note that RS not found error is ignored. // The returned bool value can be used to tell if the RS is actually updated. -func UpdateRSWithRetries(rsClient unversionedextensions.ReplicaSetInterface, rsLister *cache.StoreToReplicaSetLister, namespace, name string, applyUpdate updateRSFunc) (*extensions.ReplicaSet, error) { +func UpdateRSWithRetries(rsClient unversionedextensions.ReplicaSetInterface, rsLister *listers.StoreToReplicaSetLister, namespace, name string, applyUpdate updateRSFunc) (*extensions.ReplicaSet, error) { var rs *extensions.ReplicaSet retryErr := retry.RetryOnConflict(retry.DefaultBackoff, func() error { diff --git a/pkg/controller/disruption/BUILD b/pkg/controller/disruption/BUILD index 3cb64eaa355..7ffc184c22d 100644 --- a/pkg/controller/disruption/BUILD +++ b/pkg/controller/disruption/BUILD @@ -22,6 +22,7 @@ go_library( "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", "//pkg/client/clientset_generated/clientset/typed/policy/v1beta1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/intstr:go_default_library", @@ -48,6 +49,7 @@ go_test( "//pkg/apis/extensions/v1beta1:go_default_library", "//pkg/apis/policy/v1beta1:go_default_library", "//pkg/client/cache:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/intstr:go_default_library", diff --git a/pkg/controller/disruption/disruption.go b/pkg/controller/disruption/disruption.go index 21d34969c28..0471d324ba2 100644 --- a/pkg/controller/disruption/disruption.go +++ b/pkg/controller/disruption/disruption.go @@ -36,6 +36,7 @@ import ( "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" policyclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/policy/v1beta1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/util/intstr" @@ -64,26 +65,26 @@ type DisruptionController struct { pdbStore cache.Store pdbController cache.Controller - pdbLister cache.StoreToPodDisruptionBudgetLister + pdbLister listers.StoreToPodDisruptionBudgetLister podController cache.Controller - podLister cache.StoreToPodLister + podLister listers.StoreToPodLister rcIndexer cache.Indexer rcController cache.Controller - rcLister cache.StoreToReplicationControllerLister + rcLister listers.StoreToReplicationControllerLister rsStore cache.Store rsController cache.Controller - rsLister cache.StoreToReplicaSetLister + rsLister listers.StoreToReplicaSetLister dIndexer cache.Indexer dController cache.Controller - dLister cache.StoreToDeploymentLister + dLister listers.StoreToDeploymentLister ssStore cache.Store ssController cache.Controller - ssLister cache.StoreToStatefulSetLister + ssLister listers.StoreToStatefulSetLister // PodDisruptionBudget keys that need to be synced. queue workqueue.RateLimitingInterface diff --git a/pkg/controller/disruption/disruption_test.go b/pkg/controller/disruption/disruption_test.go index e5e997a165c..d4f1272e2f8 100644 --- a/pkg/controller/disruption/disruption_test.go +++ b/pkg/controller/disruption/disruption_test.go @@ -30,6 +30,7 @@ import ( extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" policy "k8s.io/kubernetes/pkg/apis/policy/v1beta1" "k8s.io/kubernetes/pkg/client/cache" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/util/intstr" @@ -87,12 +88,12 @@ func newFakeDisruptionController() (*DisruptionController, *pdbStates) { ps := &pdbStates{} dc := &DisruptionController{ - pdbLister: cache.StoreToPodDisruptionBudgetLister{Store: cache.NewStore(controller.KeyFunc)}, - podLister: cache.StoreToPodLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})}, - rcLister: cache.StoreToReplicationControllerLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, - rsLister: cache.StoreToReplicaSetLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, - dLister: cache.StoreToDeploymentLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})}, - ssLister: cache.StoreToStatefulSetLister{Store: cache.NewStore(controller.KeyFunc)}, + pdbLister: listers.StoreToPodDisruptionBudgetLister{Store: cache.NewStore(controller.KeyFunc)}, + podLister: listers.StoreToPodLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})}, + rcLister: listers.StoreToReplicationControllerLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, + rsLister: listers.StoreToReplicaSetLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, + dLister: listers.StoreToDeploymentLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})}, + ssLister: listers.StoreToStatefulSetLister{Store: cache.NewStore(controller.KeyFunc)}, getUpdater: func() updater { return ps.Set }, broadcaster: record.NewBroadcaster(), } diff --git a/pkg/controller/endpoint/BUILD b/pkg/controller/endpoint/BUILD index 2d277d6e9eb..bbe3f65a62f 100644 --- a/pkg/controller/endpoint/BUILD +++ b/pkg/controller/endpoint/BUILD @@ -21,6 +21,7 @@ go_library( "//pkg/api/v1/pod:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/informers:go_default_library", "//pkg/util/metrics:go_default_library", diff --git a/pkg/controller/endpoint/endpoints_controller.go b/pkg/controller/endpoint/endpoints_controller.go index bcd5e56e5b1..b4c6ec4df07 100644 --- a/pkg/controller/endpoint/endpoints_controller.go +++ b/pkg/controller/endpoint/endpoints_controller.go @@ -36,6 +36,7 @@ import ( utilpod "k8s.io/kubernetes/pkg/api/v1/pod" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/informers" "k8s.io/kubernetes/pkg/util/metrics" @@ -128,8 +129,8 @@ func NewEndpointControllerFromClient(client *clientset.Clientset, resyncPeriod c type EndpointController struct { client clientset.Interface - serviceStore cache.StoreToServiceLister - podStore cache.StoreToPodLister + serviceStore listers.StoreToServiceLister + podStore listers.StoreToPodLister // internalPodInformer is used to hold a personal informer. If we're using // a normal shared informer, then the informer will be started for us. If diff --git a/pkg/controller/informers/BUILD b/pkg/controller/informers/BUILD index 73225373560..c6ecebc20da 100644 --- a/pkg/controller/informers/BUILD +++ b/pkg/controller/informers/BUILD @@ -31,6 +31,7 @@ go_library( "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/listers/batch/v1:go_default_library", "//pkg/client/listers/core/internalversion:go_default_library", "//vendor:github.com/golang/glog", diff --git a/pkg/controller/informers/core.go b/pkg/controller/informers/core.go index 7d084e9ab14..67a6f10578a 100644 --- a/pkg/controller/informers/core.go +++ b/pkg/controller/informers/core.go @@ -27,6 +27,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" + "k8s.io/kubernetes/pkg/client/legacylisters" coreinternallisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion" ) @@ -34,7 +35,7 @@ import ( // Interface provides constructor for informer and lister for pods type PodInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToPodLister + Lister() *listers.StoreToPodLister } type podInformer struct { @@ -59,9 +60,9 @@ func (f *podInformer) Informer() cache.SharedIndexInformer { } // Lister returns lister for podInformer -func (f *podInformer) Lister() *cache.StoreToPodLister { +func (f *podInformer) Lister() *listers.StoreToPodLister { informer := f.Informer() - return &cache.StoreToPodLister{Indexer: informer.GetIndexer()} + return &listers.StoreToPodLister{Indexer: informer.GetIndexer()} } //***************************************************************************** @@ -70,7 +71,7 @@ func (f *podInformer) Lister() *cache.StoreToPodLister { // Interface provides constructor for informer and lister for namsespaces type NamespaceInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.IndexerToNamespaceLister + Lister() *listers.IndexerToNamespaceLister } type namespaceInformer struct { @@ -95,9 +96,9 @@ func (f *namespaceInformer) Informer() cache.SharedIndexInformer { } // Lister returns lister for namespaceInformer -func (f *namespaceInformer) Lister() *cache.IndexerToNamespaceLister { +func (f *namespaceInformer) Lister() *listers.IndexerToNamespaceLister { informer := f.Informer() - return &cache.IndexerToNamespaceLister{Indexer: informer.GetIndexer()} + return &listers.IndexerToNamespaceLister{Indexer: informer.GetIndexer()} } //***************************************************************************** @@ -142,7 +143,7 @@ func (f *internalNamespaceInformer) Lister() coreinternallisters.NamespaceLister // Interface provides constructor for informer and lister for nodes type NodeInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToNodeLister + Lister() *listers.StoreToNodeLister } type nodeInformer struct { @@ -167,9 +168,9 @@ func (f *nodeInformer) Informer() cache.SharedIndexInformer { } // Lister returns lister for nodeInformer -func (f *nodeInformer) Lister() *cache.StoreToNodeLister { +func (f *nodeInformer) Lister() *listers.StoreToNodeLister { informer := f.Informer() - return &cache.StoreToNodeLister{Store: informer.GetStore()} + return &listers.StoreToNodeLister{Store: informer.GetStore()} } //***************************************************************************** @@ -178,7 +179,7 @@ func (f *nodeInformer) Lister() *cache.StoreToNodeLister { // Interface provides constructor for informer and lister for persistent volume claims type PVCInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToPersistentVolumeClaimLister + Lister() *listers.StoreToPersistentVolumeClaimLister } type pvcInformer struct { @@ -203,9 +204,9 @@ func (f *pvcInformer) Informer() cache.SharedIndexInformer { } // Lister returns lister for pvcInformer -func (f *pvcInformer) Lister() *cache.StoreToPersistentVolumeClaimLister { +func (f *pvcInformer) Lister() *listers.StoreToPersistentVolumeClaimLister { informer := f.Informer() - return &cache.StoreToPersistentVolumeClaimLister{Indexer: informer.GetIndexer()} + return &listers.StoreToPersistentVolumeClaimLister{Indexer: informer.GetIndexer()} } //***************************************************************************** @@ -214,7 +215,7 @@ func (f *pvcInformer) Lister() *cache.StoreToPersistentVolumeClaimLister { // Interface provides constructor for informer and lister for persistent volumes type PVInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToPVFetcher + Lister() *listers.StoreToPVFetcher } type pvInformer struct { @@ -239,9 +240,9 @@ func (f *pvInformer) Informer() cache.SharedIndexInformer { } // Lister returns lister for pvInformer -func (f *pvInformer) Lister() *cache.StoreToPVFetcher { +func (f *pvInformer) Lister() *listers.StoreToPVFetcher { informer := f.Informer() - return &cache.StoreToPVFetcher{Store: informer.GetStore()} + return &listers.StoreToPVFetcher{Store: informer.GetStore()} } //***************************************************************************** @@ -250,7 +251,7 @@ func (f *pvInformer) Lister() *cache.StoreToPVFetcher { // Interface provides constructor for informer and lister for limit ranges. type LimitRangeInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToLimitRangeLister + Lister() *listers.StoreToLimitRangeLister } type limitRangeInformer struct { @@ -275,9 +276,9 @@ func (f *limitRangeInformer) Informer() cache.SharedIndexInformer { } // Lister returns lister for limitRangeInformer -func (f *limitRangeInformer) Lister() *cache.StoreToLimitRangeLister { +func (f *limitRangeInformer) Lister() *listers.StoreToLimitRangeLister { informer := f.Informer() - return &cache.StoreToLimitRangeLister{Indexer: informer.GetIndexer()} + return &listers.StoreToLimitRangeLister{Indexer: informer.GetIndexer()} } //***************************************************************************** @@ -322,7 +323,7 @@ func (f *internalLimitRangeInformer) Lister() coreinternallisters.LimitRangeList // Interface provides constructor for informer and lister for replication controllers. type ReplicationControllerInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToReplicationControllerLister + Lister() *listers.StoreToReplicationControllerLister } type replicationControllerInformer struct { @@ -347,9 +348,9 @@ func (f *replicationControllerInformer) Informer() cache.SharedIndexInformer { } // Lister returns lister for replicationControllerInformer -func (f *replicationControllerInformer) Lister() *cache.StoreToReplicationControllerLister { +func (f *replicationControllerInformer) Lister() *listers.StoreToReplicationControllerLister { informer := f.Informer() - return &cache.StoreToReplicationControllerLister{Indexer: informer.GetIndexer()} + return &listers.StoreToReplicationControllerLister{Indexer: informer.GetIndexer()} } //***************************************************************************** @@ -533,7 +534,7 @@ func NewReplicationControllerInformer(client clientset.Interface, resyncPeriod t // Interface provides constructor for informer and lister for ServiceAccounts type ServiceAccountInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToServiceAccountLister + Lister() *listers.StoreToServiceAccountLister } type serviceAccountInformer struct { @@ -558,9 +559,9 @@ func (f *serviceAccountInformer) Informer() cache.SharedIndexInformer { } // Lister returns lister for ServiceAccountInformer -func (f *serviceAccountInformer) Lister() *cache.StoreToServiceAccountLister { +func (f *serviceAccountInformer) Lister() *listers.StoreToServiceAccountLister { informer := f.Informer() - return &cache.StoreToServiceAccountLister{Indexer: informer.GetIndexer()} + return &listers.StoreToServiceAccountLister{Indexer: informer.GetIndexer()} } // NewServiceAccountInformer returns a SharedIndexInformer that lists and watches all ServiceAccounts diff --git a/pkg/controller/informers/extensions.go b/pkg/controller/informers/extensions.go index 911916f8866..c60ab79f05d 100644 --- a/pkg/controller/informers/extensions.go +++ b/pkg/controller/informers/extensions.go @@ -24,13 +24,14 @@ import ( "k8s.io/kubernetes/pkg/api/v1" extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" "k8s.io/kubernetes/pkg/client/cache" + "k8s.io/kubernetes/pkg/client/legacylisters" ) // DaemonSetInformer is type of SharedIndexInformer which watches and lists all pods. // Interface provides constructor for informer and lister for pods type DaemonSetInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToDaemonSetLister + Lister() *listers.StoreToDaemonSetLister } type daemonSetInformer struct { @@ -64,15 +65,15 @@ func (f *daemonSetInformer) Informer() cache.SharedIndexInformer { return informer } -func (f *daemonSetInformer) Lister() *cache.StoreToDaemonSetLister { +func (f *daemonSetInformer) Lister() *listers.StoreToDaemonSetLister { informer := f.Informer() - return &cache.StoreToDaemonSetLister{Store: informer.GetIndexer()} + return &listers.StoreToDaemonSetLister{Store: informer.GetIndexer()} } // DeploymentInformer is a type of SharedIndexInformer which watches and lists all deployments. type DeploymentInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToDeploymentLister + Lister() *listers.StoreToDeploymentLister } type deploymentInformer struct { @@ -106,15 +107,15 @@ func (f *deploymentInformer) Informer() cache.SharedIndexInformer { return informer } -func (f *deploymentInformer) Lister() *cache.StoreToDeploymentLister { +func (f *deploymentInformer) Lister() *listers.StoreToDeploymentLister { informer := f.Informer() - return &cache.StoreToDeploymentLister{Indexer: informer.GetIndexer()} + return &listers.StoreToDeploymentLister{Indexer: informer.GetIndexer()} } // ReplicaSetInformer is a type of SharedIndexInformer which watches and lists all replicasets. type ReplicaSetInformer interface { Informer() cache.SharedIndexInformer - Lister() *cache.StoreToReplicaSetLister + Lister() *listers.StoreToReplicaSetLister } type replicaSetInformer struct { @@ -148,7 +149,7 @@ func (f *replicaSetInformer) Informer() cache.SharedIndexInformer { return informer } -func (f *replicaSetInformer) Lister() *cache.StoreToReplicaSetLister { +func (f *replicaSetInformer) Lister() *listers.StoreToReplicaSetLister { informer := f.Informer() - return &cache.StoreToReplicaSetLister{Indexer: informer.GetIndexer()} + return &listers.StoreToReplicaSetLister{Indexer: informer.GetIndexer()} } diff --git a/pkg/controller/informers/rbac.go b/pkg/controller/informers/rbac.go index 99c73d378b1..8cc8623489b 100644 --- a/pkg/controller/informers/rbac.go +++ b/pkg/controller/informers/rbac.go @@ -25,11 +25,12 @@ import ( "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/apis/rbac" "k8s.io/kubernetes/pkg/client/cache" + "k8s.io/kubernetes/pkg/client/legacylisters" ) type ClusterRoleInformer interface { Informer() cache.SharedIndexInformer - Lister() cache.ClusterRoleLister + Lister() listers.ClusterRoleLister } type clusterRoleInformer struct { @@ -63,13 +64,13 @@ func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer { return informer } -func (f *clusterRoleInformer) Lister() cache.ClusterRoleLister { - return cache.NewClusterRoleLister(f.Informer().GetIndexer()) +func (f *clusterRoleInformer) Lister() listers.ClusterRoleLister { + return listers.NewClusterRoleLister(f.Informer().GetIndexer()) } type ClusterRoleBindingInformer interface { Informer() cache.SharedIndexInformer - Lister() cache.ClusterRoleBindingLister + Lister() listers.ClusterRoleBindingLister } type clusterRoleBindingInformer struct { @@ -103,13 +104,13 @@ func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer { return informer } -func (f *clusterRoleBindingInformer) Lister() cache.ClusterRoleBindingLister { - return cache.NewClusterRoleBindingLister(f.Informer().GetIndexer()) +func (f *clusterRoleBindingInformer) Lister() listers.ClusterRoleBindingLister { + return listers.NewClusterRoleBindingLister(f.Informer().GetIndexer()) } type RoleInformer interface { Informer() cache.SharedIndexInformer - Lister() cache.RoleLister + Lister() listers.RoleLister } type roleInformer struct { @@ -143,13 +144,13 @@ func (f *roleInformer) Informer() cache.SharedIndexInformer { return informer } -func (f *roleInformer) Lister() cache.RoleLister { - return cache.NewRoleLister(f.Informer().GetIndexer()) +func (f *roleInformer) Lister() listers.RoleLister { + return listers.NewRoleLister(f.Informer().GetIndexer()) } type RoleBindingInformer interface { Informer() cache.SharedIndexInformer - Lister() cache.RoleBindingLister + Lister() listers.RoleBindingLister } type roleBindingInformer struct { @@ -183,8 +184,8 @@ func (f *roleBindingInformer) Informer() cache.SharedIndexInformer { return informer } -func (f *roleBindingInformer) Lister() cache.RoleBindingLister { - return cache.NewRoleBindingLister(f.Informer().GetIndexer()) +func (f *roleBindingInformer) Lister() listers.RoleBindingLister { + return listers.NewRoleBindingLister(f.Informer().GetIndexer()) } func convertListOptionsOrDie(in v1.ListOptions) api.ListOptions { diff --git a/pkg/controller/informers/storage.go b/pkg/controller/informers/storage.go index 33b21fe4b53..37138208da3 100644 --- a/pkg/controller/informers/storage.go +++ b/pkg/controller/informers/storage.go @@ -24,13 +24,14 @@ import ( "k8s.io/kubernetes/pkg/api/v1" storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1" "k8s.io/kubernetes/pkg/client/cache" + "k8s.io/kubernetes/pkg/client/legacylisters" ) // StorageClassInformer is type of SharedIndexInformer which watches and lists all storage classes. // Interface provides constructor for informer and lister for storage classes type StorageClassInformer interface { Informer() cache.SharedIndexInformer - Lister() cache.StorageClassLister + Lister() listers.StorageClassLister } type storageClassInformer struct { @@ -64,7 +65,7 @@ func (f *storageClassInformer) Informer() cache.SharedIndexInformer { return informer } -func (f *storageClassInformer) Lister() cache.StorageClassLister { +func (f *storageClassInformer) Lister() listers.StorageClassLister { informer := f.Informer() - return cache.NewStorageClassLister(informer.GetIndexer()) + return listers.NewStorageClassLister(informer.GetIndexer()) } diff --git a/pkg/controller/job/BUILD b/pkg/controller/job/BUILD index 8a5de853f68..dd5153dd664 100644 --- a/pkg/controller/job/BUILD +++ b/pkg/controller/job/BUILD @@ -22,6 +22,7 @@ go_library( "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/listers/batch/v1:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", diff --git a/pkg/controller/job/jobcontroller.go b/pkg/controller/job/jobcontroller.go index 03656778e6b..c85429dc507 100644 --- a/pkg/controller/job/jobcontroller.go +++ b/pkg/controller/job/jobcontroller.go @@ -32,6 +32,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" batchv1listers "k8s.io/kubernetes/pkg/client/listers/batch/v1" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" @@ -63,7 +64,7 @@ type JobController struct { jobLister batchv1listers.JobLister // A store of pods, populated by the podController - podStore cache.StoreToPodLister + podStore listers.StoreToPodLister // Jobs that need to be updated queue workqueue.RateLimitingInterface diff --git a/pkg/controller/node/BUILD b/pkg/controller/node/BUILD index 8ad52bee7e9..401aa8ebef9 100644 --- a/pkg/controller/node/BUILD +++ b/pkg/controller/node/BUILD @@ -26,6 +26,7 @@ go_library( "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/cloudprovider:go_default_library", "//pkg/controller/informers:go_default_library", diff --git a/pkg/controller/node/controller_utils.go b/pkg/controller/node/controller_utils.go index e587eb12172..2c888d24806 100644 --- a/pkg/controller/node/controller_utils.go +++ b/pkg/controller/node/controller_utils.go @@ -29,6 +29,7 @@ import ( "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/kubelet/util/format" @@ -45,7 +46,7 @@ const ( // deletePods will delete all pods from master running on given node, and return true // if any pods were deleted, or were found pending deletion. -func deletePods(kubeClient clientset.Interface, recorder record.EventRecorder, nodeName, nodeUID string, daemonStore cache.StoreToDaemonSetLister) (bool, error) { +func deletePods(kubeClient clientset.Interface, recorder record.EventRecorder, nodeName, nodeUID string, daemonStore listers.StoreToDaemonSetLister) (bool, error) { remaining := false selector := fields.OneTermEqualSelector(api.PodHostField, nodeName).String() options := v1.ListOptions{FieldSelector: selector} diff --git a/pkg/controller/node/nodecontroller.go b/pkg/controller/node/nodecontroller.go index 891cf489b9f..428c3924c1f 100644 --- a/pkg/controller/node/nodecontroller.go +++ b/pkg/controller/node/nodecontroller.go @@ -36,6 +36,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/controller/informers" @@ -135,9 +136,9 @@ type NodeController struct { nodeInformer informers.NodeInformer daemonSetInformer informers.DaemonSetInformer - podStore cache.StoreToPodLister - nodeStore cache.StoreToNodeLister - daemonSetStore cache.StoreToDaemonSetLister + podStore listers.StoreToPodLister + nodeStore listers.StoreToNodeLister + daemonSetStore listers.StoreToDaemonSetLister // allocate/recycle CIDRs for node if allocateNodeCIDRs == true cidrAllocator CIDRAllocator diff --git a/pkg/controller/podgc/BUILD b/pkg/controller/podgc/BUILD index 2d3e39e6874..96d49d805b0 100644 --- a/pkg/controller/podgc/BUILD +++ b/pkg/controller/podgc/BUILD @@ -19,6 +19,7 @@ go_library( "//pkg/api/v1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/informers:go_default_library", "//pkg/util/metrics:go_default_library", diff --git a/pkg/controller/podgc/gc_controller.go b/pkg/controller/podgc/gc_controller.go index b93b9c125df..7af01a6df91 100644 --- a/pkg/controller/podgc/gc_controller.go +++ b/pkg/controller/podgc/gc_controller.go @@ -28,6 +28,7 @@ import ( "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/informers" "k8s.io/kubernetes/pkg/util/metrics" @@ -49,7 +50,7 @@ type PodGCController struct { // will be null internalPodInformer cache.SharedIndexInformer - podStore cache.StoreToPodLister + podStore listers.StoreToPodLister podController cache.Controller deletePod func(namespace, name string) error diff --git a/pkg/controller/replicaset/BUILD b/pkg/controller/replicaset/BUILD index 0fdfcf2629f..724adb668d3 100644 --- a/pkg/controller/replicaset/BUILD +++ b/pkg/controller/replicaset/BUILD @@ -24,6 +24,7 @@ go_library( "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", "//pkg/client/clientset_generated/clientset/typed/extensions/v1beta1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/informers:go_default_library", @@ -53,6 +54,7 @@ go_test( "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/fake:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/testing/core:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/informers:go_default_library", diff --git a/pkg/controller/replicaset/replica_set.go b/pkg/controller/replicaset/replica_set.go index f7d8fb7087c..7aa9c244d3f 100644 --- a/pkg/controller/replicaset/replica_set.go +++ b/pkg/controller/replicaset/replica_set.go @@ -39,6 +39,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/informers" @@ -75,9 +76,9 @@ type ReplicaSetController struct { expectations *controller.UIDTrackingControllerExpectations // A store of ReplicaSets, populated by the rsController - rsLister *cache.StoreToReplicaSetLister + rsLister *listers.StoreToReplicaSetLister // A store of pods, populated by the podController - podLister *cache.StoreToPodLister + podLister *listers.StoreToPodLister // podListerSynced returns true if the pod store has been synced at least once. // Added as a member to the struct to allow injection for testing. podListerSynced cache.InformerSynced diff --git a/pkg/controller/replicaset/replica_set_test.go b/pkg/controller/replicaset/replica_set_test.go index 4220cce1eb4..8772097afff 100644 --- a/pkg/controller/replicaset/replica_set_test.go +++ b/pkg/controller/replicaset/replica_set_test.go @@ -43,6 +43,7 @@ import ( "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake" fakeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/testing/core" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/informers" @@ -53,8 +54,8 @@ import ( func testNewReplicaSetControllerFromClient(client clientset.Interface, stopCh chan struct{}, burstReplicas int, lookupCacheSize int) *ReplicaSetController { informers := informers.NewSharedInformerFactory(client, nil, controller.NoResyncPeriodFunc()) ret := NewReplicaSetController(informers.ReplicaSets(), informers.Pods(), client, burstReplicas, lookupCacheSize, false) - ret.podLister = &cache.StoreToPodLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})} - ret.rsLister = &cache.StoreToReplicaSetLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})} + ret.podLister = &listers.StoreToPodLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})} + ret.rsLister = &listers.StoreToReplicaSetLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})} informers.Start(stopCh) return ret } diff --git a/pkg/controller/replication/BUILD b/pkg/controller/replication/BUILD index 6f11891398d..8d38d242b7b 100644 --- a/pkg/controller/replication/BUILD +++ b/pkg/controller/replication/BUILD @@ -21,6 +21,7 @@ go_library( "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/informers:go_default_library", diff --git a/pkg/controller/replication/replication_controller.go b/pkg/controller/replication/replication_controller.go index 08629980f44..35e032dfe58 100644 --- a/pkg/controller/replication/replication_controller.go +++ b/pkg/controller/replication/replication_controller.go @@ -36,6 +36,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/informers" @@ -82,9 +83,9 @@ type ReplicationManager struct { expectations *controller.UIDTrackingControllerExpectations // A store of replication controllers, populated by the rcController - rcLister cache.StoreToReplicationControllerLister + rcLister listers.StoreToReplicationControllerLister // A store of pods, populated by the podController - podLister cache.StoreToPodLister + podLister listers.StoreToPodLister // Watches changes to all pods podController cache.Controller // podListerSynced returns true if the pod store has been synced at least once. diff --git a/pkg/controller/route/BUILD b/pkg/controller/route/BUILD index 932e2f0343b..047c830dd84 100644 --- a/pkg/controller/route/BUILD +++ b/pkg/controller/route/BUILD @@ -19,6 +19,7 @@ go_library( "//pkg/api/v1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/cloudprovider:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/metrics:go_default_library", diff --git a/pkg/controller/route/routecontroller.go b/pkg/controller/route/routecontroller.go index ab0b559375c..aa943ae3826 100644 --- a/pkg/controller/route/routecontroller.go +++ b/pkg/controller/route/routecontroller.go @@ -32,6 +32,7 @@ import ( "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/util/metrics" @@ -55,7 +56,7 @@ type RouteController struct { clusterCIDR *net.IPNet // Node framework and store nodeController cache.Controller - nodeStore cache.StoreToNodeLister + nodeStore listers.StoreToNodeLister } func New(routes cloudprovider.Routes, kubeClient clientset.Interface, clusterName string, clusterCIDR *net.IPNet) *RouteController { diff --git a/pkg/controller/service/BUILD b/pkg/controller/service/BUILD index c8840121cf8..12bbb9e104b 100644 --- a/pkg/controller/service/BUILD +++ b/pkg/controller/service/BUILD @@ -20,6 +20,7 @@ go_library( "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/cloudprovider:go_default_library", "//pkg/controller:go_default_library", diff --git a/pkg/controller/service/servicecontroller.go b/pkg/controller/service/servicecontroller.go index 0a98d3758f9..756a8bb1a2c 100644 --- a/pkg/controller/service/servicecontroller.go +++ b/pkg/controller/service/servicecontroller.go @@ -35,6 +35,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/controller" @@ -85,12 +86,12 @@ type ServiceController struct { zone cloudprovider.Zone cache *serviceCache // A store of services, populated by the serviceController - serviceStore cache.StoreToServiceLister + serviceStore listers.StoreToServiceLister // Watches changes to all services serviceController cache.Controller eventBroadcaster record.EventBroadcaster eventRecorder record.EventRecorder - nodeLister cache.StoreToNodeLister + nodeLister listers.StoreToNodeLister // services that need to be synced workingQueue workqueue.DelayingInterface } @@ -114,7 +115,7 @@ func New(cloud cloudprovider.Interface, kubeClient clientset.Interface, clusterN cache: &serviceCache{serviceMap: make(map[string]*cachedService)}, eventBroadcaster: broadcaster, eventRecorder: recorder, - nodeLister: cache.StoreToNodeLister{ + nodeLister: listers.StoreToNodeLister{ Store: cache.NewStore(cache.MetaNamespaceKeyFunc), }, workingQueue: workqueue.NewDelayingQueue(), @@ -600,7 +601,7 @@ func includeNodeFromNodeList(node *v1.Node) bool { return !node.Spec.Unschedulable } -func getNodeConditionPredicate() cache.NodeConditionPredicate { +func getNodeConditionPredicate() listers.NodeConditionPredicate { return func(node *v1.Node) bool { // We add the master to the node list, but its unschedulable. So we use this to filter // the master. diff --git a/pkg/controller/serviceaccount/BUILD b/pkg/controller/serviceaccount/BUILD index d9a59d12eca..c6e261994cb 100644 --- a/pkg/controller/serviceaccount/BUILD +++ b/pkg/controller/serviceaccount/BUILD @@ -22,6 +22,7 @@ go_library( "//pkg/api/v1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/retry:go_default_library", "//pkg/controller/informers:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", @@ -62,6 +63,7 @@ go_test( "//pkg/api/v1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset/fake:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/testing/core:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/informers:go_default_library", diff --git a/pkg/controller/serviceaccount/serviceaccounts_controller.go b/pkg/controller/serviceaccount/serviceaccounts_controller.go index d7d553c8472..58e7d375c40 100644 --- a/pkg/controller/serviceaccount/serviceaccounts_controller.go +++ b/pkg/controller/serviceaccount/serviceaccounts_controller.go @@ -30,6 +30,7 @@ import ( "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/controller/informers" "k8s.io/kubernetes/pkg/util/metrics" "k8s.io/kubernetes/pkg/util/workqueue" @@ -105,8 +106,8 @@ type ServiceAccountsController struct { // To allow injection for testing. syncHandler func(key string) error - saLister *cache.StoreToServiceAccountLister - nsLister *cache.IndexerToNamespaceLister + saLister *listers.StoreToServiceAccountLister + nsLister *listers.IndexerToNamespaceLister saSynced cache.InformerSynced nsSynced cache.InformerSynced diff --git a/pkg/controller/serviceaccount/serviceaccounts_controller_test.go b/pkg/controller/serviceaccount/serviceaccounts_controller_test.go index 7e1d7e3c396..22e34fa5051 100644 --- a/pkg/controller/serviceaccount/serviceaccounts_controller_test.go +++ b/pkg/controller/serviceaccount/serviceaccounts_controller_test.go @@ -25,6 +25,7 @@ import ( "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/testing/core" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/informers" @@ -165,8 +166,8 @@ func TestServiceAccountCreation(t *testing.T) { {ObjectMeta: metav1.ObjectMeta{Name: managedName}}, } controller := NewServiceAccountsController(informers.ServiceAccounts(), informers.Namespaces(), client, options) - controller.saLister = &cache.StoreToServiceAccountLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})} - controller.nsLister = &cache.IndexerToNamespaceLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})} + controller.saLister = &listers.StoreToServiceAccountLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})} + controller.nsLister = &listers.IndexerToNamespaceLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})} controller.saSynced = alwaysReady controller.nsSynced = alwaysReady diff --git a/pkg/controller/statefulset/BUILD b/pkg/controller/statefulset/BUILD index 26072ac34df..427e2697436 100644 --- a/pkg/controller/statefulset/BUILD +++ b/pkg/controller/statefulset/BUILD @@ -28,6 +28,7 @@ go_library( "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/client/clientset_generated/clientset/typed/apps/v1beta1:go_default_library", "//pkg/client/clientset_generated/clientset/typed/core/v1:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/workqueue:go_default_library", @@ -66,6 +67,7 @@ go_test( "//pkg/client/clientset_generated/clientset/fake:go_default_library", "//pkg/client/clientset_generated/clientset/typed/apps/v1beta1:go_default_library", "//pkg/client/clientset_generated/clientset/typed/apps/v1beta1/fake:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/testing/core:go_default_library", "//pkg/controller:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", diff --git a/pkg/controller/statefulset/stateful_set.go b/pkg/controller/statefulset/stateful_set.go index 09ecc13b799..75af8815565 100644 --- a/pkg/controller/statefulset/stateful_set.go +++ b/pkg/controller/statefulset/stateful_set.go @@ -28,6 +28,7 @@ import ( "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/apimachinery/pkg/runtime" @@ -59,7 +60,7 @@ type StatefulSetController struct { newSyncer func(*pcb) *petSyncer // podStore is a cache of watched pods. - podStore cache.StoreToPodLister + podStore listers.StoreToPodLister // podStoreSynced returns true if the pod store has synced at least once. podStoreSynced func() bool @@ -67,7 +68,7 @@ type StatefulSetController struct { podController cache.Controller // A store of StatefulSets, populated by the psController. - psStore cache.StoreToStatefulSetLister + psStore listers.StoreToStatefulSetLister // Watches changes to all StatefulSets. psController cache.Controller diff --git a/pkg/controller/statefulset/stateful_set_test.go b/pkg/controller/statefulset/stateful_set_test.go index 59925537ba5..c159ef2b67a 100644 --- a/pkg/controller/statefulset/stateful_set_test.go +++ b/pkg/controller/statefulset/stateful_set_test.go @@ -29,6 +29,7 @@ import ( fakeinternal "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/apps/v1beta1" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/apps/v1beta1/fake" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/controller" ) @@ -38,8 +39,8 @@ func newFakeStatefulSetController() (*StatefulSetController, *fakePetClient) { kubeClient: nil, blockingPetStore: newUnHealthyPetTracker(fpc), podStoreSynced: func() bool { return true }, - psStore: cache.StoreToStatefulSetLister{Store: cache.NewStore(controller.KeyFunc)}, - podStore: cache.StoreToPodLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})}, + psStore: listers.StoreToStatefulSetLister{Store: cache.NewStore(controller.KeyFunc)}, + podStore: listers.StoreToPodLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})}, newSyncer: func(blockingPet *pcb) *petSyncer { return &petSyncer{fpc, blockingPet} }, diff --git a/pkg/kubelet/BUILD b/pkg/kubelet/BUILD index 0c9f6102138..aec09318ab8 100644 --- a/pkg/kubelet/BUILD +++ b/pkg/kubelet/BUILD @@ -45,6 +45,7 @@ go_library( "//pkg/capabilities:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/client/record:go_default_library", "//pkg/cloudprovider:go_default_library", "//pkg/fieldpath:go_default_library", diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 23bf0b62888..3620f319654 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -50,6 +50,7 @@ import ( componentconfigv1alpha1 "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/cloudprovider" internalapi "k8s.io/kubernetes/pkg/kubelet/api" @@ -383,7 +384,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub serviceLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "services", v1.NamespaceAll, fields.Everything()) cache.NewReflector(serviceLW, &v1.Service{}, serviceStore, 0).Run() } - serviceLister := &cache.StoreToServiceLister{Indexer: serviceStore} + serviceLister := &listers.StoreToServiceLister{Indexer: serviceStore} nodeStore := cache.NewStore(cache.MetaNamespaceKeyFunc) if kubeClient != nil { @@ -391,7 +392,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub nodeLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "nodes", v1.NamespaceAll, fieldSelector) cache.NewReflector(nodeLW, &v1.Node{}, nodeStore, 0).Run() } - nodeLister := &cache.StoreToNodeLister{Store: nodeStore} + nodeLister := &listers.StoreToNodeLister{Store: nodeStore} nodeInfo := &predicates.CachedNodeInfo{StoreToNodeLister: nodeLister} // TODO: get the real node object of ourself, diff --git a/plugin/pkg/scheduler/algorithm/predicates/BUILD b/plugin/pkg/scheduler/algorithm/predicates/BUILD index 4326afd2f2e..83f2a112120 100644 --- a/plugin/pkg/scheduler/algorithm/predicates/BUILD +++ b/plugin/pkg/scheduler/algorithm/predicates/BUILD @@ -19,7 +19,7 @@ go_library( tags = ["automanaged"], deps = [ "//pkg/api/v1:go_default_library", - "//pkg/client/cache:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/kubelet/qos:go_default_library", "//pkg/util/workqueue:go_default_library", "//plugin/pkg/scheduler/algorithm:go_default_library", diff --git a/plugin/pkg/scheduler/algorithm/predicates/predicates.go b/plugin/pkg/scheduler/algorithm/predicates/predicates.go index bf08e31ad28..c443964cb53 100644 --- a/plugin/pkg/scheduler/algorithm/predicates/predicates.go +++ b/plugin/pkg/scheduler/algorithm/predicates/predicates.go @@ -29,7 +29,7 @@ import ( "k8s.io/apimachinery/pkg/labels" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/kubernetes/pkg/api/v1" - "k8s.io/kubernetes/pkg/client/cache" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/kubelet/qos" "k8s.io/kubernetes/pkg/util/workqueue" "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm" @@ -64,7 +64,7 @@ type PersistentVolumeClaimInfo interface { // CachedPersistentVolumeClaimInfo implements PersistentVolumeClaimInfo type CachedPersistentVolumeClaimInfo struct { - *cache.StoreToPersistentVolumeClaimLister + *listers.StoreToPersistentVolumeClaimLister } // GetPersistentVolumeClaimInfo fetches the claim in specified namespace with specified name @@ -73,7 +73,7 @@ func (c *CachedPersistentVolumeClaimInfo) GetPersistentVolumeClaimInfo(namespace } type CachedNodeInfo struct { - *cache.StoreToNodeLister + *listers.StoreToNodeLister } // GetNodeInfo returns cached data for the node 'id'. diff --git a/plugin/pkg/scheduler/factory/BUILD b/plugin/pkg/scheduler/factory/BUILD index 23207d44fa5..e88651b9461 100644 --- a/plugin/pkg/scheduler/factory/BUILD +++ b/plugin/pkg/scheduler/factory/BUILD @@ -20,6 +20,7 @@ go_library( "//pkg/apis/extensions/v1beta1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", + "//pkg/client/legacylisters:go_default_library", "//pkg/controller/informers:go_default_library", "//plugin/pkg/scheduler:go_default_library", "//plugin/pkg/scheduler/algorithm:go_default_library", diff --git a/plugin/pkg/scheduler/factory/factory.go b/plugin/pkg/scheduler/factory/factory.go index 4ce47365964..1affa51db12 100644 --- a/plugin/pkg/scheduler/factory/factory.go +++ b/plugin/pkg/scheduler/factory/factory.go @@ -34,6 +34,7 @@ import ( "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" + "k8s.io/kubernetes/pkg/client/legacylisters" "k8s.io/kubernetes/pkg/controller/informers" "k8s.io/kubernetes/plugin/pkg/scheduler" "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm" @@ -59,21 +60,21 @@ type ConfigFactory struct { // queue for pods that need scheduling podQueue *cache.FIFO // a means to list all known scheduled pods. - scheduledPodLister *cache.StoreToPodLister + scheduledPodLister *listers.StoreToPodLister // a means to list all known scheduled pods and pods assumed to have been scheduled. podLister algorithm.PodLister // a means to list all nodes - nodeLister *cache.StoreToNodeLister + nodeLister *listers.StoreToNodeLister // a means to list all PersistentVolumes - pVLister *cache.StoreToPVFetcher + pVLister *listers.StoreToPVFetcher // a means to list all PersistentVolumeClaims - pVCLister *cache.StoreToPersistentVolumeClaimLister + pVCLister *listers.StoreToPersistentVolumeClaimLister // a means to list all services - serviceLister *cache.StoreToServiceLister + serviceLister *listers.StoreToServiceLister // a means to list all controllers - controllerLister *cache.StoreToReplicationControllerLister + controllerLister *listers.StoreToReplicationControllerLister // a means to list all replicasets - replicaSetLister *cache.StoreToReplicaSetLister + replicaSetLister *listers.StoreToReplicaSetLister // Close this to stop all reflectors StopEverything chan struct{} @@ -117,16 +118,16 @@ func NewConfigFactory(client clientset.Interface, schedulerName string, hardPodA c := &ConfigFactory{ client: client, podQueue: cache.NewFIFO(cache.MetaNamespaceKeyFunc), - scheduledPodLister: &cache.StoreToPodLister{}, + scheduledPodLister: &listers.StoreToPodLister{}, informerFactory: informerFactory, // Only nodes in the "Ready" condition with status == "True" are schedulable - nodeLister: &cache.StoreToNodeLister{}, - pVLister: &cache.StoreToPVFetcher{Store: cache.NewStore(cache.MetaNamespaceKeyFunc)}, + nodeLister: &listers.StoreToNodeLister{}, + pVLister: &listers.StoreToPVFetcher{Store: cache.NewStore(cache.MetaNamespaceKeyFunc)}, pVCLister: pvcInformer.Lister(), pvcPopulator: pvcInformer.Informer().GetController(), - serviceLister: &cache.StoreToServiceLister{Indexer: cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, - controllerLister: &cache.StoreToReplicationControllerLister{Indexer: cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, - replicaSetLister: &cache.StoreToReplicaSetLister{Indexer: cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, + serviceLister: &listers.StoreToServiceLister{Indexer: cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, + controllerLister: &listers.StoreToReplicationControllerLister{Indexer: cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, + replicaSetLister: &listers.StoreToReplicaSetLister{Indexer: cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}, schedulerCache: schedulerCache, StopEverything: stopEverything, schedulerName: schedulerName, @@ -515,7 +516,7 @@ func (f *ConfigFactory) ResponsibleForPod(pod *v1.Pod) bool { return f.schedulerName == pod.Spec.SchedulerName } -func getNodeConditionPredicate() cache.NodeConditionPredicate { +func getNodeConditionPredicate() listers.NodeConditionPredicate { return func(node *v1.Node) bool { for i := range node.Status.Conditions { cond := &node.Status.Conditions[i]