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_cognitive_deployment - remove ForceNew tag for property 'capacity' #23251

Merged
merged 3 commits into from
Sep 26, 2023

Conversation

liuwuliuyun
Copy link
Contributor

Fixes #23226

Remove this forcenew tag since by testing this is not a force new property.

Testing evidence using AzAPI provider:

terraform {
  required_providers {
    azapi = {
      source = "azure/azapi"
    }
  }
}

provider "azapi" {
}

provider "azurerm" {
  features {}
}
resource "azurerm_resource_group" "example" {
  name     = "yunliutest2222"
  location = "eastus"
}

resource "azurerm_cognitive_account" "example" {
  name                = "yunliutest222"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  kind                = "OpenAI"
  sku_name            = "S0"
}

resource "azapi_resource" "example" {
  type      = "Microsoft.CognitiveServices/accounts/deployments@2023-05-01"
  name      = "testdeployment"
  parent_id = azurerm_cognitive_account.example.id

  body = jsonencode({
    sku = {
      name     = "Standard"
      capacity = 2 // Change from 1->2
    }
    properties = {

      model = {
        format  = "OpenAI"
        name    = "gpt-35-turbo"
        version = "0301"
      }
    }
  })
}

Output

PS C:\Users\yunliu1\Documents\terraformtest\cognitive> terraform apply -auto-approve
azurerm_resource_group.example: Refreshing state... [id=/subscriptions/85b3dbca-5974-4067-9669-67a141095a76/resourceGroups/yunliutest2222]
azurerm_cognitive_account.example: Refreshing state... [id=/subscriptions/85b3dbca-5974-4067-9669-67a141095a76/resourceGroups/yunliutest2222/providers/Microsoft.CognitiveServices/accounts/yunliutest222]
azapi_resource.example: Refreshing state... [id=/subscriptions/85b3dbca-5974-4067-9669-67a141095a76/resourceGroups/yunliutest2222/providers/Microsoft.CognitiveServices/accounts/yunliutest222/deployments/testdeployment]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  # azapi_resource.example will be updated in-place
  ~ resource "azapi_resource" "example" {
      ~ body                      = jsonencode(
          ~ {
              ~ sku        = {
                  ~ capacity = 1 -> 2
                    name     = "Standard"
                }
                # (1 unchanged attribute hidden)
            }
        )
        id                        = "/subscriptions/85b3dbca-5974-4067-9669-67a141095a76/resourceGroups/yunliutest2222/providers/Microsoft.CognitiveServices/accounts/yunliutest222/deployments/testdeployment"
        name                      = "testdeployment"
      ~ output                    = jsonencode({}) -> (known after apply)
        tags                      = {}
        # (6 unchanged attributes hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.
azapi_resource.example: Modifying... [id=/subscriptions/85b3dbca-5974-4067-9669-67a141095a76/resourceGroups/yunliutest2222/providers/Microsoft.CognitiveServices/accounts/yunliutest222/deployments/testdeployment]
azapi_resource.example: Modifications complete after 3s [id=/subscriptions/85b3dbca-5974-4067-9669-67a141095a76/resourceGroups/yunliutest2222/providers/Microsoft.CognitiveServices/accounts/yunliutest222/deployments/testdeployment]

Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

@@ -149,7 +149,6 @@ func (r CognitiveDeploymentResource) Arguments() map[string]*pluginsdk.Schema {
"capacity": {
Type: pluginsdk.TypeInt,
Optional: true,
ForceNew: true,
Copy link
Contributor

Choose a reason for hiding this comment

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

Could we add a test with a non OpenAI type to validate this works for other types of accounts too?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure, I will test that today

Copy link
Contributor Author

@liuwuliuyun liuwuliuyun Sep 22, 2023

Choose a reason for hiding this comment

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

@tombuildsstuff I am not able to perform this test because in azurerm_cognitive_deployment, the only supported format is OpenAI and it does not make sense to create a cognitive account of other type with a deployment of openai format. Link to the defination of format https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cognitive_deployment#format

Copy link
Member

Choose a reason for hiding this comment

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

@liuwuliuyun we should still add an update test for this property with deployment type of OpenAI so that we can track if anything changes/regresses in the API.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@stephybun Thanks for the review. Agreed on adding the testcase.

@liuwuliuyun
Copy link
Contributor Author

liuwuliuyun commented Sep 22, 2023

  • Add an update function to perform update
  • Remove ForceNew tag in the scale block
  • Remove ForceNew tag in the sku block (enabled in 4.0 version, calling the same api here)
  • Add an update test case

Testing Evidence:

GOROOT=C:\Program Files\Go #gosetup
GOPATH=C:\Users\yunliu1\go #gosetup
"C:\Program Files\Go\bin\go.exe" test -c -o C:\Users\yunliu1\AppData\Local\JetBrains\GoLand2023.2\tmp\GoLand\___TestAccCognitiveDeploymentSequential_in_github_com_hashicorp_terraform_provider_azurerm_internal_services_cognitive.test.exe github.com/hashicorp/terraform-provider-azurerm/internal/services/cognitive #gosetup
"C:\Program Files\Go\bin\go.exe" tool test2json -t C:\Users\yunliu1\AppData\Local\JetBrains\GoLand2023.2\tmp\GoLand\___TestAccCognitiveDeploymentSequential_in_github_com_hashicorp_terraform_provider_azurerm_internal_services_cognitive.test.exe -test.v -test.paniconexit0 -test.run ^\QTestAccCognitiveDeploymentSequential\E$ #gosetup
=== RUN   TestAccCognitiveDeploymentSequential
--- PASS: TestAccCognitiveDeploymentSequential (994.08s)
=== RUN   TestAccCognitiveDeploymentSequential/deployment
    --- PASS: TestAccCognitiveDeploymentSequential/deployment (994.08s)
=== RUN   TestAccCognitiveDeploymentSequential/deployment/update
        --- PASS: TestAccCognitiveDeploymentSequential/deployment/update (277.42s)
=== RUN   TestAccCognitiveDeploymentSequential/deployment/basic
        --- PASS: TestAccCognitiveDeploymentSequential/deployment/basic (235.65s)
=== RUN   TestAccCognitiveDeploymentSequential/deployment/requiresImport
        --- PASS: TestAccCognitiveDeploymentSequential/deployment/requiresImport (239.89s)
=== RUN   TestAccCognitiveDeploymentSequential/deployment/complete
        --- PASS: TestAccCognitiveDeploymentSequential/deployment/complete (241.12s)
PASS


Process finished with the exit code 0

BTW, tc server tests failures are due to the lack of permission to create OpenAI deployments. Let me know if you have futher questions.

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 @liuwuliuyun LGTM 👍

@stephybun stephybun merged commit 5707f88 into hashicorp:main Sep 26, 2023
21 checks passed
@github-actions github-actions bot added this to the v3.75.0 milestone Sep 26, 2023
dduportal added a commit to jenkins-infra/azure that referenced this pull request Oct 16, 2023
<Actions>
<action
id="4a39167e811ac038e4a588362092472c27cfbe9e4929ae61d035f708a093a669">
        <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.74.0&#34; to
&#34;3.75.0&#34; in file &#34;.terraform.lock.hcl&#34;</p>
            <details>
                <summary>3.75.0</summary>
<pre>Changelog retrieved
from:&#xA;&#x9;https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.75.0&#xA;FEATURES:&#xA;&#xA;*
New Resource: `azurerm_application_load_balancer`
([#22517](hashicorp/terraform-provider-azurerm#22517
New Resource: `azurerm_resource_management_private_link`
([#23098](https://github.com/hashicorp/terraform-provider-azurerm/issues/23098))&#xA;&#xA;ENHANCEMENTS:&#xA;&#xA;*
dependencies: `firewall` migrated to `hashicorp/go-azure-sdk`
([#22863](hashicorp/terraform-provider-azurerm#22863
`azurerm_bot_service_azure_bot` - add support for the `icon_url`
property
([#23114](hashicorp/terraform-provider-azurerm#23114
`azurerm_cognitive_deployment` - `capacity` property is now updateable
([#23251](hashicorp/terraform-provider-azurerm#23251
`azurerm_container_group` - added support for
`key_vault_user_identity_id`
([#23332](hashicorp/terraform-provider-azurerm#23332
`azurerm_data_factory` - added support for the `publish_enabled`
property
([#2334](hashicorp/terraform-provider-azurerm#2334
`azurerm_firewall_policy_rule_collection_group` - add support for the
`description` property
([#23354](hashicorp/terraform-provider-azurerm#23354
`azurerm_kubernetes_cluster` - `network_profile.network_policy` can be
migrated to `cilium`
([#23342](hashicorp/terraform-provider-azurerm#23342
`azurerm_log_analytics_workspace` - add support for the
`data_collection_rule_id` property
([#23347](hashicorp/terraform-provider-azurerm#23347
`azurerm_mysql_flexible_server` - add support for the
`io_scaling_enabled` property
([#23329](https://github.com/hashicorp/terraform-provider-azurerm/issues/23329))&#xA;&#xA;BUG
FIXES:&#xA;&#xA;* `azurerm_api_management_api` - fix importing `openapi`
format content file issue
([#23348](hashicorp/terraform-provider-azurerm#23348
`azurerm_cdn_frontdoor_rule` - allow a `cache_duration` of `00:00:00`
([#23384](hashicorp/terraform-provider-azurerm#23384
`azurerm_cosmosdb_cassandra_datacenter` - `sku_name` is now updatable
([#23419](hashicorp/terraform-provider-azurerm#23419
`azurerm_key_vault_certificate` - fix a bug that prevented soft-deleted
certificates from being recovered
([#23204](hashicorp/terraform-provider-azurerm#23204
`azurerm_log_analytics_solution` - fix create and update lifecycle of
resource by splitting methods
([#23333](hashicorp/terraform-provider-azurerm#23333
`azurerm_management_group_subscription_association` - mark resource as
gone correctly if not found when retrieving
([#23335](hashicorp/terraform-provider-azurerm#23335
`azurerm_management_lock` - add polling after create and delete to check
for RP propagation
([#23345](hashicorp/terraform-provider-azurerm#23345
`azurerm_monitor_diagnostic_setting` - added validation to ensure at
least one of `category` or `category_group` is supplied
([#23308](hashicorp/terraform-provider-azurerm#23308
`azurerm_palo_alto_local_rulestack_prefix_list` - fix rulestack not
being committed on delete
([#23362](hashicorp/terraform-provider-azurerm#23362
`azurerm_palo_alto_local_rulestack_fqdn_list` - fix rulestack not being
committed on delete
([#23362](hashicorp/terraform-provider-azurerm#23362
`security_center_subscription_pricing_resource` - disabled extensions
logic now works as expected
([#22997](https://github.com/hashicorp/terraform-provider-azurerm/issues/22997))&#xA;&#xA;&#xA;&#xA;</pre>
            </details>
            <details>
                <summary>3.76.0</summary>
<pre>Changelog retrieved
from:&#xA;&#x9;https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.76.0&#xA;FEATURES:&#xA;&#xA;*
New Resource: `azurerm_security_center_storage_defender`
([#23242](hashicorp/terraform-provider-azurerm#23242
New Resource:
`azurerm_spring_cloud_application_insights_application_performance_monitoring`
([#23107](https://github.com/hashicorp/terraform-provider-azurerm/issues/23107))&#xA;&#xA;ENHANCEMENTS:&#xA;&#xA;*
provider: updating to build using Go `1.21.3`
([#23514](hashicorp/terraform-provider-azurerm#23514
provider: the `roll_instances_when_required` provider feature in the
`virtual_machine_scale_set` block is now optional
([#22976](hashicorp/terraform-provider-azurerm#22976
dependencies: updating to `v0.20231012.1141427` of
`github.com/hashicorp/go-azure-sdk`
([#23534](hashicorp/terraform-provider-azurerm#23534
Data Source: `azurerm_application_gateway` - support for
`backend_http_settings`, `global`, `gateway_ip_configuration` and
additional attributes
([#23318](hashicorp/terraform-provider-azurerm#23318
Data Source: `azurerm_network_service_tags` - export the `name`
attribute
([#23382](hashicorp/terraform-provider-azurerm#23382
`azurerm_cosmosdb_postgresql_cluster` - add support for `sql_version` of
`16` and `citus_version` of `12.1`
([#23476](hashicorp/terraform-provider-azurerm#23476
`azurerm_palo_alto_local_rulestack` - correctly normalize the `location`
property
([#23483](hashicorp/terraform-provider-azurerm#23483
`azurerm_static_site` - add support for `app_settings`
([#23421](https://github.com/hashicorp/terraform-provider-azurerm/issues/23421))&#xA;&#xA;BUG
FIXES:&#xA;&#xA;* `azurerm_automation_schedule` - fix a bug when
updating `start_time`
([#23494](hashicorp/terraform-provider-azurerm#23494
`azurerm_eventhub` - remove ForceNew and check `partition_count` is not
decreased
([#23499](hashicorp/terraform-provider-azurerm#23499
`azurerm_managed_lustre_file_system` - update validation for
`storage_capacity_in_tb` according to `sku_name` in use
([#23428](hashicorp/terraform-provider-azurerm#23428
`azurerm_virtual_machine` - fix a crash when the API response for the
`os_profile` block contains nil properties
([#23535](https://github.com/hashicorp/terraform-provider-azurerm/issues/23535))&#xA;&#xA;&#xA;</pre>
            </details>
        </details>
    </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

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 13, 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.

Changing the capacity on azurerm_cognitive_deployment forces replacement
3 participants