mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 01:40:07 +00:00
move listers out of cache to reduce import tree
This commit is contained in:
parent
54ff406702
commit
1ce0637b27
@ -26,6 +26,7 @@ go_library(
|
|||||||
"//pkg/apis/extensions/v1beta1:go_default_library",
|
"//pkg/apis/extensions/v1beta1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/workqueue:go_default_library",
|
"//pkg/util/workqueue:go_default_library",
|
||||||
|
@ -43,6 +43,7 @@ import (
|
|||||||
extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
@ -81,7 +82,7 @@ type ReplicaSetController struct {
|
|||||||
fedClient fedclientset.Interface
|
fedClient fedclientset.Interface
|
||||||
|
|
||||||
replicaSetController cache.Controller
|
replicaSetController cache.Controller
|
||||||
replicaSetStore cache.StoreToReplicaSetLister
|
replicaSetStore listers.StoreToReplicaSetLister
|
||||||
|
|
||||||
fedReplicaSetInformer fedutil.FederatedInformer
|
fedReplicaSetInformer fedutil.FederatedInformer
|
||||||
fedPodInformer fedutil.FederatedInformer
|
fedPodInformer fedutil.FederatedInformer
|
||||||
|
@ -31,6 +31,7 @@ go_library(
|
|||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/workqueue:go_default_library",
|
"//pkg/util/workqueue:go_default_library",
|
||||||
|
@ -27,6 +27,7 @@ import (
|
|||||||
v1 "k8s.io/kubernetes/pkg/api/v1"
|
v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
cache "k8s.io/kubernetes/pkg/client/cache"
|
cache "k8s.io/kubernetes/pkg/client/cache"
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
|
|
||||||
"reflect"
|
"reflect"
|
||||||
@ -39,11 +40,11 @@ type clusterCache struct {
|
|||||||
clientset *kubeclientset.Clientset
|
clientset *kubeclientset.Clientset
|
||||||
cluster *v1beta1.Cluster
|
cluster *v1beta1.Cluster
|
||||||
// A store of services, populated by the serviceController
|
// A store of services, populated by the serviceController
|
||||||
serviceStore cache.StoreToServiceLister
|
serviceStore listers.StoreToServiceLister
|
||||||
// Watches changes to all services
|
// Watches changes to all services
|
||||||
serviceController cache.Controller
|
serviceController cache.Controller
|
||||||
// A store of endpoint, populated by the serviceController
|
// A store of endpoint, populated by the serviceController
|
||||||
endpointStore cache.StoreToEndpointsLister
|
endpointStore listers.StoreToEndpointsLister
|
||||||
// Watches changes to all endpoints
|
// Watches changes to all endpoints
|
||||||
endpointController cache.Controller
|
endpointController cache.Controller
|
||||||
// services that need to be synced
|
// services that need to be synced
|
||||||
|
@ -43,6 +43,7 @@ import (
|
|||||||
v1 "k8s.io/kubernetes/pkg/api/v1"
|
v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
cache "k8s.io/kubernetes/pkg/client/cache"
|
cache "k8s.io/kubernetes/pkg/client/cache"
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
@ -119,7 +120,7 @@ type ServiceController struct {
|
|||||||
serviceCache *serviceCache
|
serviceCache *serviceCache
|
||||||
clusterCache *clusterClientCache
|
clusterCache *clusterClientCache
|
||||||
// A store of services, populated by the serviceController
|
// A store of services, populated by the serviceController
|
||||||
serviceStore cache.StoreToServiceLister
|
serviceStore listers.StoreToServiceLister
|
||||||
// Watches changes to all services
|
// Watches changes to all services
|
||||||
serviceController cache.Controller
|
serviceController cache.Controller
|
||||||
federatedInformer fedutil.FederatedInformer
|
federatedInformer fedutil.FederatedInformer
|
||||||
|
@ -40,6 +40,7 @@ filegroup(
|
|||||||
"//pkg/client/conditions:all-srcs",
|
"//pkg/client/conditions:all-srcs",
|
||||||
"//pkg/client/informers/informers_generated:all-srcs",
|
"//pkg/client/informers/informers_generated:all-srcs",
|
||||||
"//pkg/client/leaderelection:all-srcs",
|
"//pkg/client/leaderelection:all-srcs",
|
||||||
|
"//pkg/client/legacylisters:all-srcs",
|
||||||
"//pkg/client/listers/apps/internalversion:all-srcs",
|
"//pkg/client/listers/apps/internalversion:all-srcs",
|
||||||
"//pkg/client/listers/apps/v1beta1:all-srcs",
|
"//pkg/client/listers/apps/v1beta1:all-srcs",
|
||||||
"//pkg/client/listers/authentication/internalversion:all-srcs",
|
"//pkg/client/listers/authentication/internalversion:all-srcs",
|
||||||
|
15
pkg/client/cache/BUILD
vendored
15
pkg/client/cache/BUILD
vendored
@ -20,9 +20,6 @@ go_library(
|
|||||||
"fifo.go",
|
"fifo.go",
|
||||||
"index.go",
|
"index.go",
|
||||||
"listers.go",
|
"listers.go",
|
||||||
"listers_core.go",
|
|
||||||
"listers_extensions.go",
|
|
||||||
"listers_rbac.go",
|
|
||||||
"listwatch.go",
|
"listwatch.go",
|
||||||
"mutation_detector.go",
|
"mutation_detector.go",
|
||||||
"reflector.go",
|
"reflector.go",
|
||||||
@ -35,14 +32,6 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/v1: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:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/meta",
|
"//vendor:k8s.io/apimachinery/pkg/api/meta",
|
||||||
@ -69,7 +58,6 @@ go_test(
|
|||||||
"expiration_cache_test.go",
|
"expiration_cache_test.go",
|
||||||
"fifo_test.go",
|
"fifo_test.go",
|
||||||
"index_test.go",
|
"index_test.go",
|
||||||
"listers_test.go",
|
|
||||||
"listwatch_test.go",
|
"listwatch_test.go",
|
||||||
"mutation_detector_test.go",
|
"mutation_detector_test.go",
|
||||||
"processor_listener_test.go",
|
"processor_listener_test.go",
|
||||||
@ -83,14 +71,11 @@ go_test(
|
|||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
"//pkg/api/v1: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/clientset_generated/internalclientset:go_default_library",
|
||||||
"//pkg/client/testing/cache:go_default_library",
|
"//pkg/client/testing/cache:go_default_library",
|
||||||
"//vendor:github.com/google/gofuzz",
|
"//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/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/fields",
|
"//vendor:k8s.io/apimachinery/pkg/fields",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/labels",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
|
321
pkg/client/cache/listers.go
vendored
321
pkg/client/cache/listers.go
vendored
@ -17,9 +17,8 @@ limitations under the License.
|
|||||||
package cache
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
@ -27,12 +26,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"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
|
// 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
|
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
|
|
||||||
}
|
|
||||||
|
66
pkg/client/legacylisters/BUILD
Normal file
66
pkg/client/legacylisters/BUILD
Normal file
@ -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"],
|
||||||
|
)
|
346
pkg/client/legacylisters/listers.go
Normal file
346
pkg/client/legacylisters/listers.go
Normal file
@ -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
|
||||||
|
}
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package cache
|
package listers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -24,6 +24,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO: generate these classes and methods for all resources of interest using
|
// TODO: generate these classes and methods for all resources of interest using
|
||||||
@ -39,11 +40,11 @@ import (
|
|||||||
|
|
||||||
// StoreToPodLister helps list pods
|
// StoreToPodLister helps list pods
|
||||||
type StoreToPodLister struct {
|
type StoreToPodLister struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToPodLister) List(selector labels.Selector) (ret []*v1.Pod, err error) {
|
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))
|
ret = append(ret, m.(*v1.Pod))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -54,12 +55,12 @@ func (s *StoreToPodLister) Pods(namespace string) storePodsNamespacer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type storePodsNamespacer struct {
|
type storePodsNamespacer struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storePodsNamespacer) List(selector labels.Selector) (ret []*v1.Pod, err error) {
|
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))
|
ret = append(ret, m.(*v1.Pod))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -78,11 +79,11 @@ func (s storePodsNamespacer) Get(name string) (*v1.Pod, error) {
|
|||||||
|
|
||||||
// StoreToServiceLister helps list services
|
// StoreToServiceLister helps list services
|
||||||
type StoreToServiceLister struct {
|
type StoreToServiceLister struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToServiceLister) List(selector labels.Selector) (ret []*v1.Service, err error) {
|
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))
|
ret = append(ret, m.(*v1.Service))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -93,12 +94,12 @@ func (s *StoreToServiceLister) Services(namespace string) storeServicesNamespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
type storeServicesNamespacer struct {
|
type storeServicesNamespacer struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storeServicesNamespacer) List(selector labels.Selector) (ret []*v1.Service, err error) {
|
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))
|
ret = append(ret, m.(*v1.Service))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -140,11 +141,11 @@ func (s *StoreToServiceLister) GetPodServices(pod *v1.Pod) (services []*v1.Servi
|
|||||||
|
|
||||||
// StoreToReplicationControllerLister helps list rcs
|
// StoreToReplicationControllerLister helps list rcs
|
||||||
type StoreToReplicationControllerLister struct {
|
type StoreToReplicationControllerLister struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToReplicationControllerLister) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) {
|
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))
|
ret = append(ret, m.(*v1.ReplicationController))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -155,12 +156,12 @@ func (s *StoreToReplicationControllerLister) ReplicationControllers(namespace st
|
|||||||
}
|
}
|
||||||
|
|
||||||
type storeReplicationControllersNamespacer struct {
|
type storeReplicationControllersNamespacer struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storeReplicationControllersNamespacer) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) {
|
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))
|
ret = append(ret, m.(*v1.ReplicationController))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -185,7 +186,7 @@ func (s *StoreToReplicationControllerLister) GetPodControllers(pod *v1.Pod) (con
|
|||||||
}
|
}
|
||||||
|
|
||||||
key := &v1.ReplicationController{ObjectMeta: metav1.ObjectMeta{Namespace: pod.Namespace}}
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -208,11 +209,11 @@ func (s *StoreToReplicationControllerLister) GetPodControllers(pod *v1.Pod) (con
|
|||||||
|
|
||||||
// StoreToServiceAccountLister helps list service accounts
|
// StoreToServiceAccountLister helps list service accounts
|
||||||
type StoreToServiceAccountLister struct {
|
type StoreToServiceAccountLister struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToServiceAccountLister) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) {
|
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))
|
ret = append(ret, m.(*v1.ServiceAccount))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -223,12 +224,12 @@ func (s *StoreToServiceAccountLister) ServiceAccounts(namespace string) storeSer
|
|||||||
}
|
}
|
||||||
|
|
||||||
type storeServiceAccountsNamespacer struct {
|
type storeServiceAccountsNamespacer struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storeServiceAccountsNamespacer) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) {
|
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))
|
ret = append(ret, m.(*v1.ServiceAccount))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -247,11 +248,11 @@ func (s storeServiceAccountsNamespacer) Get(name string) (*v1.ServiceAccount, er
|
|||||||
|
|
||||||
// StoreToLimitRangeLister helps list limit ranges
|
// StoreToLimitRangeLister helps list limit ranges
|
||||||
type StoreToLimitRangeLister struct {
|
type StoreToLimitRangeLister struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToLimitRangeLister) List(selector labels.Selector) (ret []*v1.LimitRange, err error) {
|
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))
|
ret = append(ret, m.(*v1.LimitRange))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -259,12 +260,12 @@ func (s *StoreToLimitRangeLister) List(selector labels.Selector) (ret []*v1.Limi
|
|||||||
|
|
||||||
// StoreToPersistentVolumeClaimLister helps list pvcs
|
// StoreToPersistentVolumeClaimLister helps list pvcs
|
||||||
type StoreToPersistentVolumeClaimLister struct {
|
type StoreToPersistentVolumeClaimLister struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
// List returns all persistentvolumeclaims that match the specified selector
|
// List returns all persistentvolumeclaims that match the specified selector
|
||||||
func (s *StoreToPersistentVolumeClaimLister) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) {
|
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))
|
ret = append(ret, m.(*v1.PersistentVolumeClaim))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -275,12 +276,12 @@ func (s *StoreToLimitRangeLister) LimitRanges(namespace string) storeLimitRanges
|
|||||||
}
|
}
|
||||||
|
|
||||||
type storeLimitRangesNamespacer struct {
|
type storeLimitRangesNamespacer struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storeLimitRangesNamespacer) List(selector labels.Selector) (ret []*v1.LimitRange, err error) {
|
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))
|
ret = append(ret, m.(*v1.LimitRange))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -303,12 +304,12 @@ func (s *StoreToPersistentVolumeClaimLister) PersistentVolumeClaims(namespace st
|
|||||||
}
|
}
|
||||||
|
|
||||||
type storePersistentVolumeClaimsNamespacer struct {
|
type storePersistentVolumeClaimsNamespacer struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storePersistentVolumeClaimsNamespacer) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) {
|
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))
|
ret = append(ret, m.(*v1.PersistentVolumeClaim))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -327,12 +328,12 @@ func (s storePersistentVolumeClaimsNamespacer) Get(name string) (*v1.PersistentV
|
|||||||
|
|
||||||
// IndexerToNamespaceLister gives an Indexer List method
|
// IndexerToNamespaceLister gives an Indexer List method
|
||||||
type IndexerToNamespaceLister struct {
|
type IndexerToNamespaceLister struct {
|
||||||
Indexer
|
cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
// List returns a list of namespaces
|
// List returns a list of namespaces
|
||||||
func (i *IndexerToNamespaceLister) List(selector labels.Selector) (ret []*v1.Namespace, err error) {
|
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))
|
ret = append(ret, m.(*v1.Namespace))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package cache
|
package listers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -25,6 +25,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
extensionsinternal "k8s.io/kubernetes/pkg/apis/extensions"
|
extensionsinternal "k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
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
|
// TODO: generate these classes and methods for all resources of interest using
|
||||||
@ -40,11 +41,11 @@ import (
|
|||||||
|
|
||||||
// StoreToDeploymentLister helps list deployments
|
// StoreToDeploymentLister helps list deployments
|
||||||
type StoreToDeploymentLister struct {
|
type StoreToDeploymentLister struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToDeploymentLister) List(selector labels.Selector) (ret []*extensions.Deployment, err error) {
|
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))
|
ret = append(ret, m.(*extensions.Deployment))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -55,12 +56,12 @@ func (s *StoreToDeploymentLister) Deployments(namespace string) storeDeployments
|
|||||||
}
|
}
|
||||||
|
|
||||||
type storeDeploymentsNamespacer struct {
|
type storeDeploymentsNamespacer struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storeDeploymentsNamespacer) List(selector labels.Selector) (ret []*extensions.Deployment, err error) {
|
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))
|
ret = append(ret, m.(*extensions.Deployment))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -141,11 +142,11 @@ func (s *StoreToDeploymentLister) GetDeploymentsForPod(pod *v1.Pod) (deployments
|
|||||||
|
|
||||||
// StoreToReplicaSetLister helps list replicasets
|
// StoreToReplicaSetLister helps list replicasets
|
||||||
type StoreToReplicaSetLister struct {
|
type StoreToReplicaSetLister struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToReplicaSetLister) List(selector labels.Selector) (ret []*extensions.ReplicaSet, err error) {
|
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))
|
ret = append(ret, m.(*extensions.ReplicaSet))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -156,12 +157,12 @@ func (s *StoreToReplicaSetLister) ReplicaSets(namespace string) storeReplicaSets
|
|||||||
}
|
}
|
||||||
|
|
||||||
type storeReplicaSetsNamespacer struct {
|
type storeReplicaSetsNamespacer struct {
|
||||||
Indexer Indexer
|
Indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storeReplicaSetsNamespacer) List(selector labels.Selector) (ret []*extensions.ReplicaSet, err error) {
|
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))
|
ret = append(ret, m.(*extensions.ReplicaSet))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
@ -14,12 +14,13 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package cache
|
package listers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
rbac "k8s.io/kubernetes/pkg/apis/rbac"
|
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
|
// TODO: generate these classes and methods for all resources of interest using
|
||||||
@ -33,16 +34,16 @@ import (
|
|||||||
// l := clusterRoleLister{s}
|
// l := clusterRoleLister{s}
|
||||||
// l.List()
|
// l.List()
|
||||||
|
|
||||||
func NewClusterRoleLister(indexer Indexer) ClusterRoleLister {
|
func NewClusterRoleLister(indexer cache.Indexer) ClusterRoleLister {
|
||||||
return &clusterRoleLister{indexer: indexer}
|
return &clusterRoleLister{indexer: indexer}
|
||||||
}
|
}
|
||||||
func NewClusterRoleBindingLister(indexer Indexer) ClusterRoleBindingLister {
|
func NewClusterRoleBindingLister(indexer cache.Indexer) ClusterRoleBindingLister {
|
||||||
return &clusterRoleBindingLister{indexer: indexer}
|
return &clusterRoleBindingLister{indexer: indexer}
|
||||||
}
|
}
|
||||||
func NewRoleLister(indexer Indexer) RoleLister {
|
func NewRoleLister(indexer cache.Indexer) RoleLister {
|
||||||
return &roleLister{indexer: indexer}
|
return &roleLister{indexer: indexer}
|
||||||
}
|
}
|
||||||
func NewRoleBindingLister(indexer Indexer) RoleBindingLister {
|
func NewRoleBindingLister(indexer cache.Indexer) RoleBindingLister {
|
||||||
return &roleBindingLister{indexer: indexer}
|
return &roleBindingLister{indexer: indexer}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,11 +71,11 @@ type ClusterRoleLister interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type clusterRoleLister struct {
|
type clusterRoleLister struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *clusterRoleLister) List(selector labels.Selector) (ret []*rbac.ClusterRole, err error) {
|
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))
|
ret = append(ret, m.(*rbac.ClusterRole))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -102,11 +103,11 @@ type ClusterRoleBindingLister interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type clusterRoleBindingLister struct {
|
type clusterRoleBindingLister struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *clusterRoleBindingLister) List(selector labels.Selector) (ret []*rbac.ClusterRoleBinding, err error) {
|
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))
|
ret = append(ret, m.(*rbac.ClusterRoleBinding))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -139,11 +140,11 @@ type RoleNamespaceLister interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type roleLister struct {
|
type roleLister struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *roleLister) List(selector labels.Selector) (ret []*rbac.Role, err error) {
|
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))
|
ret = append(ret, m.(*rbac.Role))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -158,12 +159,12 @@ func (s roleLister) GetRole(namespace, name string) (*rbac.Role, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type roleNamespaceLister struct {
|
type roleNamespaceLister struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s roleNamespaceLister) List(selector labels.Selector) (ret []*rbac.Role, err error) {
|
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))
|
ret = append(ret, m.(*rbac.Role))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -192,11 +193,11 @@ type RoleBindingNamespaceLister interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type roleBindingLister struct {
|
type roleBindingLister struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *roleBindingLister) List(selector labels.Selector) (ret []*rbac.RoleBinding, err error) {
|
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))
|
ret = append(ret, m.(*rbac.RoleBinding))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -211,12 +212,12 @@ func (s roleBindingLister) ListRoleBindings(namespace string) ([]*rbac.RoleBindi
|
|||||||
}
|
}
|
||||||
|
|
||||||
type roleBindingNamespaceLister struct {
|
type roleBindingNamespaceLister struct {
|
||||||
indexer Indexer
|
indexer cache.Indexer
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s roleBindingNamespaceLister) List(selector labels.Selector) (ret []*rbac.RoleBinding, err error) {
|
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))
|
ret = append(ret, m.(*rbac.RoleBinding))
|
||||||
})
|
})
|
||||||
return ret, err
|
return ret, err
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package cache
|
package listers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
@ -25,10 +25,11 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestStoreToNodeLister(t *testing.T) {
|
func TestStoreToNodeLister(t *testing.T) {
|
||||||
store := NewStore(MetaNamespaceKeyFunc)
|
store := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
||||||
ids := sets.NewString("foo", "bar", "baz")
|
ids := sets.NewString("foo", "bar", "baz")
|
||||||
for id := range ids {
|
for id := range ids {
|
||||||
store.Add(&v1.Node{ObjectMeta: metav1.ObjectMeta{Name: id}})
|
store.Add(&v1.Node{ObjectMeta: metav1.ObjectMeta{Name: id}})
|
||||||
@ -49,7 +50,7 @@ func TestStoreToNodeLister(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStoreToNodeConditionLister(t *testing.T) {
|
func TestStoreToNodeConditionLister(t *testing.T) {
|
||||||
store := NewStore(MetaNamespaceKeyFunc)
|
store := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
||||||
nodes := []*v1.Node{
|
nodes := []*v1.Node{
|
||||||
{
|
{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
|
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
|
||||||
@ -246,11 +247,11 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
if c.onlyIfIndexedByNamespace && !withIndex {
|
if c.onlyIfIndexedByNamespace && !withIndex {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
var store Indexer
|
var store cache.Indexer
|
||||||
if withIndex {
|
if withIndex {
|
||||||
store = NewIndexer(MetaNamespaceKeyFunc, Indexers{NamespaceIndex: MetaNamespaceIndexFunc})
|
store = cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
|
||||||
} else {
|
} else {
|
||||||
store = NewIndexer(MetaNamespaceKeyFunc, Indexers{})
|
store = cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, r := range c.inRCs {
|
for _, r := range c.inRCs {
|
||||||
@ -279,7 +280,7 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStoreToReplicaSetLister(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}
|
lister := StoreToReplicaSetLister{store}
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
inRSs []*extensions.ReplicaSet
|
inRSs []*extensions.ReplicaSet
|
||||||
@ -391,7 +392,7 @@ func TestStoreToReplicaSetLister(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStoreToDaemonSetLister(t *testing.T) {
|
func TestStoreToDaemonSetLister(t *testing.T) {
|
||||||
store := NewStore(MetaNamespaceKeyFunc)
|
store := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
||||||
lister := StoreToDaemonSetLister{store}
|
lister := StoreToDaemonSetLister{store}
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
inDSs []*extensions.DaemonSet
|
inDSs []*extensions.DaemonSet
|
||||||
@ -520,9 +521,9 @@ func TestStoreToPodLister(t *testing.T) {
|
|||||||
// We test with and without a namespace index, because StoreToPodLister has
|
// We test with and without a namespace index, because StoreToPodLister has
|
||||||
// special logic to work on namespaces even when no namespace index is
|
// special logic to work on namespaces even when no namespace index is
|
||||||
// present.
|
// present.
|
||||||
stores := []Indexer{
|
stores := []cache.Indexer{
|
||||||
NewIndexer(MetaNamespaceKeyFunc, Indexers{NamespaceIndex: MetaNamespaceIndexFunc}),
|
cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}),
|
||||||
NewIndexer(MetaNamespaceKeyFunc, Indexers{}),
|
cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{}),
|
||||||
}
|
}
|
||||||
for _, store := range stores {
|
for _, store := range stores {
|
||||||
ids := []string{"foo", "bar", "baz"}
|
ids := []string{"foo", "bar", "baz"}
|
||||||
@ -582,7 +583,7 @@ func TestStoreToPodLister(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStoreToServiceLister(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{
|
store.Add(&v1.Service{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
|
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
|
||||||
Spec: v1.ServiceSpec{
|
Spec: v1.ServiceSpec{
|
@ -25,6 +25,7 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/clientset:go_default_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/certificates/v1beta1:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/typed/core/v1: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/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/workqueue:go_default_library",
|
"//pkg/util/workqueue:go_default_library",
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
@ -49,7 +50,7 @@ type CertificateController struct {
|
|||||||
|
|
||||||
// CSR framework and store
|
// CSR framework and store
|
||||||
csrController cache.Controller
|
csrController cache.Controller
|
||||||
csrStore cache.StoreToCertificateRequestLister
|
csrStore listers.StoreToCertificateRequestLister
|
||||||
|
|
||||||
syncHandler func(csrKey string) error
|
syncHandler func(csrKey string) error
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/clientset: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/core/v1:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/typed/extensions/v1beta1: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/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
|
@ -35,6 +35,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
||||||
unversionedextensions "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/extensions/v1beta1"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
@ -74,11 +75,11 @@ type DaemonSetsController struct {
|
|||||||
// A TTLCache of pod creates/deletes each ds expects to see
|
// A TTLCache of pod creates/deletes each ds expects to see
|
||||||
expectations controller.ControllerExpectationsInterface
|
expectations controller.ControllerExpectationsInterface
|
||||||
// A store of daemon sets
|
// A store of daemon sets
|
||||||
dsStore *cache.StoreToDaemonSetLister
|
dsStore *listers.StoreToDaemonSetLister
|
||||||
// A store of pods
|
// A store of pods
|
||||||
podStore *cache.StoreToPodLister
|
podStore *listers.StoreToPodLister
|
||||||
// A store of nodes
|
// A store of nodes
|
||||||
nodeStore *cache.StoreToNodeLister
|
nodeStore *listers.StoreToNodeLister
|
||||||
// dsStoreSynced returns true if the daemonset store has been synced at least once.
|
// 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.
|
// Added as a member to the struct to allow injection for testing.
|
||||||
dsStoreSynced cache.InformerSynced
|
dsStoreSynced cache.InformerSynced
|
||||||
|
@ -26,6 +26,7 @@ go_library(
|
|||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset: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/core/v1:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/deployment/util:go_default_library",
|
"//pkg/controller/deployment/util:go_default_library",
|
||||||
|
@ -40,6 +40,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/deployment/util"
|
"k8s.io/kubernetes/pkg/controller/deployment/util"
|
||||||
@ -77,11 +78,11 @@ type DeploymentController struct {
|
|||||||
enqueueDeployment func(deployment *extensions.Deployment)
|
enqueueDeployment func(deployment *extensions.Deployment)
|
||||||
|
|
||||||
// A store of deployments, populated by the dController
|
// A store of deployments, populated by the dController
|
||||||
dLister *cache.StoreToDeploymentLister
|
dLister *listers.StoreToDeploymentLister
|
||||||
// A store of ReplicaSets, populated by the rsController
|
// A store of ReplicaSets, populated by the rsController
|
||||||
rsLister *cache.StoreToReplicaSetLister
|
rsLister *listers.StoreToReplicaSetLister
|
||||||
// A store of pods, populated by the podController
|
// 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.
|
// 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.
|
// Added as a member to the struct to allow injection for testing.
|
||||||
|
@ -22,10 +22,10 @@ go_library(
|
|||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/apis/extensions:go_default_library",
|
"//pkg/apis/extensions:go_default_library",
|
||||||
"//pkg/apis/extensions/v1beta1: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:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/typed/core/v1: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/clientset_generated/clientset/typed/extensions/v1beta1:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/retry:go_default_library",
|
"//pkg/client/retry:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/hash:go_default_library",
|
"//pkg/util/hash:go_default_library",
|
||||||
|
@ -37,8 +37,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
internalextensions "k8s.io/kubernetes/pkg/apis/extensions"
|
internalextensions "k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
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/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
intstrutil "k8s.io/kubernetes/pkg/util/intstr"
|
intstrutil "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
labelsutil "k8s.io/kubernetes/pkg/util/labels"
|
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.
|
// 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.
|
// 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 {
|
for _, pod := range podList.Items {
|
||||||
// Only label the pod that doesn't already have the new hash
|
// Only label the pod that doesn't already have the new hash
|
||||||
if pod.Labels[extensions.DefaultDeploymentUniqueLabelKey] != hash {
|
if pod.Labels[extensions.DefaultDeploymentUniqueLabelKey] != hash {
|
||||||
|
@ -25,8 +25,8 @@ import (
|
|||||||
errorsutil "k8s.io/apimachinery/pkg/util/errors"
|
errorsutil "k8s.io/apimachinery/pkg/util/errors"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/client/retry"
|
"k8s.io/kubernetes/pkg/client/retry"
|
||||||
hashutil "k8s.io/kubernetes/pkg/util/hash"
|
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.
|
// 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.
|
// 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
|
var pod *v1.Pod
|
||||||
|
|
||||||
retryErr := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
|
retryErr := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
|
||||||
|
@ -25,8 +25,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
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"
|
unversionedextensions "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/extensions/v1beta1"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/client/retry"
|
"k8s.io/kubernetes/pkg/client/retry"
|
||||||
labelsutil "k8s.io/kubernetes/pkg/util/labels"
|
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.
|
// 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.
|
// 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
|
var rs *extensions.ReplicaSet
|
||||||
|
|
||||||
retryErr := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
|
retryErr := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
|
||||||
|
@ -22,6 +22,7 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/clientset: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/core/v1:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/typed/policy/v1beta1: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/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/intstr:go_default_library",
|
"//pkg/util/intstr:go_default_library",
|
||||||
@ -48,6 +49,7 @@ go_test(
|
|||||||
"//pkg/apis/extensions/v1beta1:go_default_library",
|
"//pkg/apis/extensions/v1beta1:go_default_library",
|
||||||
"//pkg/apis/policy/v1beta1:go_default_library",
|
"//pkg/apis/policy/v1beta1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/intstr:go_default_library",
|
"//pkg/util/intstr:go_default_library",
|
||||||
|
@ -36,6 +36,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
||||||
policyclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/policy/v1beta1"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
@ -64,26 +65,26 @@ type DisruptionController struct {
|
|||||||
|
|
||||||
pdbStore cache.Store
|
pdbStore cache.Store
|
||||||
pdbController cache.Controller
|
pdbController cache.Controller
|
||||||
pdbLister cache.StoreToPodDisruptionBudgetLister
|
pdbLister listers.StoreToPodDisruptionBudgetLister
|
||||||
|
|
||||||
podController cache.Controller
|
podController cache.Controller
|
||||||
podLister cache.StoreToPodLister
|
podLister listers.StoreToPodLister
|
||||||
|
|
||||||
rcIndexer cache.Indexer
|
rcIndexer cache.Indexer
|
||||||
rcController cache.Controller
|
rcController cache.Controller
|
||||||
rcLister cache.StoreToReplicationControllerLister
|
rcLister listers.StoreToReplicationControllerLister
|
||||||
|
|
||||||
rsStore cache.Store
|
rsStore cache.Store
|
||||||
rsController cache.Controller
|
rsController cache.Controller
|
||||||
rsLister cache.StoreToReplicaSetLister
|
rsLister listers.StoreToReplicaSetLister
|
||||||
|
|
||||||
dIndexer cache.Indexer
|
dIndexer cache.Indexer
|
||||||
dController cache.Controller
|
dController cache.Controller
|
||||||
dLister cache.StoreToDeploymentLister
|
dLister listers.StoreToDeploymentLister
|
||||||
|
|
||||||
ssStore cache.Store
|
ssStore cache.Store
|
||||||
ssController cache.Controller
|
ssController cache.Controller
|
||||||
ssLister cache.StoreToStatefulSetLister
|
ssLister listers.StoreToStatefulSetLister
|
||||||
|
|
||||||
// PodDisruptionBudget keys that need to be synced.
|
// PodDisruptionBudget keys that need to be synced.
|
||||||
queue workqueue.RateLimitingInterface
|
queue workqueue.RateLimitingInterface
|
||||||
|
@ -30,6 +30,7 @@ import (
|
|||||||
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
policy "k8s.io/kubernetes/pkg/apis/policy/v1beta1"
|
policy "k8s.io/kubernetes/pkg/apis/policy/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
@ -87,12 +88,12 @@ func newFakeDisruptionController() (*DisruptionController, *pdbStates) {
|
|||||||
ps := &pdbStates{}
|
ps := &pdbStates{}
|
||||||
|
|
||||||
dc := &DisruptionController{
|
dc := &DisruptionController{
|
||||||
pdbLister: cache.StoreToPodDisruptionBudgetLister{Store: cache.NewStore(controller.KeyFunc)},
|
pdbLister: listers.StoreToPodDisruptionBudgetLister{Store: cache.NewStore(controller.KeyFunc)},
|
||||||
podLister: cache.StoreToPodLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})},
|
podLister: listers.StoreToPodLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})},
|
||||||
rcLister: cache.StoreToReplicationControllerLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})},
|
rcLister: listers.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})},
|
rsLister: listers.StoreToReplicaSetLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})},
|
||||||
dLister: cache.StoreToDeploymentLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})},
|
dLister: listers.StoreToDeploymentLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})},
|
||||||
ssLister: cache.StoreToStatefulSetLister{Store: cache.NewStore(controller.KeyFunc)},
|
ssLister: listers.StoreToStatefulSetLister{Store: cache.NewStore(controller.KeyFunc)},
|
||||||
getUpdater: func() updater { return ps.Set },
|
getUpdater: func() updater { return ps.Set },
|
||||||
broadcaster: record.NewBroadcaster(),
|
broadcaster: record.NewBroadcaster(),
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ go_library(
|
|||||||
"//pkg/api/v1/pod:go_default_library",
|
"//pkg/api/v1/pod:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
"//pkg/util/metrics:go_default_library",
|
"//pkg/util/metrics:go_default_library",
|
||||||
|
@ -36,6 +36,7 @@ import (
|
|||||||
utilpod "k8s.io/kubernetes/pkg/api/v1/pod"
|
utilpod "k8s.io/kubernetes/pkg/api/v1/pod"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
"k8s.io/kubernetes/pkg/util/metrics"
|
"k8s.io/kubernetes/pkg/util/metrics"
|
||||||
@ -128,8 +129,8 @@ func NewEndpointControllerFromClient(client *clientset.Clientset, resyncPeriod c
|
|||||||
type EndpointController struct {
|
type EndpointController struct {
|
||||||
client clientset.Interface
|
client clientset.Interface
|
||||||
|
|
||||||
serviceStore cache.StoreToServiceLister
|
serviceStore listers.StoreToServiceLister
|
||||||
podStore cache.StoreToPodLister
|
podStore listers.StoreToPodLister
|
||||||
|
|
||||||
// internalPodInformer is used to hold a personal informer. If we're using
|
// 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
|
// a normal shared informer, then the informer will be started for us. If
|
||||||
|
@ -31,6 +31,7 @@ go_library(
|
|||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset: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/batch/v1:go_default_library",
|
||||||
"//pkg/client/listers/core/internalversion:go_default_library",
|
"//pkg/client/listers/core/internalversion:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
@ -27,6 +27,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
coreinternallisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
|
coreinternallisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ import (
|
|||||||
// Interface provides constructor for informer and lister for pods
|
// Interface provides constructor for informer and lister for pods
|
||||||
type PodInformer interface {
|
type PodInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToPodLister
|
Lister() *listers.StoreToPodLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type podInformer struct {
|
type podInformer struct {
|
||||||
@ -59,9 +60,9 @@ func (f *podInformer) Informer() cache.SharedIndexInformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lister returns lister for podInformer
|
// Lister returns lister for podInformer
|
||||||
func (f *podInformer) Lister() *cache.StoreToPodLister {
|
func (f *podInformer) Lister() *listers.StoreToPodLister {
|
||||||
informer := f.Informer()
|
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
|
// Interface provides constructor for informer and lister for namsespaces
|
||||||
type NamespaceInformer interface {
|
type NamespaceInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.IndexerToNamespaceLister
|
Lister() *listers.IndexerToNamespaceLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type namespaceInformer struct {
|
type namespaceInformer struct {
|
||||||
@ -95,9 +96,9 @@ func (f *namespaceInformer) Informer() cache.SharedIndexInformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lister returns lister for namespaceInformer
|
// Lister returns lister for namespaceInformer
|
||||||
func (f *namespaceInformer) Lister() *cache.IndexerToNamespaceLister {
|
func (f *namespaceInformer) Lister() *listers.IndexerToNamespaceLister {
|
||||||
informer := f.Informer()
|
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
|
// Interface provides constructor for informer and lister for nodes
|
||||||
type NodeInformer interface {
|
type NodeInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToNodeLister
|
Lister() *listers.StoreToNodeLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type nodeInformer struct {
|
type nodeInformer struct {
|
||||||
@ -167,9 +168,9 @@ func (f *nodeInformer) Informer() cache.SharedIndexInformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lister returns lister for nodeInformer
|
// Lister returns lister for nodeInformer
|
||||||
func (f *nodeInformer) Lister() *cache.StoreToNodeLister {
|
func (f *nodeInformer) Lister() *listers.StoreToNodeLister {
|
||||||
informer := f.Informer()
|
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
|
// Interface provides constructor for informer and lister for persistent volume claims
|
||||||
type PVCInformer interface {
|
type PVCInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToPersistentVolumeClaimLister
|
Lister() *listers.StoreToPersistentVolumeClaimLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type pvcInformer struct {
|
type pvcInformer struct {
|
||||||
@ -203,9 +204,9 @@ func (f *pvcInformer) Informer() cache.SharedIndexInformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lister returns lister for pvcInformer
|
// Lister returns lister for pvcInformer
|
||||||
func (f *pvcInformer) Lister() *cache.StoreToPersistentVolumeClaimLister {
|
func (f *pvcInformer) Lister() *listers.StoreToPersistentVolumeClaimLister {
|
||||||
informer := f.Informer()
|
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
|
// Interface provides constructor for informer and lister for persistent volumes
|
||||||
type PVInformer interface {
|
type PVInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToPVFetcher
|
Lister() *listers.StoreToPVFetcher
|
||||||
}
|
}
|
||||||
|
|
||||||
type pvInformer struct {
|
type pvInformer struct {
|
||||||
@ -239,9 +240,9 @@ func (f *pvInformer) Informer() cache.SharedIndexInformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lister returns lister for pvInformer
|
// Lister returns lister for pvInformer
|
||||||
func (f *pvInformer) Lister() *cache.StoreToPVFetcher {
|
func (f *pvInformer) Lister() *listers.StoreToPVFetcher {
|
||||||
informer := f.Informer()
|
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.
|
// Interface provides constructor for informer and lister for limit ranges.
|
||||||
type LimitRangeInformer interface {
|
type LimitRangeInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToLimitRangeLister
|
Lister() *listers.StoreToLimitRangeLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type limitRangeInformer struct {
|
type limitRangeInformer struct {
|
||||||
@ -275,9 +276,9 @@ func (f *limitRangeInformer) Informer() cache.SharedIndexInformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lister returns lister for limitRangeInformer
|
// Lister returns lister for limitRangeInformer
|
||||||
func (f *limitRangeInformer) Lister() *cache.StoreToLimitRangeLister {
|
func (f *limitRangeInformer) Lister() *listers.StoreToLimitRangeLister {
|
||||||
informer := f.Informer()
|
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.
|
// Interface provides constructor for informer and lister for replication controllers.
|
||||||
type ReplicationControllerInformer interface {
|
type ReplicationControllerInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToReplicationControllerLister
|
Lister() *listers.StoreToReplicationControllerLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type replicationControllerInformer struct {
|
type replicationControllerInformer struct {
|
||||||
@ -347,9 +348,9 @@ func (f *replicationControllerInformer) Informer() cache.SharedIndexInformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lister returns lister for replicationControllerInformer
|
// Lister returns lister for replicationControllerInformer
|
||||||
func (f *replicationControllerInformer) Lister() *cache.StoreToReplicationControllerLister {
|
func (f *replicationControllerInformer) Lister() *listers.StoreToReplicationControllerLister {
|
||||||
informer := f.Informer()
|
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
|
// Interface provides constructor for informer and lister for ServiceAccounts
|
||||||
type ServiceAccountInformer interface {
|
type ServiceAccountInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToServiceAccountLister
|
Lister() *listers.StoreToServiceAccountLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type serviceAccountInformer struct {
|
type serviceAccountInformer struct {
|
||||||
@ -558,9 +559,9 @@ func (f *serviceAccountInformer) Informer() cache.SharedIndexInformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lister returns lister for ServiceAccountInformer
|
// Lister returns lister for ServiceAccountInformer
|
||||||
func (f *serviceAccountInformer) Lister() *cache.StoreToServiceAccountLister {
|
func (f *serviceAccountInformer) Lister() *listers.StoreToServiceAccountLister {
|
||||||
informer := f.Informer()
|
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
|
// NewServiceAccountInformer returns a SharedIndexInformer that lists and watches all ServiceAccounts
|
||||||
|
@ -24,13 +24,14 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DaemonSetInformer is type of SharedIndexInformer which watches and lists all pods.
|
// DaemonSetInformer is type of SharedIndexInformer which watches and lists all pods.
|
||||||
// Interface provides constructor for informer and lister for pods
|
// Interface provides constructor for informer and lister for pods
|
||||||
type DaemonSetInformer interface {
|
type DaemonSetInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToDaemonSetLister
|
Lister() *listers.StoreToDaemonSetLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type daemonSetInformer struct {
|
type daemonSetInformer struct {
|
||||||
@ -64,15 +65,15 @@ func (f *daemonSetInformer) Informer() cache.SharedIndexInformer {
|
|||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *daemonSetInformer) Lister() *cache.StoreToDaemonSetLister {
|
func (f *daemonSetInformer) Lister() *listers.StoreToDaemonSetLister {
|
||||||
informer := f.Informer()
|
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.
|
// DeploymentInformer is a type of SharedIndexInformer which watches and lists all deployments.
|
||||||
type DeploymentInformer interface {
|
type DeploymentInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToDeploymentLister
|
Lister() *listers.StoreToDeploymentLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type deploymentInformer struct {
|
type deploymentInformer struct {
|
||||||
@ -106,15 +107,15 @@ func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
|
|||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *deploymentInformer) Lister() *cache.StoreToDeploymentLister {
|
func (f *deploymentInformer) Lister() *listers.StoreToDeploymentLister {
|
||||||
informer := f.Informer()
|
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.
|
// ReplicaSetInformer is a type of SharedIndexInformer which watches and lists all replicasets.
|
||||||
type ReplicaSetInformer interface {
|
type ReplicaSetInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() *cache.StoreToReplicaSetLister
|
Lister() *listers.StoreToReplicaSetLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type replicaSetInformer struct {
|
type replicaSetInformer struct {
|
||||||
@ -148,7 +149,7 @@ func (f *replicaSetInformer) Informer() cache.SharedIndexInformer {
|
|||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *replicaSetInformer) Lister() *cache.StoreToReplicaSetLister {
|
func (f *replicaSetInformer) Lister() *listers.StoreToReplicaSetLister {
|
||||||
informer := f.Informer()
|
informer := f.Informer()
|
||||||
return &cache.StoreToReplicaSetLister{Indexer: informer.GetIndexer()}
|
return &listers.StoreToReplicaSetLister{Indexer: informer.GetIndexer()}
|
||||||
}
|
}
|
||||||
|
@ -25,11 +25,12 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/apis/rbac"
|
"k8s.io/kubernetes/pkg/apis/rbac"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ClusterRoleInformer interface {
|
type ClusterRoleInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() cache.ClusterRoleLister
|
Lister() listers.ClusterRoleLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type clusterRoleInformer struct {
|
type clusterRoleInformer struct {
|
||||||
@ -63,13 +64,13 @@ func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer {
|
|||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *clusterRoleInformer) Lister() cache.ClusterRoleLister {
|
func (f *clusterRoleInformer) Lister() listers.ClusterRoleLister {
|
||||||
return cache.NewClusterRoleLister(f.Informer().GetIndexer())
|
return listers.NewClusterRoleLister(f.Informer().GetIndexer())
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClusterRoleBindingInformer interface {
|
type ClusterRoleBindingInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() cache.ClusterRoleBindingLister
|
Lister() listers.ClusterRoleBindingLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type clusterRoleBindingInformer struct {
|
type clusterRoleBindingInformer struct {
|
||||||
@ -103,13 +104,13 @@ func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer {
|
|||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *clusterRoleBindingInformer) Lister() cache.ClusterRoleBindingLister {
|
func (f *clusterRoleBindingInformer) Lister() listers.ClusterRoleBindingLister {
|
||||||
return cache.NewClusterRoleBindingLister(f.Informer().GetIndexer())
|
return listers.NewClusterRoleBindingLister(f.Informer().GetIndexer())
|
||||||
}
|
}
|
||||||
|
|
||||||
type RoleInformer interface {
|
type RoleInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() cache.RoleLister
|
Lister() listers.RoleLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type roleInformer struct {
|
type roleInformer struct {
|
||||||
@ -143,13 +144,13 @@ func (f *roleInformer) Informer() cache.SharedIndexInformer {
|
|||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *roleInformer) Lister() cache.RoleLister {
|
func (f *roleInformer) Lister() listers.RoleLister {
|
||||||
return cache.NewRoleLister(f.Informer().GetIndexer())
|
return listers.NewRoleLister(f.Informer().GetIndexer())
|
||||||
}
|
}
|
||||||
|
|
||||||
type RoleBindingInformer interface {
|
type RoleBindingInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() cache.RoleBindingLister
|
Lister() listers.RoleBindingLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type roleBindingInformer struct {
|
type roleBindingInformer struct {
|
||||||
@ -183,8 +184,8 @@ func (f *roleBindingInformer) Informer() cache.SharedIndexInformer {
|
|||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *roleBindingInformer) Lister() cache.RoleBindingLister {
|
func (f *roleBindingInformer) Lister() listers.RoleBindingLister {
|
||||||
return cache.NewRoleBindingLister(f.Informer().GetIndexer())
|
return listers.NewRoleBindingLister(f.Informer().GetIndexer())
|
||||||
}
|
}
|
||||||
|
|
||||||
func convertListOptionsOrDie(in v1.ListOptions) api.ListOptions {
|
func convertListOptionsOrDie(in v1.ListOptions) api.ListOptions {
|
||||||
|
@ -24,13 +24,14 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1"
|
storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StorageClassInformer is type of SharedIndexInformer which watches and lists all storage classes.
|
// StorageClassInformer is type of SharedIndexInformer which watches and lists all storage classes.
|
||||||
// Interface provides constructor for informer and lister for storage classes
|
// Interface provides constructor for informer and lister for storage classes
|
||||||
type StorageClassInformer interface {
|
type StorageClassInformer interface {
|
||||||
Informer() cache.SharedIndexInformer
|
Informer() cache.SharedIndexInformer
|
||||||
Lister() cache.StorageClassLister
|
Lister() listers.StorageClassLister
|
||||||
}
|
}
|
||||||
|
|
||||||
type storageClassInformer struct {
|
type storageClassInformer struct {
|
||||||
@ -64,7 +65,7 @@ func (f *storageClassInformer) Informer() cache.SharedIndexInformer {
|
|||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *storageClassInformer) Lister() cache.StorageClassLister {
|
func (f *storageClassInformer) Lister() listers.StorageClassLister {
|
||||||
informer := f.Informer()
|
informer := f.Informer()
|
||||||
return cache.NewStorageClassLister(informer.GetIndexer())
|
return listers.NewStorageClassLister(informer.GetIndexer())
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ go_library(
|
|||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset: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/core/v1:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/listers/batch/v1:go_default_library",
|
"//pkg/client/listers/batch/v1:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
|
@ -32,6 +32,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
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"
|
batchv1listers "k8s.io/kubernetes/pkg/client/listers/batch/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
@ -63,7 +64,7 @@ type JobController struct {
|
|||||||
jobLister batchv1listers.JobLister
|
jobLister batchv1listers.JobLister
|
||||||
|
|
||||||
// A store of pods, populated by the podController
|
// A store of pods, populated by the podController
|
||||||
podStore cache.StoreToPodLister
|
podStore listers.StoreToPodLister
|
||||||
|
|
||||||
// Jobs that need to be updated
|
// Jobs that need to be updated
|
||||||
queue workqueue.RateLimitingInterface
|
queue workqueue.RateLimitingInterface
|
||||||
|
@ -26,6 +26,7 @@ go_library(
|
|||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset: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/core/v1:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/cloudprovider:go_default_library",
|
"//pkg/cloudprovider:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
"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
|
// deletePods will delete all pods from master running on given node, and return true
|
||||||
// if any pods were deleted, or were found pending deletion.
|
// 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
|
remaining := false
|
||||||
selector := fields.OneTermEqualSelector(api.PodHostField, nodeName).String()
|
selector := fields.OneTermEqualSelector(api.PodHostField, nodeName).String()
|
||||||
options := v1.ListOptions{FieldSelector: selector}
|
options := v1.ListOptions{FieldSelector: selector}
|
||||||
|
@ -36,6 +36,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
@ -135,9 +136,9 @@ type NodeController struct {
|
|||||||
nodeInformer informers.NodeInformer
|
nodeInformer informers.NodeInformer
|
||||||
daemonSetInformer informers.DaemonSetInformer
|
daemonSetInformer informers.DaemonSetInformer
|
||||||
|
|
||||||
podStore cache.StoreToPodLister
|
podStore listers.StoreToPodLister
|
||||||
nodeStore cache.StoreToNodeLister
|
nodeStore listers.StoreToNodeLister
|
||||||
daemonSetStore cache.StoreToDaemonSetLister
|
daemonSetStore listers.StoreToDaemonSetLister
|
||||||
// allocate/recycle CIDRs for node if allocateNodeCIDRs == true
|
// allocate/recycle CIDRs for node if allocateNodeCIDRs == true
|
||||||
cidrAllocator CIDRAllocator
|
cidrAllocator CIDRAllocator
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ go_library(
|
|||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
"//pkg/util/metrics:go_default_library",
|
"//pkg/util/metrics:go_default_library",
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
"k8s.io/kubernetes/pkg/util/metrics"
|
"k8s.io/kubernetes/pkg/util/metrics"
|
||||||
@ -49,7 +50,7 @@ type PodGCController struct {
|
|||||||
// will be null
|
// will be null
|
||||||
internalPodInformer cache.SharedIndexInformer
|
internalPodInformer cache.SharedIndexInformer
|
||||||
|
|
||||||
podStore cache.StoreToPodLister
|
podStore listers.StoreToPodLister
|
||||||
podController cache.Controller
|
podController cache.Controller
|
||||||
|
|
||||||
deletePod func(namespace, name string) error
|
deletePod func(namespace, name string) error
|
||||||
|
@ -24,6 +24,7 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/clientset: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/core/v1:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/typed/extensions/v1beta1: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/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
@ -53,6 +54,7 @@ go_test(
|
|||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/fake: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/client/testing/core:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
|
@ -39,6 +39,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
@ -75,9 +76,9 @@ type ReplicaSetController struct {
|
|||||||
expectations *controller.UIDTrackingControllerExpectations
|
expectations *controller.UIDTrackingControllerExpectations
|
||||||
|
|
||||||
// A store of ReplicaSets, populated by the rsController
|
// A store of ReplicaSets, populated by the rsController
|
||||||
rsLister *cache.StoreToReplicaSetLister
|
rsLister *listers.StoreToReplicaSetLister
|
||||||
// A store of pods, populated by the podController
|
// 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.
|
// 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.
|
// Added as a member to the struct to allow injection for testing.
|
||||||
podListerSynced cache.InformerSynced
|
podListerSynced cache.InformerSynced
|
||||||
|
@ -43,6 +43,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
|
||||||
fakeclientset "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/client/testing/core"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
@ -53,8 +54,8 @@ import (
|
|||||||
func testNewReplicaSetControllerFromClient(client clientset.Interface, stopCh chan struct{}, burstReplicas int, lookupCacheSize int) *ReplicaSetController {
|
func testNewReplicaSetControllerFromClient(client clientset.Interface, stopCh chan struct{}, burstReplicas int, lookupCacheSize int) *ReplicaSetController {
|
||||||
informers := informers.NewSharedInformerFactory(client, nil, controller.NoResyncPeriodFunc())
|
informers := informers.NewSharedInformerFactory(client, nil, controller.NoResyncPeriodFunc())
|
||||||
ret := NewReplicaSetController(informers.ReplicaSets(), informers.Pods(), client, burstReplicas, lookupCacheSize, false)
|
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.podLister = &listers.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.rsLister = &listers.StoreToReplicaSetLister{Indexer: cache.NewIndexer(cache.DeletionHandlingMetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})}
|
||||||
informers.Start(stopCh)
|
informers.Start(stopCh)
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ go_library(
|
|||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset: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/core/v1:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
|
@ -36,6 +36,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
@ -82,9 +83,9 @@ type ReplicationManager struct {
|
|||||||
expectations *controller.UIDTrackingControllerExpectations
|
expectations *controller.UIDTrackingControllerExpectations
|
||||||
|
|
||||||
// A store of replication controllers, populated by the rcController
|
// A store of replication controllers, populated by the rcController
|
||||||
rcLister cache.StoreToReplicationControllerLister
|
rcLister listers.StoreToReplicationControllerLister
|
||||||
// A store of pods, populated by the podController
|
// A store of pods, populated by the podController
|
||||||
podLister cache.StoreToPodLister
|
podLister listers.StoreToPodLister
|
||||||
// Watches changes to all pods
|
// Watches changes to all pods
|
||||||
podController cache.Controller
|
podController cache.Controller
|
||||||
// podListerSynced returns true if the pod store has been synced at least once.
|
// podListerSynced returns true if the pod store has been synced at least once.
|
||||||
|
@ -19,6 +19,7 @@ go_library(
|
|||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/cloudprovider:go_default_library",
|
"//pkg/cloudprovider:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/metrics:go_default_library",
|
"//pkg/util/metrics:go_default_library",
|
||||||
|
@ -32,6 +32,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/metrics"
|
"k8s.io/kubernetes/pkg/util/metrics"
|
||||||
@ -55,7 +56,7 @@ type RouteController struct {
|
|||||||
clusterCIDR *net.IPNet
|
clusterCIDR *net.IPNet
|
||||||
// Node framework and store
|
// Node framework and store
|
||||||
nodeController cache.Controller
|
nodeController cache.Controller
|
||||||
nodeStore cache.StoreToNodeLister
|
nodeStore listers.StoreToNodeLister
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(routes cloudprovider.Routes, kubeClient clientset.Interface, clusterName string, clusterCIDR *net.IPNet) *RouteController {
|
func New(routes cloudprovider.Routes, kubeClient clientset.Interface, clusterName string, clusterCIDR *net.IPNet) *RouteController {
|
||||||
|
@ -20,6 +20,7 @@ go_library(
|
|||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset: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/core/v1:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/cloudprovider:go_default_library",
|
"//pkg/cloudprovider:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
|
@ -35,6 +35,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
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/client/record"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
@ -85,12 +86,12 @@ type ServiceController struct {
|
|||||||
zone cloudprovider.Zone
|
zone cloudprovider.Zone
|
||||||
cache *serviceCache
|
cache *serviceCache
|
||||||
// A store of services, populated by the serviceController
|
// A store of services, populated by the serviceController
|
||||||
serviceStore cache.StoreToServiceLister
|
serviceStore listers.StoreToServiceLister
|
||||||
// Watches changes to all services
|
// Watches changes to all services
|
||||||
serviceController cache.Controller
|
serviceController cache.Controller
|
||||||
eventBroadcaster record.EventBroadcaster
|
eventBroadcaster record.EventBroadcaster
|
||||||
eventRecorder record.EventRecorder
|
eventRecorder record.EventRecorder
|
||||||
nodeLister cache.StoreToNodeLister
|
nodeLister listers.StoreToNodeLister
|
||||||
// services that need to be synced
|
// services that need to be synced
|
||||||
workingQueue workqueue.DelayingInterface
|
workingQueue workqueue.DelayingInterface
|
||||||
}
|
}
|
||||||
@ -114,7 +115,7 @@ func New(cloud cloudprovider.Interface, kubeClient clientset.Interface, clusterN
|
|||||||
cache: &serviceCache{serviceMap: make(map[string]*cachedService)},
|
cache: &serviceCache{serviceMap: make(map[string]*cachedService)},
|
||||||
eventBroadcaster: broadcaster,
|
eventBroadcaster: broadcaster,
|
||||||
eventRecorder: recorder,
|
eventRecorder: recorder,
|
||||||
nodeLister: cache.StoreToNodeLister{
|
nodeLister: listers.StoreToNodeLister{
|
||||||
Store: cache.NewStore(cache.MetaNamespaceKeyFunc),
|
Store: cache.NewStore(cache.MetaNamespaceKeyFunc),
|
||||||
},
|
},
|
||||||
workingQueue: workqueue.NewDelayingQueue(),
|
workingQueue: workqueue.NewDelayingQueue(),
|
||||||
@ -600,7 +601,7 @@ func includeNodeFromNodeList(node *v1.Node) bool {
|
|||||||
return !node.Spec.Unschedulable
|
return !node.Spec.Unschedulable
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNodeConditionPredicate() cache.NodeConditionPredicate {
|
func getNodeConditionPredicate() listers.NodeConditionPredicate {
|
||||||
return func(node *v1.Node) bool {
|
return func(node *v1.Node) bool {
|
||||||
// We add the master to the node list, but its unschedulable. So we use this to filter
|
// We add the master to the node list, but its unschedulable. So we use this to filter
|
||||||
// the master.
|
// the master.
|
||||||
|
@ -22,6 +22,7 @@ go_library(
|
|||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/retry:go_default_library",
|
"//pkg/client/retry:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
"//pkg/genericapiserver/registry/generic:go_default_library",
|
"//pkg/genericapiserver/registry/generic:go_default_library",
|
||||||
@ -62,6 +63,7 @@ go_test(
|
|||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/fake: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/client/testing/core:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
|
@ -30,6 +30,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
"k8s.io/kubernetes/pkg/util/metrics"
|
"k8s.io/kubernetes/pkg/util/metrics"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
@ -105,8 +106,8 @@ type ServiceAccountsController struct {
|
|||||||
// To allow injection for testing.
|
// To allow injection for testing.
|
||||||
syncHandler func(key string) error
|
syncHandler func(key string) error
|
||||||
|
|
||||||
saLister *cache.StoreToServiceAccountLister
|
saLister *listers.StoreToServiceAccountLister
|
||||||
nsLister *cache.IndexerToNamespaceLister
|
nsLister *listers.IndexerToNamespaceLister
|
||||||
|
|
||||||
saSynced cache.InformerSynced
|
saSynced cache.InformerSynced
|
||||||
nsSynced cache.InformerSynced
|
nsSynced cache.InformerSynced
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
|
"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/client/testing/core"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
@ -165,8 +166,8 @@ func TestServiceAccountCreation(t *testing.T) {
|
|||||||
{ObjectMeta: metav1.ObjectMeta{Name: managedName}},
|
{ObjectMeta: metav1.ObjectMeta{Name: managedName}},
|
||||||
}
|
}
|
||||||
controller := NewServiceAccountsController(informers.ServiceAccounts(), informers.Namespaces(), client, options)
|
controller := NewServiceAccountsController(informers.ServiceAccounts(), informers.Namespaces(), client, options)
|
||||||
controller.saLister = &cache.StoreToServiceAccountLister{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 = &cache.IndexerToNamespaceLister{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.saSynced = alwaysReady
|
||||||
controller.nsSynced = alwaysReady
|
controller.nsSynced = alwaysReady
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/clientset:go_default_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/apps/v1beta1:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/typed/core/v1: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/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/workqueue: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/fake:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset/typed/apps/v1beta1: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/clientset_generated/clientset/typed/apps/v1beta1/fake:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/testing/core:go_default_library",
|
"//pkg/client/testing/core:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
v1core "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
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/client/record"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
@ -59,7 +60,7 @@ type StatefulSetController struct {
|
|||||||
newSyncer func(*pcb) *petSyncer
|
newSyncer func(*pcb) *petSyncer
|
||||||
|
|
||||||
// podStore is a cache of watched pods.
|
// 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 returns true if the pod store has synced at least once.
|
||||||
podStoreSynced func() bool
|
podStoreSynced func() bool
|
||||||
@ -67,7 +68,7 @@ type StatefulSetController struct {
|
|||||||
podController cache.Controller
|
podController cache.Controller
|
||||||
|
|
||||||
// A store of StatefulSets, populated by the psController.
|
// A store of StatefulSets, populated by the psController.
|
||||||
psStore cache.StoreToStatefulSetLister
|
psStore listers.StoreToStatefulSetLister
|
||||||
// Watches changes to all StatefulSets.
|
// Watches changes to all StatefulSets.
|
||||||
psController cache.Controller
|
psController cache.Controller
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
fakeinternal "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
|
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"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/apps/v1beta1/fake"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/apps/v1beta1/fake"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,8 +39,8 @@ func newFakeStatefulSetController() (*StatefulSetController, *fakePetClient) {
|
|||||||
kubeClient: nil,
|
kubeClient: nil,
|
||||||
blockingPetStore: newUnHealthyPetTracker(fpc),
|
blockingPetStore: newUnHealthyPetTracker(fpc),
|
||||||
podStoreSynced: func() bool { return true },
|
podStoreSynced: func() bool { return true },
|
||||||
psStore: cache.StoreToStatefulSetLister{Store: cache.NewStore(controller.KeyFunc)},
|
psStore: listers.StoreToStatefulSetLister{Store: cache.NewStore(controller.KeyFunc)},
|
||||||
podStore: cache.StoreToPodLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})},
|
podStore: listers.StoreToPodLister{Indexer: cache.NewIndexer(controller.KeyFunc, cache.Indexers{})},
|
||||||
newSyncer: func(blockingPet *pcb) *petSyncer {
|
newSyncer: func(blockingPet *pcb) *petSyncer {
|
||||||
return &petSyncer{fpc, blockingPet}
|
return &petSyncer{fpc, blockingPet}
|
||||||
},
|
},
|
||||||
|
@ -45,6 +45,7 @@ go_library(
|
|||||||
"//pkg/capabilities:go_default_library",
|
"//pkg/capabilities:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/cloudprovider:go_default_library",
|
"//pkg/cloudprovider:go_default_library",
|
||||||
"//pkg/fieldpath:go_default_library",
|
"//pkg/fieldpath:go_default_library",
|
||||||
|
@ -50,6 +50,7 @@ import (
|
|||||||
componentconfigv1alpha1 "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1"
|
componentconfigv1alpha1 "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
internalapi "k8s.io/kubernetes/pkg/kubelet/api"
|
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())
|
serviceLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "services", v1.NamespaceAll, fields.Everything())
|
||||||
cache.NewReflector(serviceLW, &v1.Service{}, serviceStore, 0).Run()
|
cache.NewReflector(serviceLW, &v1.Service{}, serviceStore, 0).Run()
|
||||||
}
|
}
|
||||||
serviceLister := &cache.StoreToServiceLister{Indexer: serviceStore}
|
serviceLister := &listers.StoreToServiceLister{Indexer: serviceStore}
|
||||||
|
|
||||||
nodeStore := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
nodeStore := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
||||||
if kubeClient != nil {
|
if kubeClient != nil {
|
||||||
@ -391,7 +392,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
|||||||
nodeLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "nodes", v1.NamespaceAll, fieldSelector)
|
nodeLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "nodes", v1.NamespaceAll, fieldSelector)
|
||||||
cache.NewReflector(nodeLW, &v1.Node{}, nodeStore, 0).Run()
|
cache.NewReflector(nodeLW, &v1.Node{}, nodeStore, 0).Run()
|
||||||
}
|
}
|
||||||
nodeLister := &cache.StoreToNodeLister{Store: nodeStore}
|
nodeLister := &listers.StoreToNodeLister{Store: nodeStore}
|
||||||
nodeInfo := &predicates.CachedNodeInfo{StoreToNodeLister: nodeLister}
|
nodeInfo := &predicates.CachedNodeInfo{StoreToNodeLister: nodeLister}
|
||||||
|
|
||||||
// TODO: get the real node object of ourself,
|
// TODO: get the real node object of ourself,
|
||||||
|
@ -19,7 +19,7 @@ go_library(
|
|||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1:go_default_library",
|
"//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/kubelet/qos:go_default_library",
|
||||||
"//pkg/util/workqueue:go_default_library",
|
"//pkg/util/workqueue:go_default_library",
|
||||||
"//plugin/pkg/scheduler/algorithm:go_default_library",
|
"//plugin/pkg/scheduler/algorithm:go_default_library",
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"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/kubelet/qos"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
|
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
|
||||||
@ -64,7 +64,7 @@ type PersistentVolumeClaimInfo interface {
|
|||||||
|
|
||||||
// CachedPersistentVolumeClaimInfo implements PersistentVolumeClaimInfo
|
// CachedPersistentVolumeClaimInfo implements PersistentVolumeClaimInfo
|
||||||
type CachedPersistentVolumeClaimInfo struct {
|
type CachedPersistentVolumeClaimInfo struct {
|
||||||
*cache.StoreToPersistentVolumeClaimLister
|
*listers.StoreToPersistentVolumeClaimLister
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPersistentVolumeClaimInfo fetches the claim in specified namespace with specified name
|
// GetPersistentVolumeClaimInfo fetches the claim in specified namespace with specified name
|
||||||
@ -73,7 +73,7 @@ func (c *CachedPersistentVolumeClaimInfo) GetPersistentVolumeClaimInfo(namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CachedNodeInfo struct {
|
type CachedNodeInfo struct {
|
||||||
*cache.StoreToNodeLister
|
*listers.StoreToNodeLister
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetNodeInfo returns cached data for the node 'id'.
|
// GetNodeInfo returns cached data for the node 'id'.
|
||||||
|
@ -20,6 +20,7 @@ go_library(
|
|||||||
"//pkg/apis/extensions/v1beta1:go_default_library",
|
"//pkg/apis/extensions/v1beta1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
|
"//pkg/client/legacylisters:go_default_library",
|
||||||
"//pkg/controller/informers:go_default_library",
|
"//pkg/controller/informers:go_default_library",
|
||||||
"//plugin/pkg/scheduler:go_default_library",
|
"//plugin/pkg/scheduler:go_default_library",
|
||||||
"//plugin/pkg/scheduler/algorithm:go_default_library",
|
"//plugin/pkg/scheduler/algorithm:go_default_library",
|
||||||
|
@ -34,6 +34,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
|
"k8s.io/kubernetes/pkg/client/legacylisters"
|
||||||
"k8s.io/kubernetes/pkg/controller/informers"
|
"k8s.io/kubernetes/pkg/controller/informers"
|
||||||
"k8s.io/kubernetes/plugin/pkg/scheduler"
|
"k8s.io/kubernetes/plugin/pkg/scheduler"
|
||||||
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
|
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
|
||||||
@ -59,21 +60,21 @@ type ConfigFactory struct {
|
|||||||
// queue for pods that need scheduling
|
// queue for pods that need scheduling
|
||||||
podQueue *cache.FIFO
|
podQueue *cache.FIFO
|
||||||
// a means to list all known scheduled pods.
|
// 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.
|
// a means to list all known scheduled pods and pods assumed to have been scheduled.
|
||||||
podLister algorithm.PodLister
|
podLister algorithm.PodLister
|
||||||
// a means to list all nodes
|
// a means to list all nodes
|
||||||
nodeLister *cache.StoreToNodeLister
|
nodeLister *listers.StoreToNodeLister
|
||||||
// a means to list all PersistentVolumes
|
// a means to list all PersistentVolumes
|
||||||
pVLister *cache.StoreToPVFetcher
|
pVLister *listers.StoreToPVFetcher
|
||||||
// a means to list all PersistentVolumeClaims
|
// a means to list all PersistentVolumeClaims
|
||||||
pVCLister *cache.StoreToPersistentVolumeClaimLister
|
pVCLister *listers.StoreToPersistentVolumeClaimLister
|
||||||
// a means to list all services
|
// a means to list all services
|
||||||
serviceLister *cache.StoreToServiceLister
|
serviceLister *listers.StoreToServiceLister
|
||||||
// a means to list all controllers
|
// a means to list all controllers
|
||||||
controllerLister *cache.StoreToReplicationControllerLister
|
controllerLister *listers.StoreToReplicationControllerLister
|
||||||
// a means to list all replicasets
|
// a means to list all replicasets
|
||||||
replicaSetLister *cache.StoreToReplicaSetLister
|
replicaSetLister *listers.StoreToReplicaSetLister
|
||||||
|
|
||||||
// Close this to stop all reflectors
|
// Close this to stop all reflectors
|
||||||
StopEverything chan struct{}
|
StopEverything chan struct{}
|
||||||
@ -117,16 +118,16 @@ func NewConfigFactory(client clientset.Interface, schedulerName string, hardPodA
|
|||||||
c := &ConfigFactory{
|
c := &ConfigFactory{
|
||||||
client: client,
|
client: client,
|
||||||
podQueue: cache.NewFIFO(cache.MetaNamespaceKeyFunc),
|
podQueue: cache.NewFIFO(cache.MetaNamespaceKeyFunc),
|
||||||
scheduledPodLister: &cache.StoreToPodLister{},
|
scheduledPodLister: &listers.StoreToPodLister{},
|
||||||
informerFactory: informerFactory,
|
informerFactory: informerFactory,
|
||||||
// Only nodes in the "Ready" condition with status == "True" are schedulable
|
// Only nodes in the "Ready" condition with status == "True" are schedulable
|
||||||
nodeLister: &cache.StoreToNodeLister{},
|
nodeLister: &listers.StoreToNodeLister{},
|
||||||
pVLister: &cache.StoreToPVFetcher{Store: cache.NewStore(cache.MetaNamespaceKeyFunc)},
|
pVLister: &listers.StoreToPVFetcher{Store: cache.NewStore(cache.MetaNamespaceKeyFunc)},
|
||||||
pVCLister: pvcInformer.Lister(),
|
pVCLister: pvcInformer.Lister(),
|
||||||
pvcPopulator: pvcInformer.Informer().GetController(),
|
pvcPopulator: pvcInformer.Informer().GetController(),
|
||||||
serviceLister: &cache.StoreToServiceLister{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: &cache.StoreToReplicationControllerLister{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: &cache.StoreToReplicaSetLister{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,
|
schedulerCache: schedulerCache,
|
||||||
StopEverything: stopEverything,
|
StopEverything: stopEverything,
|
||||||
schedulerName: schedulerName,
|
schedulerName: schedulerName,
|
||||||
@ -515,7 +516,7 @@ func (f *ConfigFactory) ResponsibleForPod(pod *v1.Pod) bool {
|
|||||||
return f.schedulerName == pod.Spec.SchedulerName
|
return f.schedulerName == pod.Spec.SchedulerName
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNodeConditionPredicate() cache.NodeConditionPredicate {
|
func getNodeConditionPredicate() listers.NodeConditionPredicate {
|
||||||
return func(node *v1.Node) bool {
|
return func(node *v1.Node) bool {
|
||||||
for i := range node.Status.Conditions {
|
for i := range node.Status.Conditions {
|
||||||
cond := &node.Status.Conditions[i]
|
cond := &node.Status.Conditions[i]
|
||||||
|
Loading…
Reference in New Issue
Block a user