Implement Encoder.Identifier() method
Kubernetes-commit: cd4215ad8b95773a793f69fc2e8bf93c7ede97aa
This commit is contained in:
parent
586fbfe74a
commit
4aa6bc019e
|
@ -18,10 +18,12 @@ package discovery
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/klog"
|
||||||
)
|
)
|
||||||
|
|
||||||
const APIGroupPrefix = "/apis"
|
const APIGroupPrefix = "/apis"
|
||||||
|
@ -36,6 +38,29 @@ func keepUnversioned(group string) bool {
|
||||||
type stripVersionEncoder struct {
|
type stripVersionEncoder struct {
|
||||||
encoder runtime.Encoder
|
encoder runtime.Encoder
|
||||||
serializer runtime.Serializer
|
serializer runtime.Serializer
|
||||||
|
identifier runtime.Identifier
|
||||||
|
}
|
||||||
|
|
||||||
|
func newStripVersionEncoder(e runtime.Encoder, s runtime.Serializer) runtime.Encoder {
|
||||||
|
return stripVersionEncoder{
|
||||||
|
encoder: e,
|
||||||
|
serializer: s,
|
||||||
|
identifier: identifier(e),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func identifier(e runtime.Encoder) runtime.Identifier {
|
||||||
|
result := map[string]string{
|
||||||
|
"name": "stripVersion",
|
||||||
|
}
|
||||||
|
if e != nil {
|
||||||
|
result["encoder"] = string(e.Identifier())
|
||||||
|
}
|
||||||
|
identifier, err := json.Marshal(result)
|
||||||
|
if err != nil {
|
||||||
|
klog.Fatalf("Failed marshaling identifier for stripVersionEncoder: %v", err)
|
||||||
|
}
|
||||||
|
return runtime.Identifier(identifier)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c stripVersionEncoder) Encode(obj runtime.Object, w io.Writer) error {
|
func (c stripVersionEncoder) Encode(obj runtime.Object, w io.Writer) error {
|
||||||
|
@ -54,6 +79,11 @@ func (c stripVersionEncoder) Encode(obj runtime.Object, w io.Writer) error {
|
||||||
return c.serializer.Encode(roundTrippedObj, w)
|
return c.serializer.Encode(roundTrippedObj, w)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Identifier implements runtime.Encoder interface.
|
||||||
|
func (c stripVersionEncoder) Identifier() runtime.Identifier {
|
||||||
|
return c.identifier
|
||||||
|
}
|
||||||
|
|
||||||
// stripVersionNegotiatedSerializer will return stripVersionEncoder when
|
// stripVersionNegotiatedSerializer will return stripVersionEncoder when
|
||||||
// EncoderForVersion is called. See comments for stripVersionEncoder.
|
// EncoderForVersion is called. See comments for stripVersionEncoder.
|
||||||
type stripVersionNegotiatedSerializer struct {
|
type stripVersionNegotiatedSerializer struct {
|
||||||
|
@ -69,5 +99,5 @@ func (n stripVersionNegotiatedSerializer) EncoderForVersion(encoder runtime.Enco
|
||||||
panic(fmt.Sprintf("Unable to extract serializer from %#v", encoder))
|
panic(fmt.Sprintf("Unable to extract serializer from %#v", encoder))
|
||||||
}
|
}
|
||||||
versioned := n.NegotiatedSerializer.EncoderForVersion(encoder, gv)
|
versioned := n.NegotiatedSerializer.EncoderForVersion(encoder, gv)
|
||||||
return stripVersionEncoder{versioned, serializer}
|
return newStripVersionEncoder(versioned, serializer)
|
||||||
}
|
}
|
||||||
|
|
|
@ -287,6 +287,10 @@ func (e *fakeEncoder) Encode(obj runtime.Object, w io.Writer) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *fakeEncoder) Identifier() runtime.Identifier {
|
||||||
|
return runtime.Identifier("fake")
|
||||||
|
}
|
||||||
|
|
||||||
func gzipContent(data []byte, level int) []byte {
|
func gzipContent(data []byte, level int) []byte {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
gw, err := gzip.NewWriterLevel(buf, level)
|
gw, err := gzip.NewWriterLevel(buf, level)
|
||||||
|
|
Loading…
Reference in New Issue