From b24556e9d5fa89a9d2c5f95dac037c672706afbe Mon Sep 17 00:00:00 2001 From: Tomas Kral Date: Mon, 29 Aug 2016 17:35:03 +0200 Subject: [PATCH] fixes #124 add missing conversion to versioned object when saving to files --- pkg/transformer/kubernetes/k8sutils.go | 50 ++++++++++++++------------ 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/pkg/transformer/kubernetes/k8sutils.go b/pkg/transformer/kubernetes/k8sutils.go index 745ab311..c9c3458f 100644 --- a/pkg/transformer/kubernetes/k8sutils.go +++ b/pkg/transformer/kubernetes/k8sutils.go @@ -127,24 +127,23 @@ func PrintList(objects []runtime.Object, opt kobject.ConvertOptions) error { f := transformer.CreateOutFile(opt.OutFile) defer f.Close() - var err error var files []string // if asked to print to stdout or to put in single file // we will create a list if opt.ToStdout || f != nil { list := &api.List{} - list.Items = objects - - // version each object in the list - list.Items, err = convertToVersion(list.Items) - if err != nil { - return err + // convert objects to versioned and add them to list + for _, object := range objects { + versionedObject, err := convertToVersion(object, unversioned.GroupVersion{}) + if err != nil { + return err + } + list.Items = append(list.Items, versionedObject) } - // version list itself listVersion := unversioned.GroupVersion{Group: "", Version: "v1"} - convertedList, err := api.Scheme.ConvertToVersion(list, listVersion) + convertedList, err := convertToVersion(list, listVersion) if err != nil { return err } @@ -157,10 +156,16 @@ func PrintList(objects []runtime.Object, opt kobject.ConvertOptions) error { var file string // create a separate file for each provider for _, v := range objects { - data, err := marshal(v, opt.GenerateYaml) + versionedObject, err := convertToVersion(v, unversioned.GroupVersion{}) if err != nil { return err } + + data, err := marshal(versionedObject, opt.GenerateYaml) + if err != nil { + return err + } + switch t := v.(type) { case *api.ReplicationController: file = transformer.Print(t.Name, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f) @@ -196,22 +201,23 @@ func marshal(obj runtime.Object, yamlFormat bool) (data []byte, err error) { return } -// Convert all objects in objs to versioned objects -func convertToVersion(objs []runtime.Object) ([]runtime.Object, error) { - ret := []runtime.Object{} +// Convert object to versioned object +// if groupVersion is empty (unversioned.GroupVersion{}), use version from original object (obj) +func convertToVersion(obj runtime.Object, groupVersion unversioned.GroupVersion) (runtime.Object, error) { - for _, obj := range objs { + var version unversioned.GroupVersion + if groupVersion.IsEmpty() { objectVersion := obj.GetObjectKind().GroupVersionKind() - version := unversioned.GroupVersion{Group: objectVersion.Group, Version: objectVersion.Version} - convertedObject, err := api.Scheme.ConvertToVersion(obj, version) - if err != nil { - return nil, err - } - ret = append(ret, convertedObject) + version = unversioned.GroupVersion{Group: objectVersion.Group, Version: objectVersion.Version} + } else { + version = groupVersion } - - return ret, nil + convertedObject, err := api.Scheme.ConvertToVersion(obj, version) + if err != nil { + return nil, err + } + return convertedObject, nil } func PortsExist(name string, service kobject.ServiceConfig) bool {