github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/azurerm/resource_arm_availability_set_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 TestAccAzureRMAvailabilitySet_basic(t *testing.T) {
    13  
    14  	resource.Test(t, resource.TestCase{
    15  		PreCheck:     func() { testAccPreCheck(t) },
    16  		Providers:    testAccProviders,
    17  		CheckDestroy: testCheckAzureRMAvailabilitySetDestroy,
    18  		Steps: []resource.TestStep{
    19  			resource.TestStep{
    20  				Config: testAccAzureRMVAvailabilitySet_basic,
    21  				Check: resource.ComposeTestCheckFunc(
    22  					testCheckAzureRMAvailabilitySetExists("azurerm_availability_set.test"),
    23  					resource.TestCheckResourceAttr(
    24  						"azurerm_availability_set.test", "name", "acceptanceTestAvailabilitySet1"),
    25  					resource.TestCheckResourceAttr(
    26  						"azurerm_availability_set.test", "platform_update_domain_count", "5"),
    27  					resource.TestCheckResourceAttr(
    28  						"azurerm_availability_set.test", "platform_fault_domain_count", "3"),
    29  				),
    30  			},
    31  		},
    32  	})
    33  }
    34  
    35  func TestAccAzureRMAvailabilitySet_withTags(t *testing.T) {
    36  
    37  	resource.Test(t, resource.TestCase{
    38  		PreCheck:     func() { testAccPreCheck(t) },
    39  		Providers:    testAccProviders,
    40  		CheckDestroy: testCheckAzureRMAvailabilitySetDestroy,
    41  		Steps: []resource.TestStep{
    42  			resource.TestStep{
    43  				Config: testAccAzureRMVAvailabilitySet_withTags,
    44  				Check: resource.ComposeTestCheckFunc(
    45  					testCheckAzureRMAvailabilitySetExists("azurerm_availability_set.test"),
    46  					resource.TestCheckResourceAttr(
    47  						"azurerm_availability_set.test", "tags.#", "2"),
    48  					resource.TestCheckResourceAttr(
    49  						"azurerm_availability_set.test", "tags.environment", "Production"),
    50  					resource.TestCheckResourceAttr(
    51  						"azurerm_availability_set.test", "tags.cost_center", "MSFT"),
    52  				),
    53  			},
    54  
    55  			resource.TestStep{
    56  				Config: testAccAzureRMVAvailabilitySet_withUpdatedTags,
    57  				Check: resource.ComposeTestCheckFunc(
    58  					testCheckAzureRMAvailabilitySetExists("azurerm_availability_set.test"),
    59  					resource.TestCheckResourceAttr(
    60  						"azurerm_availability_set.test", "tags.#", "1"),
    61  					resource.TestCheckResourceAttr(
    62  						"azurerm_availability_set.test", "tags.environment", "staging"),
    63  				),
    64  			},
    65  		},
    66  	})
    67  }
    68  
    69  func TestAccAzureRMAvailabilitySet_withDomainCounts(t *testing.T) {
    70  
    71  	resource.Test(t, resource.TestCase{
    72  		PreCheck:     func() { testAccPreCheck(t) },
    73  		Providers:    testAccProviders,
    74  		CheckDestroy: testCheckAzureRMAvailabilitySetDestroy,
    75  		Steps: []resource.TestStep{
    76  			resource.TestStep{
    77  				Config: testAccAzureRMVAvailabilitySet_withDomainCounts,
    78  				Check: resource.ComposeTestCheckFunc(
    79  					testCheckAzureRMAvailabilitySetExists("azurerm_availability_set.test"),
    80  					resource.TestCheckResourceAttr(
    81  						"azurerm_availability_set.test", "name", "acceptanceTestAvailabilitySet1"),
    82  					resource.TestCheckResourceAttr(
    83  						"azurerm_availability_set.test", "platform_update_domain_count", "10"),
    84  					resource.TestCheckResourceAttr(
    85  						"azurerm_availability_set.test", "platform_fault_domain_count", "1"),
    86  				),
    87  			},
    88  		},
    89  	})
    90  }
    91  
    92  func testCheckAzureRMAvailabilitySetExists(name string) resource.TestCheckFunc {
    93  	return func(s *terraform.State) error {
    94  		// Ensure we have enough information in state to look up in API
    95  		rs, ok := s.RootModule().Resources[name]
    96  		if !ok {
    97  			return fmt.Errorf("Not found: %s", name)
    98  		}
    99  
   100  		availSetName := rs.Primary.Attributes["name"]
   101  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
   102  		if !hasResourceGroup {
   103  			return fmt.Errorf("Bad: no resource group found in state for availability set: %s", availSetName)
   104  		}
   105  
   106  		conn := testAccProvider.Meta().(*ArmClient).availSetClient
   107  
   108  		resp, err := conn.Get(resourceGroup, availSetName)
   109  		if err != nil {
   110  			return fmt.Errorf("Bad: Get on availSetClient: %s", err)
   111  		}
   112  
   113  		if resp.StatusCode == http.StatusNotFound {
   114  			return fmt.Errorf("Bad: Availability Set %q (resource group: %q) does not exist", name, resourceGroup)
   115  		}
   116  
   117  		return nil
   118  	}
   119  }
   120  
   121  func testCheckAzureRMAvailabilitySetDestroy(s *terraform.State) error {
   122  	conn := testAccProvider.Meta().(*ArmClient).vnetClient
   123  
   124  	for _, rs := range s.RootModule().Resources {
   125  		if rs.Type != "azurerm_availability_set" {
   126  			continue
   127  		}
   128  
   129  		name := rs.Primary.Attributes["name"]
   130  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
   131  
   132  		resp, err := conn.Get(resourceGroup, name, "")
   133  
   134  		if err != nil {
   135  			return nil
   136  		}
   137  
   138  		if resp.StatusCode != http.StatusNotFound {
   139  			return fmt.Errorf("Availability Set still exists:\n%#v", resp.Properties)
   140  		}
   141  	}
   142  
   143  	return nil
   144  }
   145  
   146  var testAccAzureRMVAvailabilitySet_basic = `
   147  resource "azurerm_resource_group" "test" {
   148      name = "acceptanceTestResourceGroup1"
   149      location = "West US"
   150  }
   151  resource "azurerm_availability_set" "test" {
   152      name = "acceptanceTestAvailabilitySet1"
   153      location = "West US"
   154      resource_group_name = "${azurerm_resource_group.test.name}"
   155  }
   156  `
   157  
   158  var testAccAzureRMVAvailabilitySet_withTags = `
   159  resource "azurerm_resource_group" "test" {
   160      name = "acceptanceTestResourceGroup1"
   161      location = "West US"
   162  }
   163  resource "azurerm_availability_set" "test" {
   164      name = "acceptanceTestAvailabilitySet1"
   165      location = "West US"
   166      resource_group_name = "${azurerm_resource_group.test.name}"
   167  
   168      tags {
   169  	environment = "Production"
   170  	cost_center = "MSFT"
   171      }
   172  }
   173  `
   174  
   175  var testAccAzureRMVAvailabilitySet_withUpdatedTags = `
   176  resource "azurerm_resource_group" "test" {
   177      name = "acceptanceTestResourceGroup1"
   178      location = "West US"
   179  }
   180  resource "azurerm_availability_set" "test" {
   181      name = "acceptanceTestAvailabilitySet1"
   182      location = "West US"
   183      resource_group_name = "${azurerm_resource_group.test.name}"
   184  
   185      tags {
   186  	environment = "staging"
   187      }
   188  }
   189  `
   190  
   191  var testAccAzureRMVAvailabilitySet_withDomainCounts = `
   192  resource "azurerm_resource_group" "test" {
   193      name = "acceptanceTestResourceGroup1"
   194      location = "West US"
   195  }
   196  resource "azurerm_availability_set" "test" {
   197      name = "acceptanceTestAvailabilitySet1"
   198      location = "West US"
   199      resource_group_name = "${azurerm_resource_group.test.name}"
   200      platform_update_domain_count = 10
   201      platform_fault_domain_count = 1
   202  }
   203  `