Fix handling lists in kubectl convert

This commit is contained in:
Fabiano Franz 2016-11-10 17:52:42 -02:00
parent 52ca344cc8
commit 8965fcaf10

View File

@ -22,6 +22,7 @@ import (
"os" "os"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apimachinery/registered" "k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
@ -161,26 +162,32 @@ func (o *ConvertOptions) RunConvert() error {
return err return err
} }
count := 0 singular := false
err = r.Visit(func(info *resource.Info, err error) error { infos, err := r.IntoSingular(&singular).Infos()
if err != nil {
return err
}
infos := []*resource.Info{info}
objects, err := resource.AsVersionedObject(infos, false, o.outputVersion, o.encoder)
if err != nil {
return err
}
count++
return o.printer.PrintObj(objects, o.out)
})
if err != nil { if err != nil {
return err return err
} }
if count == 0 {
if len(infos) == 0 {
return fmt.Errorf("no objects passed to convert") return fmt.Errorf("no objects passed to convert")
} }
return nil
objects, err := resource.AsVersionedObject(infos, !singular, o.outputVersion, o.encoder)
if err != nil {
return err
}
if meta.IsListType(objects) {
_, items, err := cmdutil.FilterResourceList(objects, nil, nil)
if err != nil {
return err
}
filteredObj, err := cmdutil.ObjectListToVersionedObject(items, o.outputVersion)
if err != nil {
return err
}
return o.printer.PrintObj(filteredObj, o.out)
}
return o.printer.PrintObj(objects, o.out)
} }