container_create: correctly set image and kube envs

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
Antonio Murdaca 2017-11-30 11:52:30 +01:00
parent b59f31a2d5
commit 902acca4af
No known key found for this signature in database
GPG key ID: B2BEAD150DE936B9
3 changed files with 80 additions and 24 deletions

View file

@ -10,8 +10,10 @@ import (
"github.com/cri-o/ocicni/pkg/ocicni"
"github.com/kubernetes-incubator/cri-o/libkpod/sandbox"
"github.com/kubernetes-incubator/cri-o/server/metrics"
"github.com/opencontainers/image-spec/specs-go/v1"
"github.com/opencontainers/runtime-tools/validate"
"github.com/syndtr/gocapability/capability"
pb "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
)
const (
@ -210,3 +212,44 @@ func validateLabels(labels map[string]string) error {
}
return nil
}
func mergeEnvs(imageConfig *v1.Image, kubeEnvs []*pb.KeyValue) []string {
envs := []string{}
if kubeEnvs == nil && imageConfig != nil {
envs = imageConfig.Config.Env
} else {
for _, item := range kubeEnvs {
if item.GetKey() == "" {
continue
}
envs = append(envs, item.GetKey()+"="+item.GetValue())
}
if imageConfig != nil {
for _, imageEnv := range imageConfig.Config.Env {
var found bool
parts := strings.SplitN(imageEnv, "=", 2)
if len(parts) != 2 {
continue
}
imageEnvKey := parts[0]
if imageEnvKey == "" {
continue
}
for _, kubeEnv := range envs {
kubeEnvKey := strings.SplitN(kubeEnv, "=", 2)[0]
if kubeEnvKey == "" {
continue
}
if imageEnvKey == kubeEnvKey {
found = true
break
}
}
if !found {
envs = append(envs, imageEnv)
}
}
}
}
return envs
}