...
1
16
17 package printers
18
19 import (
20 "io"
21
22 "k8s.io/apimachinery/pkg/api/meta"
23 "k8s.io/apimachinery/pkg/runtime"
24 )
25
26
27
28 type OmitManagedFieldsPrinter struct {
29 Delegate ResourcePrinter
30 }
31
32 var _ ResourcePrinter = (*OmitManagedFieldsPrinter)(nil)
33
34 func omitManagedFields(o runtime.Object) runtime.Object {
35 a, err := meta.Accessor(o)
36 if err != nil {
37
38 return o
39 }
40 a.SetManagedFields(nil)
41 return o
42 }
43
44
45 func (p *OmitManagedFieldsPrinter) PrintObj(obj runtime.Object, w io.Writer) error {
46 if obj == nil {
47 return p.Delegate.PrintObj(obj, w)
48 }
49 if meta.IsListType(obj) {
50 obj = obj.DeepCopyObject()
51 _ = meta.EachListItem(obj, func(item runtime.Object) error {
52 omitManagedFields(item)
53 return nil
54 })
55 } else if _, err := meta.Accessor(obj); err == nil {
56 obj = omitManagedFields(obj.DeepCopyObject())
57 }
58 return p.Delegate.PrintObj(obj, w)
59 }
60
View as plain text