Narrow interface consumed by scale client

parent d371be33
...@@ -20,7 +20,6 @@ import ( ...@@ -20,7 +20,6 @@ import (
"fmt" "fmt"
autoscaling "k8s.io/api/autoscaling/v1" autoscaling "k8s.io/api/autoscaling/v1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
serializer "k8s.io/apimachinery/pkg/runtime/serializer" serializer "k8s.io/apimachinery/pkg/runtime/serializer"
...@@ -41,7 +40,7 @@ type restInterfaceProvider func(*restclient.Config) (restclient.Interface, error ...@@ -41,7 +40,7 @@ type restInterfaceProvider func(*restclient.Config) (restclient.Interface, error
// It behaves somewhat similarly to the dynamic ClientPool, // It behaves somewhat similarly to the dynamic ClientPool,
// but is more specifically scoped to Scale. // but is more specifically scoped to Scale.
type scaleClient struct { type scaleClient struct {
mapper meta.RESTMapper mapper PreferredResourceMapper
apiPathResolverFunc dynamic.APIPathResolverFunc apiPathResolverFunc dynamic.APIPathResolverFunc
scaleKindResolver ScaleKindResolver scaleKindResolver ScaleKindResolver
...@@ -51,7 +50,7 @@ type scaleClient struct { ...@@ -51,7 +50,7 @@ type scaleClient struct {
// NewForConfig creates a new ScalesGetter which resolves kinds // NewForConfig creates a new ScalesGetter which resolves kinds
// to resources using the given RESTMapper, and API paths using // to resources using the given RESTMapper, and API paths using
// the given dynamic.APIPathResolverFunc. // the given dynamic.APIPathResolverFunc.
func NewForConfig(cfg *restclient.Config, mapper meta.RESTMapper, resolver dynamic.APIPathResolverFunc, scaleKindResolver ScaleKindResolver) (ScalesGetter, error) { func NewForConfig(cfg *restclient.Config, mapper PreferredResourceMapper, resolver dynamic.APIPathResolverFunc, scaleKindResolver ScaleKindResolver) (ScalesGetter, error) {
// so that the RESTClientFor doesn't complain // so that the RESTClientFor doesn't complain
cfg.GroupVersion = &schema.GroupVersion{} cfg.GroupVersion = &schema.GroupVersion{}
...@@ -72,7 +71,7 @@ func NewForConfig(cfg *restclient.Config, mapper meta.RESTMapper, resolver dynam ...@@ -72,7 +71,7 @@ func NewForConfig(cfg *restclient.Config, mapper meta.RESTMapper, resolver dynam
// New creates a new ScalesGetter using the given client to make requests. // New creates a new ScalesGetter using the given client to make requests.
// The GroupVersion on the client is ignored. // The GroupVersion on the client is ignored.
func New(baseClient restclient.Interface, mapper meta.RESTMapper, resolver dynamic.APIPathResolverFunc, scaleKindResolver ScaleKindResolver) ScalesGetter { func New(baseClient restclient.Interface, mapper PreferredResourceMapper, resolver dynamic.APIPathResolverFunc, scaleKindResolver ScaleKindResolver) ScalesGetter {
return &scaleClient{ return &scaleClient{
mapper: mapper, mapper: mapper,
......
...@@ -21,6 +21,7 @@ import ( ...@@ -21,6 +21,7 @@ import (
"strings" "strings"
"sync" "sync"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
serializer "k8s.io/apimachinery/pkg/runtime/serializer" serializer "k8s.io/apimachinery/pkg/runtime/serializer"
...@@ -34,6 +35,15 @@ import ( ...@@ -34,6 +35,15 @@ import (
scaleext "k8s.io/client-go/scale/scheme/extensionsv1beta1" scaleext "k8s.io/client-go/scale/scheme/extensionsv1beta1"
) )
// PreferredResourceMapper determines the preferred version of a resource to scale
type PreferredResourceMapper interface {
// ResourceFor takes a partial resource and returns the preferred resource.
ResourceFor(resource schema.GroupVersionResource) (preferredResource schema.GroupVersionResource, err error)
}
// Ensure a RESTMapper satisfies the PreferredResourceMapper interface
var _ PreferredResourceMapper = meta.RESTMapper(nil)
// ScaleKindResolver knows about the relationship between // ScaleKindResolver knows about the relationship between
// resources and the GroupVersionKind of their scale subresources. // resources and the GroupVersionKind of their scale subresources.
type ScaleKindResolver interface { type ScaleKindResolver interface {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment