mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #76824 from wojtek-t/cleanup_protobuf_contenttype
Cleanup content-type protobuf constants
This commit is contained in:
		@@ -121,7 +121,7 @@ func TestProtobufRoundTrip(t *testing.T) {
 | 
			
		||||
func BenchmarkEncodeCodecProtobuf(b *testing.B) {
 | 
			
		||||
	items := benchmarkItems(b)
 | 
			
		||||
	width := len(items)
 | 
			
		||||
	s := protobuf.NewSerializer(nil, nil, "application/arbitrary.content.type")
 | 
			
		||||
	s := protobuf.NewSerializer(nil, nil)
 | 
			
		||||
	b.ResetTimer()
 | 
			
		||||
	for i := 0; i < b.N; i++ {
 | 
			
		||||
		if _, err := runtime.Encode(s, &items[i%width]); err != nil {
 | 
			
		||||
@@ -142,7 +142,7 @@ func BenchmarkEncodeCodecFromInternalProtobuf(b *testing.B) {
 | 
			
		||||
			b.Fatal(err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	s := protobuf.NewSerializer(nil, nil, "application/arbitrary.content.type")
 | 
			
		||||
	s := protobuf.NewSerializer(nil, nil)
 | 
			
		||||
	codec := legacyscheme.Codecs.EncoderForVersion(s, v1.SchemeGroupVersion)
 | 
			
		||||
	b.ResetTimer()
 | 
			
		||||
	for i := 0; i < b.N; i++ {
 | 
			
		||||
@@ -170,7 +170,7 @@ func BenchmarkEncodeProtobufGeneratedMarshal(b *testing.B) {
 | 
			
		||||
func BenchmarkDecodeCodecToInternalProtobuf(b *testing.B) {
 | 
			
		||||
	items := benchmarkItems(b)
 | 
			
		||||
	width := len(items)
 | 
			
		||||
	s := protobuf.NewSerializer(legacyscheme.Scheme, legacyscheme.Scheme, "application/arbitrary.content.type")
 | 
			
		||||
	s := protobuf.NewSerializer(legacyscheme.Scheme, legacyscheme.Scheme)
 | 
			
		||||
	encoder := legacyscheme.Codecs.EncoderForVersion(s, v1.SchemeGroupVersion)
 | 
			
		||||
	var encoded [][]byte
 | 
			
		||||
	for i := range items {
 | 
			
		||||
 
 | 
			
		||||
@@ -231,7 +231,7 @@ func roundTripToAllExternalVersions(t *testing.T, scheme *runtime.Scheme, codecF
 | 
			
		||||
 | 
			
		||||
		// TODO remove this hack after we're past the intermediate steps
 | 
			
		||||
		if !skipProtobuf && externalGVK.Group != "kubeadm.k8s.io" {
 | 
			
		||||
			s := protobuf.NewSerializer(scheme, scheme, "application/arbitrary.content.type")
 | 
			
		||||
			s := protobuf.NewSerializer(scheme, scheme)
 | 
			
		||||
			protobufCodec := codecFactory.CodecForVersions(s, s, externalGVK.GroupVersion(), nil)
 | 
			
		||||
			roundTrip(t, scheme, protobufCodec, object)
 | 
			
		||||
		}
 | 
			
		||||
@@ -260,7 +260,7 @@ func roundTripOfExternalType(t *testing.T, scheme *runtime.Scheme, codecFactory
 | 
			
		||||
 | 
			
		||||
	// TODO remove this hack after we're past the intermediate steps
 | 
			
		||||
	if !skipProtobuf {
 | 
			
		||||
		roundTrip(t, scheme, protobuf.NewSerializer(scheme, scheme, "application/protobuf"), object)
 | 
			
		||||
		roundTrip(t, scheme, protobuf.NewSerializer(scheme, scheme), object)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,6 @@ go_library(
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "codec_factory.go",
 | 
			
		||||
        "negotiated_codec.go",
 | 
			
		||||
        "protobuf_extension.go",
 | 
			
		||||
    ],
 | 
			
		||||
    importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer",
 | 
			
		||||
    importpath = "k8s.io/apimachinery/pkg/runtime/serializer",
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/serializer/json"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/serializer/protobuf"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/serializer/recognizer"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/serializer/versioning"
 | 
			
		||||
)
 | 
			
		||||
@@ -51,6 +52,8 @@ func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory) []seri
 | 
			
		||||
	jsonSerializer := json.NewSerializer(mf, scheme, scheme, false)
 | 
			
		||||
	jsonPrettySerializer := json.NewSerializer(mf, scheme, scheme, true)
 | 
			
		||||
	yamlSerializer := json.NewYAMLSerializer(mf, scheme, scheme)
 | 
			
		||||
	serializer := protobuf.NewSerializer(scheme, scheme)
 | 
			
		||||
	raw := protobuf.NewRawSerializer(scheme, scheme)
 | 
			
		||||
 | 
			
		||||
	serializers := []serializerType{
 | 
			
		||||
		{
 | 
			
		||||
@@ -71,6 +74,15 @@ func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory) []seri
 | 
			
		||||
			EncodesAsText:      true,
 | 
			
		||||
			Serializer:         yamlSerializer,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			AcceptContentTypes: []string{runtime.ContentTypeProtobuf},
 | 
			
		||||
			ContentType:        runtime.ContentTypeProtobuf,
 | 
			
		||||
			FileExtensions:     []string{"pb"},
 | 
			
		||||
			Serializer:         serializer,
 | 
			
		||||
 | 
			
		||||
			Framer:           protobuf.LengthDelimitedFramer,
 | 
			
		||||
			StreamSerializer: raw,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, fn := range serializerExtensions {
 | 
			
		||||
 
 | 
			
		||||
@@ -71,20 +71,18 @@ func IsNotMarshalable(err error) bool {
 | 
			
		||||
// as-is (any type info passed with the object will be used).
 | 
			
		||||
//
 | 
			
		||||
// This encoding scheme is experimental, and is subject to change at any time.
 | 
			
		||||
func NewSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper, defaultContentType string) *Serializer {
 | 
			
		||||
func NewSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper) *Serializer {
 | 
			
		||||
	return &Serializer{
 | 
			
		||||
		prefix:      protoEncodingPrefix,
 | 
			
		||||
		creater:     creater,
 | 
			
		||||
		typer:       typer,
 | 
			
		||||
		contentType: defaultContentType,
 | 
			
		||||
		prefix:  protoEncodingPrefix,
 | 
			
		||||
		creater: creater,
 | 
			
		||||
		typer:   typer,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Serializer struct {
 | 
			
		||||
	prefix      []byte
 | 
			
		||||
	creater     runtime.ObjectCreater
 | 
			
		||||
	typer       runtime.ObjectTyper
 | 
			
		||||
	contentType string
 | 
			
		||||
	prefix  []byte
 | 
			
		||||
	creater runtime.ObjectCreater
 | 
			
		||||
	typer   runtime.ObjectTyper
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ runtime.Serializer = &Serializer{}
 | 
			
		||||
@@ -138,7 +136,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i
 | 
			
		||||
	if intoUnknown, ok := into.(*runtime.Unknown); ok && intoUnknown != nil {
 | 
			
		||||
		*intoUnknown = unk
 | 
			
		||||
		if ok, _, _ := s.RecognizesData(bytes.NewBuffer(unk.Raw)); ok {
 | 
			
		||||
			intoUnknown.ContentType = s.contentType
 | 
			
		||||
			intoUnknown.ContentType = runtime.ContentTypeProtobuf
 | 
			
		||||
		}
 | 
			
		||||
		return intoUnknown, &actual, nil
 | 
			
		||||
	}
 | 
			
		||||
@@ -303,20 +301,18 @@ func estimateUnknownSize(unk *runtime.Unknown, byteSize uint64) uint64 {
 | 
			
		||||
// encoded object, and thus is not self describing (callers must know what type is being described in order to decode).
 | 
			
		||||
//
 | 
			
		||||
// This encoding scheme is experimental, and is subject to change at any time.
 | 
			
		||||
func NewRawSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper, defaultContentType string) *RawSerializer {
 | 
			
		||||
func NewRawSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper) *RawSerializer {
 | 
			
		||||
	return &RawSerializer{
 | 
			
		||||
		creater:     creater,
 | 
			
		||||
		typer:       typer,
 | 
			
		||||
		contentType: defaultContentType,
 | 
			
		||||
		creater: creater,
 | 
			
		||||
		typer:   typer,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RawSerializer encodes and decodes objects without adding a runtime.Unknown wrapper (objects are encoded without identifying
 | 
			
		||||
// type).
 | 
			
		||||
type RawSerializer struct {
 | 
			
		||||
	creater     runtime.ObjectCreater
 | 
			
		||||
	typer       runtime.ObjectTyper
 | 
			
		||||
	contentType string
 | 
			
		||||
	creater runtime.ObjectCreater
 | 
			
		||||
	typer   runtime.ObjectTyper
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ runtime.Serializer = &RawSerializer{}
 | 
			
		||||
@@ -358,7 +354,7 @@ func (s *RawSerializer) Decode(originalData []byte, gvk *schema.GroupVersionKind
 | 
			
		||||
	if intoUnknown, ok := into.(*runtime.Unknown); ok && intoUnknown != nil {
 | 
			
		||||
		intoUnknown.Raw = data
 | 
			
		||||
		intoUnknown.ContentEncoding = ""
 | 
			
		||||
		intoUnknown.ContentType = s.contentType
 | 
			
		||||
		intoUnknown.ContentType = runtime.ContentTypeProtobuf
 | 
			
		||||
		intoUnknown.SetGroupVersionKind(*actual)
 | 
			
		||||
		return intoUnknown, actual, nil
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,48 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2014 The Kubernetes Authors.
 | 
			
		||||
 | 
			
		||||
Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
you may not use this file except in compliance with the License.
 | 
			
		||||
You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
    http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package serializer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/serializer/protobuf"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	// contentTypeProtobuf is the protobuf type exposed for Kubernetes. It is private to prevent others from
 | 
			
		||||
	// depending on it unintentionally.
 | 
			
		||||
	// TODO: potentially move to pkg/api (since it's part of the Kube public API) and pass it in to the
 | 
			
		||||
	//   CodecFactory on initialization.
 | 
			
		||||
	contentTypeProtobuf = "application/vnd.kubernetes.protobuf"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func protobufSerializer(scheme *runtime.Scheme) (serializerType, bool) {
 | 
			
		||||
	serializer := protobuf.NewSerializer(scheme, scheme, contentTypeProtobuf)
 | 
			
		||||
	raw := protobuf.NewRawSerializer(scheme, scheme, contentTypeProtobuf)
 | 
			
		||||
	return serializerType{
 | 
			
		||||
		AcceptContentTypes: []string{contentTypeProtobuf},
 | 
			
		||||
		ContentType:        contentTypeProtobuf,
 | 
			
		||||
		FileExtensions:     []string{"pb"},
 | 
			
		||||
		Serializer:         serializer,
 | 
			
		||||
 | 
			
		||||
		Framer:           protobuf.LengthDelimitedFramer,
 | 
			
		||||
		StreamSerializer: raw,
 | 
			
		||||
	}, true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	serializerExtensions = append(serializerExtensions, protobufSerializer)
 | 
			
		||||
}
 | 
			
		||||
@@ -84,7 +84,7 @@ func (d *testBufferedMarshalable) DeepCopyObject() runtime.Object {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestRecognize(t *testing.T) {
 | 
			
		||||
	s := protobuf.NewSerializer(nil, nil, "application/protobuf")
 | 
			
		||||
	s := protobuf.NewSerializer(nil, nil)
 | 
			
		||||
	ignores := [][]byte{
 | 
			
		||||
		nil,
 | 
			
		||||
		{},
 | 
			
		||||
@@ -172,7 +172,7 @@ func TestEncode(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i, test := range testCases {
 | 
			
		||||
		s := protobuf.NewSerializer(nil, nil, "application/protobuf")
 | 
			
		||||
		s := protobuf.NewSerializer(nil, nil)
 | 
			
		||||
		data, err := runtime.Encode(s, test.obj)
 | 
			
		||||
 | 
			
		||||
		switch {
 | 
			
		||||
@@ -251,7 +251,7 @@ func TestProtobufDecode(t *testing.T) {
 | 
			
		||||
					Kind:       "test",
 | 
			
		||||
				},
 | 
			
		||||
				// content type is set because the prefix matches the content
 | 
			
		||||
				ContentType: "application/protobuf",
 | 
			
		||||
				ContentType: runtime.ContentTypeProtobuf,
 | 
			
		||||
				Raw:         []byte{0x6b, 0x38, 0x73, 0x00, 0x01, 0x02, 0x03},
 | 
			
		||||
			},
 | 
			
		||||
			data: wire2,
 | 
			
		||||
@@ -259,7 +259,7 @@ func TestProtobufDecode(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i, test := range testCases {
 | 
			
		||||
		s := protobuf.NewSerializer(nil, nil, "application/protobuf")
 | 
			
		||||
		s := protobuf.NewSerializer(nil, nil)
 | 
			
		||||
		unk := &runtime.Unknown{}
 | 
			
		||||
		err := runtime.DecodeInto(s, test.data, unk)
 | 
			
		||||
 | 
			
		||||
@@ -334,7 +334,7 @@ func TestDecodeObjects(t *testing.T) {
 | 
			
		||||
	for i, test := range testCases {
 | 
			
		||||
		scheme.AddKnownTypes(schema.GroupVersion{Version: "v1"}, &v1.Carp{})
 | 
			
		||||
		require.NoError(t, v1.AddToScheme(scheme))
 | 
			
		||||
		s := protobuf.NewSerializer(scheme, scheme, "application/protobuf")
 | 
			
		||||
		s := protobuf.NewSerializer(scheme, scheme)
 | 
			
		||||
		obj, err := runtime.Decode(s, test.data)
 | 
			
		||||
 | 
			
		||||
		switch {
 | 
			
		||||
 
 | 
			
		||||
@@ -971,7 +971,7 @@ func expectPartialObjectMetaEvents(t *testing.T, d *json.Decoder, values ...stri
 | 
			
		||||
func expectPartialObjectMetaEventsProtobuf(t *testing.T, r io.Reader, values ...string) {
 | 
			
		||||
	scheme := runtime.NewScheme()
 | 
			
		||||
	metav1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"})
 | 
			
		||||
	rs := protobuf.NewRawSerializer(scheme, scheme, "application/vnd.kubernetes.protobuf")
 | 
			
		||||
	rs := protobuf.NewRawSerializer(scheme, scheme)
 | 
			
		||||
	d := streaming.NewDecoder(
 | 
			
		||||
		protobuf.LengthDelimitedFramer.NewFrameReader(ioutil.NopCloser(r)),
 | 
			
		||||
		rs,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user