// NewPodEvaluator returns an evaluator that can evaluate pods // if the specified shared informer factory is not nil, evaluator may use it to support listing functions. func NewPodEvaluator(kubeClient clientset.Interface, f informers.SharedInformerFactory) quota.Evaluator { computeResources := []api.ResourceName{ api.ResourceCPU, api.ResourceMemory, api.ResourceRequestsCPU, api.ResourceRequestsMemory, api.ResourceLimitsCPU, api.ResourceLimitsMemory, } allResources := append(computeResources, api.ResourcePods) listFuncByNamespace := listPodsByNamespaceFuncUsingClient(kubeClient) if f != nil { listFuncByNamespace = generic.ListResourceUsingInformerFunc(f, unversioned.GroupResource{Resource: "pods"}) } return &generic.GenericEvaluator{ Name: "Evaluator.Pod", InternalGroupKind: api.Kind("Pod"), InternalOperationResources: map[admission.Operation][]api.ResourceName{ admission.Create: allResources, // TODO: the quota system can only charge for deltas on compute resources when pods support updates. // admission.Update: computeResources, }, GetFuncByNamespace: func(namespace, name string) (runtime.Object, error) { return kubeClient.Core().Pods(namespace).Get(name) }, ConstraintsFunc: PodConstraintsFunc, MatchedResourceNames: allResources, MatchesScopeFunc: PodMatchesScopeFunc, UsageFunc: PodUsageFunc, ListFuncByNamespace: listFuncByNamespace, } }
// NewPersistentVolumeClaimEvaluator returns an evaluator that can evaluate persistent volume claims // if the specified shared informer factory is not nil, evaluator may use it to support listing functions. func NewPersistentVolumeClaimEvaluator(kubeClient clientset.Interface, f informers.SharedInformerFactory) quota.Evaluator { listFuncByNamespace := listPersistentVolumeClaimsByNamespaceFuncUsingClient(kubeClient) if f != nil { listFuncByNamespace = generic.ListResourceUsingInformerFunc(f, schema.GroupResource{Resource: "persistentvolumeclaims"}) } return &pvcEvaluator{ listFuncByNamespace: listFuncByNamespace, } }
// NewPersistentVolumeClaimEvaluator returns an evaluator that can evaluate persistent volume claims // if the specified shared informer factory is not nil, evaluator may use it to support listing functions. func NewPersistentVolumeClaimEvaluator(kubeClient clientset.Interface, f informers.SharedInformerFactory) quota.Evaluator { allResources := []api.ResourceName{api.ResourcePersistentVolumeClaims, api.ResourceRequestsStorage} listFuncByNamespace := listPersistentVolumeClaimsByNamespaceFuncUsingClient(kubeClient) if f != nil { listFuncByNamespace = generic.ListResourceUsingInformerFunc(f, unversioned.GroupResource{Resource: "persistentvolumeclaims"}) } return &generic.GenericEvaluator{ Name: "Evaluator.PersistentVolumeClaim", InternalGroupKind: api.Kind("PersistentVolumeClaim"), InternalOperationResources: map[admission.Operation][]api.ResourceName{ admission.Create: allResources, }, MatchedResourceNames: allResources, MatchesScopeFunc: generic.MatchesNoScopeFunc, ConstraintsFunc: PersistentVolumeClaimConstraintsFunc, UsageFunc: PersistentVolumeClaimUsageFunc, ListFuncByNamespace: listFuncByNamespace, } }