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 //`