Skip to content

Commit

Permalink
Environment variabled are populated in random order, causing function…
Browse files Browse the repository at this point in the history
…al tests in golang kubernetes#518 to fail
  • Loading branch information
procrypt committed Jun 12, 2017
1 parent a6df28f commit b89eb54
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
4 changes: 3 additions & 1 deletion pkg/transformer/kubernetes/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ import (
"github.com/pkg/errors"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/labels"
"sort"
)

// Kubernetes implements Transformer interface and represents Kubernetes transformer
Expand Down Expand Up @@ -480,14 +481,15 @@ func (k *Kubernetes) ConfigPVCVolumeSource(name string, readonly bool) *api.Volu

// ConfigEnvs configures the environment variables.
func (k *Kubernetes) ConfigEnvs(name string, service kobject.ServiceConfig) []api.EnvVar {
envs := []api.EnvVar{}
envs := transformer.EnvSort{}
for _, v := range service.Environment {
envs = append(envs, api.EnvVar{
Name: v.Name,
Value: v.Value,
})
}

sort.Sort(envs)
return envs
}

Expand Down
4 changes: 3 additions & 1 deletion pkg/transformer/openshift/openshift.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import (
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/util/intstr"
"sort"
)

// OpenShift implements Transformer interface and represents OpenShift transformer
Expand Down Expand Up @@ -201,13 +202,14 @@ func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig,
// initBuildConfig initialize Openshifts BuildConfig Object
func initBuildConfig(name string, service kobject.ServiceConfig, repo string, branch string) (*buildapi.BuildConfig, error) {
contextDir, err := getAbsBuildContext(service.Build)
envList := []kapi.EnvVar{}
envList := transformer.EnvSort{}
for envName, envValue := range service.BuildArgs {
if *envValue == "\x00" {
*envValue = os.Getenv(envName)
}
envList = append(envList, kapi.EnvVar{Name: envName, Value: *envValue})
}
sort.Sort(envList)
if err != nil {
return nil, errors.Wrap(err, name+"buildconfig cannot be created due to error in creating build context, getAbsBuildContext failed")
}
Expand Down
20 changes: 20 additions & 0 deletions pkg/transformer/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
"path/filepath"

"github.com/pkg/errors"
"k8s.io/kubernetes/pkg/api"
)

const Selector = "io.kompose.service"
Expand Down Expand Up @@ -141,3 +142,22 @@ func Print(name, path string, trailing string, data []byte, toStdout, generateJS
}
return file, nil
}

// Sort struct
type EnvSort []api.EnvVar

// returns the number of elements in the collection.
func (env EnvSort) Len() int {
return len(env)
}

// returns whether the element with index i should sort before
// the element with index j.
func (env EnvSort) Less(i, j int) bool {
return env[i].Name < env[j].Name
}

// swaps the elements with indexes i and j.
func (env EnvSort) Swap(i, j int) {
env[i], env[j] = env[j], env[i]
}

0 comments on commit b89eb54

Please sign in to comment.