// NewResourceQuotaEvaluator returns an evaluator that can evaluate resource quotas func NewResourceQuotaEvaluator(kubeClient clientset.Interface) quota.Evaluator { allResources := []api.ResourceName{api.ResourceQuotas} return &generic.GenericEvaluator{ Name: "Evaluator.ResourceQuota", InternalGroupKind: api.Kind("ResourceQuota"), InternalOperationResources: map[admission.Operation][]api.ResourceName{ admission.Create: allResources, }, MatchedResourceNames: allResources, MatchesScopeFunc: generic.MatchesNoScopeFunc, ConstraintsFunc: generic.ObjectCountConstraintsFunc(api.ResourceQuotas), UsageFunc: generic.ObjectCountUsageFunc(api.ResourceQuotas), ListFuncByNamespace: func(namespace string, options v1.ListOptions) ([]runtime.Object, error) { itemList, err := kubeClient.Core().ResourceQuotas(namespace).List(options) if err != nil { return nil, err } results := make([]runtime.Object, 0, len(itemList.Items)) for i := range itemList.Items { results = append(results, &itemList.Items[i]) } return results, nil }, } }
// NewResourceQuotaEvaluator returns an evaluator that can evaluate resource quotas func NewResourceQuotaEvaluator(kubeClient clientset.Interface) quota.Evaluator { allResources := []api.ResourceName{api.ResourceQuotas} return &generic.GenericEvaluator{ Name: "Evaluator.ResourceQuota", InternalGroupKind: api.Kind("ResourceQuota"), InternalOperationResources: map[admission.Operation][]api.ResourceName{ admission.Create: allResources, }, MatchedResourceNames: allResources, MatchesScopeFunc: generic.MatchesNoScopeFunc, ConstraintsFunc: generic.ObjectCountConstraintsFunc(api.ResourceQuotas), UsageFunc: generic.ObjectCountUsageFunc(api.ResourceQuotas), ListFuncByNamespace: func(namespace string, options api.ListOptions) (runtime.Object, error) { return kubeClient.Core().ResourceQuotas(namespace).List(options) }, } }
// NewImageStreamEvaluator computes resource usage of ImageStreams. Instantiating this is necessary for // resource quota admission controller to properly work on image stream related objects. func NewImageStreamEvaluator(isNamespacer osclient.ImageStreamsNamespacer) kquota.Evaluator { allResources := []kapi.ResourceName{ imageapi.ResourceImageStreams, } return &generic.GenericEvaluator{ Name: imageStreamEvaluatorName, InternalGroupKind: imageapi.Kind("ImageStream"), InternalOperationResources: map[admission.Operation][]kapi.ResourceName{ admission.Create: allResources, }, MatchedResourceNames: allResources, MatchesScopeFunc: generic.MatchesNoScopeFunc, ConstraintsFunc: generic.ObjectCountConstraintsFunc(imageapi.ResourceImageStreams), UsageFunc: generic.ObjectCountUsageFunc(imageapi.ResourceImageStreams), ListFuncByNamespace: func(namespace string, options kapi.ListOptions) (runtime.Object, error) { return isNamespacer.ImageStreams(namespace).List(options) }, } }