Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

provider/docker network alias #14710

Merged
merged 10 commits into from
May 22, 2017
8 changes: 8 additions & 0 deletions builtin/providers/docker/resource_docker_container.go
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,14 @@ func resourceDockerContainer() *schema.Resource {
ForceNew: true,
},

"network_alias": &schema.Schema{
Type: schema.TypeSet,
Optional: true,
ForceNew: true,
Elem: &schema.Schema{Type: schema.TypeString},
Set: schema.HashString,
},

"network_mode": &schema.Schema{
Type: schema.TypeString,
Optional: true,
Expand Down
9 changes: 8 additions & 1 deletion builtin/providers/docker/resource_docker_container_funcs.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,14 @@ func resourceDockerContainerCreate(d *schema.ResourceData, meta interface{}) err
d.SetId(retContainer.ID)

if v, ok := d.GetOk("networks"); ok {
connectionOpts := dc.NetworkConnectionOptions{Container: retContainer.ID}
var connectionOpts dc.NetworkConnectionOptions
if v, ok := d.GetOk("network_alias"); ok {
endpointConfig := &dc.EndpointConfig{}
endpointConfig.Aliases = stringSetToStringSlice(v.(*schema.Set))
connectionOpts = dc.NetworkConnectionOptions{Container: retContainer.ID, EndpointConfig: endpointConfig}
} else {
connectionOpts = dc.NetworkConnectionOptions{Container: retContainer.ID}
}

for _, rawNetwork := range v.(*schema.Set).List() {
network := rawNetwork.(string)
Expand Down
11 changes: 11 additions & 0 deletions builtin/providers/docker/resource_docker_container_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ func TestAccDockerContainer_customized(t *testing.T) {
return fmt.Errorf("Container has incorrect extra host string: %q", c.HostConfig.ExtraHosts[1])
}

if _, ok := c.NetworkSettings.Networks["test"]; !ok {
return fmt.Errorf("Container is not connected to the right user defined network: test")
}

return nil
}

Expand Down Expand Up @@ -370,6 +374,9 @@ resource "docker_container" "foo" {
}
network_mode = "bridge"

networks = ["${docker_network.test_network.name}"]
network_alias = ["tftest"]

host {
host = "testhost"
ip = "10.0.1.0"
Expand All @@ -380,6 +387,10 @@ resource "docker_container" "foo" {
ip = "10.0.2.0"
}
}

resource "docker_network" "test_network" {
name = "test"
}
`

const testAccDockerContainerUploadConfig = `
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ The following arguments are supported:
Defaults to "json-file".
* `log_opts` - (Optional, map of strings) Key/value pairs to use as options for
the logging driver.
* `network_alias` - (Optional, set of strings) Network aliases of the container for user-defined networks only.
* `network_mode` - (Optional, string) Network mode of the container.
* `networks` - (Optional, set of strings) Id of the networks in which the
container is.
Expand Down