github.com/sarguru/terraform@v0.6.17-0.20160525232901-8fcdfd7e3dc9/builtin/providers/azurerm/resource_arm_network_interface_card_test.go (about)

     1  package azurerm
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  func TestAccAzureRMNetworkInterface_basic(t *testing.T) {
    13  
    14  	resource.Test(t, resource.TestCase{
    15  		PreCheck:     func() { testAccPreCheck(t) },
    16  		Providers:    testAccProviders,
    17  		CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy,
    18  		Steps: []resource.TestStep{
    19  			resource.TestStep{
    20  				Config: testAccAzureRMNetworkInterface_basic,
    21  				Check: resource.ComposeTestCheckFunc(
    22  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    23  				),
    24  			},
    25  		},
    26  	})
    27  }
    28  
    29  func TestAccAzureRMNetworkInterfaceenableIPForwarding(t *testing.T) {
    30  
    31  	resource.Test(t, resource.TestCase{
    32  		PreCheck:     func() { testAccPreCheck(t) },
    33  		Providers:    testAccProviders,
    34  		CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy,
    35  		Steps: []resource.TestStep{
    36  			resource.TestStep{
    37  				Config: testAccAzureRMNetworkInterface_ipForwarding,
    38  				Check: resource.ComposeTestCheckFunc(
    39  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    40  					resource.TestCheckResourceAttr(
    41  						"azurerm_network_interface.test", "enable_ip_forwarding", "true"),
    42  				),
    43  			},
    44  		},
    45  	})
    46  }
    47  
    48  func TestAccAzureRMNetworkInterface_withTags(t *testing.T) {
    49  
    50  	resource.Test(t, resource.TestCase{
    51  		PreCheck:     func() { testAccPreCheck(t) },
    52  		Providers:    testAccProviders,
    53  		CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy,
    54  		Steps: []resource.TestStep{
    55  			resource.TestStep{
    56  				Config: testAccAzureRMNetworkInterface_withTags,
    57  				Check: resource.ComposeTestCheckFunc(
    58  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    59  					resource.TestCheckResourceAttr(
    60  						"azurerm_network_interface.test", "tags.#", "2"),
    61  					resource.TestCheckResourceAttr(
    62  						"azurerm_network_interface.test", "tags.environment", "Production"),
    63  					resource.TestCheckResourceAttr(
    64  						"azurerm_network_interface.test", "tags.cost_center", "MSFT"),
    65  				),
    66  			},
    67  
    68  			resource.TestStep{
    69  				Config: testAccAzureRMNetworkInterface_withTagsUpdate,
    70  				Check: resource.ComposeTestCheckFunc(
    71  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    72  					resource.TestCheckResourceAttr(
    73  						"azurerm_network_interface.test", "tags.#", "1"),
    74  					resource.TestCheckResourceAttr(
    75  						"azurerm_network_interface.test", "tags.environment", "staging"),
    76  				),
    77  			},
    78  		},
    79  	})
    80  }
    81  
    82  ///TODO: Re-enable this test when https://github.com/Azure/azure-sdk-for-go/issues/259 is fixed
    83  //func TestAccAzureRMNetworkInterface_addingIpConfigurations(t *testing.T) {
    84  //
    85  //	resource.Test(t, resource.TestCase{
    86  //		PreCheck:     func() { testAccPreCheck(t) },
    87  //		Providers:    testAccProviders,
    88  //		CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy,
    89  //		Steps: []resource.TestStep{
    90  //			resource.TestStep{
    91  //				Config: testAccAzureRMNetworkInterface_basic,
    92  //				Check: resource.ComposeTestCheckFunc(
    93  //					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    94  //					resource.TestCheckResourceAttr(
    95  //						"azurerm_network_interface.test", "ip_configuration.#", "1"),
    96  //				),
    97  //			},
    98  //
    99  //			resource.TestStep{
   100  //				Config: testAccAzureRMNetworkInterface_extraIpConfiguration,
   101  //				Check: resource.ComposeTestCheckFunc(
   102  //					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
   103  //					resource.TestCheckResourceAttr(
   104  //						"azurerm_network_interface.test", "ip_configuration.#", "2"),
   105  //				),
   106  //			},
   107  //		},
   108  //	})
   109  //}
   110  
   111  func testCheckAzureRMNetworkInterfaceExists(name string) resource.TestCheckFunc {
   112  	return func(s *terraform.State) error {
   113  		// Ensure we have enough information in state to look up in API
   114  		rs, ok := s.RootModule().Resources[name]
   115  		if !ok {
   116  			return fmt.Errorf("Not found: %s", name)
   117  		}
   118  
   119  		name := rs.Primary.Attributes["name"]
   120  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
   121  		if !hasResourceGroup {
   122  			return fmt.Errorf("Bad: no resource group found in state for availability set: %s", name)
   123  		}
   124  
   125  		conn := testAccProvider.Meta().(*ArmClient).ifaceClient
   126  
   127  		resp, err := conn.Get(resourceGroup, name, "")
   128  		if err != nil {
   129  			return fmt.Errorf("Bad: Get on ifaceClient: %s", err)
   130  		}
   131  
   132  		if resp.StatusCode == http.StatusNotFound {
   133  			return fmt.Errorf("Bad: Network Interface %q (resource group: %q) does not exist", name, resourceGroup)
   134  		}
   135  
   136  		return nil
   137  	}
   138  }
   139  
   140  func testCheckAzureRMNetworkInterfaceDestroy(s *terraform.State) error {
   141  	conn := testAccProvider.Meta().(*ArmClient).ifaceClient
   142  
   143  	for _, rs := range s.RootModule().Resources {
   144  		if rs.Type != "azurerm_network_interface" {
   145  			continue
   146  		}
   147  
   148  		name := rs.Primary.Attributes["name"]
   149  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
   150  
   151  		resp, err := conn.Get(resourceGroup, name, "")
   152  
   153  		if err != nil {
   154  			return nil
   155  		}
   156  
   157  		if resp.StatusCode != http.StatusNotFound {
   158  			return fmt.Errorf("Network Interface still exists:\n%#v", resp.Properties)
   159  		}
   160  	}
   161  
   162  	return nil
   163  }
   164  
   165  var testAccAzureRMNetworkInterface_basic = `
   166  resource "azurerm_resource_group" "test" {
   167      name = "acceptanceTestResourceGroup1"
   168      location = "West US"
   169  }
   170  
   171  resource "azurerm_virtual_network" "test" {
   172      name = "acceptanceTestVirtualNetwork1"
   173      address_space = ["10.0.0.0/16"]
   174      location = "West US"
   175      resource_group_name = "${azurerm_resource_group.test.name}"
   176  }
   177  
   178  resource "azurerm_subnet" "test" {
   179      name = "testsubnet"
   180      resource_group_name = "${azurerm_resource_group.test.name}"
   181      virtual_network_name = "${azurerm_virtual_network.test.name}"
   182      address_prefix = "10.0.2.0/24"
   183  }
   184  
   185  resource "azurerm_network_interface" "test" {
   186      name = "acceptanceTestNetworkInterface1"
   187      location = "West US"
   188      resource_group_name = "${azurerm_resource_group.test.name}"
   189  
   190      ip_configuration {
   191      	name = "testconfiguration1"
   192      	subnet_id = "${azurerm_subnet.test.id}"
   193      	private_ip_address_allocation = "dynamic"
   194      }
   195  }
   196  `
   197  
   198  var testAccAzureRMNetworkInterface_ipForwarding = `
   199  resource "azurerm_resource_group" "test" {
   200      name = "acceptanceTestResourceGroup1"
   201      location = "West US"
   202  }
   203  
   204  resource "azurerm_virtual_network" "test" {
   205      name = "acceptanceTestVirtualNetwork1"
   206      address_space = ["10.0.0.0/16"]
   207      location = "West US"
   208      resource_group_name = "${azurerm_resource_group.test.name}"
   209  }
   210  
   211  resource "azurerm_subnet" "test" {
   212      name = "testsubnet"
   213      resource_group_name = "${azurerm_resource_group.test.name}"
   214      virtual_network_name = "${azurerm_virtual_network.test.name}"
   215      address_prefix = "10.0.2.0/24"
   216  }
   217  
   218  resource "azurerm_network_interface" "test" {
   219      name = "acceptanceTestNetworkInterface1"
   220      location = "West US"
   221      resource_group_name = "${azurerm_resource_group.test.name}"
   222      enable_ip_forwarding = true
   223  
   224      ip_configuration {
   225      	name = "testconfiguration1"
   226      	subnet_id = "${azurerm_subnet.test.id}"
   227      	private_ip_address_allocation = "dynamic"
   228      }
   229  }
   230  `
   231  
   232  var testAccAzureRMNetworkInterface_withTags = `
   233  resource "azurerm_resource_group" "test" {
   234      name = "acceptanceTestResourceGroup1"
   235      location = "West US"
   236  }
   237  
   238  resource "azurerm_virtual_network" "test" {
   239      name = "acceptanceTestVirtualNetwork1"
   240      address_space = ["10.0.0.0/16"]
   241      location = "West US"
   242      resource_group_name = "${azurerm_resource_group.test.name}"
   243  }
   244  
   245  resource "azurerm_subnet" "test" {
   246      name = "testsubnet"
   247      resource_group_name = "${azurerm_resource_group.test.name}"
   248      virtual_network_name = "${azurerm_virtual_network.test.name}"
   249      address_prefix = "10.0.2.0/24"
   250  }
   251  
   252  resource "azurerm_network_interface" "test" {
   253      name = "acceptanceTestNetworkInterface1"
   254      location = "West US"
   255      resource_group_name = "${azurerm_resource_group.test.name}"
   256  
   257      ip_configuration {
   258      	name = "testconfiguration1"
   259      	subnet_id = "${azurerm_subnet.test.id}"
   260      	private_ip_address_allocation = "dynamic"
   261      }
   262  
   263      tags {
   264  	environment = "Production"
   265  	cost_center = "MSFT"
   266      }
   267  }
   268  `
   269  
   270  var testAccAzureRMNetworkInterface_withTagsUpdate = `
   271  resource "azurerm_resource_group" "test" {
   272      name = "acceptanceTestResourceGroup1"
   273      location = "West US"
   274  }
   275  
   276  resource "azurerm_virtual_network" "test" {
   277      name = "acceptanceTestVirtualNetwork1"
   278      address_space = ["10.0.0.0/16"]
   279      location = "West US"
   280      resource_group_name = "${azurerm_resource_group.test.name}"
   281  }
   282  
   283  resource "azurerm_subnet" "test" {
   284      name = "testsubnet"
   285      resource_group_name = "${azurerm_resource_group.test.name}"
   286      virtual_network_name = "${azurerm_virtual_network.test.name}"
   287      address_prefix = "10.0.2.0/24"
   288  }
   289  
   290  resource "azurerm_network_interface" "test" {
   291      name = "acceptanceTestNetworkInterface1"
   292      location = "West US"
   293      resource_group_name = "${azurerm_resource_group.test.name}"
   294  
   295      ip_configuration {
   296      	name = "testconfiguration1"
   297      	subnet_id = "${azurerm_subnet.test.id}"
   298      	private_ip_address_allocation = "dynamic"
   299      }
   300  
   301      tags {
   302  	environment = "staging"
   303      }
   304  }
   305  `
   306  
   307  //TODO: Re-enable this test when https://github.com/Azure/azure-sdk-for-go/issues/259 is fixed
   308  //var testAccAzureRMNetworkInterface_extraIpConfiguration = `
   309  //resource "azurerm_resource_group" "test" {
   310  //    name = "acceptanceTestResourceGroup1"
   311  //    location = "West US"
   312  //}
   313  //
   314  //resource "azurerm_virtual_network" "test" {
   315  //    name = "acceptanceTestVirtualNetwork1"
   316  //    address_space = ["10.0.0.0/16"]
   317  //    location = "West US"
   318  //    resource_group_name = "${azurerm_resource_group.test.name}"
   319  //}
   320  //
   321  //resource "azurerm_subnet" "test" {
   322  //    name = "testsubnet"
   323  //    resource_group_name = "${azurerm_resource_group.test.name}"
   324  //    virtual_network_name = "${azurerm_virtual_network.test.name}"
   325  //    address_prefix = "10.0.2.0/24"
   326  //}
   327  //
   328  //resource "azurerm_subnet" "test1" {
   329  //    name = "testsubnet1"
   330  //    resource_group_name = "${azurerm_resource_group.test.name}"
   331  //    virtual_network_name = "${azurerm_virtual_network.test.name}"
   332  //    address_prefix = "10.0.1.0/24"
   333  //}
   334  //
   335  //resource "azurerm_network_interface" "test" {
   336  //    name = "acceptanceTestNetworkInterface1"
   337  //    location = "West US"
   338  //    resource_group_name = "${azurerm_resource_group.test.name}"
   339  //
   340  //    ip_configuration {
   341  //    	name = "testconfiguration1"
   342  //    	subnet_id = "${azurerm_subnet.test.id}"
   343  //    	private_ip_address_allocation = "dynamic"
   344  //    }
   345  //
   346  //    ip_configuration {
   347  //    	name = "testconfiguration2"
   348  //    	subnet_id = "${azurerm_subnet.test1.id}"
   349  //    	private_ip_address_allocation = "dynamic"
   350  //    	primary = true
   351  //    }
   352  //}
   353  //`