Merge pull request #76175 from stealthybox/refactor-mediatype-loops
Refactor loops over `SupportedMediaTypes()` where mediaType is used to match a single SerializerInfo{}
Kubernetes-commit: 84b561033eea9a4dac5b04df4f387efa7a7e9940
This commit is contained in:
commit
5a10509a60
|
|
@ -452,7 +452,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go",
|
"ImportPath": "k8s.io/client-go",
|
||||||
"Rev": "95d8a92c4875"
|
"Rev": "89e9ab5330ad"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/component-base",
|
"ImportPath": "k8s.io/component-base",
|
||||||
|
|
|
||||||
4
go.mod
4
go.mod
|
|
@ -66,7 +66,7 @@ require (
|
||||||
gotest.tools v2.2.0+incompatible // indirect
|
gotest.tools v2.2.0+incompatible // indirect
|
||||||
k8s.io/api v0.0.0-20190405092450-f54612431266
|
k8s.io/api v0.0.0-20190405092450-f54612431266
|
||||||
k8s.io/apimachinery v0.0.0-20190405092352-bd3bd0cdce9a
|
k8s.io/apimachinery v0.0.0-20190405092352-bd3bd0cdce9a
|
||||||
k8s.io/client-go v0.0.0-20190405092624-95d8a92c4875
|
k8s.io/client-go v0.0.0-20190405092625-89e9ab5330ad
|
||||||
k8s.io/component-base v0.0.0-20190405092941-79a63e28c077
|
k8s.io/component-base v0.0.0-20190405092941-79a63e28c077
|
||||||
k8s.io/klog v0.0.0-20190306015804-8e90cee79f82
|
k8s.io/klog v0.0.0-20190306015804-8e90cee79f82
|
||||||
k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30
|
k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30
|
||||||
|
|
@ -330,7 +330,7 @@ replace (
|
||||||
gotest.tools => gotest.tools v2.2.0+incompatible
|
gotest.tools => gotest.tools v2.2.0+incompatible
|
||||||
k8s.io/api => k8s.io/api v0.0.0-20190405092450-f54612431266
|
k8s.io/api => k8s.io/api v0.0.0-20190405092450-f54612431266
|
||||||
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20190405092352-bd3bd0cdce9a
|
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20190405092352-bd3bd0cdce9a
|
||||||
k8s.io/client-go => k8s.io/client-go v0.0.0-20190405092624-95d8a92c4875
|
k8s.io/client-go => k8s.io/client-go v0.0.0-20190405092625-89e9ab5330ad
|
||||||
k8s.io/component-base => k8s.io/component-base v0.0.0-20190405092941-79a63e28c077
|
k8s.io/component-base => k8s.io/component-base v0.0.0-20190405092941-79a63e28c077
|
||||||
k8s.io/gengo => k8s.io/gengo v0.0.0-20181106084056-51747d6e00da
|
k8s.io/gengo => k8s.io/gengo v0.0.0-20181106084056-51747d6e00da
|
||||||
k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1
|
k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1
|
||||||
|
|
|
||||||
2
go.sum
2
go.sum
|
|
@ -197,7 +197,7 @@ gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
|
||||||
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
|
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
|
||||||
k8s.io/api v0.0.0-20190405092450-f54612431266/go.mod h1:4yeJ/+SLLj5auGPBMr34HAUxAJspsaG1o8vMqVg46ig=
|
k8s.io/api v0.0.0-20190405092450-f54612431266/go.mod h1:4yeJ/+SLLj5auGPBMr34HAUxAJspsaG1o8vMqVg46ig=
|
||||||
k8s.io/apimachinery v0.0.0-20190405092352-bd3bd0cdce9a/go.mod h1:hePg3H6BsTpYcS0Q8mso5Ms770hzaiB9f58j4CZz5Bg=
|
k8s.io/apimachinery v0.0.0-20190405092352-bd3bd0cdce9a/go.mod h1:hePg3H6BsTpYcS0Q8mso5Ms770hzaiB9f58j4CZz5Bg=
|
||||||
k8s.io/client-go v0.0.0-20190405092624-95d8a92c4875/go.mod h1:PCZxKDhcYCtRYwheBzaWB0zzWz6AaLNqBq4BS+5HLqQ=
|
k8s.io/client-go v0.0.0-20190405092625-89e9ab5330ad/go.mod h1:PCZxKDhcYCtRYwheBzaWB0zzWz6AaLNqBq4BS+5HLqQ=
|
||||||
k8s.io/component-base v0.0.0-20190405092941-79a63e28c077/go.mod h1:YSec6hGXgma+689ojmMSm6gsaC8cfuMJRnhky9OEhU0=
|
k8s.io/component-base v0.0.0-20190405092941-79a63e28c077/go.mod h1:YSec6hGXgma+689ojmMSm6gsaC8cfuMJRnhky9OEhU0=
|
||||||
k8s.io/klog v0.0.0-20190306015804-8e90cee79f82 h1:SHucoAy7lRb+w5oC/hbXyZg+zX+Wftn6hD4tGzHCVqA=
|
k8s.io/klog v0.0.0-20190306015804-8e90cee79f82 h1:SHucoAy7lRb+w5oC/hbXyZg+zX+Wftn6hD4tGzHCVqA=
|
||||||
k8s.io/klog v0.0.0-20190306015804-8e90cee79f82/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
k8s.io/klog v0.0.0-20190306015804-8e90cee79f82/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||||
|
|
|
||||||
|
|
@ -197,22 +197,22 @@ func LogResponseObject(ae *auditinternal.Event, obj runtime.Object, gv schema.Gr
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeObject(obj runtime.Object, gv schema.GroupVersion, serializer runtime.NegotiatedSerializer) (*runtime.Unknown, error) {
|
func encodeObject(obj runtime.Object, gv schema.GroupVersion, serializer runtime.NegotiatedSerializer) (*runtime.Unknown, error) {
|
||||||
supported := serializer.SupportedMediaTypes()
|
const mediaType = runtime.ContentTypeJSON
|
||||||
for i := range supported {
|
info, ok := runtime.SerializerInfoForMediaType(serializer.SupportedMediaTypes(), mediaType)
|
||||||
if supported[i].MediaType == "application/json" {
|
if !ok {
|
||||||
enc := serializer.EncoderForVersion(supported[i].Serializer, gv)
|
return nil, fmt.Errorf("unable to locate encoder -- %q is not a supported media type", mediaType)
|
||||||
var buf bytes.Buffer
|
|
||||||
if err := enc.Encode(obj, &buf); err != nil {
|
|
||||||
return nil, fmt.Errorf("encoding failed: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return &runtime.Unknown{
|
|
||||||
Raw: buf.Bytes(),
|
|
||||||
ContentType: runtime.ContentTypeJSON,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("no json encoder found")
|
|
||||||
|
enc := serializer.EncoderForVersion(info.Serializer, gv)
|
||||||
|
var buf bytes.Buffer
|
||||||
|
if err := enc.Encode(obj, &buf); err != nil {
|
||||||
|
return nil, fmt.Errorf("encoding failed: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &runtime.Unknown{
|
||||||
|
Raw: buf.Bytes(),
|
||||||
|
ContentType: runtime.ContentTypeJSON,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// LogAnnotation fills in the Annotations according to the key value pair.
|
// LogAnnotation fills in the Annotations according to the key value pair.
|
||||||
|
|
|
||||||
|
|
@ -79,10 +79,7 @@ func NegotiateInputSerializerForMediaType(mediaType string, streaming bool, ns r
|
||||||
mediaType = mediaTypes[0].MediaType
|
mediaType = mediaTypes[0].MediaType
|
||||||
}
|
}
|
||||||
if mediaType, _, err := mime.ParseMediaType(mediaType); err == nil {
|
if mediaType, _, err := mime.ParseMediaType(mediaType); err == nil {
|
||||||
for _, info := range mediaTypes {
|
if info, ok := runtime.SerializerInfoForMediaType(mediaTypes, mediaType); ok {
|
||||||
if info.MediaType != mediaType {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
return info, nil
|
return info, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,17 +94,12 @@ func serveWatch(watcher watch.Interface, scope *RequestScope, mediaTypeOptions n
|
||||||
var embeddedEncoder runtime.Encoder
|
var embeddedEncoder runtime.Encoder
|
||||||
contentKind, contentSerializer, transform := targetEncodingForTransform(scope, mediaTypeOptions, req)
|
contentKind, contentSerializer, transform := targetEncodingForTransform(scope, mediaTypeOptions, req)
|
||||||
if transform {
|
if transform {
|
||||||
var embedded runtime.Serializer
|
info, ok := runtime.SerializerInfoForMediaType(contentSerializer.SupportedMediaTypes(), serializer.MediaType)
|
||||||
for _, supported := range contentSerializer.SupportedMediaTypes() {
|
if !ok {
|
||||||
if supported.MediaType == serializer.MediaType {
|
|
||||||
embedded = supported.Serializer
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if embedded == nil {
|
|
||||||
scope.err(fmt.Errorf("no encoder for %q exists in the requested target %#v", serializer.MediaType, contentSerializer), w, req)
|
scope.err(fmt.Errorf("no encoder for %q exists in the requested target %#v", serializer.MediaType, contentSerializer), w, req)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
embeddedEncoder = contentSerializer.EncoderForVersion(embedded, contentKind.GroupVersion())
|
embeddedEncoder = contentSerializer.EncoderForVersion(info.Serializer, contentKind.GroupVersion())
|
||||||
} else {
|
} else {
|
||||||
embeddedEncoder = scope.Serializer.EncoderForVersion(serializer.Serializer, contentKind.GroupVersion())
|
embeddedEncoder = scope.Serializer.EncoderForVersion(serializer.Serializer, contentKind.GroupVersion())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue