resource_printer was not leveraging runtime interfaces
In general, everything in kubectl/* needs to be ignorant of api/* unless it deals with a concrete type - this change forces resource_printer to accept interface abstractions (that are already part of kubectl).
This commit is contained in:
@@ -22,7 +22,6 @@ import (
|
||||
"reflect"
|
||||
"sort"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
@@ -36,6 +35,7 @@ import (
|
||||
type SortingPrinter struct {
|
||||
SortField string
|
||||
Delegate ResourcePrinter
|
||||
Decoder runtime.Decoder
|
||||
}
|
||||
|
||||
func (s *SortingPrinter) PrintObj(obj runtime.Object, out io.Writer) error {
|
||||
@@ -63,7 +63,7 @@ func (s *SortingPrinter) sortObj(obj runtime.Object) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
sorter, err := SortObjects(objs, s.SortField)
|
||||
sorter, err := SortObjects(s.Decoder, objs, s.SortField)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -80,7 +80,7 @@ func (s *SortingPrinter) sortObj(obj runtime.Object) error {
|
||||
return meta.SetList(obj, objs)
|
||||
}
|
||||
|
||||
func SortObjects(objs []runtime.Object, fieldInput string) (*RuntimeSort, error) {
|
||||
func SortObjects(decoder runtime.Decoder, objs []runtime.Object, fieldInput string) (*RuntimeSort, error) {
|
||||
parser := jsonpath.New("sorting")
|
||||
|
||||
field, err := massageJSONPath(fieldInput)
|
||||
@@ -97,7 +97,7 @@ func SortObjects(objs []runtime.Object, fieldInput string) (*RuntimeSort, error)
|
||||
switch u := item.(type) {
|
||||
case *runtime.Unknown:
|
||||
var err error
|
||||
if objs[ix], err = api.Codec.Decode(u.RawJSON); err != nil {
|
||||
if objs[ix], _, err = decoder.Decode(u.RawJSON, nil, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user