Skip to content

Commit

Permalink
Allow using JSON/YAML serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
tamalsaha committed Mar 20, 2018
1 parent 2766d07 commit f7912a2
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
2 changes: 2 additions & 0 deletions admission/v1beta1/generic.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ func (h *GenericWebhook) Admit(req *v1beta1.AdmissionRequest) *v1beta1.Admission
}

codec := versioning.NewDefaultingCodecForScheme(
versioning.JSONSerializer,
versioning.JSONSerializer,
legacyscheme.Scheme,
legacyscheme.Scheme,
schema.GroupVersion{Group: req.Kind.Group, Version: req.Kind.Version},
Expand Down
2 changes: 1 addition & 1 deletion admission/v1beta1/workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func (h *WorkloadWebhook) Admit(req *v1beta1.AdmissionRequest) *v1beta1.Admissio
return StatusUninitialized()
}

codec := versioning.Serializer
codec := versioning.JSONSerializer
gvk := schema.GroupVersionKind{Group: req.Kind.Group, Version: req.Kind.Version, Kind: req.Kind.Kind}

switch req.Operation {
Expand Down
21 changes: 18 additions & 3 deletions runtime/serializer/versioning/codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
)

var Serializer = func() runtime.Codec {
var JSONSerializer = func() runtime.Codec {
mediaType := "application/json"
info, ok := runtime.SerializerInfoForMediaType(legacyscheme.Codecs.SupportedMediaTypes(), mediaType)
if !ok {
Expand All @@ -24,7 +24,18 @@ var Serializer = func() runtime.Codec {
return info.Serializer
}()

var YAMLSerializer = func() runtime.Codec {
mediaType := "application/yaml"
info, ok := runtime.SerializerInfoForMediaType(legacyscheme.Codecs.SupportedMediaTypes(), mediaType)
if !ok {
panic("unsupported media type " + mediaType)
}
return info.Serializer
}()

type codec struct {
encoder runtime.Encoder
decoder runtime.Decoder
scheme *runtime.Scheme
defaulter runtime.ObjectDefaulter
encodeVersion schema.GroupVersion
Expand All @@ -33,12 +44,16 @@ type codec struct {

// NewDefaultingCodecForScheme is a convenience method for callers that are using a scheme.
func NewDefaultingCodecForScheme(
encoder runtime.Encoder,
decoder runtime.Decoder,
scheme *runtime.Scheme,
defaulter runtime.ObjectDefaulter,
encodeVersion schema.GroupVersion,
decodeVersion schema.GroupVersion,
) runtime.Codec {
return codec{
encoder: encoder,
decoder: decoder,
scheme: scheme,
defaulter: defaulter,
encodeVersion: encodeVersion,
Expand All @@ -65,11 +80,11 @@ func (c codec) Encode(obj runtime.Object, w io.Writer) error {
c.defaulter.Default(out)
}

return Serializer.Encode(out, w)
return c.encoder.Encode(out, w)
}

func (c codec) Decode(data []byte, gvk *schema.GroupVersionKind, _ runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) {
in, gvk, err := Serializer.Decode(data, gvk, nil)
in, gvk, err := c.decoder.Decode(data, gvk, nil)
if err != nil {
return nil, gvk, err
}
Expand Down

0 comments on commit f7912a2

Please sign in to comment.