/azurerm/internal/services/storage/tests/resource_arm_hpc_cache_blob_target_test.go

https://github.com/terraform-providers/terraform-provider-azurerm · Go · 240 lines · 216 code · 24 blank · 0 comment · 14 complexity · cceb6a1f6040f7fd068a4d836a1255d8 MD5 · raw file

  1. package tests
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/storage/parsers"
  6. "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
  7. "github.com/hashicorp/terraform-plugin-sdk/terraform"
  8. "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/acceptance"
  9. "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
  10. "github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
  11. )
  12. func TestAccAzureRMHPCCacheBlobTarget_basic(t *testing.T) {
  13. data := acceptance.BuildTestData(t, "azurerm_hpc_cache_blob_target", "test")
  14. resource.ParallelTest(t, resource.TestCase{
  15. PreCheck: func() { acceptance.PreCheck(t) },
  16. Providers: acceptance.SupportedProviders,
  17. CheckDestroy: testCheckAzureRMHPCCacheBlobTargetDestroy,
  18. Steps: []resource.TestStep{
  19. {
  20. Config: testAccAzureRMHPCCacheBlobTarget_basic(data),
  21. Check: resource.ComposeTestCheckFunc(
  22. testCheckAzureRMHPCCacheBlobTargetExists(data.ResourceName),
  23. ),
  24. },
  25. data.ImportStep(),
  26. },
  27. })
  28. }
  29. func TestAccAzureRMHPCCacheBlobTarget_update(t *testing.T) {
  30. data := acceptance.BuildTestData(t, "azurerm_hpc_cache_blob_target", "test")
  31. resource.ParallelTest(t, resource.TestCase{
  32. PreCheck: func() { acceptance.PreCheck(t) },
  33. Providers: acceptance.SupportedProviders,
  34. CheckDestroy: testCheckAzureRMHPCCacheBlobTargetDestroy,
  35. Steps: []resource.TestStep{
  36. {
  37. Config: testAccAzureRMHPCCacheBlobTarget_basic(data),
  38. Check: resource.ComposeTestCheckFunc(
  39. testCheckAzureRMHPCCacheBlobTargetExists(data.ResourceName),
  40. ),
  41. },
  42. data.ImportStep(),
  43. {
  44. Config: testAccAzureRMHPCCacheBlobTarget_namespace(data),
  45. Check: resource.ComposeTestCheckFunc(
  46. testCheckAzureRMHPCCacheBlobTargetExists(data.ResourceName),
  47. ),
  48. },
  49. data.ImportStep(),
  50. },
  51. })
  52. }
  53. func TestAccAzureRMHPCCacheBlobTarget_requiresImport(t *testing.T) {
  54. data := acceptance.BuildTestData(t, "azurerm_hpc_cache_blob_target", "test")
  55. resource.ParallelTest(t, resource.TestCase{
  56. PreCheck: func() { acceptance.PreCheck(t) },
  57. Providers: acceptance.SupportedProviders,
  58. CheckDestroy: testCheckAzureRMHPCCacheBlobTargetDestroy,
  59. Steps: []resource.TestStep{
  60. {
  61. Config: testAccAzureRMHPCCacheBlobTarget_basic(data),
  62. Check: resource.ComposeTestCheckFunc(
  63. testCheckAzureRMHPCCacheBlobTargetExists(data.ResourceName),
  64. ),
  65. },
  66. data.RequiresImportErrorStep(testAccAzureRMHPCCacheBlobTarget_requiresImport),
  67. },
  68. })
  69. }
  70. func testCheckAzureRMHPCCacheBlobTargetExists(resourceName string) resource.TestCheckFunc {
  71. return func(s *terraform.State) error {
  72. rs, ok := s.RootModule().Resources[resourceName]
  73. if !ok {
  74. return fmt.Errorf("HPC Cache Blob Target not found: %s", resourceName)
  75. }
  76. id, err := parsers.HPCCacheTargetID(rs.Primary.ID)
  77. if err != nil {
  78. return err
  79. }
  80. client := acceptance.AzureProvider.Meta().(*clients.Client).Storage.StorageTargetsClient
  81. ctx := acceptance.AzureProvider.Meta().(*clients.Client).StopContext
  82. if resp, err := client.Get(ctx, id.ResourceGroup, id.Cache, id.Name); err != nil {
  83. if utils.ResponseWasNotFound(resp.Response) {
  84. return fmt.Errorf("Bad: HPC Cache Blob Target %q (Resource Group %q) does not exist", id.Name, id.ResourceGroup)
  85. }
  86. return fmt.Errorf("Bad: Get on Storage.StorageTargetsClient: %+v", err)
  87. }
  88. return nil
  89. }
  90. }
  91. func testCheckAzureRMHPCCacheBlobTargetDestroy(s *terraform.State) error {
  92. client := acceptance.AzureProvider.Meta().(*clients.Client).Storage.StorageTargetsClient
  93. ctx := acceptance.AzureProvider.Meta().(*clients.Client).StopContext
  94. for _, rs := range s.RootModule().Resources {
  95. if rs.Type != "azurerm_hpc_cache_blob_target" {
  96. continue
  97. }
  98. id, err := parsers.HPCCacheTargetID(rs.Primary.ID)
  99. if err != nil {
  100. return err
  101. }
  102. if resp, err := client.Get(ctx, id.ResourceGroup, id.Cache, id.Name); err != nil {
  103. if !utils.ResponseWasNotFound(resp.Response) {
  104. return fmt.Errorf("Bad: Get on Storage.StorageTargetsClient: %+v", err)
  105. }
  106. }
  107. return nil
  108. }
  109. return nil
  110. }
  111. func testAccAzureRMHPCCacheBlobTarget_basic(data acceptance.TestData) string {
  112. template := testAccAzureRMHPCCacheBlobTarget_template(data)
  113. return fmt.Sprintf(`
  114. %s
  115. resource "azurerm_hpc_cache_blob_target" "test" {
  116. name = "acctest-HPCCTGT-%s"
  117. resource_group_name = azurerm_resource_group.test.name
  118. cache_name = azurerm_hpc_cache.test.name
  119. storage_container_id = azurerm_storage_container.test.resource_manager_id
  120. namespace_path = "/blob_storage1"
  121. }
  122. `, template, data.RandomString)
  123. }
  124. func testAccAzureRMHPCCacheBlobTarget_namespace(data acceptance.TestData) string {
  125. template := testAccAzureRMHPCCacheBlobTarget_template(data)
  126. return fmt.Sprintf(`
  127. %s
  128. resource "azurerm_hpc_cache_blob_target" "test" {
  129. name = "acctest-HPCCTGT-%s"
  130. resource_group_name = azurerm_resource_group.test.name
  131. cache_name = azurerm_hpc_cache.test.name
  132. storage_container_id = azurerm_storage_container.test.resource_manager_id
  133. namespace_path = "/blob_storage2"
  134. }
  135. `, template, data.RandomString)
  136. }
  137. func testAccAzureRMHPCCacheBlobTarget_requiresImport(data acceptance.TestData) string {
  138. template := testAccAzureRMHPCCacheBlobTarget_basic(data)
  139. return fmt.Sprintf(`
  140. %s
  141. resource "azurerm_hpc_cache_blob_target" "import" {
  142. name = azurerm_hpc_cache_blob_target.test.name
  143. resource_group_name = azurerm_hpc_cache_blob_target.test.resource_group_name
  144. cache_name = azurerm_hpc_cache_blob_target.test.cache_name
  145. storage_container_id = azurerm_hpc_cache_blob_target.test.storage_container_id
  146. namespace_path = azurerm_hpc_cache_blob_target.test.namespace_path
  147. }
  148. `, template)
  149. }
  150. func testAccAzureRMHPCCacheBlobTarget_template(data acceptance.TestData) string {
  151. return fmt.Sprintf(`
  152. provider "azurerm" {
  153. features {}
  154. }
  155. resource "azurerm_resource_group" "test" {
  156. name = "acctestRG-storage-%d"
  157. location = "%s"
  158. }
  159. resource "azurerm_virtual_network" "test" {
  160. name = "acctest-VN-%d"
  161. address_space = ["10.0.0.0/16"]
  162. location = azurerm_resource_group.test.location
  163. resource_group_name = azurerm_resource_group.test.name
  164. }
  165. resource "azurerm_subnet" "test" {
  166. name = "acctestsub-%d"
  167. resource_group_name = azurerm_resource_group.test.name
  168. virtual_network_name = azurerm_virtual_network.test.name
  169. address_prefix = "10.0.2.0/24"
  170. }
  171. resource "azurerm_hpc_cache" "test" {
  172. name = "acctest-HPCC-%d"
  173. resource_group_name = azurerm_resource_group.test.name
  174. location = azurerm_resource_group.test.location
  175. cache_size_in_gb = 3072
  176. subnet_id = azurerm_subnet.test.id
  177. sku_name = "Standard_2G"
  178. }
  179. data "azuread_service_principal" "test" {
  180. display_name = "HPC Cache Resource Provider"
  181. }
  182. resource "azurerm_storage_account" "test" {
  183. name = "accteststorgacc%s"
  184. resource_group_name = azurerm_resource_group.test.name
  185. location = azurerm_resource_group.test.location
  186. account_tier = "Standard"
  187. account_replication_type = "LRS"
  188. }
  189. resource "azurerm_storage_container" "test" {
  190. name = "acctest-strgctn-%s"
  191. storage_account_name = azurerm_storage_account.test.name
  192. }
  193. resource "azurerm_role_assignment" "test_storage_account_contrib" {
  194. scope = azurerm_storage_account.test.id
  195. role_definition_name = "Storage Account Contributor"
  196. principal_id = data.azuread_service_principal.test.object_id
  197. }
  198. resource "azurerm_role_assignment" "test_storage_blob_data_contrib" {
  199. scope = azurerm_storage_account.test.id
  200. role_definition_name = "Storage Blob Data Contributor"
  201. principal_id = data.azuread_service_principal.test.object_id
  202. }
  203. `, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger, data.RandomInteger, data.RandomString, data.RandomString)
  204. }