diff --git a/daemon/container_operations_unix.go b/daemon/container_operations_unix.go index f281245d4c..a45e44971a 100644 --- a/daemon/container_operations_unix.go +++ b/daemon/container_operations_unix.go @@ -46,7 +46,7 @@ func (daemon *Daemon) setupLinkedContainers(ctr *container.Container) ([]string, return nil, fmt.Errorf("container %s not attached to default bridge network", child.ID) } - link := links.NewLink( + linkEnvVars := links.EnvVars( bridgeSettings.IPAddress, childBridgeSettings.IPAddress, linkAlias, @@ -54,7 +54,7 @@ func (daemon *Daemon) setupLinkedContainers(ctr *container.Container) ([]string, child.Config.ExposedPorts, ) - env = append(env, link.ToEnv()...) + env = append(env, linkEnvVars...) } return env, nil diff --git a/daemon/links/links.go b/daemon/links/links.go index fe75ce7d22..fb9e7e8378 100644 --- a/daemon/links/links.go +++ b/daemon/links/links.go @@ -22,6 +22,12 @@ type Link struct { Ports []nat.Port } +// EnvVars generates environment variables for the linked container +// for the Link with the given options. +func EnvVars(parentIP, childIP, name string, env []string, exposedPorts map[nat.Port]struct{}) []string { + return NewLink(parentIP, childIP, name, env, exposedPorts).ToEnv() +} + // NewLink initializes a new Link struct with the provided options. func NewLink(parentIP, childIP, name string, env []string, exposedPorts map[nat.Port]struct{}) *Link { ports := make([]nat.Port, 0, len(exposedPorts)) diff --git a/daemon/links/links_test.go b/daemon/links/links_test.go index 4f7e06b7ee..e4cae045b5 100644 --- a/daemon/links/links_test.go +++ b/daemon/links/links_test.go @@ -9,7 +9,7 @@ import ( ) func TestLinkNaming(t *testing.T) { - link := NewLink("172.0.17.3", "172.0.17.2", "/db/docker-1", nil, nat.PortSet{ + actual := EnvVars("172.0.17.3", "172.0.17.2", "/db/docker-1", nil, nat.PortSet{ "6379/tcp": struct{}{}, }) @@ -22,7 +22,6 @@ func TestLinkNaming(t *testing.T) { "DOCKER_1_PORT_6379_TCP_PROTO=tcp", } - actual := link.ToEnv() sort.Strings(actual) // order of env-vars is not relevant assert.DeepEqual(t, expectedEnv, actual) } @@ -43,7 +42,7 @@ func TestLinkNew(t *testing.T) { } func TestLinkEnv(t *testing.T) { - link := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, nat.PortSet{ + actual := EnvVars("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, nat.PortSet{ "6379/tcp": struct{}{}, }) @@ -57,13 +56,12 @@ func TestLinkEnv(t *testing.T) { "DOCKER_PORT_6379_TCP_PROTO=tcp", } - actual := link.ToEnv() sort.Strings(actual) // order of env-vars is not relevant assert.DeepEqual(t, expectedEnv, actual) } func TestLinkMultipleEnv(t *testing.T) { - link := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, nat.PortSet{ + actual := EnvVars("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, nat.PortSet{ "6379/tcp": struct{}{}, "6380/tcp": struct{}{}, "6381/tcp": struct{}{}, @@ -95,7 +93,6 @@ func TestLinkMultipleEnv(t *testing.T) { "DOCKER_PORT_6381_TCP_PROTO=tcp", } - actual := link.ToEnv() sort.Strings(actual) // order of env-vars is not relevant assert.DeepEqual(t, expectedEnv, actual) }