Support moving from null_resource to terraform_data#35163
Merged
Conversation
This change enables the built-in provider's `terraform_data` managed resource to work with the `moved` configuration block where the `from` address is a `null_resource` managed resource type from the official `hashicorp/null` provider. It produces no plan differences for typical configurations and specifically helps practitioners from re-running provisioners while moving resource types.
In addition to the unit testing, this was manually tested with the following configurations and outputs:
Initial configuration (no `triggers`):
```terraform
terraform {
required_providers {
null = {
source = "hashicorp/null"
version = "3.2.2"
}
}
}
resource "null_resource" "example" {
provisioner "local-exec" {
command = "echo 'Hello, World!'"
}
}
```
Moved configuration (no `triggers`):
```terraform
resource "terraform_data" "example" {
provisioner "local-exec" {
command = "echo 'Hello, World!'"
}
}
moved {
from = null_resource.example
to = terraform_data.example
}
```
Moved output (no `triggers`):
```console
$ terraform apply
terraform_data.example: Refreshing state... [id=892002337455008838]
Terraform will perform the following actions:
# null_resource.example has moved to terraform_data.example
resource "terraform_data" "example" {
id = "892002337455008838"
}
Plan: 0 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
```
Initial configuration (with `triggers`):
```terraform
terraform {
required_providers {
null = {
source = "hashicorp/null"
version = "3.2.2"
}
}
}
resource "null_resource" "example" {
triggers = {
examplekey = "examplevalue"
}
provisioner "local-exec" {
command = "echo 'Hello, World!'"
}
}
```
Moved configuration (with `triggers`):
```terraform
resource "terraform_data" "example" {
triggers_replace = {
examplekey = "examplevalue"
}
provisioner "local-exec" {
command = "echo 'Hello, World!'"
}
}
moved {
from = null_resource.example
to = terraform_data.example
}
```
Moved output (with `triggers`):
```console
$ terraform apply
terraform_data.example: Refreshing state... [id=1651348367769440250]
Terraform will perform the following actions:
# null_resource.example has moved to terraform_data.example
resource "terraform_data" "example" {
id = "1651348367769440250"
# (1 unchanged attribute hidden)
}
Plan: 0 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
```
jbardin
approved these changes
May 15, 2024
Contributor
|
Reminder for the merging maintainer: if this is a user-visible change, please update the changelog on the appropriate release branch. |
Contributor
|
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change enables the built-in provider's
terraform_datamanaged resource to work with themovedconfiguration block where thefromaddress is anull_resourcemanaged resource type from the officialhashicorp/nullprovider. It produces no plan differences for typical configurations and specifically helps practitioners from re-running provisioners while moving resource types.In addition to the unit testing, this was manually tested with the following configurations and outputs:
Initial configuration (no
triggers):Moved configuration (no
triggers):Moved output (no
triggers):Initial configuration (with
triggers):Moved configuration (with
triggers):Moved output (with
triggers):Target Release
1.9.0
Draft CHANGELOG entry
ENHANCEMENTS
movedconfiguration refactoring from thehashicorp/nullprovidernull_resourcemanaged resource