terraform-provider-ibm icon indicating copy to clipboard operation
terraform-provider-ibm copied to clipboard

ibm_dns_resource_record attribute name changes after the first apply

Open powellquiring opened this issue 10 months ago • 0 comments

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform CLI and Terraform IBM Provider Version

Terraform v1.5.3
on darwin_arm64
+ provider registry.terraform.io/ibm-cloud/ibm v1.62.0

Your version of Terraform is out of date! The latest version
is 1.7.5. You can update by downloading from https://www.terraform.io/downloads.html

Affected Resource(s)

  • ibm_dns_resource_record

Terraform Configuration Files

Please include all Terraform configurations required to reproduce the bug. Bug reports without a functional reproduction may be closed without investigation.

variable "region" {}
variable "prefix" {}
variable "resource_group" {}
provider "ibm" {
  region = var.region
}

/////////////////////////////////////////
data "ibm_resource_group" "group" {
  name = var.resource_group
}

locals {
  resource_group = data.ibm_resource_group.group.id
}

resource "ibm_resource_instance" "dns_services_instance" {
  name              = "dns-services-for-vpc"
  service           = "dns-svcs"
  plan              = "standard-dns"
  resource_group_id = data.ibm_resource_group.group.id
  location          = "global"
}

resource "ibm_dns_zone" "dns_services_zone" {
  name        = "cloud.example.cloud"
  instance_id = ibm_resource_instance.dns_services_instance.guid
}

resource "ibm_dns_resource_record" "dns_services_resource_record_a" {
  instance_id = ibm_resource_instance.dns_services_instance.guid
  zone_id     = ibm_dns_zone.dns_services_zone.zone_id
  type        = "A"
  name        = "aaa-transit-z1-worker"
  rdata       = "10.0.0.4"
  ttl         = 3600
}

output "ibm_dns_resource_record" {
  value = ibm_dns_resource_record.dns_services_resource_record_a
}
output "name" {
  value = ibm_dns_resource_record.dns_services_resource_record_a.name
}

Run apply twice. First time the name output is aaa-transit-z1-worker. The second time the name output is aaa-transit-z1-worker.cloud.example.cloud

Full experience of running twice:

tfbugs/bug-ibm_dns_resource_record % tfa
data.ibm_resource_group.group: Reading...
data.ibm_resource_group.group: Read complete after 0s [id=008399d1e544476c8a5477aee630b91c]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # ibm_dns_resource_record.dns_services_resource_record_a will be created
  + resource "ibm_dns_resource_record" "dns_services_resource_record_a" {
      + created_on         = (known after apply)
      + id                 = (known after apply)
      + instance_id        = (known after apply)
      + modified_on        = (known after apply)
      + name               = "aaa-transit-z1-worker"
      + preference         = 0
      + priority           = 0
      + rdata              = "10.0.0.4"
      + resource_record_id = (known after apply)
      + ttl                = 3600
      + type               = "A"
      + weight             = 0
      + zone_id            = (known after apply)
    }

  # ibm_dns_zone.dns_services_zone will be created
  + resource "ibm_dns_zone" "dns_services_zone" {
      + created_on  = (known after apply)
      + id          = (known after apply)
      + instance_id = (known after apply)
      + modified_on = (known after apply)
      + name        = "cloud.example.cloud"
      + state       = (known after apply)
      + zone_id     = (known after apply)
    }

  # ibm_resource_instance.dns_services_instance will be created
  + resource "ibm_resource_instance" "dns_services_instance" {
      + account_id              = (known after apply)
      + allow_cleanup           = (known after apply)
      + created_at              = (known after apply)
      + created_by              = (known after apply)
      + crn                     = (known after apply)
      + dashboard_url           = (known after apply)
      + deleted_at              = (known after apply)
      + deleted_by              = (known after apply)
      + extensions              = (known after apply)
      + guid                    = (known after apply)
      + id                      = (known after apply)
      + last_operation          = (known after apply)
      + location                = "global"
      + locked                  = (known after apply)
      + name                    = "dns-services-for-vpc"
      + plan                    = "standard-dns"
      + plan_history            = (known after apply)
      + resource_aliases_url    = (known after apply)
      + resource_bindings_url   = (known after apply)
      + resource_controller_url = (known after apply)
      + resource_crn            = (known after apply)
      + resource_group_crn      = (known after apply)
      + resource_group_id       = "008399d1e544476c8a5477aee630b91c"
      + resource_group_name     = (known after apply)
      + resource_id             = (known after apply)
      + resource_keys_url       = (known after apply)
      + resource_name           = (known after apply)
      + resource_plan_id        = (known after apply)
      + resource_status         = (known after apply)
      + restored_at             = (known after apply)
      + restored_by             = (known after apply)
      + scheduled_reclaim_at    = (known after apply)
      + scheduled_reclaim_by    = (known after apply)
      + service                 = "dns-svcs"
      + service_endpoints       = (known after apply)
      + state                   = (known after apply)
      + status                  = (known after apply)
      + sub_type                = (known after apply)
      + tags                    = (known after apply)
      + target_crn              = (known after apply)
      + type                    = (known after apply)
      + update_at               = (known after apply)
      + update_by               = (known after apply)
    }

