mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Merge pull request #36603 from fabianofranz/fix_lists_in_convert
Automatic merge from submit-queue Fix handling lists in kubectl convert Fixes https://github.com/kubernetes/kubernetes/issues/36722 When handling multiple objects in `kubectl convert` (for example in `kubectl convert -f .` with multiple files in current directory) the objects must be managed as a list instead of individually, otherwise `-o yaml|json` will generate invalid format (just multiple json/yaml objects concatenated) which can't be fed to `kubectl create` like in `kubectl convert -f . | kubectl create -f -`. ```release-note NONE ```
This commit is contained in:
commit
61a5d23e0f
@ -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)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user