mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-07 22:25:03 +00:00
Working through some of the result conversions. I want to use this code in a harness project to exercise some of it, but there are some versioning issues around my modified code vs. the current version of the real project. The easiest way to work around them at the moment is to push this.
47 lines
1.5 KiB
Go
47 lines
1.5 KiB
Go
package provider
|
|
|
|
import (
|
|
"errors"
|
|
|
|
prom "github.com/directxman12/k8s-prometheus-adapter/pkg/client"
|
|
"github.com/prometheus/common/model"
|
|
"k8s.io/metrics/pkg/apis/external_metrics"
|
|
)
|
|
|
|
//MetricConverter provides a unified interface for converting the results of
|
|
//Prometheus queries into external metric types.
|
|
type MetricConverter interface {
|
|
Convert(metadata QueryMetadata, queryResult prom.QueryResult) (*external_metrics.ExternalMetricValueList, error)
|
|
}
|
|
|
|
type metricConverter struct {
|
|
scalarConverter MetricConverter
|
|
vectorConverter MetricConverter
|
|
matrixConverter MetricConverter
|
|
}
|
|
|
|
//NewMetricConverter creates a MetricCoverter, capable of converting any of the three metric types
|
|
//returned by the Prometheus client into external metrics types.
|
|
func NewMetricConverter(scalar MetricConverter, vector MetricConverter, matrix MetricConverter) MetricConverter {
|
|
return &metricConverter{
|
|
scalarConverter: scalar,
|
|
vectorConverter: vector,
|
|
matrixConverter: matrix,
|
|
}
|
|
}
|
|
|
|
func (c *metricConverter) Convert(metadata QueryMetadata, queryResult prom.QueryResult) (*external_metrics.ExternalMetricValueList, error) {
|
|
if queryResult.Type == model.ValScalar {
|
|
return c.scalarConverter.Convert(metadata, queryResult)
|
|
}
|
|
|
|
if queryResult.Type == model.ValVector {
|
|
return c.vectorConverter.Convert(metadata, queryResult)
|
|
}
|
|
|
|
if queryResult.Type == model.ValMatrix {
|
|
return c.matrixConverter.Convert(metadata, queryResult)
|
|
}
|
|
|
|
return nil, errors.New("encountered an unexpected query result type")
|
|
}
|