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 `