From 529e6c674f84a7c5ea82908c805a3be31739137c Mon Sep 17 00:00:00 2001 From: Abhishek Date: Fri, 21 Apr 2017 17:57:28 +0530 Subject: [PATCH] sort output when creating kubernetes/openshift objects --- pkg/transformer/kubernetes/k8sutils.go | 11 +++++++++++ pkg/transformer/kubernetes/k8sutils_test.go | 21 +++++++++++++++++++++ pkg/transformer/kubernetes/kubernetes.go | 9 +-------- pkg/transformer/openshift/openshift.go | 4 +++- 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/pkg/transformer/kubernetes/k8sutils.go b/pkg/transformer/kubernetes/k8sutils.go index 2cb001bb..01a67b47 100644 --- a/pkg/transformer/kubernetes/k8sutils.go +++ b/pkg/transformer/kubernetes/k8sutils.go @@ -41,6 +41,7 @@ import ( deployapi "github.com/openshift/origin/pkg/deploy/api" "github.com/pkg/errors" "k8s.io/kubernetes/pkg/api/resource" + "sort" ) /** @@ -542,3 +543,13 @@ func (k *Kubernetes) VolumesFrom(objects *[]runtime.Object, komposeObject kobjec } return nil } + +//Ensure the kubernetes objects are in a consistent order +func SortedKeys(komposeObject kobject.KomposeObject) []string { + var sortedKeys []string + for name := range komposeObject.ServiceConfigs { + sortedKeys = append(sortedKeys, name) + } + sort.Strings(sortedKeys) + return sortedKeys +} diff --git a/pkg/transformer/kubernetes/k8sutils_test.go b/pkg/transformer/kubernetes/k8sutils_test.go index 290a8d84..34d6aa45 100644 --- a/pkg/transformer/kubernetes/k8sutils_test.go +++ b/pkg/transformer/kubernetes/k8sutils_test.go @@ -29,6 +29,7 @@ import ( "github.com/pkg/errors" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/extensions" + "reflect" ) /* @@ -275,3 +276,23 @@ func TestRecreateStrategyWithVolumesPresent(t *testing.T) { } } } + +func TestSortedKeys(t *testing.T) { + service := kobject.ServiceConfig{ + ContainerName: "name", + Image: "image", + } + service1 := kobject.ServiceConfig{ + ContainerName: "name", + Image: "image", + } + c := []string{"a", "b"} + + komposeObject := kobject.KomposeObject{ + ServiceConfigs: map[string]kobject.ServiceConfig{"b": service, "a": service1}, + } + a := SortedKeys(komposeObject) + if !reflect.DeepEqual(a, c) { + t.Logf("Test Fail output should be %s", c) + } +} diff --git a/pkg/transformer/kubernetes/kubernetes.go b/pkg/transformer/kubernetes/kubernetes.go index 04a76eda..e1b55ae6 100644 --- a/pkg/transformer/kubernetes/kubernetes.go +++ b/pkg/transformer/kubernetes/kubernetes.go @@ -19,7 +19,6 @@ package kubernetes import ( "fmt" "reflect" - "sort" "strconv" "time" @@ -533,13 +532,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject. // this will hold all the converted data var allobjects []runtime.Object - // Need to ensure the kubernetes objects are in a consistent order - var sortedKeys []string - for name := range komposeObject.ServiceConfigs { - sortedKeys = append(sortedKeys, name) - } - sort.Strings(sortedKeys) - + sortedKeys := SortedKeys(komposeObject) for _, name := range sortedKeys { service := komposeObject.ServiceConfigs[name] var objects []runtime.Object diff --git a/pkg/transformer/openshift/openshift.go b/pkg/transformer/openshift/openshift.go index 7820d662..1d5e3a69 100644 --- a/pkg/transformer/openshift/openshift.go +++ b/pkg/transformer/openshift/openshift.go @@ -339,7 +339,9 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C buildRepo := opt.BuildRepo buildBranch := opt.BuildBranch - for name, service := range komposeObject.ServiceConfigs { + sortedKeys := kubernetes.SortedKeys(komposeObject) + for _, name := range sortedKeys { + service := komposeObject.ServiceConfigs[name] var objects []runtime.Object // Generate pod only and nothing more