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:
Clayton Coleman
2015-12-21 00:34:11 -05:00
parent efe88e0818
commit fb4ea845f1
4 changed files with 57 additions and 67 deletions

View File

@@ -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
}
}