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_postgresql_flexible_server - move the error check for storage_mb from CustomizeDiff to Create/Update func #25986

Merged
merged 2 commits into from
May 27, 2024

Conversation

neil-yechenwei
Copy link
Contributor

@neil-yechenwei neil-yechenwei commented May 16, 2024

Community Note

  • Please vote on this PR by adding a 👍 reaction to the original PR to help the community and maintainers prioritize for review
  • Please do not leave "+1" or "me too" comments, they generate extra noise for PR followers and do not help prioritize for review

Description

I run tf apply against below tf config 1 and the resources are created successfully. Then I update name of azurerm_postgresql_flexible_server and change storage_mb from 65536 to 32768 like below tf config 2 and run tf apply again. I expect that TF would re-create the resource successfully but it failed with below error. What is happening is that the validation in the customized diff is catching the error because the validation doesn't know that it is going to be destroyed and re-created. So this error check would always check if new storage_mb is lower than old storage_mb. Hence, we have to move the error check for storage_mb from CustomizeDiff to Create/Update func.

Error Message:

Planning failed. Terraform encountered an error while generating this plan.
╷
│ Error: 1 error occurred:
│       * 'storage_mb' can only be scaled up, expected the new 'storage_mb' value (32768) to be larger than the previous 'storage_mb' value (65536)
│
│
│
│   with azurerm_postgresql_flexible_server.test,
│   on main.tf line 23, in resource "azurerm_postgresql_flexible_server" "test":
│   23: resource "azurerm_postgresql_flexible_server" "test" {

The tf config 1 for the first apply:

provider "azurerm" {
  features {}
}
 
resource "azurerm_resource_group" "test" {
  name     = "acctestRG-postgresql-test01373"
  location = "eastus"
}
 
resource "azurerm_postgresql_flexible_server" "test" {
  name                   = "acctest-fs-test01373"
  resource_group_name    = azurerm_resource_group.test.name
  location               = azurerm_resource_group.test.location
  administrator_login    = "adminTerraform"
  administrator_password = "QAZwsx123"
  sku_name               = "GP_Standard_D2s_v3"
  version                = "12"
  zone                   = 2
  storage_tier           = "P6"
  storage_mb             = 65536
}

The tf config 2 for the second apply:

provider "azurerm" {
  features {}
}
 
resource "azurerm_resource_group" "test" {
  name     = "acctestRG-postgresql-test01373"
  location = "eastus"
}
 
resource "azurerm_postgresql_flexible_server" "test" {
  name                   = "acctest-newfs-test01373"
  resource_group_name    = azurerm_resource_group.test.name
  location               = azurerm_resource_group.test.location
  administrator_login    = "adminTerraform"
  administrator_password = "QAZwsx123"
  sku_name               = "GP_Standard_D2s_v3"
  version                = "12"
  zone                   = 2
  storage_tier           = "P6"
  storage_mb             = 32768
}

PR Checklist

  • I have followed the guidelines in our Contributing Documentation.
  • I have checked to ensure there aren't other open Pull Requests for the same update/change.
  • I have checked if my changes close any open issues. If so please include appropriate closing keywords below.
  • I have updated/added Documentation as required written in a helpful and kind way to assist users that may be unfamiliar with the resource / data source.
  • I have used a meaningful PR title to help maintainers and other users understand this change and help prevent duplicate work.
    For example: “resource_name_here - description of change e.g. adding property new_property_name_here

Changes to existing Resource / Data Source

  • I have added an explanation of what my changes do and why I'd like you to include them (This may be covered by linking to an issue above, but may benefit from additional explanation).
  • I have written new tests for my resource or datasource changes & updated any relevent documentation.
  • I have successfully run tests with my changes locally. If not, please provide details on testing challenges that prevented you running the tests.
  • (For changes that include a state migration only). I have manually tested the migration path between relevant versions of the provider.

Testing

  • My submission includes Test coverage as described in the Contribution Guide and the tests pass. (if this is not possible for any reason, please include details of why you did or could not add test coverage)

image
image

Change Log

Below please provide what should go into the changelog (if anything) conforming to the Changelog Format documented here.

  • azurerm_postgresql_flexible_server - move the error check for storage_mb from CustomizeDiff to Create/Update func

This is a (please select all that apply):

  • Bug Fix
  • New Feature (ie adding a service, resource, or data source)
  • Enhancement
  • Breaking Change

Note

If this PR changes meaningfully during the course of review please update the title and description as required.

…_mb from CustomizeDiff to Create/Update func
@neil-yechenwei neil-yechenwei marked this pull request as draft May 16, 2024 04:18
@neil-yechenwei neil-yechenwei marked this pull request as ready for review May 16, 2024 08:07
@@ -384,11 +384,6 @@ func resourcePostgresqlFlexibleServer() *pluginsdk.Resource {
newMb = newStorageMbRaw.(int)
newTier = newTierRaw.(string)

// storage_mb can only be scaled up...
Copy link
Collaborator

Choose a reason for hiding this comment

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

is it not possible to also detect that something has changed forcing a new resoruce to be created and just not throw the error?

Copy link
Contributor Author

@neil-yechenwei neil-yechenwei May 17, 2024

Choose a reason for hiding this comment

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

@katbyte , Unfortunately, I didn't find any way to ask terraform if the resource is going to be destroyed or not, I assume that bit is only known by the core runtime. And I didn't find any way to judge if the resource is going to be destroyed per the condition combination. So I have to move it to create/update func.

Copy link
Collaborator

Choose a reason for hiding this comment

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

👍

@neil-yechenwei
Copy link
Contributor Author

@katbyte , thanks for the comment. Please take another look.

Copy link
Collaborator

@katbyte katbyte left a comment

Choose a reason for hiding this comment

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

LGTM 🌻

@stephybun stephybun merged commit 2745916 into hashicorp:main May 27, 2024
29 checks passed
@github-actions github-actions bot added this to the v3.106.0 milestone May 27, 2024
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 Jun 27, 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.

3 participants