Plan: 3 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + ibm_dns_resource_record = {
      + created_on         = (known after apply)
      + id                 = (known after apply)
      + instance_id        = (known after apply)
      + modified_on        = (known after apply)
      + name               = "aaa-transit-z1-worker"
      + port               = null
      + preference         = 0
      + priority           = 0
      + protocol           = null
      + rdata              = "10.0.0.4"
      + resource_record_id = (known after apply)
      + service            = null
      + timeouts           = null
      + ttl                = 3600
      + type               = "A"
      + weight             = 0
      + zone_id            = (known after apply)
    }
  + name                    = "aaa-transit-z1-worker"
ibm_resource_instance.dns_services_instance: Creating...
ibm_resource_instance.dns_services_instance: Still creating... [10s elapsed]
ibm_resource_instance.dns_services_instance: Creation complete after 14s [id=crn:v1:bluemix:public:dns-svcs:global:a/713c783d9a507a53135fe6793c37cc74:0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8::]
ibm_dns_zone.dns_services_zone: Creating...
ibm_dns_zone.dns_services_zone: Creation complete after 0s [id=0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8/1122bbf8-a2cf-4130-b06e-d8f731a858b8]
ibm_dns_resource_record.dns_services_resource_record_a: Creating...
ibm_dns_resource_record.dns_services_resource_record_a: Creation complete after 1s [id=0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8/1122bbf8-a2cf-4130-b06e-d8f731a858b8/A:16d3d4ff-2db5-49c9-ba16-7725a373d567]

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

Outputs:

ibm_dns_resource_record = {
  "created_on" = "2024-03-29T20:12:36.000Z"
  "id" = "0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8/1122bbf8-a2cf-4130-b06e-d8f731a858b8/A:16d3d4ff-2db5-49c9-ba16-7725a373d567"
  "instance_id" = "0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8"
  "modified_on" = "2024-03-29T20:12:36.000Z"
  "name" = "aaa-transit-z1-worker.cloud.example.cloud"
  "port" = tonumber(null)
  "preference" = 0
  "priority" = 0
  "protocol" = tostring(null)
  "rdata" = "10.0.0.4"
  "resource_record_id" = "A:16d3d4ff-2db5-49c9-ba16-7725a373d567"
  "service" = tostring(null)
  "timeouts" = null /* object */
  "ttl" = 3600
  "type" = "A"
  "weight" = 0
  "zone_id" = "1122bbf8-a2cf-4130-b06e-d8f731a858b8"
}
name = "aaa-transit-z1-worker"
tfbugs/bug-ibm_dns_resource_record % tfa
data.ibm_resource_group.group: Reading...
data.ibm_resource_group.group: Read complete after 1s [id=008399d1e544476c8a5477aee630b91c]
ibm_resource_instance.dns_services_instance: Refreshing state... [id=crn:v1:bluemix:public:dns-svcs:global:a/713c783d9a507a53135fe6793c37cc74:0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8::]
ibm_dns_zone.dns_services_zone: Refreshing state... [id=0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8/1122bbf8-a2cf-4130-b06e-d8f731a858b8]
ibm_dns_resource_record.dns_services_resource_record_a: Refreshing state... [id=0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8/1122bbf8-a2cf-4130-b06e-d8f731a858b8/A:16d3d4ff-2db5-49c9-ba16-7725a373d567]

Changes to Outputs:
  ~ name                    = "aaa-transit-z1-worker" -> "aaa-transit-z1-worker.cloud.example.cloud"

You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.

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

Outputs:

ibm_dns_resource_record = {
  "created_on" = "2024-03-29T20:12:36.000Z"
  "id" = "0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8/1122bbf8-a2cf-4130-b06e-d8f731a858b8/A:16d3d4ff-2db5-49c9-ba16-7725a373d567"
  "instance_id" = "0d3aed06-a32e-4a2b-bea3-e5d1df88d1a8"
  "modified_on" = "2024-03-29T20:12:36.000Z"
  "name" = "aaa-transit-z1-worker.cloud.example.cloud"
  "port" = tonumber(null)
  "preference" = 0
  "priority" = 0
  "protocol" = tostring(null)
  "rdata" = "10.0.0.4"
  "resource_record_id" = "A:16d3d4ff-2db5-49c9-ba16-7725a373d567"
  "service" = tostring(null)
  "timeouts" = null /* object */
  "ttl" = 3600
  "type" = "A"
  "weight" = 0
  "zone_id" = "1122bbf8-a2cf-4130-b06e-d8f731a858b8"
}
name = "aaa-transit-z1-worker.cloud.example.cloud"

Expected Behavior

consistency

Actual Behavior

Not able to use the .name field since the value is not predictable.

powellquiring avatar Mar 29 '24 20:03 powellquiring