...
1
16
17 package resource
18
19 import (
20 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21 "k8s.io/apimachinery/pkg/runtime"
22 "k8s.io/apimachinery/pkg/runtime/schema"
23 utiljson "k8s.io/apimachinery/pkg/util/json"
24 )
25
26
27 type metadataValidatingDecoder struct {
28 decoder runtime.Decoder
29 }
30
31 func (m *metadataValidatingDecoder) Decode(data []byte, defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) {
32 obj, gvk, err := m.decoder.Decode(data, defaults, into)
33
34
35 if err != nil {
36 return obj, gvk, err
37 }
38
39
40 if _, isUnstructured := obj.(runtime.Unstructured); !isUnstructured {
41 return obj, gvk, err
42 }
43
44
45
46 v := &metadataOnlyObject{}
47 if typedErr := utiljson.Unmarshal(data, v); typedErr != nil {
48 return obj, gvk, typedErr
49 }
50 return obj, gvk, err
51 }
52
53 type metadataOnlyObject struct {
54 metav1.TypeMeta `json:",inline"`
55 metav1.ObjectMeta `json:"metadata,omitempty"`
56 }
57
View as plain text