opentelekomcloud / gophertelekomcloud

GopherTelekomCloud is an OpenTelekomCloud clouds Go SDK
Apache License 2.0
19 stars 9 forks source link

unable to update userTags in cce nodepool inplace via terraform #698

Closed dombisza closed 1 month ago

dombisza commented 1 month ago

hello there,

i got some reports that changing userTags in terraform for the nodepool trigger a nodepool recreation. I wonder if userTags should be defined to be updatable somewhere here: https://github.com/opentelekomcloud/gophertelekomcloud/blob/b6f0faac6a5cb818d3c0f6b258658c1a819a82be/openstack/cce/v3/nodepools/requests.go#L182

based on the API docs it should be possible to inplace update userTags : "Currently, only the node pool name and scaling parameters in spec can be updated, such as initialNodeCount, autoscaling, name, k8sTags, taints, login, and userTags." https://docs.otc.t-systems.com/cloud-container-engine/api-ref/apis/cluster_management/updating_a_specified_node_pool.html#

sekoban commented 1 month ago

I can confirm changing Tags on CCE node pool results in recreation of the node pool (opentelekomcloud_cce_node_pool_v3).

Terraform version

terraform -chdir=./terraform_otc version
Terraform v1.5.7
on linux_amd64
+ provider registry.terraform.io/hashicorp/local v2.5.1
+ provider registry.terraform.io/hashicorp/random v3.6.2
+ provider registry.terraform.io/hashicorp/tls v4.0.5
+ provider registry.terraform.io/iits-consulting/errorcheck v3.0.3
+ provider registry.terraform.io/opentelekomcloud/opentelekomcloud v1.36.14

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

Terraform apply

terraform -chdir=./terraform_otc apply
...
Terraform will perform the following actions:

  # module.cce.opentelekomcloud_cce_node_pool_v3.cluster_node_pool["eu-de-02"] must be replaced
+/- resource "opentelekomcloud_cce_node_pool_v3" "cluster_node_pool" {
      ~ id                       = "4d543678-*****" -> (known after apply)
      ~ k8s_tags                 = {} -> (known after apply)
      ~ max_pods                 = 60 -> (known after apply)
        name                     = "*****-cce-01-cce-01-nodes-eu-de-02"
      + status                   = (known after apply)
      ~ subnet_id                = "0ea339ac-*****" -> (known after apply)
      ~ user_tags                = { # forces replacement
          + "Issue"       = "Test-01"
            # (2 unchanged elements hidden)
        }
        # (14 unchanged attributes hidden)

      ~ data_volumes {
          - extend_params = {} -> null
            # (3 unchanged attributes hidden)
        }

      ~ root_volume {
          - extend_params = {} -> null
            # (3 unchanged attributes hidden)
        }
    }

Plan: 1 to add, 0 to change, 1 to destroy.
...
artem-lifshits commented 1 month ago

Hello @dombisza the documentation that you linked doesn't provide info regarding userTags parameter, does it?

dombisza commented 1 month ago

damn you are correct @artem-lifshits , i will take this internally to the contianer squad. thanks for pointing it out!

dombisza commented 1 month ago

OTCPR-18029