Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

azurerm_storage_account: Plan time name validation #23799

Merged
merged 1 commit into from Nov 30, 2023

Conversation

magodo
Copy link
Collaborator

@magodo magodo commented Nov 7, 2023

This PR extends the customizediff for the azurerm_storage_account resource to check the name availability for the new resource creation scenario. This makes users to fail fast during the plan stage (actually post-plan customize diff stage) if the name is already taken by another storage account.

The example run for the above case is illustrated below:

storage/account/basic via πŸ’  default
πŸ’€  tf plan
β•·
β”‚ Warning: Provider development overrides are in effect
β”‚
β”‚ The following provider development overrides are set in the CLI configuration:
β”‚  - hashicorp/azurerm in /home/magodo/go/bin
β”‚
β”‚ The behavior may therefore not match any released version of the provider and applying changes may cause the state to become incompatible with published releases.
β•΅

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform planned the following actions, but then encountered a problem:

  # azurerm_resource_group.test will be created
  + resource "azurerm_resource_group" "test" {
      + id       = (known after apply)
      + location = "westeurope"
      + name     = "acctestRG-storage-mgdtest"
    }

Plan: 1 to add, 0 to change, 0 to destroy.
β•·
β”‚ Error: 1 error occurred:
β”‚       * `name` is not available: [AlreadyExists] The storage account named acctestsatsiuipii is already taken.
β”‚
β”‚
β”‚
β”‚   with azurerm_storage_account.test,
β”‚   on main.tf line 14, in resource "azurerm_storage_account" "test":
β”‚   14: resource "azurerm_storage_account" "test" {
β”‚
β•΅

Test

Ensure this doesn't affect the happy path:

terraform-provider-azurerm on ξ‚  storage_account_name_check via 🐹 v1.21.1
πŸ’€  TF_ACC=1 go test -v -timeout=20h ./internal/services/storage -run='TestAccStorageAccount_basic$'
=== RUN   TestAccStorageAccount_basic
=== PAUSE TestAccStorageAccount_basic
=== CONT  TestAccStorageAccount_basic
--- PASS: TestAccStorageAccount_basic (263.06s)
PASS
ok      github.com/hashicorp/terraform-provider-azurerm/internal/services/storage       263.070s

Fix #23791

Copy link
Member

@catriona-m catriona-m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @magodo LGTM!

@catriona-m catriona-m merged commit 828f8cf into hashicorp:main Nov 30, 2023
20 checks passed
@github-actions github-actions bot added this to the v3.83.0 milestone Nov 30, 2023
catriona-m added a commit that referenced this pull request Nov 30, 2023
magodo added a commit to magodo/terraform-provider-azurerm that referenced this pull request Dec 7, 2023
dduportal added a commit to jenkins-infra/azure that referenced this pull request Dec 12, 2023
<Actions>
<action
id="f410411e63aff4bb73a81c2aec1d373cf8a903e63b30dee2006b0030d8a94cc8">
        <h3>Bump Terraform `azurerm` provider version</h3>
<details
id="1d9343c012f5434ac9fe8a98135bae3667b399259be16d9b14302ea3bd424a24">
            <summary>Update Terraform lock file</summary>
<p>&#34;hashicorp/azurerm&#34; updated from &#34;3.82.0&#34; to
&#34;3.83.0&#34; in file &#34;.terraform.lock.hcl&#34;</p>
            <details>
                <summary>3.83.0</summary>
<pre>Changelog retrieved
from:&#xA;&#x9;https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.83.0&#xA;UPGRADE
NOTES&#xA;&#xA;* Key Vaults are now loaded using [the
`ListBySubscription` API within the Key Vault Resource
Provider](https://learn.microsoft.com/en-us/rest/api/keyvault/keyvault/vaults/list-by-subscription?view=rest-keyvault-keyvault-2022-07-01&amp;tabs=HTTP)
rather than [the Resources
API](https://learn.microsoft.com/en-us/rest/api/keyvault/keyvault/vaults/list?view=rest-keyvault-keyvault-2022-07-01&amp;tabs=HTTP).
This change means that the Provider now caches the list of Key Vaults
available within a Subscription, rather than loading these piecemeal to
workaround stale data returned from the Resources API
([#24019](https://github.com/hashicorp/terraform-provider-azurerm/issues/24019))&#xA;&#xA;FEATURES:&#xA;&#xA;*
New Data Source: `azurerm_stack_hci_cluster`
([#24032](https://github.com/hashicorp/terraform-provider-azurerm/issues/24032))&#xA;&#xA;ENHANCEMENTS:&#xA;&#xA;*
dependencies: updating to `v0.20231129.1103252` of
`github.com/hashicorp/go-azure-sdk`
([#24063](https://github.com/hashicorp/terraform-provider-azurerm/issues/24063))&#xA;*
`automation`: updating to API Version `2023-11-01`
([#24017](https://github.com/hashicorp/terraform-provider-azurerm/issues/24017))&#xA;*
`keyvault`: the cache is now populated using the `ListBySubscription`
endpoint on the KeyVault Resource Provider rather than via the
`Resources` API
([#24019](https://github.com/hashicorp/terraform-provider-azurerm/issues/24019)).&#xA;*
`keyvault`: updating the cache to populate all Key Vaults available
within the Subscription to reduce the number of API calls
([#24019](https://github.com/hashicorp/terraform-provider-azurerm/issues/24019))&#xA;*
Data Source `azurerm_private_dns_zone`: refactoring to use the
`ListBySubscription` API rather than the Resources API when
`resource_group_name` is omitted
([#24024](https://github.com/hashicorp/terraform-provider-azurerm/issues/24024))&#xA;*
`azurerm_dashboard_grafana` - support for `grafana_major_version`
([#24014](https://github.com/hashicorp/terraform-provider-azurerm/issues/24014))&#xA;*
`azurerm_linux_web_app` - add support for dotnet 8
([#23893](https://github.com/hashicorp/terraform-provider-azurerm/issues/23893))&#xA;*
`azurerm_linux_web_app_slot` - add support for dotnet 8
([#23893](https://github.com/hashicorp/terraform-provider-azurerm/issues/23893))&#xA;*
`azurerm_media_transform` - deprecate `face_detector_preset` and
`video_analyzer_preset`
([#24002](https://github.com/hashicorp/terraform-provider-azurerm/issues/24002))&#xA;*
`azurerm_postgresql_database` - update the validation of `collation` to
include `Norwegian_Norway.1252`
([#24070](https://github.com/hashicorp/terraform-provider-azurerm/issues/24070))&#xA;*
`azurerm_postgresql_flexible_server` - updating to API Version
`2023-06-01-preview`
([#24016](https://github.com/hashicorp/terraform-provider-azurerm/issues/24016))&#xA;*
`azurerm_redis_cache` - support for the
`active_directory_authentication_enabled` property
([#23976](https://github.com/hashicorp/terraform-provider-azurerm/issues/23976))&#xA;*
`azurerm_windows_web_app` - add support for dotnet 8
([#23893](https://github.com/hashicorp/terraform-provider-azurerm/issues/23893))&#xA;*
`azurerm_windows_web_app_slot` - add support for dotnet 8
([#23893](https://github.com/hashicorp/terraform-provider-azurerm/issues/23893))&#xA;*
`azurerm_storage_account` - add `name` validation in custom diff
([#23799](https://github.com/hashicorp/terraform-provider-azurerm/issues/23799))&#xA;&#xA;BUG
FIXES:&#xA;&#xA;* authentication: fix a bug where auxiliary tenants were
not correctly authorized
([#24063](https://github.com/hashicorp/terraform-provider-azurerm/issues/24063))&#xA;*
`azurerm_app_configuration` - normalize location in `replica` block
([#24074](https://github.com/hashicorp/terraform-provider-azurerm/issues/24074))&#xA;*
`azurerm_cosmosdb_account` - cosmosdb version and capabilities can now
be updated at the same time
([#24029](https://github.com/hashicorp/terraform-provider-azurerm/issues/24029))&#xA;*
`azurerm_data_factory_flowlet_data_flow` - `source` and `sink`
properties are now optional
([#23987](https://github.com/hashicorp/terraform-provider-azurerm/issues/23987))&#xA;*
`azurerm_datadog_monitor_tag_rule` - correctly handle default rule
([#22806](https://github.com/hashicorp/terraform-provider-azurerm/issues/22806))&#xA;*
`azurerm_ip_group`: fixing a crash when `firewall_ids` and
`firewall_policy_ids` weren&#39;t parsed correctly from the API Response
([#24031](https://github.com/hashicorp/terraform-provider-azurerm/issues/24031))&#xA;*
`azurerm_nginx_deployment` - add default value of `20` for `capacity`
([#24033](https://github.com/hashicorp/terraform-provider-azurerm/issues/24033))&#xA;&#xA;&#xA;</pre>
            </details>
            <details>
                <summary>3.84.0</summary>
<pre>Changelog retrieved
from:&#xA;&#x9;https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.84.0&#xA;FEATURES:&#xA;&#xA;*
**New Data Source:** `azurerm_storage_containers`
([#24061](https://github.com/hashicorp/terraform-provider-azurerm/issues/24061))&#xA;*
**New Resource:** `azurerm_elastic_san`
([#23619](https://github.com/hashicorp/terraform-provider-azurerm/issues/23619))&#xA;*
**New Resource:**
`azurerm_key_vault_managed_hardware_security_module_role_assignment`
([#22332](https://github.com/hashicorp/terraform-provider-azurerm/issues/22332))&#xA;*
**New Resource:**
`azurerm_key_vault_managed_hardware_security_module_role_definition`
([#22332](https://github.com/hashicorp/terraform-provider-azurerm/issues/22332))&#xA;&#xA;ENHANCEMENTS:&#xA;&#xA;*
dependencies: updating mssql elasticpools from `v5.0` to
`2023-05-01-preview`&#xA;* dependencies: updating to
`v0.20231207.1122031` of `github.com/hashicorp/go-azure-sdk`
([#24149](https://github.com/hashicorp/terraform-provider-azurerm/issues/24149))&#xA;*
Data Source: `azurerm_storage_account` - export the primary and
secondary internet and microsoft hostnames for blobs, dfs, files,
queues, tables and web
([#23517](https://github.com/hashicorp/terraform-provider-azurerm/issues/23517))&#xA;*
Data Source: `azurerm_cosmosdb_account` - export the
`connection_strings`, `primary_sql_connection_string`,
`secondary_sql_connection_string`,
`primary_readonly_sql_connection_string`,
`secondary_readonly_sql_connection_string`,
`primary_mongodb_connection_string`,
`secondary_mongodb_connection_string`,
`primary_readonly_mongodb_connection_string`, and
`secondary_readonly_mongodb_connection_string` attributes
([#24129](https://github.com/hashicorp/terraform-provider-azurerm/issues/24129))&#xA;*
`azurerm_bot_service_azure_bot` - support for the
`public_network_access_enabled` property
([#24125](https://github.com/hashicorp/terraform-provider-azurerm/issues/24125))&#xA;*
`azurerm_container_app_environment` - support for the `workload_profile`
property
([#23478](https://github.com/hashicorp/terraform-provider-azurerm/issues/23478))&#xA;*
`azurerm_cosmosdb_cassandra_datacenter` - support for the
`seed_node_ip_addresses` property
([#24076](https://github.com/hashicorp/terraform-provider-azurerm/issues/24076))&#xA;*
`azurerm_firewall` - support for the `dns_proxy_enabled` property
([#20519](https://github.com/hashicorp/terraform-provider-azurerm/issues/20519))&#xA;*
`azurerm_kubernetes_cluster` - support for the `support_plan` property
and the `sku_tier` `Premium`
([#23970](https://github.com/hashicorp/terraform-provider-azurerm/issues/23970))&#xA;*
`azurerm_mssql_database` - support for `enclave_type` field
([#24054](https://github.com/hashicorp/terraform-provider-azurerm/issues/24054))&#xA;*
`azurerm_mssql_elasticpool` - support for `enclave_type` field
([#24054](https://github.com/hashicorp/terraform-provider-azurerm/issues/24054))&#xA;*
`azurerm_mssql_managed_instance` - support for more `vcores`: `6`, `10`,
`12`, `20`, `48`, `56`, `96`, `128`
([#24085](https://github.com/hashicorp/terraform-provider-azurerm/issues/24085))&#xA;*
`azurerm_redis_linked_server` - support for the property
`geo_replicated_primary_host_name`
([#23984](https://github.com/hashicorp/terraform-provider-azurerm/issues/23984))&#xA;*
`azurerm_storage_account` - expose the primary and secondary internet
and microsoft hostnames for blobs, dfs, files, queues, tables and web
([#23517](https://github.com/hashicorp/terraform-provider-azurerm/issues/23517))&#xA;*
`azurerm_synapse_role_assignment` - support for the `principal_type`
property
([#24089](https://github.com/hashicorp/terraform-provider-azurerm/issues/24089))&#xA;*
`azurerm_spring_cloud_build_deployment` - support for the
`application_performance_monitoring_ids` property
([#23969](https://github.com/hashicorp/terraform-provider-azurerm/issues/23969))&#xA;*
`azurerm_virtual_network_gateway` - support for the
`bgp_route_translation_for_nat_enabled`, `dns_forwarding_enabled`,
`ip_sec_replay_protection_enabled`, `remote_vnet_traffic_enabled`,
`virtual_wan_traffic_enabled`, `radius_server`,
`virtual_network_gateway_client_connection`, `policy_group`, and
`ipsec_policy` property
([#23220](https://github.com/hashicorp/terraform-provider-azurerm/issues/23220))&#xA;&#xA;BUG
FIXES:&#xA;&#xA;* `azurerm_application_insights_api_key` - prevent a bug
where multiple keys couldn&#39;t be created for an Application Insights
instance
([#23463](https://github.com/hashicorp/terraform-provider-azurerm/issues/23463))&#xA;*
`azurerm_container_registry` - the `network_rule_set.virtual_network`
property has been deprecated
([#24140](https://github.com/hashicorp/terraform-provider-azurerm/issues/24140))&#xA;*
`azurerm_hdinsight_hadoop_cluster` - set
`roles.edge_node.install_script_action.parameters` into state by
retrieving the value provided in the user config since this property
isn&#39;t returned by the API
([#23971](https://github.com/hashicorp/terraform-provider-azurerm/issues/23971))&#xA;*
`azurerm_kubernetes_cluster` - prevent a bug where maintenance window
start date was always recalculated and sent to the API
([#23985](https://github.com/hashicorp/terraform-provider-azurerm/issues/23985))&#xA;*
`azurerm_mssql_database` - will no longer send all long retention values
in payload unless set
([#24124](https://github.com/hashicorp/terraform-provider-azurerm/issues/24124))&#xA;*
`azurerm_mssql_managed_database` - will no longer send all long
retention values in payload unless set
([#24124](https://github.com/hashicorp/terraform-provider-azurerm/issues/24124))&#xA;*
`azurerm_mssql_server_microsoft_support_auditing_policy` - only include
storage endpoint in payload if set
([#24122](https://github.com/hashicorp/terraform-provider-azurerm/issues/24122))&#xA;*
`azurerm_mobile_network_packet_core_control_plane` - prevent a panic if
the HTTP Response is nil
([#24083](https://github.com/hashicorp/terraform-provider-azurerm/issues/24083))&#xA;*
`azurerm_storage_account` - revert plan time name validation `(#23799)`
([#24142](https://github.com/hashicorp/terraform-provider-azurerm/issues/24142))&#xA;*
`azurerm_web_application_firewall_policy` - split create and update
function to fix lifecycle - ignore changes
([#23412](https://github.com/hashicorp/terraform-provider-azurerm/issues/23412))&#xA;&#xA;&#xA;</pre>
            </details>
        </details>
<a
href="https://infra.ci.jenkins.io/job/terraform-jobs/job/azure/job/main/931/">Jenkins
pipeline link</a>
    </action>
</Actions>

---

<table>
  <tr>
    <td width="77">
<img src="https://www.updatecli.io/images/updatecli.png" alt="Updatecli
logo" width="50" height="50">
    </td>
    <td>
      <p>
Created automatically by <a
href="https://www.updatecli.io/">Updatecli</a>
      </p>
      <details><summary>Options:</summary>
        <br />
<p>Most of Updatecli configuration is done via <a
href="https://www.updatecli.io/docs/prologue/quick-start/">its
manifest(s)</a>.</p>
        <ul>
<li>If you close this pull request, Updatecli will automatically reopen
it, the next time it runs.</li>
<li>If you close this pull request and delete the base branch, Updatecli
will automatically recreate it, erasing all previous commits made.</li>
        </ul>
        <p>
Feel free to report any issues at <a
href="https://github.com/updatecli/updatecli/issues">github.com/updatecli/updatecli</a>.<br
/>
If you find this tool useful, do not hesitate to star <a
href="https://github.com/updatecli/updatecli/stargazers">our GitHub
repository</a> as a sign of appreciation, and/or to tell us directly on
our <a
href="https://matrix.to/#/#Updatecli_community:gitter.im">chat</a>!
        </p>
      </details>
    </td>
  </tr>
</table>

---------

Co-authored-by: Jenkins Infra Bot (updatecli) <60776566+jenkins-infra-bot@users.noreply.github.com>
Co-authored-by: Damien Duportal <damien.duportal@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support during plan phase for azurerm_storage_account to validate for name uniqueness.
2 participants