From 00df67b0bf59ff8a4acf8f536923177694834e64 Mon Sep 17 00:00:00 2001 From: Dan Mace Date: Wed, 9 Jul 2014 14:39:03 -0400 Subject: [PATCH] Namespace "local" volume mounts by ContainerManifest ID on disk Local volume mounts in a pod should result in host mounted directories which are namespaced by the ContainerManifest ID. --- pkg/kubelet/kubelet.go | 6 +++--- pkg/kubelet/kubelet_test.go | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 296734315ef..12934f45d93 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -289,7 +289,7 @@ func makeEnvironmentVariables(container *api.Container) []string { return result } -func makeVolumesAndBinds(container *api.Container) (map[string]struct{}, []string) { +func makeVolumesAndBinds(manifestId string, container *api.Container) (map[string]struct{}, []string) { volumes := map[string]struct{}{} binds := []string{} for _, volume := range container.VolumeMounts { @@ -299,7 +299,7 @@ func makeVolumesAndBinds(container *api.Container) (map[string]struct{}, []strin basePath = fmt.Sprintf("%s:%s", volume.MountPath, volume.MountPath) } else { volumes[volume.MountPath] = struct{}{} - basePath = fmt.Sprintf("/exports/%s:%s", volume.Name, volume.MountPath) + basePath = fmt.Sprintf("/exports/%s/%s:%s", manifestId, volume.Name, volume.MountPath) } if volume.ReadOnly { basePath += ":ro" @@ -364,7 +364,7 @@ func parseImageName(image string) (string, string) { // Run a single container from a manifest. Returns the docker container ID func (kl *Kubelet) runContainer(manifest *api.ContainerManifest, container *api.Container, netMode string) (id DockerID, err error) { envVariables := makeEnvironmentVariables(container) - volumes, binds := makeVolumesAndBinds(container) + volumes, binds := makeVolumesAndBinds(manifest.ID, container) exposedPorts, portBindings := makePortsAndBindings(container) opts := docker.CreateContainerOptions{ diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 5484e2265e1..b91bc838ae3 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -505,10 +505,10 @@ func TestMakeVolumesAndBinds(t *testing.T) { }, }, } - volumes, binds := makeVolumesAndBinds(&container) + volumes, binds := makeVolumesAndBinds("pod", &container) expectedVolumes := []string{"/mnt/path", "/mnt/path2"} - expectedBinds := []string{"/exports/disk:/mnt/path", "/exports/disk2:/mnt/path2:ro", "/mnt/path3:/mnt/path3"} + expectedBinds := []string{"/exports/pod/disk:/mnt/path", "/exports/pod/disk2:/mnt/path2:ro", "/mnt/path3:/mnt/path3"} if len(volumes) != len(expectedVolumes) { t.Errorf("Unexpected volumes. Expected %#v got %#v. Container was: %#v", expectedVolumes, volumes, container) }