provider/docker: Add network create --internal flag support (#10932)
* provider/docker: Add network create --internal flag support * provider/docker: Add acceptance tests for network --internal flag
This commit is contained in:
parent
b8c26b622b
commit
f8ce2f76e3
|
@ -42,6 +42,13 @@ func resourceDockerNetwork() *schema.Resource {
|
||||||
Computed: true,
|
Computed: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"internal": &schema.Schema{
|
||||||
|
Type: schema.TypeBool,
|
||||||
|
Optional: true,
|
||||||
|
Computed: true,
|
||||||
|
ForceNew: true,
|
||||||
|
},
|
||||||
|
|
||||||
"ipam_driver": &schema.Schema{
|
"ipam_driver": &schema.Schema{
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
|
|
|
@ -22,6 +22,9 @@ func resourceDockerNetworkCreate(d *schema.ResourceData, meta interface{}) error
|
||||||
if v, ok := d.GetOk("options"); ok {
|
if v, ok := d.GetOk("options"); ok {
|
||||||
createOpts.Options = v.(map[string]interface{})
|
createOpts.Options = v.(map[string]interface{})
|
||||||
}
|
}
|
||||||
|
if v, ok := d.GetOk("internal"); ok {
|
||||||
|
createOpts.Internal = v.(bool)
|
||||||
|
}
|
||||||
|
|
||||||
ipamOpts := dc.IPAMOptions{}
|
ipamOpts := dc.IPAMOptions{}
|
||||||
ipamOptsSet := false
|
ipamOptsSet := false
|
||||||
|
@ -53,6 +56,9 @@ func resourceDockerNetworkCreate(d *schema.ResourceData, meta interface{}) error
|
||||||
d.Set("driver", retNetwork.Driver)
|
d.Set("driver", retNetwork.Driver)
|
||||||
d.Set("options", retNetwork.Options)
|
d.Set("options", retNetwork.Options)
|
||||||
|
|
||||||
|
// The 'internal' property is not send back when create network
|
||||||
|
d.Set("internal", createOpts.Internal)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +80,7 @@ func resourceDockerNetworkRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
d.Set("scope", retNetwork.Scope)
|
d.Set("scope", retNetwork.Scope)
|
||||||
d.Set("driver", retNetwork.Driver)
|
d.Set("driver", retNetwork.Driver)
|
||||||
d.Set("options", retNetwork.Options)
|
d.Set("options", retNetwork.Options)
|
||||||
|
d.Set("internal", retNetwork.Internal)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,3 +63,37 @@ resource "docker_network" "foo" {
|
||||||
name = "bar"
|
name = "bar"
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
func TestAccDockerNetwork_internal(t *testing.T) {
|
||||||
|
var n dc.Network
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccDockerNetworkInternalConfig,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccNetwork("docker_network.foobar", &n),
|
||||||
|
testAccNetworkInternal(&n, true),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func testAccNetworkInternal(network *dc.Network, internal bool) resource.TestCheckFunc {
|
||||||
|
return func(s *terraform.State) error {
|
||||||
|
if network.Internal != internal {
|
||||||
|
return fmt.Errorf("Bad value for attribute 'internal': %t", network.Internal)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const testAccDockerNetworkInternalConfig = `
|
||||||
|
resource "docker_network" "foobar" {
|
||||||
|
name = "foobar"
|
||||||
|
internal = "true"
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
|
@ -34,6 +34,8 @@ The following arguments are supported:
|
||||||
`bridge` driver.
|
`bridge` driver.
|
||||||
* `options` - (Optional, map of strings) Network specific options to be used by
|
* `options` - (Optional, map of strings) Network specific options to be used by
|
||||||
the drivers.
|
the drivers.
|
||||||
|
* `internal` - (Optional, boolean) Restrict external access to the network.
|
||||||
|
Defaults to `false`.
|
||||||
* `ipam_driver` - (Optional, string) Driver used by the custom IP scheme of the
|
* `ipam_driver` - (Optional, string) Driver used by the custom IP scheme of the
|
||||||
network.
|
network.
|
||||||
* `ipam_config` - (Optional, block) See [IPAM config](#ipam_config) below for
|
* `ipam_config` - (Optional, block) See [IPAM config](#ipam_config) below for
|
||||||
|
|
Loading…
Reference in New Issue