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

New Resource azurerm_elastic_san #23619

Merged
merged 9 commits into from Dec 4, 2023

Conversation

teowa
Copy link
Contributor

@teowa teowa commented Oct 19, 2023

--- PASS: TestAccElasticSAN_basic (203.83s)
--- PASS: TestAccElasticSAN_complete (205.59s)
--- PASS: TestAccElasticSAN_requiresImport (211.63s)
--- PASS: TestAccElasticSAN_update (242.85s)
PASS
ok      github.com/hashicorp/terraform-provider-azurerm/internal/services/elasticsan    242.870s

@teowa teowa marked this pull request as draft October 19, 2023 08:12
@teowa teowa changed the title new resource azurerm_elastic_san New Resource azurerm_elastic_san Oct 19, 2023
)

type Client struct {
*elasticSanV20230101.Client
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
*elasticSanV20230101.Client
Client *elasticSanV20230101.Client

ValidateFunc: validation.IntBetween(1, 100),
},

"extended_capacity_size_in_tib": {
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
"extended_capacity_size_in_tib": {
"extended_size_in_tib": {


func (r ElasticSANResource) Arguments() map[string]*pluginsdk.Schema {
return map[string]*pluginsdk.Schema{
"name": {
Copy link
Contributor

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
Copy link
Contributor

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 {

Copy link
Contributor Author

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),
Copy link
Contributor

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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* `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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* `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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* `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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* `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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* `update` - (Defaults to 30 minutes) Used when updating this Elastic SAN.
* `update` - (Defaults to 30 minutes) Used when updating this Elastic SAN resource.

@ms-zhenhua
Copy link
Contributor

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)
Copy link
Contributor

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
Copy link
Contributor

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

Copy link
Contributor Author

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.

Copy link
Contributor

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?

@teowa
Copy link
Contributor Author

teowa commented Nov 2, 2023

image

}

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))
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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 {
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
if matched := regexp.MustCompile(`(_|-)+[_-]`).Match([]byte(v)); matched {
if matched := regexp.MustCompile(`[_-][_-]`).Match([]byte(v)); matched {

@ms-zhenhua
Copy link
Contributor

Hey @teowa, thank you for your update. LGTM~

@teowa teowa marked this pull request as ready for review November 2, 2023 08:13
resource_group_name = azurerm_resource_group.test.name
location = azurerm_resource_group.test.location
base_size_in_tib = 1
extended_size_in_tib = 1
Copy link
Contributor

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"]
Copy link
Contributor

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 ?

Copy link
Contributor

@ms-zhenhua ms-zhenhua left a 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
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
Client *elasticSanV20230101.Client
*elasticSanV20230101.Client

}

type ElasticSANResourceModel struct {
BaseSizeInTiB int64 `tfschema:"base_size_in_tib"`
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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"`
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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"`
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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"`
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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)
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
-> **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 {
Copy link
Contributor

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(),
Copy link
Contributor

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()

Copy link
Contributor Author

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{
Copy link
Contributor

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

Copy link
Contributor Author

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" {

@teowa teowa marked this pull request as draft November 7, 2023 10:52
@teowa
Copy link
Contributor Author

teowa commented Nov 8, 2023

image

payload.Properties.ExtendedCapacitySizeTiB = pointer.To(int64(config.ExtendedSizeInTiB))
}

if metadata.ResourceData.HasChange("tags") {
Copy link
Contributor

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")
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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")
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
-> **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`.

Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
-> **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`.
Copy link
Contributor

Choose a reason for hiding this comment

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

Optional ?

@teowa
Copy link
Contributor Author

teowa commented Nov 9, 2023

add test parallelism limit=4 , ElasticSAN has 5 instance quota per subscription per region, from doc
image

@ms-zhenhua
Copy link
Contributor

Hey @teowa, thank you for your updates. LGTM 👍

@teowa teowa marked this pull request as ready for review November 10, 2023 02:26
@teowa
Copy link
Contributor Author

teowa commented Nov 29, 2023

The force push only resolves two conflicts on

internal/clients/client.go
.teamcity/components/settings.kt

image

Copy link
Member

@stephybun stephybun left a 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 👍

@stephybun stephybun merged commit ee45941 into hashicorp:main Dec 4, 2023
25 checks passed
@github-actions github-actions bot added this to the v3.84.0 milestone Dec 4, 2023
@stephybun stephybun mentioned this pull request Dec 6, 2023
1 task
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>
Copy link

github-actions bot commented May 5, 2024

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.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 5, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants