-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
New Resource azurerm_elastic_san
#23619
Conversation
teowa
commented
Oct 19, 2023
•
edited
Loading
edited
- azure doc
- REST API specs
azurerm_elastic_san
azurerm_elastic_san
) | ||
|
||
type Client struct { | ||
*elasticSanV20230101.Client |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
*elasticSanV20230101.Client | |
Client *elasticSanV20230101.Client |
ValidateFunc: validation.IntBetween(1, 100), | ||
}, | ||
|
||
"extended_capacity_size_in_tib": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"extended_capacity_size_in_tib": { | |
"extended_size_in_tib": { |
|
||
func (r ElasticSANResource) Arguments() map[string]*pluginsdk.Schema { | ||
return map[string]*pluginsdk.Schema{ | ||
"name": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please add ValidateFunc
schema.Location = location.Normalize(model.Location) | ||
schema.Tags = tags.Flatten(model.Tags) | ||
|
||
prop := model.Properties |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
whether prop is null ?
if props := model.Properties; props != nil {
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the prop is not pointer
|
||
func (r ElasticSANResource) ExpandSku(input []ElasticSANResourceSkuModel) elasticsans.Sku { | ||
output := elasticsans.Sku{ | ||
Name: elasticsans.SkuName(input[0].Name), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will input
be an empty array?
|
||
* `total_volume_size_in_gib` - Total size of the provisioned Volumes in GiB. | ||
|
||
* `volume_group_count` - Total number of volume groups in this Elastic SAN appliance. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* `volume_group_count` - Total number of volume groups in this Elastic SAN appliance. | |
* `volume_group_count` - Total number of volume groups in this Elastic SAN resource. |
|
||
The `timeouts` block allows you to specify [timeouts](https://www.terraform.io/docs/configuration/resources.html#timeouts) for certain actions: | ||
|
||
* `create` - (Defaults to 30 minutes) Used when creating this Elastic SAN. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* `create` - (Defaults to 30 minutes) Used when creating this Elastic SAN. | |
* `create` - (Defaults to 30 minutes) Used when creating this Elastic SAN resource. |
The `timeouts` block allows you to specify [timeouts](https://www.terraform.io/docs/configuration/resources.html#timeouts) for certain actions: | ||
|
||
* `create` - (Defaults to 30 minutes) Used when creating this Elastic SAN. | ||
* `delete` - (Defaults to 30 minutes) Used when deleting this Elastic SAN. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* `delete` - (Defaults to 30 minutes) Used when deleting this Elastic SAN. | |
* `delete` - (Defaults to 30 minutes) Used when deleting this Elastic SAN resource. |
|
||
* `create` - (Defaults to 30 minutes) Used when creating this Elastic SAN. | ||
* `delete` - (Defaults to 30 minutes) Used when deleting this Elastic SAN. | ||
* `read` - (Defaults to 5 minutes) Used when retrieving this Elastic SAN. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* `read` - (Defaults to 5 minutes) Used when retrieving this Elastic SAN. | |
* `read` - (Defaults to 5 minutes) Used when retrieving this Elastic SAN resource. |
* `create` - (Defaults to 30 minutes) Used when creating this Elastic SAN. | ||
* `delete` - (Defaults to 30 minutes) Used when deleting this Elastic SAN. | ||
* `read` - (Defaults to 5 minutes) Used when retrieving this Elastic SAN. | ||
* `update` - (Defaults to 30 minutes) Used when updating this Elastic SAN. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* `update` - (Defaults to 30 minutes) Used when updating this Elastic SAN. | |
* `update` - (Defaults to 30 minutes) Used when updating this Elastic SAN resource. |
hey @teowa Thanks for this PR - I've taken a look through and left some comments inline. If we can fix those up, this should be good to go 👍 Thanks! |
|
||
if config.Zones != nil { | ||
if payload.Properties.Sku.Name == elasticsans.SkuNamePremiumZRS { | ||
return fmt.Errorf("zones are not supported for the %s SKU", elasticsans.SkuNamePremiumZRS) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add a testcase for this validation
} | ||
|
||
// name can be 3-24 characters in length | ||
const minLength = 3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it possible to combine all or some of these conditions into one? like
Line 53 in 183cd43
ValidateFunc: validation.StringMatch( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hard, for I don't know how to integrate must have hyphens and underscores be surrounded by alphanumeric character
in one regex.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expect this one, can we combine other parts into one?
} | ||
|
||
if matched := regexp.MustCompile(`^[a-z0-9][a-z0-9_-]{1,22}[a-z0-9]$`).Match([]byte(v)); !matched { | ||
errors = append(errors, fmt.Errorf("%q must be 3 to 24 characters long, must be lowercase, and can only contain alphanumeric characters, underscores, and hyphens", k)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
errors = append(errors, fmt.Errorf("%q must be 3 to 24 characters long, must be lowercase, and can only contain alphanumeric characters, underscores, and hyphens", k)) | |
errors = append(errors, fmt.Errorf("%q must be between 3 and 24 characters. It can contain only lowercase letters, numbers, underscores (_) and hyphens (-). It must start and end with a lowercase letter or number.", k)) |
errors = append(errors, fmt.Errorf("%q must be 3 to 24 characters long, must be lowercase, and can only contain alphanumeric characters, underscores, and hyphens", k)) | ||
} | ||
|
||
if matched := regexp.MustCompile(`(_|-)+[_-]`).Match([]byte(v)); matched { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if matched := regexp.MustCompile(`(_|-)+[_-]`).Match([]byte(v)); matched { | |
if matched := regexp.MustCompile(`[_-][_-]`).Match([]byte(v)); matched { |
Hey @teowa, thank you for your update. LGTM~ |
resource_group_name = azurerm_resource_group.test.name | ||
location = azurerm_resource_group.test.location | ||
base_size_in_tib = 1 | ||
extended_size_in_tib = 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since extended_size_in_tib
is optional
, it does not need to be defined in basic
?
location = azurerm_resource_group.test.location | ||
base_size_in_tib = 1 | ||
extended_size_in_tib = 1 | ||
zones = ["1"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since zones
is optional, it does not need to be defined in basic
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @teowa, left some new comments. If we can fix those up, this should be good to go. Thanks.
) | ||
|
||
type Client struct { | ||
Client *elasticSanV20230101.Client |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Client *elasticSanV20230101.Client | |
*elasticSanV20230101.Client |
} | ||
|
||
type ElasticSANResourceModel struct { | ||
BaseSizeInTiB int64 `tfschema:"base_size_in_tib"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BaseSizeInTiB int64 `tfschema:"base_size_in_tib"` | |
BaseSizeInTiB int `tfschema:"base_size_in_tib"` |
|
||
type ElasticSANResourceModel struct { | ||
BaseSizeInTiB int64 `tfschema:"base_size_in_tib"` | ||
ExtendedSizeInTiB int64 `tfschema:"extended_size_in_tib"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ExtendedSizeInTiB int64 `tfschema:"extended_size_in_tib"` | |
ExtendedSizeInTiB int `tfschema:"extended_size_in_tib"` |
ResourceGroupName string `tfschema:"resource_group_name"` | ||
Sku []ElasticSANResourceSkuModel `tfschema:"sku"` | ||
Tags map[string]interface{} `tfschema:"tags"` | ||
TotalIops int64 `tfschema:"total_iops"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TotalIops int64 `tfschema:"total_iops"` | |
TotalIops int `tfschema:"total_iops"` |
Sku []ElasticSANResourceSkuModel `tfschema:"sku"` | ||
Tags map[string]interface{} `tfschema:"tags"` | ||
TotalIops int64 `tfschema:"total_iops"` | ||
TotalMBps int64 `tfschema:"total_mbps"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TotalMBps int64 `tfschema:"total_mbps"` | |
TotalMBps int `tfschema:"total_mbps"` |
schema.Tags = tags.Flatten(model.Tags) | ||
|
||
prop := model.Properties | ||
schema.Sku = r.FlattenSku(prop.Sku) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
schema.Sku = r.FlattenSku(prop.Sku) | |
schema.Sku = FlattenSku(prop.Sku) |
|
||
* `name` - (Required) The SKU name. Possible values are `Premium_LRS` and `Premium_ZRS`. | ||
|
||
-> **NOTE** `Premium_ZRS` SKU is only available in limited Azure regions including `France Central`, `North Europe`, `West Europe`, and `West US 2`. Please refer to this [document](https://azure.microsoft.com/en-us/updates/regional-expansion-azure-elastic-san-public-preview-is-now-available-in-more-regions/) for more details. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-> **NOTE** `Premium_ZRS` SKU is only available in limited Azure regions including `France Central`, `North Europe`, `West Europe`, and `West US 2`. Please refer to this [document](https://azure.microsoft.com/en-us/updates/regional-expansion-azure-elastic-san-public-preview-is-now-available-in-more-regions/) for more details. | |
-> **NOTE** `Premium_ZRS` SKU is only available in limited Azure regions including `France Central`, `North Europe`, `West Europe`, and `West US 2`. Please refer to this [document](https://azure.microsoft.com/updates/regional-expansion-azure-elastic-san-public-preview-is-now-available-in-more-regions) for more details. |
} | ||
|
||
if config.Zones != nil { | ||
if payload.Properties.Sku.Name == elasticsans.SkuNamePremiumZRS { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you put it in customize_diff
which will be validated in plan
stage?
check.That(data.ResourceName).Key("total_iops").Exists(), | ||
check.That(data.ResourceName).Key("total_mbps").Exists(), | ||
check.That(data.ResourceName).Key("total_size_in_tib").Exists(), | ||
check.That(data.ResourceName).Key("total_volume_size_in_gib").Exists(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it expected that all these computed
properties should exist? If not, please remove these Key(..).Exists()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All these properties should exist.
data := acceptance.BuildTestData(t, "azurerm_elastic_san", "test") | ||
r := ElasticSANTestResource{} | ||
|
||
data.ResourceTest(t, r, []acceptance.TestStep{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please also test scenarios of removing properties(For example, extended_size_in_tib
is optional
, at first, it is set to a value by update
, then it is changed to nil
by basic
), this case can be updated to:
baisc -> update -> basic
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
extended_size_in_tib cannot be reduced, add a validate and a test for this
performing Update: unexpected status 400 with error: ElasticSanExtendedSizeUpdateNotAllowed: Requested size update 0 cannot be performed as new extended size should be greater than existing extended size
with azurerm_elastic_san.test,
on terraform_plugin_test.tf line 38, in resource "azurerm_elastic_san" "test":
38: resource "azurerm_elastic_san" "test" {
payload.Properties.ExtendedCapacitySizeTiB = pointer.To(int64(config.ExtendedSizeInTiB)) | ||
} | ||
|
||
if metadata.ResourceData.HasChange("tags") { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you add a testcase for removing an existing tags
?
} | ||
|
||
if oldVal, newVal := metadata.ResourceDiff.GetChange("base_size_in_tib"); newVal.(int) < oldVal.(int) { | ||
return fmt.Errorf("base_size_in_tib cannot be reduced") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return fmt.Errorf("base_size_in_tib cannot be reduced") | |
return fmt.Errorf("new base_size_in_tib should be greater than the existing one") |
} | ||
|
||
if oldVal, newVal := metadata.ResourceDiff.GetChange("extended_size_in_tib"); newVal.(int) < oldVal.(int) { | ||
return fmt.Errorf("extended_size_in_tib cannot be reduced") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return fmt.Errorf("extended_size_in_tib cannot be reduced") | |
return fmt.Errorf("new extended_size_in_tib should be greater than the existing one") |
|
||
* `extended_size_in_tib` - (Required) Specifies the extended size of the Elastic SAN resource in TiB. Possible values are between `1` and `100`. | ||
|
||
-> **NOTE** `base_size_in_tib` and `extended_size_in_tib` cannot be reduced. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-> **NOTE** `base_size_in_tib` and `extended_size_in_tib` cannot be reduced. | |
-> **NOTE** `extended_size_in_tib` cannot be removed and when updating, the new value should be greater than the existing one. |
* `location` - (Required) The Azure Region where the Elastic SAN resource should exist. Changing this forces a new resource to be created. | ||
|
||
* `base_size_in_tib` - (Required) Specifies the base size of the Elastic SAN resource in TiB. Possible values are between `1` and `100`. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-> **NOTE** When updating `base_size_in_tib`, the new value should be greater than the existing one. |
|
||
* `base_size_in_tib` - (Required) Specifies the base size of the Elastic SAN resource in TiB. Possible values are between `1` and `100`. | ||
|
||
* `extended_size_in_tib` - (Required) Specifies the extended size of the Elastic SAN resource in TiB. Possible values are between `1` and `100`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Optional ?
add test parallelism limit=4 , ElasticSAN has 5 instance quota per subscription per region, from doc |
Hey @teowa, thank you for your updates. LGTM 👍 |
1bb7269
to
2036639
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @teowa and @ms-zhenhua LGTM 👍
<Actions> <action id="f410411e63aff4bb73a81c2aec1d373cf8a903e63b30dee2006b0030d8a94cc8"> <h3>Bump Terraform `azurerm` provider version</h3> <details id="1d9343c012f5434ac9fe8a98135bae3667b399259be16d9b14302ea3bd424a24"> <summary>Update Terraform lock file</summary> <p>"hashicorp/azurerm" updated from "3.82.0" to "3.83.0" in file ".terraform.lock.hcl"</p> <details> <summary>3.83.0</summary> <pre>Changelog retrieved from:
	https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.83.0
UPGRADE NOTES

* 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&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&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))

FEATURES:

* New Data Source: `azurerm_stack_hci_cluster` ([#24032](https://github.com/hashicorp/terraform-provider-azurerm/issues/24032))

ENHANCEMENTS:

* dependencies: updating to `v0.20231129.1103252` of `github.com/hashicorp/go-azure-sdk` ([#24063](hashicorp/terraform-provider-azurerm#24063 `automation`: updating to API Version `2023-11-01` ([#24017](hashicorp/terraform-provider-azurerm#24017 `keyvault`: the cache is now populated using the `ListBySubscription` endpoint on the KeyVault Resource Provider rather than via the `Resources` API ([#24019](hashicorp/terraform-provider-azurerm#24019 `keyvault`: updating the cache to populate all Key Vaults available within the Subscription to reduce the number of API calls ([#24019](hashicorp/terraform-provider-azurerm#24019 Data Source `azurerm_private_dns_zone`: refactoring to use the `ListBySubscription` API rather than the Resources API when `resource_group_name` is omitted ([#24024](hashicorp/terraform-provider-azurerm#24024 `azurerm_dashboard_grafana` - support for `grafana_major_version` ([#24014](hashicorp/terraform-provider-azurerm#24014 `azurerm_linux_web_app` - add support for dotnet 8 ([#23893](hashicorp/terraform-provider-azurerm#23893 `azurerm_linux_web_app_slot` - add support for dotnet 8 ([#23893](hashicorp/terraform-provider-azurerm#23893 `azurerm_media_transform` - deprecate `face_detector_preset` and `video_analyzer_preset` ([#24002](hashicorp/terraform-provider-azurerm#24002 `azurerm_postgresql_database` - update the validation of `collation` to include `Norwegian_Norway.1252` ([#24070](hashicorp/terraform-provider-azurerm#24070 `azurerm_postgresql_flexible_server` - updating to API Version `2023-06-01-preview` ([#24016](hashicorp/terraform-provider-azurerm#24016 `azurerm_redis_cache` - support for the `active_directory_authentication_enabled` property ([#23976](hashicorp/terraform-provider-azurerm#23976 `azurerm_windows_web_app` - add support for dotnet 8 ([#23893](hashicorp/terraform-provider-azurerm#23893 `azurerm_windows_web_app_slot` - add support for dotnet 8 ([#23893](hashicorp/terraform-provider-azurerm#23893 `azurerm_storage_account` - add `name` validation in custom diff ([#23799](https://github.com/hashicorp/terraform-provider-azurerm/issues/23799))

BUG FIXES:

* authentication: fix a bug where auxiliary tenants were not correctly authorized ([#24063](hashicorp/terraform-provider-azurerm#24063 `azurerm_app_configuration` - normalize location in `replica` block ([#24074](hashicorp/terraform-provider-azurerm#24074 `azurerm_cosmosdb_account` - cosmosdb version and capabilities can now be updated at the same time ([#24029](hashicorp/terraform-provider-azurerm#24029 `azurerm_data_factory_flowlet_data_flow` - `source` and `sink` properties are now optional ([#23987](hashicorp/terraform-provider-azurerm#23987 `azurerm_datadog_monitor_tag_rule` - correctly handle default rule ([#22806](hashicorp/terraform-provider-azurerm#22806 `azurerm_ip_group`: fixing a crash when `firewall_ids` and `firewall_policy_ids` weren't parsed correctly from the API Response ([#24031](hashicorp/terraform-provider-azurerm#24031 `azurerm_nginx_deployment` - add default value of `20` for `capacity` ([#24033](https://github.com/hashicorp/terraform-provider-azurerm/issues/24033))


</pre> </details> <details> <summary>3.84.0</summary> <pre>Changelog retrieved from:
	https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.84.0
FEATURES:

* **New Data Source:** `azurerm_storage_containers` ([#24061](hashicorp/terraform-provider-azurerm#24061 **New Resource:** `azurerm_elastic_san` ([#23619](hashicorp/terraform-provider-azurerm#23619 **New Resource:** `azurerm_key_vault_managed_hardware_security_module_role_assignment` ([#22332](hashicorp/terraform-provider-azurerm#22332 **New Resource:** `azurerm_key_vault_managed_hardware_security_module_role_definition` ([#22332](https://github.com/hashicorp/terraform-provider-azurerm/issues/22332))

ENHANCEMENTS:

* dependencies: updating mssql elasticpools from `v5.0` to `2023-05-01-preview`
* dependencies: updating to `v0.20231207.1122031` of `github.com/hashicorp/go-azure-sdk` ([#24149](hashicorp/terraform-provider-azurerm#24149 Data Source: `azurerm_storage_account` - export the primary and secondary internet and microsoft hostnames for blobs, dfs, files, queues, tables and web ([#23517](hashicorp/terraform-provider-azurerm#23517 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](hashicorp/terraform-provider-azurerm#24129 `azurerm_bot_service_azure_bot` - support for the `public_network_access_enabled` property ([#24125](hashicorp/terraform-provider-azurerm#24125 `azurerm_container_app_environment` - support for the `workload_profile` property ([#23478](hashicorp/terraform-provider-azurerm#23478 `azurerm_cosmosdb_cassandra_datacenter` - support for the `seed_node_ip_addresses` property ([#24076](hashicorp/terraform-provider-azurerm#24076 `azurerm_firewall` - support for the `dns_proxy_enabled` property ([#20519](hashicorp/terraform-provider-azurerm#20519 `azurerm_kubernetes_cluster` - support for the `support_plan` property and the `sku_tier` `Premium` ([#23970](hashicorp/terraform-provider-azurerm#23970 `azurerm_mssql_database` - support for `enclave_type` field ([#24054](hashicorp/terraform-provider-azurerm#24054 `azurerm_mssql_elasticpool` - support for `enclave_type` field ([#24054](hashicorp/terraform-provider-azurerm#24054 `azurerm_mssql_managed_instance` - support for more `vcores`: `6`, `10`, `12`, `20`, `48`, `56`, `96`, `128` ([#24085](hashicorp/terraform-provider-azurerm#24085 `azurerm_redis_linked_server` - support for the property `geo_replicated_primary_host_name` ([#23984](hashicorp/terraform-provider-azurerm#23984 `azurerm_storage_account` - expose the primary and secondary internet and microsoft hostnames for blobs, dfs, files, queues, tables and web ([#23517](hashicorp/terraform-provider-azurerm#23517 `azurerm_synapse_role_assignment` - support for the `principal_type` property ([#24089](hashicorp/terraform-provider-azurerm#24089 `azurerm_spring_cloud_build_deployment` - support for the `application_performance_monitoring_ids` property ([#23969](hashicorp/terraform-provider-azurerm#23969 `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))

BUG FIXES:

* `azurerm_application_insights_api_key` - prevent a bug where multiple keys couldn't be created for an Application Insights instance ([#23463](hashicorp/terraform-provider-azurerm#23463 `azurerm_container_registry` - the `network_rule_set.virtual_network` property has been deprecated ([#24140](hashicorp/terraform-provider-azurerm#24140 `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't returned by the API ([#23971](hashicorp/terraform-provider-azurerm#23971 `azurerm_kubernetes_cluster` - prevent a bug where maintenance window start date was always recalculated and sent to the API ([#23985](hashicorp/terraform-provider-azurerm#23985 `azurerm_mssql_database` - will no longer send all long retention values in payload unless set ([#24124](hashicorp/terraform-provider-azurerm#24124 `azurerm_mssql_managed_database` - will no longer send all long retention values in payload unless set ([#24124](hashicorp/terraform-provider-azurerm#24124 `azurerm_mssql_server_microsoft_support_auditing_policy` - only include storage endpoint in payload if set ([#24122](hashicorp/terraform-provider-azurerm#24122 `azurerm_mobile_network_packet_core_control_plane` - prevent a panic if the HTTP Response is nil ([#24083](hashicorp/terraform-provider-azurerm#24083 `azurerm_storage_account` - revert plan time name validation `(#23799)` ([#24142](hashicorp/terraform-provider-azurerm#24142 `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))


</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>
I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active contributions. |