Skip to content

Commit 5416352

Browse files
committed
Ensure conversions are registered for metainternalversion codecs
1 parent 6348200 commit 5416352

File tree

23 files changed

+157
-73
lines changed

23 files changed

+157
-73
lines changed
Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,6 @@
11
package(default_visibility = ["//visibility:public"])
22

3-
load(
4-
"@io_bazel_rules_go//go:def.bzl",
5-
"go_library",
6-
"go_test",
7-
)
8-
9-
go_test(
10-
name = "go_default_test",
11-
srcs = [
12-
"register_test.go",
13-
"roundtrip_test.go",
14-
],
15-
embed = [":go_default_library"],
16-
deps = [
17-
"//staging/src/k8s.io/apimachinery/pkg/api/apitesting/roundtrip:go_default_library",
18-
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library",
19-
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
20-
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
21-
],
22-
)
3+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
234

245
go_library(
256
name = "go_default_library",
@@ -40,7 +21,6 @@ go_library(
4021
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
4122
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
4223
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
43-
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
4424
],
4525
)
4626

@@ -53,6 +33,9 @@ filegroup(
5333

5434
filegroup(
5535
name = "all-srcs",
56-
srcs = [":package-srcs"],
36+
srcs = [
37+
":package-srcs",
38+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme:all-srcs",
39+
],
5740
tags = ["automanaged"],
5841
)

staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,11 @@ import (
2121
metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
2222
"k8s.io/apimachinery/pkg/runtime"
2323
"k8s.io/apimachinery/pkg/runtime/schema"
24-
"k8s.io/apimachinery/pkg/runtime/serializer"
2524
)
2625

2726
// GroupName is the group name for this API.
2827
const GroupName = "meta.k8s.io"
2928

30-
// Scheme is the registry for any type that adheres to the meta API spec.
31-
var scheme = runtime.NewScheme()
32-
3329
var (
3430
// TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api.
3531
// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
@@ -38,22 +34,16 @@ var (
3834
AddToScheme = localSchemeBuilder.AddToScheme
3935
)
4036

41-
// Codecs provides access to encoding and decoding for the scheme.
42-
var Codecs = serializer.NewCodecFactory(scheme)
43-
4437
// SchemeGroupVersion is group version used to register these objects
4538
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
4639

47-
// ParameterCodec handles versioning of objects that are converted to query parameters.
48-
var ParameterCodec = runtime.NewParameterCodec(scheme)
49-
5040
// Kind takes an unqualified kind and returns a Group qualified GroupKind
5141
func Kind(kind string) schema.GroupKind {
5242
return SchemeGroupVersion.WithKind(kind).GroupKind()
5343
}
5444

5545
// addToGroupVersion registers common meta types into schemas.
56-
func addToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) error {
46+
func addToGroupVersion(scheme *runtime.Scheme) error {
5747
if err := scheme.AddIgnoredConversionType(&metav1.TypeMeta{}, &metav1.TypeMeta{}); err != nil {
5848
return err
5949
}
@@ -104,7 +94,5 @@ func addToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion)
10494
// Unlike other API groups, meta internal knows about all meta external versions, but keeps
10595
// the logic for conversion private.
10696
func init() {
107-
if err := addToGroupVersion(scheme, SchemeGroupVersion); err != nil {
108-
panic(err)
109-
}
97+
localSchemeBuilder.Register(addToGroupVersion)
11098
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = [
6+
"doc.go",
7+
"register.go",
8+
],
9+
importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme",
10+
importpath = "k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme",
11+
visibility = ["//visibility:public"],
12+
deps = [
13+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
14+
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
15+
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
16+
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
17+
],
18+
)
19+
20+
filegroup(
21+
name = "package-srcs",
22+
srcs = glob(["**"]),
23+
tags = ["automanaged"],
24+
visibility = ["//visibility:private"],
25+
)
26+
27+
filegroup(
28+
name = "all-srcs",
29+
srcs = [":package-srcs"],
30+
tags = ["automanaged"],
31+
visibility = ["//visibility:public"],
32+
)
33+
34+
go_test(
35+
name = "go_default_test",
36+
srcs = [
37+
"register_test.go",
38+
"roundtrip_test.go",
39+
],
40+
embed = [":go_default_library"],
41+
deps = [
42+
"//staging/src/k8s.io/apimachinery/pkg/api/apitesting/roundtrip:go_default_library",
43+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library",
44+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
45+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
46+
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
47+
],
48+
)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
Copyright 2016 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package scheme // import "k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
Copyright 2017 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package scheme
18+
19+
import (
20+
"k8s.io/apimachinery/pkg/apis/meta/internalversion"
21+
"k8s.io/apimachinery/pkg/runtime"
22+
"k8s.io/apimachinery/pkg/runtime/serializer"
23+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
24+
)
25+
26+
// Scheme is the registry for any type that adheres to the meta API spec.
27+
var scheme = runtime.NewScheme()
28+
29+
// Codecs provides access to encoding and decoding for the scheme.
30+
var Codecs = serializer.NewCodecFactory(scheme)
31+
32+
// ParameterCodec handles versioning of objects that are converted to query parameters.
33+
var ParameterCodec = runtime.NewParameterCodec(scheme)
34+
35+
// Unlike other API groups, meta internal knows about all meta external versions, but keeps
36+
// the logic for conversion private.
37+
func init() {
38+
utilruntime.Must(internalversion.AddToScheme(scheme))
39+
}

staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/register_test.go renamed to staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme/register_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package internalversion
17+
package scheme
1818

1919
import (
2020
"net/url"
2121
"reflect"
2222
"testing"
2323

24+
metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion"
2425
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2526
"k8s.io/apimachinery/pkg/util/diff"
2627
)
@@ -35,7 +36,7 @@ func TestListOptions(t *testing.T) {
3536
TimeoutSeconds: &ten,
3637
Watch: true,
3738
}
38-
out := &ListOptions{}
39+
out := &metainternalversion.ListOptions{}
3940
if err := scheme.Convert(in, out, nil); err != nil {
4041
t.Fatal(err)
4142
}
@@ -52,7 +53,7 @@ func TestListOptions(t *testing.T) {
5253
{LabelSelector: "a!!!"},
5354
{FieldSelector: "a!!!"},
5455
} {
55-
out = &ListOptions{}
56+
out = &metainternalversion.ListOptions{}
5657
if err := scheme.Convert(failingObject, out, nil); err == nil {
5758
t.Errorf("%d: unexpected conversion: %#v", i, out)
5859
}
@@ -62,7 +63,7 @@ func TestListOptions(t *testing.T) {
6263
if gvks, unversioned, err := scheme.ObjectKinds(in); err != nil || unversioned || gvks[0] != metav1.SchemeGroupVersion.WithKind("ListOptions") {
6364
t.Errorf("unexpected: %v %v %v", gvks[0], unversioned, err)
6465
}
65-
if gvks, unversioned, err := scheme.ObjectKinds(out); err != nil || unversioned || gvks[0] != SchemeGroupVersion.WithKind("ListOptions") {
66+
if gvks, unversioned, err := scheme.ObjectKinds(out); err != nil || unversioned || gvks[0] != metainternalversion.SchemeGroupVersion.WithKind("ListOptions") {
6667
t.Errorf("unexpected: %v %v %v", gvks[0], unversioned, err)
6768
}
6869

staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/roundtrip_test.go renamed to staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme/roundtrip_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package internalversion
17+
package scheme
1818

1919
import (
2020
"testing"

staging/src/k8s.io/apiserver/pkg/endpoints/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ go_test(
2222
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
2323
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
2424
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
25+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme:go_default_library",
2526
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
2627
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
2728
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library",

staging/src/k8s.io/apiserver/pkg/endpoints/apiserver_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
apierrs "k8s.io/apimachinery/pkg/api/errors"
4444
"k8s.io/apimachinery/pkg/api/meta"
4545
metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion"
46+
metainternalversionscheme "k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme"
4647
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
4748
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
4849
metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
@@ -1869,7 +1870,7 @@ func TestGetTable(t *testing.T) {
18691870
{
18701871
partial := meta.AsPartialObjectMetadata(m)
18711872
partial.GetObjectKind().SetGroupVersionKind(metav1beta1.SchemeGroupVersion.WithKind("PartialObjectMetadata"))
1872-
encodedBody, err := runtime.Encode(metainternalversion.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion), partial)
1873+
encodedBody, err := runtime.Encode(metainternalversionscheme.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion), partial)
18731874
if err != nil {
18741875
t.Fatal(err)
18751876
}
@@ -1880,7 +1881,7 @@ func TestGetTable(t *testing.T) {
18801881
{
18811882
partial := meta.AsPartialObjectMetadata(m)
18821883
partial.GetObjectKind().SetGroupVersionKind(metav1.SchemeGroupVersion.WithKind("PartialObjectMetadata"))
1883-
encodedBody, err := runtime.Encode(metainternalversion.Codecs.LegacyCodec(metav1.SchemeGroupVersion), partial)
1884+
encodedBody, err := runtime.Encode(metainternalversionscheme.Codecs.LegacyCodec(metav1.SchemeGroupVersion), partial)
18841885
if err != nil {
18851886
t.Fatal(err)
18861887
}
@@ -2070,14 +2071,14 @@ func TestWatchTable(t *testing.T) {
20702071
}
20712072
partial := meta.AsPartialObjectMetadata(m)
20722073
partial.GetObjectKind().SetGroupVersionKind(metav1beta1.SchemeGroupVersion.WithKind("PartialObjectMetadata"))
2073-
encodedBody, err := runtime.Encode(metainternalversion.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion), partial)
2074+
encodedBody, err := runtime.Encode(metainternalversionscheme.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion), partial)
20742075
if err != nil {
20752076
t.Fatal(err)
20762077
}
20772078
// the codec includes a trailing newline that is not present during decode
20782079
encodedBody = bytes.TrimSpace(encodedBody)
20792080

2080-
encodedBodyV1, err := runtime.Encode(metainternalversion.Codecs.LegacyCodec(metav1.SchemeGroupVersion), partial)
2081+
encodedBodyV1, err := runtime.Encode(metainternalversionscheme.Codecs.LegacyCodec(metav1.SchemeGroupVersion), partial)
20812082
if err != nil {
20822083
t.Fatal(err)
20832084
}
@@ -2086,7 +2087,7 @@ func TestWatchTable(t *testing.T) {
20862087

20872088
metaDoc := metav1.ObjectMeta{}.SwaggerDoc()
20882089

2089-
s := metainternalversion.Codecs.SupportedMediaTypes()[0].Serializer
2090+
s := metainternalversionscheme.Codecs.SupportedMediaTypes()[0].Serializer
20902091

20912092
tests := []struct {
20922093
accept string
@@ -2303,7 +2304,7 @@ func TestWatchTable(t *testing.T) {
23032304
}
23042305

23052306
func watcher(mediaType string, r io.ReadCloser) streaming.Decoder {
2306-
info, ok := runtime.SerializerInfoForMediaType(metainternalversion.Codecs.SupportedMediaTypes(), mediaType)
2307+
info, ok := runtime.SerializerInfoForMediaType(metainternalversionscheme.Codecs.SupportedMediaTypes(), mediaType)
23072308
if !ok || info.StreamSerializer == nil {
23082309
panic(info)
23092310
}
@@ -2477,7 +2478,7 @@ func TestGetPartialObjectMetadata(t *testing.T) {
24772478
}
24782479
body := ""
24792480
if test.expected != nil {
2480-
itemOut, d, err := extractBodyObject(resp, metainternalversion.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion))
2481+
itemOut, d, err := extractBodyObject(resp, metainternalversionscheme.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion))
24812482
if err != nil {
24822483
t.Fatal(err)
24832484
}

staging/src/k8s.io/apiserver/pkg/endpoints/handlers/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ go_library(
6262
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
6363
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
6464
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
65+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme:go_default_library",
6566
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
6667
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
6768
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library",

0 commit comments

Comments
 (0)