Skip to content

Commit 4dd1e3f

Browse files
authored
Merge pull request kubernetes#82585 from wojtek-t/fix_meta_internalversion_codecs
Ensure conversions are registered for metainternalversion codecs
2 parents e53a952 + 5416352 commit 4dd1e3f

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
@@ -44,6 +44,7 @@ import (
4444
apierrs "k8s.io/apimachinery/pkg/api/errors"
4545
"k8s.io/apimachinery/pkg/api/meta"
4646
metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion"
47+
metainternalversionscheme "k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme"
4748
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
4849
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
4950
metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
@@ -1874,7 +1875,7 @@ func TestGetTable(t *testing.T) {
18741875
{
18751876
partial := meta.AsPartialObjectMetadata(m)
18761877
partial.GetObjectKind().SetGroupVersionKind(metav1beta1.SchemeGroupVersion.WithKind("PartialObjectMetadata"))
1877-
encodedBody, err := runtime.Encode(metainternalversion.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion), partial)
1878+
encodedBody, err := runtime.Encode(metainternalversionscheme.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion), partial)
18781879
if err != nil {
18791880
t.Fatal(err)
18801881
}
@@ -1885,7 +1886,7 @@ func TestGetTable(t *testing.T) {
18851886
{
18861887
partial := meta.AsPartialObjectMetadata(m)
18871888
partial.GetObjectKind().SetGroupVersionKind(metav1.SchemeGroupVersion.WithKind("PartialObjectMetadata"))
1888-
encodedBody, err := runtime.Encode(metainternalversion.Codecs.LegacyCodec(metav1.SchemeGroupVersion), partial)
1889+
encodedBody, err := runtime.Encode(metainternalversionscheme.Codecs.LegacyCodec(metav1.SchemeGroupVersion), partial)
18891890
if err != nil {
18901891
t.Fatal(err)
18911892
}
@@ -2075,14 +2076,14 @@ func TestWatchTable(t *testing.T) {
20752076
}
20762077
partial := meta.AsPartialObjectMetadata(m)
20772078
partial.GetObjectKind().SetGroupVersionKind(metav1beta1.SchemeGroupVersion.WithKind("PartialObjectMetadata"))
2078-
encodedBody, err := runtime.Encode(metainternalversion.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion), partial)
2079+
encodedBody, err := runtime.Encode(metainternalversionscheme.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion), partial)
20792080
if err != nil {
20802081
t.Fatal(err)
20812082
}
20822083
// the codec includes a trailing newline that is not present during decode
20832084
encodedBody = bytes.TrimSpace(encodedBody)
20842085

2085-
encodedBodyV1, err := runtime.Encode(metainternalversion.Codecs.LegacyCodec(metav1.SchemeGroupVersion), partial)
2086+
encodedBodyV1, err := runtime.Encode(metainternalversionscheme.Codecs.LegacyCodec(metav1.SchemeGroupVersion), partial)
20862087
if err != nil {
20872088
t.Fatal(err)
20882089
}
@@ -2091,7 +2092,7 @@ func TestWatchTable(t *testing.T) {
20912092

20922093
metaDoc := metav1.ObjectMeta{}.SwaggerDoc()
20932094

2094-
s := metainternalversion.Codecs.SupportedMediaTypes()[0].Serializer
2095+
s := metainternalversionscheme.Codecs.SupportedMediaTypes()[0].Serializer
20952096

20962097
tests := []struct {
20972098
accept string
@@ -2308,7 +2309,7 @@ func TestWatchTable(t *testing.T) {
23082309
}
23092310

23102311
func watcher(mediaType string, r io.ReadCloser) streaming.Decoder {
2311-
info, ok := runtime.SerializerInfoForMediaType(metainternalversion.Codecs.SupportedMediaTypes(), mediaType)
2312+
info, ok := runtime.SerializerInfoForMediaType(metainternalversionscheme.Codecs.SupportedMediaTypes(), mediaType)
23122313
if !ok || info.StreamSerializer == nil {
23132314
panic(info)
23142315
}
@@ -2482,7 +2483,7 @@ func TestGetPartialObjectMetadata(t *testing.T) {
24822483
}
24832484
body := ""
24842485
if test.expected != nil {
2485-
itemOut, d, err := extractBodyObject(resp, metainternalversion.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion))
2486+
itemOut, d, err := extractBodyObject(resp, metainternalversionscheme.Codecs.LegacyCodec(metav1beta1.SchemeGroupVersion))
24862487
if err != nil {
24872488
t.Fatal(err)
24882489
}

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)