Update dependencies to Kubernetes 1.11

This updates our dependencies to the Kubernetes 1.11 versions.
In the future, this will also allow us to support the external
metrics API.
This commit is contained in:
Solly Ross 2018-06-27 16:55:12 -04:00
parent 1e5cd68533
commit be018f76e3
10 changed files with 108 additions and 109 deletions

View file

@ -1,7 +1,7 @@
language: go
go:
- 1.8
- '1.10'
# blech, Travis downloads with capitals in DirectXMan12, which confuses go
go_import_path: github.com/directxman12/k8s-prometheus-adapter

86
Gopkg.lock generated
View file

@ -194,12 +194,6 @@
]
revision = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3"
[[projects]]
branch = "master"
name = "github.com/howeyc/gopass"
packages = ["."]
revision = "bf9dde6d0d2c004a008c27aaee91170c786f6db8"
[[projects]]
name = "github.com/imdario/mergo"
packages = ["."]
@ -219,12 +213,7 @@
version = "1.1.3"
[[projects]]
name = "github.com/juju/ratelimit"
packages = ["."]
revision = "59fac5042749a5afb9af70e813da1dd5474f0167"
version = "1.0.1"
[[projects]]
branch = "master"
name = "github.com/kubernetes-incubator/custom-metrics-apiserver"
packages = [
"pkg/apiserver",
@ -232,9 +221,10 @@
"pkg/cmd/server",
"pkg/dynamicmapper",
"pkg/provider",
"pkg/registry/custom_metrics"
"pkg/registry/custom_metrics",
"pkg/registry/external_metrics"
]
revision = "fae01650d93f5de6151a024e36323344e14427aa"
revision = "d8f23423aa1d0ff2bc9656da863d721725b3c68a"
[[projects]]
branch = "master"
@ -264,12 +254,6 @@
revision = "1df9eeb2bb81f327b96228865c5687bc2194af3f"
version = "1.0.0"
[[projects]]
branch = "master"
name = "github.com/mxk/go-flowrate"
packages = ["flowrate"]
revision = "cca7078d478f8520f85629ad7c68962d31ed7682"
[[projects]]
name = "github.com/pborman/uuid"
packages = ["."]
@ -365,8 +349,6 @@
name = "golang.org/x/net"
packages = [
"context",
"html",
"html/atom",
"http/httpguts",
"http2",
"http2/hpack",
@ -408,6 +390,12 @@
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
version = "v0.3.0"
[[projects]]
branch = "master"
name = "golang.org/x/time"
packages = ["rate"]
revision = "fbb02b2291d28baffd63558aa44b4b56f178d650"
[[projects]]
branch = "master"
name = "google.golang.org/genproto"
@ -493,13 +481,14 @@
"rbac/v1alpha1",
"rbac/v1beta1",
"scheduling/v1alpha1",
"scheduling/v1beta1",
"settings/v1alpha1",
"storage/v1",
"storage/v1alpha1",
"storage/v1beta1"
]
revision = "af4bc157c3a209798fc897f6d4aaaaeb6c2e0d6a"
version = "kubernetes-1.9.0"
revision = "91b2d7a92a8930454bf5020e0595b8ea0f2a5047"
version = "kubernetes-1.11.0-rc.1"
[[projects]]
name = "k8s.io/apimachinery"
@ -510,14 +499,11 @@
"pkg/api/resource",
"pkg/api/validation",
"pkg/api/validation/path",
"pkg/apimachinery",
"pkg/apimachinery/announced",
"pkg/apimachinery/registered",
"pkg/apis/meta/internalversion",
"pkg/apis/meta/v1",
"pkg/apis/meta/v1/unstructured",
"pkg/apis/meta/v1/validation",
"pkg/apis/meta/v1alpha1",
"pkg/apis/meta/v1beta1",
"pkg/conversion",
"pkg/conversion/queryparams",
"pkg/fields",
@ -537,12 +523,10 @@
"pkg/util/diff",
"pkg/util/errors",
"pkg/util/framer",
"pkg/util/httpstream",
"pkg/util/intstr",
"pkg/util/json",
"pkg/util/mergepatch",
"pkg/util/net",
"pkg/util/proxy",
"pkg/util/rand",
"pkg/util/runtime",
"pkg/util/sets",
@ -556,11 +540,10 @@
"pkg/version",
"pkg/watch",
"third_party/forked/golang/json",
"third_party/forked/golang/netutil",
"third_party/forked/golang/reflect"
]
revision = "180eddb345a5be3a157cea1c624700ad5bd27b8f"
version = "kubernetes-1.9.0"
revision = "fda675fbe85280c4550452dae2a5ebf74e4a59b7"
version = "kubernetes-1.11.0-rc.1"
[[projects]]
name = "k8s.io/apiserver"
@ -575,12 +558,12 @@
"pkg/admission/plugin/webhook/config/apis/webhookadmission",
"pkg/admission/plugin/webhook/config/apis/webhookadmission/v1alpha1",
"pkg/admission/plugin/webhook/errors",
"pkg/admission/plugin/webhook/generic",
"pkg/admission/plugin/webhook/mutating",
"pkg/admission/plugin/webhook/namespace",
"pkg/admission/plugin/webhook/request",
"pkg/admission/plugin/webhook/rules",
"pkg/admission/plugin/webhook/validating",
"pkg/admission/plugin/webhook/versioned",
"pkg/apis/apiserver",
"pkg/apis/apiserver/install",
"pkg/apis/apiserver/v1alpha1",
@ -625,6 +608,7 @@
"pkg/server/httplog",
"pkg/server/mux",
"pkg/server/options",
"pkg/server/resourceconfig",
"pkg/server/routes",
"pkg/server/routes/data/swagger",
"pkg/server/storage",
@ -643,16 +627,19 @@
"pkg/util/flag",
"pkg/util/flushwriter",
"pkg/util/logs",
"pkg/util/openapi",
"pkg/util/trace",
"pkg/util/webhook",
"pkg/util/wsstream",
"plugin/pkg/audit/buffered",
"plugin/pkg/audit/log",
"plugin/pkg/audit/truncate",
"plugin/pkg/audit/webhook",
"plugin/pkg/authenticator/token/webhook",
"plugin/pkg/authorizer/webhook"
]
revision = "91e14f394e4796abf5a994a349a222e7081d86b6"
version = "kubernetes-1.9.0"
revision = "44b612291bb7545430c499a3882c610c727f37b0"
version = "kubernetes-1.11.0-rc.1"
[[projects]]
name = "k8s.io/client-go"
@ -694,6 +681,7 @@
"informers/rbac/v1beta1",
"informers/scheduling",
"informers/scheduling/v1alpha1",
"informers/scheduling/v1beta1",
"informers/settings",
"informers/settings/v1alpha1",
"informers/storage",
@ -726,6 +714,7 @@
"kubernetes/typed/rbac/v1alpha1",
"kubernetes/typed/rbac/v1beta1",
"kubernetes/typed/scheduling/v1alpha1",
"kubernetes/typed/scheduling/v1beta1",
"kubernetes/typed/settings/v1alpha1",
"kubernetes/typed/storage/v1",
"kubernetes/typed/storage/v1alpha1",
@ -750,13 +739,19 @@
"listers/rbac/v1alpha1",
"listers/rbac/v1beta1",
"listers/scheduling/v1alpha1",
"listers/scheduling/v1beta1",
"listers/settings/v1alpha1",
"listers/storage/v1",
"listers/storage/v1alpha1",
"listers/storage/v1beta1",
"pkg/apis/clientauthentication",
"pkg/apis/clientauthentication/v1alpha1",
"pkg/apis/clientauthentication/v1beta1",
"pkg/version",
"plugin/pkg/client/auth/exec",
"rest",
"rest/watch",
"restmapper",
"testing",
"tools/auth",
"tools/cache",
@ -770,12 +765,14 @@
"transport",
"util/buffer",
"util/cert",
"util/connrotation",
"util/flowcontrol",
"util/homedir",
"util/integer"
"util/integer",
"util/retry"
]
revision = "78700dec6369ba22221b72770783300f143df150"
version = "v6.0.0"
revision = "4cacfee698b01630072bc41e3384280562a97d95"
version = "kubernetes-1.11.0-rc.1"
[[projects]]
branch = "master"
@ -794,14 +791,17 @@
packages = [
"pkg/apis/custom_metrics",
"pkg/apis/custom_metrics/install",
"pkg/apis/custom_metrics/v1beta1"
"pkg/apis/custom_metrics/v1beta1",
"pkg/apis/external_metrics",
"pkg/apis/external_metrics/install",
"pkg/apis/external_metrics/v1beta1"
]
revision = "bc50bbd13d9f360ab1438b486623e1debd1f424d"
version = "kubernetes-1.9.0"
revision = "89f8a18a5efb0c0162a32c75db752bc53ed7f8ee"
version = "kubernetes-1.11.0-rc.1"
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "20d60ed2d6d92b2bafc310f59695cd1aa446c54328caeb1c25d87c8b2516925b"
inputs-digest = "922da691d7be0fa3bde2ab628c629fea6718792cb234a2e5c661a193f0545d6f"
solver-name = "gps-cdcl"
solver-version = 1

