hashicorp / terraform-provider-nomad

Terraform Nomad provider
https://registry.terraform.io/providers/hashicorp/nomad/latest
Mozilla Public License 2.0
144 stars 101 forks source link

Import of nomad_csi_volume_registration lack a some piece of information #390

Closed luhhujbb closed 10 months ago

luhhujbb commented 1 year ago

Terraform Version

1.6.2

Nomad Version

1.6.2

Provider Configuration

Which values are you setting in the provider configuration?

terraform {
  required_providers {
    nomad = {
      source  = "hashicorp/nomad"
      version = ">= 2.0.0"
    }
  }
}

Environment Variables

N/A

Affected Resource(s)

Terraform Configuration Files

data "nomad_plugin" "gcepd" {
  plugin_id        = "gcepd"
  wait_for_healthy = true
}

resource "google_compute_disk" "mongo_volume" {
  name = "mongo-${var.mongo_name}-${var.env}"
  type = var.mongo_volume_type
  zone = "${var.region}-${var.zones[0]}"
  labels = {
    env = var.env
  }
  physical_block_size_bytes = 4096
  size                      = var.mongo_volume_size
}

resource "nomad_csi_volume_registration" "mongo_volume" {
  depends_on  = [data.nomad_plugin.gcepd]
  plugin_id   = "gcepd"
  volume_id   = "mongo-${var.mongo_name}"
  name        = "mongo-${var.mongo_name}"
  external_id = google_compute_disk.mongo_volume.id

  topology_request {
    required {
      topology {
        segments = {
          "topology.gke.io/zone" = google_compute_disk.mongo_volume.zone
        }
      }
    }
  }

  capability {
    access_mode     = "single-node-writer"
    attachment_mode = "file-system"
  }

  mount_options {
    fs_type = "xfs"
  }
}

Expected Behavior

Import should populate all necessary fields

Actual Behavior

When migrating from nomad_volume to nomad_csi_volume_registration, we need to import nomad_csi_volume_registration, and the following properties are not well imported:

Steps to Reproduce

Please list the steps required to reproduce the issue, for example:

  1. terraform import nomad_csi_volume_registration.mongo_volume
  2. terraform plan
  3. It displays the following changes :

    
    -/+ resource "nomad_csi_volume_registration" "mongo_volume" {
      ~ controller_required     = true -> (known after apply)
      ~ controllers_expected    = 1 -> (known after apply)
      ~ controllers_healthy     = 1 -> (known after apply)
      + deregister_on_destroy   = true
      + external_id             = "projects/immortal-project-331321/zones/europe-west1-b/disks/mongo-name-env" # forces replacement
      ~ id                      = "mongo-name" -> (known after apply)
        name                    = "mongo-name"
      + namespace               = "default" # forces replacement
      ~ nodes_expected          = 12 -> (known after apply)
      ~ nodes_healthy           = 12 -> (known after apply)
      + plugin_id               = "gcepd" # forces replacement
      ~ plugin_provider         = "pd.csi.storage.gke.io" -> (known after apply)
      ~ plugin_provider_version = "v1.7.3-gke.1" -> (known after apply)
      ~ schedulable             = true -> (known after apply)
      ~ topologies              = [
          - {
              - segments = {
                  - "topology.gke.io/zone" = "europe-west1-b"
                }
            },
        ] -> (known after apply)
      + volume_id               = "mongo-name" # forces replacement
    
      + capability {
          + access_mode     = "single-node-writer"
          + attachment_mode = "file-system"
        }
    
      + mount_options {
          + fs_type = "xfs"
        }
    
        # (1 unchanged block hidden)
    }

Plan: 1 to add, 0 to change, 1 to destroy. ``

gastrodon commented 10 months ago

I am also getting this error. here I updated the provider to set those fields on import - that seems to fix it for me

lgfa29 commented 10 months ago

Thank you for the report @luhhujbb and for the fix @gastrodon!

With #402 merge I'm going to close this issue.