mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-07 10:17:51 +00:00
vendored changes
This commit is contained in:
parent
d091fff18b
commit
128f9a29f5
522 changed files with 29974 additions and 25705 deletions
|
|
@ -20,7 +20,9 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
cm_rest "github.com/kubernetes-incubator/custom-metrics-apiserver/pkg/apiserver/registry/rest"
|
||||
"github.com/kubernetes-incubator/custom-metrics-apiserver/pkg/provider"
|
||||
|
||||
metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
|
|
@ -37,7 +39,7 @@ type REST struct {
|
|||
}
|
||||
|
||||
var _ rest.Storage = &REST{}
|
||||
var _ rest.Lister = &REST{}
|
||||
var _ cm_rest.ListerWithOptions = &REST{}
|
||||
|
||||
func NewREST(cmProvider provider.CustomMetricsProvider) *REST {
|
||||
return &REST{
|
||||
|
|
@ -51,19 +53,37 @@ func (r *REST) New() runtime.Object {
|
|||
return &custom_metrics.MetricValue{}
|
||||
}
|
||||
|
||||
// Implement Lister
|
||||
// Implement ListerWithOptions
|
||||
|
||||
func (r *REST) NewList() runtime.Object {
|
||||
return &custom_metrics.MetricValueList{}
|
||||
}
|
||||
|
||||
func (r *REST) List(ctx context.Context, options *metainternalversion.ListOptions) (runtime.Object, error) {
|
||||
func (r *REST) NewListOptions() (runtime.Object, bool, string) {
|
||||
return &custom_metrics.MetricListOptions{}, true, "metricName"
|
||||
}
|
||||
|
||||
func (r *REST) List(ctx context.Context, options *metainternalversion.ListOptions, metricOpts runtime.Object) (runtime.Object, error) {
|
||||
metricOptions, ok := metricOpts.(*custom_metrics.MetricListOptions)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid options object: %#v", options)
|
||||
}
|
||||
|
||||
// populate the label selector, defaulting to all
|
||||
selector := labels.Everything()
|
||||
if options != nil && options.LabelSelector != nil {
|
||||
selector = options.LabelSelector
|
||||
}
|
||||
|
||||
metricLabelSelector := labels.Everything()
|
||||
if metricOptions != nil && len(metricOptions.MetricLabelSelector) > 0 {
|
||||
sel, err := labels.Parse(metricOptions.MetricLabelSelector)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
metricLabelSelector = sel
|
||||
}
|
||||
|
||||
// grab the name, if present, from the field selector list options
|
||||
// (this is how the list handler logic injects it)
|
||||
// (otherwise we'd have to write a custom list handler)
|
||||
|
|
@ -97,18 +117,18 @@ func (r *REST) List(ctx context.Context, options *metainternalversion.ListOption
|
|||
|
||||
// handle namespaced and root metrics
|
||||
if name == "*" {
|
||||
return r.handleWildcardOp(namespace, groupResource, selector, metricName)
|
||||
return r.handleWildcardOp(namespace, groupResource, selector, metricName, metricLabelSelector)
|
||||
} else {
|
||||
return r.handleIndividualOp(namespace, groupResource, name, metricName)
|
||||
return r.handleIndividualOp(namespace, groupResource, name, metricName, metricLabelSelector)
|
||||
}
|
||||
}
|
||||
|
||||
func (r *REST) handleIndividualOp(namespace string, groupResource schema.GroupResource, name string, metricName string) (*custom_metrics.MetricValueList, error) {
|
||||
func (r *REST) handleIndividualOp(namespace string, groupResource schema.GroupResource, name string, metricName string, metricLabelSelector labels.Selector) (*custom_metrics.MetricValueList, error) {
|
||||
singleRes, err := r.cmProvider.GetMetricByName(types.NamespacedName{Namespace: namespace, Name: name}, provider.CustomMetricInfo{
|
||||
GroupResource: groupResource,
|
||||
Metric: metricName,
|
||||
Namespaced: namespace != "",
|
||||
})
|
||||
}, metricLabelSelector)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -118,10 +138,10 @@ func (r *REST) handleIndividualOp(namespace string, groupResource schema.GroupRe
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (r *REST) handleWildcardOp(namespace string, groupResource schema.GroupResource, selector labels.Selector, metricName string) (*custom_metrics.MetricValueList, error) {
|
||||
func (r *REST) handleWildcardOp(namespace string, groupResource schema.GroupResource, selector labels.Selector, metricName string, metricLabelSelector labels.Selector) (*custom_metrics.MetricValueList, error) {
|
||||
return r.cmProvider.GetMetricBySelector(namespace, selector, provider.CustomMetricInfo{
|
||||
GroupResource: groupResource,
|
||||
Metric: metricName,
|
||||
Namespaced: namespace != "",
|
||||
})
|
||||
}, metricLabelSelector)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue