mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-02 16:29:21 +00:00
expose discovery information on scalable resources
This commit is contained in:
parent
6a845c67f0
commit
65d0f188f6
@ -44,6 +44,7 @@ go_library(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/registry/generic"
|
"k8s.io/apiserver/pkg/registry/generic"
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||||
@ -126,6 +127,11 @@ type ScaleREST struct {
|
|||||||
|
|
||||||
// ScaleREST implements Patcher
|
// ScaleREST implements Patcher
|
||||||
var _ = rest.Patcher(&ScaleREST{})
|
var _ = rest.Patcher(&ScaleREST{})
|
||||||
|
var _ = rest.GroupVersionKindProvider(&ScaleREST{})
|
||||||
|
|
||||||
|
func (r *ScaleREST) GroupVersionKind() schema.GroupVersionKind {
|
||||||
|
return schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Scale"}
|
||||||
|
}
|
||||||
|
|
||||||
// New creates a new Scale object
|
// New creates a new Scale object
|
||||||
func (r *ScaleREST) New() runtime.Object {
|
func (r *ScaleREST) New() runtime.Object {
|
||||||
|
@ -44,6 +44,7 @@ go_library(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/registry/generic"
|
"k8s.io/apiserver/pkg/registry/generic"
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||||
@ -129,6 +130,11 @@ type ScaleREST struct {
|
|||||||
|
|
||||||
// ScaleREST implements Patcher
|
// ScaleREST implements Patcher
|
||||||
var _ = rest.Patcher(&ScaleREST{})
|
var _ = rest.Patcher(&ScaleREST{})
|
||||||
|
var _ = rest.GroupVersionKindProvider(&ScaleREST{})
|
||||||
|
|
||||||
|
func (r *ScaleREST) GroupVersionKind() schema.GroupVersionKind {
|
||||||
|
return schema.GroupVersionKind{Group: "autoscaling", Version: "v1", Kind: "Scale"}
|
||||||
|
}
|
||||||
|
|
||||||
// New creates a new Scale object
|
// New creates a new Scale object
|
||||||
func (r *ScaleREST) New() runtime.Object {
|
func (r *ScaleREST) New() runtime.Object {
|
||||||
|
@ -42,6 +42,7 @@ go_library(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/registry/generic"
|
"k8s.io/apiserver/pkg/registry/generic"
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||||
@ -194,6 +195,11 @@ type ScaleREST struct {
|
|||||||
|
|
||||||
// ScaleREST implements Patcher
|
// ScaleREST implements Patcher
|
||||||
var _ = rest.Patcher(&ScaleREST{})
|
var _ = rest.Patcher(&ScaleREST{})
|
||||||
|
var _ = rest.GroupVersionKindProvider(&ScaleREST{})
|
||||||
|
|
||||||
|
func (r *ScaleREST) GroupVersionKind() schema.GroupVersionKind {
|
||||||
|
return schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Scale"}
|
||||||
|
}
|
||||||
|
|
||||||
// New creates a new Scale object
|
// New creates a new Scale object
|
||||||
func (r *ScaleREST) New() runtime.Object {
|
func (r *ScaleREST) New() runtime.Object {
|
||||||
|
@ -43,6 +43,7 @@ go_library(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
|
||||||
|
@ -24,6 +24,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/registry/generic"
|
"k8s.io/apiserver/pkg/registry/generic"
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||||
@ -128,6 +129,11 @@ type ScaleREST struct {
|
|||||||
|
|
||||||
// ScaleREST implements Patcher
|
// ScaleREST implements Patcher
|
||||||
var _ = rest.Patcher(&ScaleREST{})
|
var _ = rest.Patcher(&ScaleREST{})
|
||||||
|
var _ = rest.GroupVersionKindProvider(&ScaleREST{})
|
||||||
|
|
||||||
|
func (r *ScaleREST) GroupVersionKind() schema.GroupVersionKind {
|
||||||
|
return schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Scale"}
|
||||||
|
}
|
||||||
|
|
||||||
// New creates a new Scale object
|
// New creates a new Scale object
|
||||||
func (r *ScaleREST) New() runtime.Object {
|
func (r *ScaleREST) New() runtime.Object {
|
||||||
|
@ -378,20 +378,8 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
|||||||
resourceKind = kind
|
resourceKind = kind
|
||||||
}
|
}
|
||||||
|
|
||||||
var shortNames []string
|
|
||||||
shortNamesProvider, ok := storage.(rest.ShortNamesProvider)
|
|
||||||
if ok {
|
|
||||||
shortNames = shortNamesProvider.ShortNames()
|
|
||||||
}
|
|
||||||
|
|
||||||
tableProvider, _ := storage.(rest.TableConvertor)
|
tableProvider, _ := storage.(rest.TableConvertor)
|
||||||
|
|
||||||
var categories []string
|
|
||||||
categoriesProvider, ok := storage.(rest.CategoriesProvider)
|
|
||||||
if ok {
|
|
||||||
categories = categoriesProvider.Categories()
|
|
||||||
}
|
|
||||||
|
|
||||||
var apiResource metav1.APIResource
|
var apiResource metav1.APIResource
|
||||||
// Get the list of actions for the given scope.
|
// Get the list of actions for the given scope.
|
||||||
switch scope.Name() {
|
switch scope.Name() {
|
||||||
@ -867,8 +855,19 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
|||||||
apiResource.Verbs = append(apiResource.Verbs, kubeVerb)
|
apiResource.Verbs = append(apiResource.Verbs, kubeVerb)
|
||||||
}
|
}
|
||||||
sort.Strings(apiResource.Verbs)
|
sort.Strings(apiResource.Verbs)
|
||||||
apiResource.ShortNames = shortNames
|
|
||||||
apiResource.Categories = categories
|
if shortNamesProvider, ok := storage.(rest.ShortNamesProvider); ok {
|
||||||
|
apiResource.ShortNames = shortNamesProvider.ShortNames()
|
||||||
|
}
|
||||||
|
if categoriesProvider, ok := storage.(rest.CategoriesProvider); ok {
|
||||||
|
apiResource.Categories = categoriesProvider.Categories()
|
||||||
|
}
|
||||||
|
if gvkProvider, ok := storage.(rest.GroupVersionKindProvider); ok {
|
||||||
|
gvk := gvkProvider.GroupVersionKind()
|
||||||
|
apiResource.Group = gvk.Group
|
||||||
|
apiResource.Version = gvk.Version
|
||||||
|
apiResource.Kind = gvk.Kind
|
||||||
|
}
|
||||||
|
|
||||||
return &apiResource, nil
|
return &apiResource, nil
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,14 @@ type CategoriesProvider interface {
|
|||||||
Categories() []string
|
Categories() []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GroupVersionKindProvider is used to specify a particular GroupVersionKind to discovery. This is used for polymorphic endpoints
|
||||||
|
// which generally point to foreign versions. Scale refers to Scale.v1beta1.extensions for instance.
|
||||||
|
// This trumps KindProvider since it is capable of providing the information required.
|
||||||
|
// TODO KindProvider (only used by federation) should be removed and replaced with this, but that presents greater risk late in 1.8.
|
||||||
|
type GroupVersionKindProvider interface {
|
||||||
|
GroupVersionKind() schema.GroupVersionKind
|
||||||
|
}
|
||||||
|
|
||||||
// Lister is an object that can retrieve resources that match the provided field and label criteria.
|
// Lister is an object that can retrieve resources that match the provided field and label criteria.
|
||||||
type Lister interface {
|
type Lister interface {
|
||||||
// NewList returns an empty object that can be used with the List call.
|
// NewList returns an empty object that can be used with the List call.
|
||||||
|
Loading…
Reference in New Issue
Block a user