View file

@ -48,30 +48,29 @@
# Kubernetes incubator deps
[[constraint]]
# hard lock on a commit until we have releases
revision = "fae01650d93f5de6151a024e36323344e14427aa"
version = "kubernetes-1.11.0-rc.1"
name = "github.com/kubernetes-incubator/custom-metrics-apiserver"
# Core Kubernetes deps
[[constraint]]
name = "k8s.io/api"
version = "kubernetes-1.9.0"
version = "kubernetes-1.11.0-rc.1"
[[constraint]]
name = "k8s.io/apimachinery"
version = "kubernetes-1.9.0"
version = "kubernetes-1.11.0-rc.1"
[[constraint]]
name = "k8s.io/apiserver"
version = "kubernetes-1.9.0"
version = "kubernetes-1.11.0-rc.1"
[[constraint]]
name = "k8s.io/client-go"
version = "kubernetes-1.9.0"
version = "kubernetes-1.11.0-rc.1"
[[constraint]]
name = "k8s.io/metrics"
version = "kubernetes-1.9.0"
version = "kubernetes-1.11.0-rc.1"
# Test deps
[[constraint]]

View file

@ -8,7 +8,7 @@ OUT_DIR?=./_output
VENDOR_DOCKERIZED=0
VERSION?=latest
GOIMAGE=golang:1.8
GOIMAGE=golang:1.10
ifeq ($(ARCH),amd64)
BASEIMAGE?=busybox
@ -24,7 +24,7 @@ ifeq ($(ARCH),ppc64le)
endif
ifeq ($(ARCH),s390x)
BASEIMAGE?=s390x/busybox
GOIMAGE=s390x/golang:1.8
GOIMAGE=s390x/golang:1.10
endif
.PHONY: all docker-build push-% push test verify-gofmt gofmt verify build-local-image

View file

@ -24,7 +24,6 @@ import (
"time"
"github.com/spf13/cobra"
apimeta "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest"
@ -162,12 +161,12 @@ func (o PrometheusAdapterServerOptions) RunCustomMetricsAdapterServer(stopCh <-c
return fmt.Errorf("unable to construct discovery client for dynamic client: %v", err)
}
dynamicMapper, err := dynamicmapper.NewRESTMapper(discoveryClient, apimeta.InterfacesForUnstructured, o.DiscoveryInterval)
dynamicMapper, err := dynamicmapper.NewRESTMapper(discoveryClient, o.DiscoveryInterval)
if err != nil {
return fmt.Errorf("unable to construct dynamic discovery mapper: %v", err)
}
clientPool := dynamic.NewClientPool(clientConfig, dynamicMapper, dynamic.LegacyAPIPathResolverFunc)
dynamicClient, err := dynamic.NewForConfig(clientConfig)
if err != nil {
return fmt.Errorf("unable to construct lister client to initialize provider: %v", err)
}
@ -190,10 +189,10 @@ func (o PrometheusAdapterServerOptions) RunCustomMetricsAdapterServer(stopCh <-c
return fmt.Errorf("unable to construct naming scheme from metrics rules: %v", err)
}
cmProvider, runner := cmprov.NewPrometheusProvider(dynamicMapper, clientPool, promClient, namers, o.MetricsRelistInterval)
cmProvider, runner := cmprov.NewPrometheusProvider(dynamicMapper, dynamicClient, promClient, namers, o.MetricsRelistInterval)
runner.RunUntil(stopCh)
server, err := config.Complete().New("prometheus-custom-metrics-adapter", cmProvider)
server, err := config.Complete().New("prometheus-custom-metrics-adapter", cmProvider, nil)
if err != nil {
return err
}

View file

@ -273,7 +273,7 @@ func (n *metricNamer) ResourcesForSeries(series prom.Series) ([]schema.GroupReso
// if not, check if it matches the form we expect, and if so,
// convert to a group-resource.
if groupRes, ok = n.labelResExtractor.GroupResourceForLabel(lbl); ok {
info, _, err := provider.MetricInfo{GroupResource: groupRes}.Normalized(n.mapper)
info, _, err := provider.CustomMetricInfo{GroupResource: groupRes}.Normalized(n.mapper)
if err != nil {
glog.Errorf("unable to normalize group-resource %s from label %q, skipping: %v", groupRes.String(), lbl, err)
continue
@ -452,7 +452,7 @@ func NamersFromConfig(cfg *config.MetricsDiscoveryConfig, mapper apimeta.RESTMap
// invert the structure for consistency with the template
for lbl, groupRes := range rule.Resources.Overrides {
infoRaw := provider.MetricInfo{
infoRaw := provider.CustomMetricInfo{
GroupResource: schema.GroupResource{
Group: groupRes.Group,
Resource: groupRes.Resource,

View file

@ -50,13 +50,13 @@ type Runnable interface {
type prometheusProvider struct {
mapper apimeta.RESTMapper
kubeClient dynamic.ClientPool
kubeClient dynamic.Interface
promClient prom.Client
SeriesRegistry
}
func NewPrometheusProvider(mapper apimeta.RESTMapper, kubeClient dynamic.ClientPool, promClient prom.Client, namers []MetricNamer, updateInterval time.Duration) (provider.CustomMetricsProvider, Runnable) {
func NewPrometheusProvider(mapper apimeta.RESTMapper, kubeClient dynamic.Interface, promClient prom.Client, namers []MetricNamer, updateInterval time.Duration) (provider.CustomMetricsProvider, Runnable) {
lister := &cachingMetricsLister{
updateInterval: updateInterval,
promClient: promClient,
@ -95,7 +95,7 @@ func (p *prometheusProvider) metricFor(value pmodel.SampleValue, groupResource s
}, nil
}
func (p *prometheusProvider) metricsFor(valueSet pmodel.Vector, info provider.MetricInfo, list runtime.Object) (*custom_metrics.MetricValueList, error) {
func (p *prometheusProvider) metricsFor(valueSet pmodel.Vector, info provider.CustomMetricInfo, list runtime.Object) (*custom_metrics.MetricValueList, error) {
if !apimeta.IsListType(list) {
return nil, apierr.NewInternalError(fmt.Errorf("result of label selector list operation was not a list"))
}
@ -129,7 +129,7 @@ func (p *prometheusProvider) metricsFor(valueSet pmodel.Vector, info provider.Me
}, nil
}
func (p *prometheusProvider) buildQuery(info provider.MetricInfo, namespace string, names ...string) (pmodel.Vector, error) {
func (p *prometheusProvider) buildQuery(info provider.CustomMetricInfo, namespace string, names ...string) (pmodel.Vector, error) {
query, found := p.QueryForMetric(info, namespace, names...)
if !found {
return nil, provider.NewMetricNotFoundError(info.GroupResource, info.Metric)
@ -151,7 +151,7 @@ func (p *prometheusProvider) buildQuery(info provider.MetricInfo, namespace stri
return *queryResults.Vector, nil
}
func (p *prometheusProvider) getSingle(info provider.MetricInfo, namespace, name string) (*custom_metrics.MetricValue, error) {
func (p *prometheusProvider) getSingle(info provider.CustomMetricInfo, namespace, name string) (*custom_metrics.MetricValue, error) {
queryResults, err := p.buildQuery(info, namespace, name)
if err != nil {
return nil, err
@ -179,24 +179,25 @@ func (p *prometheusProvider) getSingle(info provider.MetricInfo, namespace, name
return p.metricFor(resultValue, info.GroupResource, "", name, info.Metric)
}
func (p *prometheusProvider) getMultiple(info provider.MetricInfo, namespace string, selector labels.Selector) (*custom_metrics.MetricValueList, error) {
// construct a client to list the names of objects matching the label selector
client, err := p.kubeClient.ClientForGroupVersionResource(info.GroupResource.WithVersion(""))
func (p *prometheusProvider) getMultiple(info provider.CustomMetricInfo, namespace string, selector labels.Selector) (*custom_metrics.MetricValueList, error) {
fullResources, err := p.mapper.ResourcesFor(info.GroupResource.WithVersion(""))
if err == nil && len(fullResources) == 0 {
err = fmt.Errorf("no fully versioned resources known for group-resource %v", info.GroupResource)
}
if err != nil {
glog.Errorf("unable to construct dynamic client to list matching resource names: %v", err)
glog.Errorf("unable to find preferred version to list matching resource names: %v", err)
// don't leak implementation details to the user
return nil, apierr.NewInternalError(fmt.Errorf("unable to list matching resources"))
}
// we can construct a this APIResource ourself, since the dynamic client only uses Name and Namespaced
apiRes := &metav1.APIResource{
Name: info.GroupResource.Resource,
Namespaced: info.Namespaced,
var client dynamic.ResourceInterface
if namespace != "" {
client = p.kubeClient.Resource(fullResources[0]).Namespace(namespace)
} else {
client = p.kubeClient.Resource(fullResources[0])
}
// actually list the objects matching the label selector
matchingObjectsRaw, err := client.Resource(apiRes, namespace).
List(metav1.ListOptions{LabelSelector: selector.String()})
matchingObjectsRaw, err := client.List(metav1.ListOptions{LabelSelector: selector.String()})
if err != nil {
glog.Errorf("unable to list matching resource names: %v", err)
// don't leak implementation details to the user
@ -225,7 +226,7 @@ func (p *prometheusProvider) getMultiple(info provider.MetricInfo, namespace str
}
func (p *prometheusProvider) GetRootScopedMetricByName(groupResource schema.GroupResource, name string, metricName string) (*custom_metrics.MetricValue, error) {
info := provider.MetricInfo{
info := provider.CustomMetricInfo{
GroupResource: groupResource,
Metric: metricName,
Namespaced: false,
@ -235,7 +236,7 @@ func (p *prometheusProvider) GetRootScopedMetricByName(groupResource schema.Grou
}
func (p *prometheusProvider) GetRootScopedMetricBySelector(groupResource schema.GroupResource, selector labels.Selector, metricName string) (*custom_metrics.MetricValueList, error) {
info := provider.MetricInfo{
info := provider.CustomMetricInfo{
GroupResource: groupResource,
Metric: metricName,
Namespaced: false,
@ -244,7 +245,7 @@ func (p *prometheusProvider) GetRootScopedMetricBySelector(groupResource schema.
}
func (p *prometheusProvider) GetNamespacedMetricByName(groupResource schema.GroupResource, namespace string, name string, metricName string) (*custom_metrics.MetricValue, error) {
info := provider.MetricInfo{
info := provider.CustomMetricInfo{
GroupResource: groupResource,
Metric: metricName,
Namespaced: true,
@ -254,7 +255,7 @@ func (p *prometheusProvider) GetNamespacedMetricByName(groupResource schema.Grou
}
func (p *prometheusProvider) GetNamespacedMetricBySelector(groupResource schema.GroupResource, namespace string, selector labels.Selector, metricName string) (*custom_metrics.MetricValueList, error) {
info := provider.MetricInfo{
info := provider.CustomMetricInfo{
GroupResource: groupResource,
Metric: metricName,
Namespaced: true,

View file

@ -89,7 +89,7 @@ func (c *fakePromClient) QueryRange(_ context.Context, r prom.Range, query prom.
func setupPrometheusProvider(t *testing.T) (provider.CustomMetricsProvider, *fakePromClient) {
fakeProm := &fakePromClient{}
fakeKubeClient := &fakedyn.FakeClientPool{}
fakeKubeClient := &fakedyn.FakeDynamicClient{}
cfg := config.DefaultConfig(1*time.Minute, "")
namers, err := NamersFromConfig(cfg, restMapper())
@ -148,7 +148,7 @@ func TestListAllMetrics(t *testing.T) {
actualMetrics := prov.ListAllMetrics()
sort.Sort(metricInfoSorter(actualMetrics))
expectedMetrics := []provider.MetricInfo{
expectedMetrics := []provider.CustomMetricInfo{
{schema.GroupResource{Resource: "services"}, true, "ingress_hits"},
{schema.GroupResource{Group: "extensions", Resource: "ingresses"}, true, "ingress_hits"},
{schema.GroupResource{Resource: "pods"}, true, "ingress_hits"},

View file

@ -47,12 +47,12 @@ type SeriesRegistry interface {
// Each slice in series should correspond to a MetricNamer in namers.
SetSeries(series [][]prom.Series, namers []MetricNamer) error
// ListAllMetrics lists all metrics known to this registry
ListAllMetrics() []provider.MetricInfo
ListAllMetrics() []provider.CustomMetricInfo
// SeriesForMetric looks up the minimum required series information to make a query for the given metric
// against the given resource (namespace may be empty for non-namespaced resources)
QueryForMetric(info provider.MetricInfo, namespace string, resourceNames ...string) (query prom.Selector, found bool)
QueryForMetric(info provider.CustomMetricInfo, namespace string, resourceNames ...string) (query prom.Selector, found bool)
// MatchValuesToNames matches result values to resource names for the given metric and value set
MatchValuesToNames(metricInfo provider.MetricInfo, values pmodel.Vector) (matchedValues map[string]pmodel.SampleValue, found bool)
MatchValuesToNames(metricInfo provider.CustomMetricInfo, values pmodel.Vector) (matchedValues map[string]pmodel.SampleValue, found bool)
}
type seriesInfo struct {
@ -68,9 +68,9 @@ type basicSeriesRegistry struct {
mu sync.RWMutex
// info maps metric info to information about the corresponding series
info map[provider.MetricInfo]seriesInfo
info map[provider.CustomMetricInfo]seriesInfo
// metrics is the list of all known metrics
metrics []provider.MetricInfo
metrics []provider.CustomMetricInfo
mapper apimeta.RESTMapper
}
@ -80,7 +80,7 @@ func (r *basicSeriesRegistry) SetSeries(newSeriesSlices [][]prom.Series, namers
return fmt.Errorf("need one set of series per namer")
}
newInfo := make(map[provider.MetricInfo]seriesInfo)
newInfo := make(map[provider.CustomMetricInfo]seriesInfo)
for i, newSeries := range newSeriesSlices {
namer := namers[i]
for _, series := range newSeries {
@ -92,7 +92,7 @@ func (r *basicSeriesRegistry) SetSeries(newSeriesSlices [][]prom.Series, namers
continue
}
for _, resource := range resources {
info := provider.MetricInfo{
info := provider.CustomMetricInfo{
GroupResource: resource,
Namespaced: namespaced,
Metric: name,
@ -113,7 +113,7 @@ func (r *basicSeriesRegistry) SetSeries(newSeriesSlices [][]prom.Series, namers
}
// regenerate metrics
newMetrics := make([]provider.MetricInfo, 0, len(newInfo))
newMetrics := make([]provider.CustomMetricInfo, 0, len(newInfo))
for info := range newInfo {
newMetrics = append(newMetrics, info)
}
@ -127,14 +127,14 @@ func (r *basicSeriesRegistry) SetSeries(newSeriesSlices [][]prom.Series, namers
return nil
}
func (r *basicSeriesRegistry) ListAllMetrics() []provider.MetricInfo {
func (r *basicSeriesRegistry) ListAllMetrics() []provider.CustomMetricInfo {
r.mu.RLock()
defer r.mu.RUnlock()
return r.metrics
}
func (r *basicSeriesRegistry) QueryForMetric(metricInfo provider.MetricInfo, namespace string, resourceNames ...string) (prom.Selector, bool) {
func (r *basicSeriesRegistry) QueryForMetric(metricInfo provider.CustomMetricInfo, namespace string, resourceNames ...string) (prom.Selector, bool) {
r.mu.RLock()
defer r.mu.RUnlock()
@ -164,7 +164,7 @@ func (r *basicSeriesRegistry) QueryForMetric(metricInfo provider.MetricInfo, nam
return query, true
}
func (r *basicSeriesRegistry) MatchValuesToNames(metricInfo provider.MetricInfo, values pmodel.Vector) (matchedValues map[string]pmodel.SampleValue, found bool) {
func (r *basicSeriesRegistry) MatchValuesToNames(metricInfo provider.CustomMetricInfo, values pmodel.Vector) (matchedValues map[string]pmodel.SampleValue, found bool) {
r.mu.RLock()
defer r.mu.RUnlock()

View file

@ -37,7 +37,7 @@ import (
// restMapper creates a RESTMapper with just the types we need for
// these tests.
func restMapper() apimeta.RESTMapper {
mapper := apimeta.NewDefaultRESTMapper([]schema.GroupVersion{coreapi.SchemeGroupVersion}, apimeta.InterfacesForUnstructured)
mapper := apimeta.NewDefaultRESTMapper([]schema.GroupVersion{coreapi.SchemeGroupVersion})
mapper.Add(coreapi.SchemeGroupVersion.WithKind("Pod"), apimeta.RESTScopeNamespace)
mapper.Add(coreapi.SchemeGroupVersion.WithKind("Service"), apimeta.RESTScopeNamespace)
@ -132,7 +132,7 @@ func TestSeriesRegistry(t *testing.T) {
// make sure each metric got registered and can form queries
testCases := []struct {
title string
info provider.MetricInfo
info provider.CustomMetricInfo
namespace string
resourceNames []string
@ -141,7 +141,7 @@ func TestSeriesRegistry(t *testing.T) {
// container metrics
{
title: "container metrics gauge / multiple resource names",
info: provider.MetricInfo{schema.GroupResource{Resource: "pods"}, true, "some_usage"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "pods"}, true, "some_usage"},
namespace: "somens",
resourceNames: []string{"somepod1", "somepod2"},
@ -149,7 +149,7 @@ func TestSeriesRegistry(t *testing.T) {
},
{
title: "container metrics counter",
info: provider.MetricInfo{schema.GroupResource{Resource: "pods"}, true, "some_count"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "pods"}, true, "some_count"},
namespace: "somens",
resourceNames: []string{"somepod1", "somepod2"},
@ -157,7 +157,7 @@ func TestSeriesRegistry(t *testing.T) {
},
{
title: "container metrics seconds counter",
info: provider.MetricInfo{schema.GroupResource{Resource: "pods"}, true, "some_time"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "pods"}, true, "some_time"},
namespace: "somens",
resourceNames: []string{"somepod1", "somepod2"},
@ -166,7 +166,7 @@ func TestSeriesRegistry(t *testing.T) {
// namespaced metrics
{
title: "namespaced metrics counter / multidimensional (service)",
info: provider.MetricInfo{schema.GroupResource{Resource: "service"}, true, "ingress_hits"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "service"}, true, "ingress_hits"},
namespace: "somens",
resourceNames: []string{"somesvc"},
@ -174,7 +174,7 @@ func TestSeriesRegistry(t *testing.T) {
},
{
title: "namespaced metrics counter / multidimensional (ingress)",
info: provider.MetricInfo{schema.GroupResource{Group: "extensions", Resource: "ingress"}, true, "ingress_hits"},
info: provider.CustomMetricInfo{schema.GroupResource{Group: "extensions", Resource: "ingress"}, true, "ingress_hits"},
namespace: "somens",
resourceNames: []string{"someingress"},
@ -182,7 +182,7 @@ func TestSeriesRegistry(t *testing.T) {
},
{
title: "namespaced metrics counter / multidimensional (pod)",
info: provider.MetricInfo{schema.GroupResource{Resource: "pod"}, true, "ingress_hits"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "pod"}, true, "ingress_hits"},
namespace: "somens",
resourceNames: []string{"somepod"},
@ -190,7 +190,7 @@ func TestSeriesRegistry(t *testing.T) {
},
{
title: "namespaced metrics gauge",
info: provider.MetricInfo{schema.GroupResource{Resource: "service"}, true, "service_proxy_packets"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "service"}, true, "service_proxy_packets"},
namespace: "somens",
resourceNames: []string{"somesvc"},
@ -198,7 +198,7 @@ func TestSeriesRegistry(t *testing.T) {
},
{
title: "namespaced metrics seconds counter",
info: provider.MetricInfo{schema.GroupResource{Group: "extensions", Resource: "deployment"}, true, "work_queue_wait"},
info: provider.CustomMetricInfo{schema.GroupResource{Group: "extensions", Resource: "deployment"}, true, "work_queue_wait"},
namespace: "somens",
resourceNames: []string{"somedep"},
@ -207,21 +207,21 @@ func TestSeriesRegistry(t *testing.T) {
// non-namespaced series
{
title: "root scoped metrics gauge",
info: provider.MetricInfo{schema.GroupResource{Resource: "node"}, false, "node_gigawatts"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "node"}, false, "node_gigawatts"},
resourceNames: []string{"somenode"},
expectedQuery: "sum(node_gigawatts{kube_node=\"somenode\"}) by (kube_node)",
},
{
title: "root scoped metrics counter",
info: provider.MetricInfo{schema.GroupResource{Resource: "persistentvolume"}, false, "volume_claims"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "persistentvolume"}, false, "volume_claims"},
resourceNames: []string{"somepv"},
expectedQuery: "sum(rate(volume_claims_total{kube_persistentvolume=\"somepv\"}[1m])) by (kube_persistentvolume)",
},
{
title: "root scoped metrics seconds counter",
info: provider.MetricInfo{schema.GroupResource{Resource: "node"}, false, "node_fan"},
info: provider.CustomMetricInfo{schema.GroupResource{Resource: "node"}, false, "node_fan"},
resourceNames: []string{"somenode"},
expectedQuery: "sum(rate(node_fan_seconds_total{kube_node=\"somenode\"}[1m])) by (kube_node)",
@ -238,7 +238,7 @@ func TestSeriesRegistry(t *testing.T) {
}
allMetrics := registry.ListAllMetrics()
expectedMetrics := []provider.MetricInfo{
expectedMetrics := []provider.CustomMetricInfo{
{schema.GroupResource{Resource: "pods"}, true, "some_count"},
{schema.GroupResource{Resource: "namespaces"}, false, "some_count"},
{schema.GroupResource{Resource: "pods"}, true, "some_time"},
@ -289,8 +289,8 @@ func BenchmarkSetSeries(b *testing.B) {
}
}
// metricInfoSorter is a sort.Interface for sorting provider.MetricInfos
type metricInfoSorter []provider.MetricInfo
// metricInfoSorter is a sort.Interface for sorting provider.CustomMetricInfos
type metricInfoSorter []provider.CustomMetricInfo
func (s metricInfoSorter) Len() int {
return len(s)