mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 21:17:23 +00:00
move CRD server unstructured typer to point of use
This commit is contained in:
parent
91b729342d
commit
d3731fe098
@ -48,6 +48,7 @@ filegroup(
|
|||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/establish:all-srcs",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/establish:all-srcs",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer:all-srcs",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer:all-srcs",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status:all-srcs",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status:all-srcs",
|
||||||
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/crdserverscheme:all-srcs",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/features:all-srcs",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/features:all-srcs",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource:all-srcs",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource:all-srcs",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition:all-srcs",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition:all-srcs",
|
||||||
|
@ -33,6 +33,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/establish:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/establish:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/crdserverscheme:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/features:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/features:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor:go_default_library",
|
||||||
@ -65,7 +66,6 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/storage/storagebackend:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/storage/storagebackend:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/discovery:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/scale:go_default_library",
|
"//staging/src/k8s.io/client-go/scale:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/scale/scheme/autoscalingv1:go_default_library",
|
"//staging/src/k8s.io/client-go/scale/scheme/autoscalingv1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
|
@ -52,7 +52,6 @@ import (
|
|||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||||
"k8s.io/apiserver/pkg/storage/storagebackend"
|
"k8s.io/apiserver/pkg/storage/storagebackend"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
"k8s.io/client-go/discovery"
|
|
||||||
"k8s.io/client-go/scale"
|
"k8s.io/client-go/scale"
|
||||||
"k8s.io/client-go/scale/scheme/autoscalingv1"
|
"k8s.io/client-go/scale/scheme/autoscalingv1"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
@ -64,6 +63,7 @@ import (
|
|||||||
listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion"
|
listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/controller/establish"
|
"k8s.io/apiextensions-apiserver/pkg/controller/establish"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/controller/finalizer"
|
"k8s.io/apiextensions-apiserver/pkg/controller/finalizer"
|
||||||
|
"k8s.io/apiextensions-apiserver/pkg/crdserverscheme"
|
||||||
apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features"
|
apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/registry/customresource"
|
"k8s.io/apiextensions-apiserver/pkg/registry/customresource"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor"
|
"k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor"
|
||||||
@ -622,7 +622,7 @@ type UnstructuredObjectTyper struct {
|
|||||||
func newUnstructuredObjectTyper(Delegate runtime.ObjectTyper) UnstructuredObjectTyper {
|
func newUnstructuredObjectTyper(Delegate runtime.ObjectTyper) UnstructuredObjectTyper {
|
||||||
return UnstructuredObjectTyper{
|
return UnstructuredObjectTyper{
|
||||||
Delegate: Delegate,
|
Delegate: Delegate,
|
||||||
UnstructuredTyper: discovery.NewUnstructuredObjectTyper(),
|
UnstructuredTyper: crdserverscheme.NewUnstructuredObjectTyper(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -710,7 +710,7 @@ func (t crdConversionRESTOptionsGetter) GetRESTOptions(resource schema.GroupReso
|
|||||||
dropInvalidMetadata: true,
|
dropInvalidMetadata: true,
|
||||||
}}
|
}}
|
||||||
c := schemaCoercingConverter{delegate: t.converter, validator: unstructuredSchemaCoercer{}}
|
c := schemaCoercingConverter{delegate: t.converter, validator: unstructuredSchemaCoercer{}}
|
||||||
ret.StorageConfig.Codec = versioning.NewCodec(ret.StorageConfig.Codec, d, c, &unstructuredCreator{}, discovery.NewUnstructuredObjectTyper(), &unstructuredDefaulter{delegate: Scheme}, t.encoderVersion, t.decoderVersion)
|
ret.StorageConfig.Codec = versioning.NewCodec(ret.StorageConfig.Codec, d, c, &unstructuredCreator{}, crdserverscheme.NewUnstructuredObjectTyper(), &unstructuredDefaulter{delegate: Scheme}, t.encoderVersion, t.decoderVersion)
|
||||||
}
|
}
|
||||||
return ret, err
|
return ret, err
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["unstructured.go"],
|
||||||
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/crdserverscheme",
|
||||||
|
importpath = "k8s.io/apiextensions-apiserver/pkg/crdserverscheme",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package discovery
|
package crdserverscheme
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
@ -26,7 +26,6 @@ import (
|
|||||||
// UnstructuredObjectTyper provides a runtime.ObjectTyper implementation for
|
// UnstructuredObjectTyper provides a runtime.ObjectTyper implementation for
|
||||||
// runtime.Unstructured object based on discovery information.
|
// runtime.Unstructured object based on discovery information.
|
||||||
type UnstructuredObjectTyper struct {
|
type UnstructuredObjectTyper struct {
|
||||||
typers []runtime.ObjectTyper
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewUnstructuredObjectTyper returns a runtime.ObjectTyper for
|
// NewUnstructuredObjectTyper returns a runtime.ObjectTyper for
|
||||||
@ -34,10 +33,8 @@ type UnstructuredObjectTyper struct {
|
|||||||
// for handling objects that are not runtime.Unstructured. It does not delegate the Recognizes
|
// for handling objects that are not runtime.Unstructured. It does not delegate the Recognizes
|
||||||
// check, only ObjectKinds.
|
// check, only ObjectKinds.
|
||||||
// TODO this only works for the apiextensions server and doesn't recognize any types. Move to point of use.
|
// TODO this only works for the apiextensions server and doesn't recognize any types. Move to point of use.
|
||||||
func NewUnstructuredObjectTyper(typers ...runtime.ObjectTyper) *UnstructuredObjectTyper {
|
func NewUnstructuredObjectTyper() *UnstructuredObjectTyper {
|
||||||
dot := &UnstructuredObjectTyper{
|
dot := &UnstructuredObjectTyper{}
|
||||||
typers: typers,
|
|
||||||
}
|
|
||||||
return dot
|
return dot
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,19 +54,8 @@ func (d *UnstructuredObjectTyper) ObjectKinds(obj runtime.Object) (gvks []schema
|
|||||||
}
|
}
|
||||||
return []schema.GroupVersionKind{gvk}, false, nil
|
return []schema.GroupVersionKind{gvk}, false, nil
|
||||||
}
|
}
|
||||||
var lastErr error
|
|
||||||
for _, typer := range d.typers {
|
return nil, false, runtime.NewNotRegisteredErrForType("crdserverscheme.UnstructuredObjectTyper", reflect.TypeOf(obj))
|
||||||
gvks, unversioned, err := typer.ObjectKinds(obj)
|
|
||||||
if err != nil {
|
|
||||||
lastErr = err
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
return gvks, unversioned, nil
|
|
||||||
}
|
|
||||||
if lastErr == nil {
|
|
||||||
lastErr = runtime.NewNotRegisteredErrForType(reflect.TypeOf(obj))
|
|
||||||
}
|
|
||||||
return nil, false, lastErr
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recognizes returns true if the provided group,version,kind was in the
|
// Recognizes returns true if the provided group,version,kind was in the
|
@ -72,6 +72,7 @@ go_test(
|
|||||||
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
|
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/crdserverscheme:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
@ -87,6 +88,5 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apiserver/pkg/registry/generic/testing:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/registry/generic/testing:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/storage/etcd/testing:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/storage/etcd/testing:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/discovery:go_default_library",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -38,10 +38,10 @@ import (
|
|||||||
registrytest "k8s.io/apiserver/pkg/registry/generic/testing"
|
registrytest "k8s.io/apiserver/pkg/registry/generic/testing"
|
||||||
"k8s.io/apiserver/pkg/registry/rest"
|
"k8s.io/apiserver/pkg/registry/rest"
|
||||||
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
|
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
|
||||||
"k8s.io/client-go/discovery"
|
|
||||||
|
|
||||||
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
|
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/apiserver"
|
"k8s.io/apiextensions-apiserver/pkg/apiserver"
|
||||||
|
"k8s.io/apiextensions-apiserver/pkg/crdserverscheme"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/registry/customresource"
|
"k8s.io/apiextensions-apiserver/pkg/registry/customresource"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor"
|
"k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor"
|
||||||
)
|
)
|
||||||
@ -61,7 +61,7 @@ func newStorage(t *testing.T) (customresource.CustomResourceStorage, *etcdtestin
|
|||||||
|
|
||||||
typer := apiserver.UnstructuredObjectTyper{
|
typer := apiserver.UnstructuredObjectTyper{
|
||||||
Delegate: parameterScheme,
|
Delegate: parameterScheme,
|
||||||
UnstructuredTyper: discovery.NewUnstructuredObjectTyper(),
|
UnstructuredTyper: crdserverscheme.NewUnstructuredObjectTyper(),
|
||||||
}
|
}
|
||||||
|
|
||||||
kind := schema.GroupVersionKind{Group: "mygroup.example.com", Version: "v1beta1", Kind: "Noxu"}
|
kind := schema.GroupVersionKind{Group: "mygroup.example.com", Version: "v1beta1", Kind: "Noxu"}
|
||||||
|
@ -14,7 +14,6 @@ go_library(
|
|||||||
"doc.go",
|
"doc.go",
|
||||||
"helper.go",
|
"helper.go",
|
||||||
"round_tripper.go",
|
"round_tripper.go",
|
||||||
"unstructured.go",
|
|
||||||
],
|
],
|
||||||
importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/discovery",
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/discovery",
|
||||||
importpath = "k8s.io/client-go/discovery",
|
importpath = "k8s.io/client-go/discovery",
|
||||||
|
Loading…
Reference in New Issue
Block a user