From 2c8c587ca5dda0471105482c50f59f95345d3fdc Mon Sep 17 00:00:00 2001 From: Paul Stack Date: Fri, 20 May 2016 22:43:18 +0100 Subject: [PATCH] provider/azurerm: Add support for EnableIPForwarding to (#6807) `azurerm_network_interface` As requested in #6803 ``` ``` --- .../resource_arm_network_interface_card.go | 11 +++- ...esource_arm_network_interface_card_test.go | 53 +++++++++++++++++++ .../azurerm/r/network_interface.html.markdown | 2 + 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/builtin/providers/azurerm/resource_arm_network_interface_card.go b/builtin/providers/azurerm/resource_arm_network_interface_card.go index 2bef8ca047..2e6da455c1 100644 --- a/builtin/providers/azurerm/resource_arm_network_interface_card.go +++ b/builtin/providers/azurerm/resource_arm_network_interface_card.go @@ -145,6 +145,12 @@ func resourceArmNetworkInterface() *schema.Resource { Computed: true, }, + "enable_ip_forwarding": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + "tags": tagsSchema(), }, } @@ -159,9 +165,12 @@ func resourceArmNetworkInterfaceCreate(d *schema.ResourceData, meta interface{}) name := d.Get("name").(string) location := d.Get("location").(string) resGroup := d.Get("resource_group_name").(string) + enableIpForwarding := d.Get("enable_ip_forwarding").(bool) tags := d.Get("tags").(map[string]interface{}) - properties := network.InterfacePropertiesFormat{} + properties := network.InterfacePropertiesFormat{ + EnableIPForwarding: &enableIpForwarding, + } if v, ok := d.GetOk("network_security_group_id"); ok { nsgId := v.(string) diff --git a/builtin/providers/azurerm/resource_arm_network_interface_card_test.go b/builtin/providers/azurerm/resource_arm_network_interface_card_test.go index 8936010134..156b4bdf55 100644 --- a/builtin/providers/azurerm/resource_arm_network_interface_card_test.go +++ b/builtin/providers/azurerm/resource_arm_network_interface_card_test.go @@ -26,6 +26,25 @@ func TestAccAzureRMNetworkInterface_basic(t *testing.T) { }) } +func TestAccAzureRMNetworkInterfaceenableIPForwarding(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccAzureRMNetworkInterface_ipForwarding, + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"), + resource.TestCheckResourceAttr( + "azurerm_network_interface.test", "enable_ip_forwarding", "true"), + ), + }, + }, + }) +} + func TestAccAzureRMNetworkInterface_withTags(t *testing.T) { resource.Test(t, resource.TestCase{ @@ -176,6 +195,40 @@ resource "azurerm_network_interface" "test" { } ` +var testAccAzureRMNetworkInterface_ipForwarding = ` +resource "azurerm_resource_group" "test" { + name = "acceptanceTestResourceGroup1" + location = "West US" +} + +resource "azurerm_virtual_network" "test" { + name = "acceptanceTestVirtualNetwork1" + address_space = ["10.0.0.0/16"] + location = "West US" + resource_group_name = "${azurerm_resource_group.test.name}" +} + +resource "azurerm_subnet" "test" { + name = "testsubnet" + resource_group_name = "${azurerm_resource_group.test.name}" + virtual_network_name = "${azurerm_virtual_network.test.name}" + address_prefix = "10.0.2.0/24" +} + +resource "azurerm_network_interface" "test" { + name = "acceptanceTestNetworkInterface1" + location = "West US" + resource_group_name = "${azurerm_resource_group.test.name}" + enable_ip_forwarding = true + + ip_configuration { + name = "testconfiguration1" + subnet_id = "${azurerm_subnet.test.id}" + private_ip_address_allocation = "dynamic" + } +} +` + var testAccAzureRMNetworkInterface_withTags = ` resource "azurerm_resource_group" "test" { name = "acceptanceTestResourceGroup1" diff --git a/website/source/docs/providers/azurerm/r/network_interface.html.markdown b/website/source/docs/providers/azurerm/r/network_interface.html.markdown index a60a66c69d..33a1c00aff 100644 --- a/website/source/docs/providers/azurerm/r/network_interface.html.markdown +++ b/website/source/docs/providers/azurerm/r/network_interface.html.markdown @@ -67,6 +67,8 @@ The following arguments are supported: * `internal_dns_name_label` - (Optional) Relative DNS name for this NIC used for internal communications between VMs in the same VNet +* `enable_ip_forwarding` - (Optional) Enables IP Forwarding on the NIC. Defaults to `false`. + * `dns_servers` - (Optional) List of DNS servers IP addresses to use for this NIC, overrides the VNet-level server list * `ip_configuration` - (Optional) Collection of ipConfigurations associated with this NIC. Each `ip_configuration` block supports fields documented below.