Skip to content

Conversation

@Pearl1594
Copy link
Contributor

This fix depends on :
apache/cloudstack#11875
apache/cloudstack-go#127

To test it - update the go.mod with the following:

replace github.com/apache/cloudstack-go/v2 => <path_to_local_clone_of_cloudstack_go checked out to the fix>

Test performed

main.tf

resource "cloudstack_traffic_type" "management" {
  physical_network_id = "03144da8-ecc6-4830-9d63-cce2f8aa2156"
  traffic_type        = "Management"
  
  # Optional network labels - these will be set to defaults during import
  kvm_network_label     = "cloudbr0"
}

resource "cloudstack_traffic_type" "public" {
  physical_network_id = "81d12fe1-3e62-406e-85f3-fc0df51553a0"
  traffic_type = "Public"
  kvm_network_label = "cloudbr1"
}

resource "cloudstack_traffic_type" "guest" {
  physical_network_id = "81d12fe1-3e62-406e-85f3-fc0df51553a0"
  traffic_type = "Guest"
  kvm_network_label = "cloudbr1"
}


terraform imports

$ terraform import cloudstack_traffic_type.management df60cacc-a9eb-4e33-9a4e-84c8458ea076
cloudstack_traffic_type.management: Importing from ID "df60cacc-a9eb-4e33-9a4e-84c8458ea076"...
cloudstack_traffic_type.management: Import prepared!
  Prepared cloudstack_traffic_type for import
cloudstack_traffic_type.management: Refreshing state... [id=df60cacc-a9eb-4e33-9a4e-84c8458ea076]

Import successful!

The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.

$ terraform import cloudstack_traffic_type.guest 20c3d446-0c87-4123-a399-0b56b00f9908
cloudstack_traffic_type.guest: Importing from ID "20c3d446-0c87-4123-a399-0b56b00f9908"...
cloudstack_traffic_type.guest: Import prepared!
  Prepared cloudstack_traffic_type for import
cloudstack_traffic_type.guest: Refreshing state... [id=20c3d446-0c87-4123-a399-0b56b00f9908]

Import successful!

The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.


$ terraform import cloudstack_traffic_type.public 51ca4720-1f6c-4044-ad98-87adc3f15ef4
cloudstack_traffic_type.public: Importing from ID "51ca4720-1f6c-4044-ad98-87adc3f15ef4"...
cloudstack_traffic_type.public: Import prepared!
  Prepared cloudstack_traffic_type for import
cloudstack_traffic_type.public: Refreshing state... [id=51ca4720-1f6c-4044-ad98-87adc3f15ef4]

Import successful!

The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.


terraform state: post import

$ terraform show 
# cloudstack_traffic_type.guest:
resource "cloudstack_traffic_type" "guest" {
    id                  = "20c3d446-0c87-4123-a399-0b56b00f9908"
    kvm_network_label   = "cloudbr0"
    physical_network_id = "81d12fe1-3e62-406e-85f3-fc0df51553a0"
    traffic_type        = "Guest"
    xen_network_label   = "xenbr0"
}

# cloudstack_traffic_type.management:
resource "cloudstack_traffic_type" "management" {
    id                  = "df60cacc-a9eb-4e33-9a4e-84c8458ea076"
    kvm_network_label   = "cloudbr0"
    physical_network_id = "03144da8-ecc6-4830-9d63-cce2f8aa2156"
    traffic_type        = "Management"
    xen_network_label   = "xenbr0"
}

# cloudstack_traffic_type.public:
resource "cloudstack_traffic_type" "public" {
    id                  = "51ca4720-1f6c-4044-ad98-87adc3f15ef4"
    kvm_network_label   = "cloudbr0"
    physical_network_id = "81d12fe1-3e62-406e-85f3-fc0df51553a0"
    traffic_type        = "Public"
    xen_network_label   = "xenbr0"
}

@Pearl1594 Pearl1594 linked an issue Oct 20, 2025 that may be closed by this pull request
@Pearl1594
Copy link
Contributor Author

@ilsaloving-gander @poddm This addresses the issue: #249. Could you please have a look.

Copy link
Collaborator

@kiranchavala kiranchavala left a comment

Choose a reason for hiding this comment

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

LGTM

Tested with local build pointed to local build of cloudstack-go

 TF_LOG=DEBUG terraform import cloudstack_traffic_type.management "d2d1c8f7-ae4f-45f4-9b29-e3f45ed8d0d9"
2025-10-21T10:53:07.188+0530 [INFO]  Terraform version: 1.12.1
2025-10-21T10:53:07.188+0530 [DEBUG] using github.com/hashicorp/go-tfe v1.74.1
2025-10-21T10:53:07.188+0530 [DEBUG] using github.com/hashicorp/hcl/v2 v2.23.1-0.20250203194505-ba0759438da2
2025-10-21T10:53:07.188+0530 [DEBUG] using github.com/hashicorp/terraform-svchost v0.1.1
2025-10-21T10:53:07.188+0530 [DEBUG] using github.com/zclconf/go-cty v1.16.2
2025-10-21T10:53:07.188+0530 [INFO]  Go runtime version: go1.24.2
2025-10-21T10:53:07.188+0530 [INFO]  CLI args: []string{"terraform", "import", "cloudstack_traffic_type.management", "d2d1c8f7-ae4f-45f4-9b29-e3f45ed8d0d9"}
2025-10-21T10:53:07.188+0530 [DEBUG] Attempting to open CLI config file: /Users/kiranchavala/.terraformrc
2025-10-21T10:53:07.188+0530 [DEBUG] File doesn't exist, but doesn't need to. Ignoring.
2025-10-21T10:53:07.188+0530 [DEBUG] checking for credentials in "/Users/kiranchavala/.terraform.d/plugins"
2025-10-21T10:53:07.188+0530 [DEBUG] ignoring non-existing provider search directory terraform.d/plugins
2025-10-21T10:53:07.188+0530 [DEBUG] will search for provider plugins in /Users/kiranchavala/.terraform.d/plugins
2025-10-21T10:53:07.188+0530 [DEBUG] ignoring non-existing provider search directory /Users/kiranchavala/Library/Application Support/io.terraform/plugins
2025-10-21T10:53:07.188+0530 [DEBUG] ignoring non-existing provider search directory /Library/Application Support/io.terraform/plugins
2025-10-21T10:53:07.188+0530 [INFO]  CLI command args: []string{"import", "cloudstack_traffic_type.management", "d2d1c8f7-ae4f-45f4-9b29-e3f45ed8d0d9"}
2025-10-21T10:53:07.229+0530 [DEBUG] checking for provisioner in "."
2025-10-21T10:53:07.231+0530 [DEBUG] checking for provisioner in "/opt/homebrew/bin"
2025-10-21T10:53:07.231+0530 [DEBUG] checking for provisioner in "/Users/kiranchavala/.terraform.d/plugins"
2025-10-21T10:53:07.236+0530 [DEBUG] Building and walking import graph
2025-10-21T10:53:07.238+0530 [DEBUG] Not attaching any node states: overall state is nil
2025-10-21T10:53:07.238+0530 [DEBUG] No state, no orphan outputs
2025-10-21T10:53:07.238+0530 [DEBUG] ProviderTransformer: "cloudstack_traffic_type.management (expand)" (*terraform.nodeExpandPlannableResource) needs provider["localdomain/provider/cloudstack"]
2025-10-21T10:53:07.238+0530 [DEBUG] created provider logger: level=debug
2025-10-21T10:53:07.238+0530 [INFO]  provider: configuring client automatic mTLS
2025-10-21T10:53:07.247+0530 [DEBUG] provider: starting plugin: path=.terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack args=[".terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack"]
2025-10-21T10:53:07.250+0530 [DEBUG] provider: plugin started: path=.terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack pid=93785
2025-10-21T10:53:07.250+0530 [DEBUG] provider: waiting for RPC address: plugin=.terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack
2025-10-21T10:53:07.272+0530 [INFO]  provider.terraform-provider-cloudstack: configuring server automatic mTLS: timestamp="2025-10-21T10:53:07.272+0530"
2025-10-21T10:53:07.282+0530 [DEBUG] provider: using plugin: version=6
2025-10-21T10:53:07.282+0530 [DEBUG] provider.terraform-provider-cloudstack: plugin address: address=/var/folders/2f/6r19_y2s5p92vdzq4l29n0lr0000gn/T/plugin1494447588 network=unix timestamp="2025-10-21T10:53:07.282+0530"
2025-10-21T10:53:07.302+0530 [DEBUG] provider.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = error reading from server: EOF"
2025-10-21T10:53:07.303+0530 [INFO]  provider: plugin process exited: plugin=.terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack id=93785
2025-10-21T10:53:07.303+0530 [DEBUG] provider: plugin exited
2025-10-21T10:53:07.303+0530 [DEBUG] ReferenceTransformer: "var.cloudstack_api_key" references: []
2025-10-21T10:53:07.303+0530 [DEBUG] ReferenceTransformer: "var.cloudstack_secret_key" references: []
2025-10-21T10:53:07.303+0530 [DEBUG] ReferenceTransformer: "provider[\"localdomain/provider/cloudstack\"]" references: [var.cloudstack_secret_key var.cloudstack_api_key var.cloudstack_api_url]
2025-10-21T10:53:07.303+0530 [DEBUG] ReferenceTransformer: "cloudstack_traffic_type.management (expand)" references: []
2025-10-21T10:53:07.303+0530 [DEBUG] ReferenceTransformer: "var.cloudstack_api_url" references: []
2025-10-21T10:53:07.304+0530 [DEBUG] Starting graph walk: walkImport
2025-10-21T10:53:07.307+0530 [DEBUG] created provider logger: level=debug
2025-10-21T10:53:07.307+0530 [INFO]  provider: configuring client automatic mTLS
2025-10-21T10:53:07.312+0530 [DEBUG] provider: starting plugin: path=.terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack args=[".terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack"]
2025-10-21T10:53:07.314+0530 [DEBUG] provider: plugin started: path=.terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack pid=93786
2025-10-21T10:53:07.314+0530 [DEBUG] provider: waiting for RPC address: plugin=.terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack
2025-10-21T10:53:07.326+0530 [INFO]  provider.terraform-provider-cloudstack: configuring server automatic mTLS: timestamp="2025-10-21T10:53:07.326+0530"
2025-10-21T10:53:07.336+0530 [DEBUG] provider: using plugin: version=6
2025-10-21T10:53:07.336+0530 [DEBUG] provider.terraform-provider-cloudstack: plugin address: address=/var/folders/2f/6r19_y2s5p92vdzq4l29n0lr0000gn/T/plugin323708585 network=unix timestamp="2025-10-21T10:53:07.336+0530"
2025-10-21T10:53:07.348+0530 [DEBUG] ReferenceTransformer: "cloudstack_traffic_type.management (import id \"d2d1c8f7-ae4f-45f4-9b29-e3f45ed8d0d9\")" references: []
cloudstack_traffic_type.management: Importing from ID "d2d1c8f7-ae4f-45f4-9b29-e3f45ed8d0d9"...
cloudstack_traffic_type.management: Import prepared!
  Prepared cloudstack_traffic_type for import
cloudstack_traffic_type.management: Refreshing state... [id=d2d1c8f7-ae4f-45f4-9b29-e3f45ed8d0d9]
2025-10-21T10:53:08.052+0530 [DEBUG] provider.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = error reading from server: EOF"
2025-10-21T10:53:08.053+0530 [INFO]  provider: plugin process exited: plugin=.terraform/providers/localdomain/provider/cloudstack/0.4.0/darwin_arm64/terraform-provider-cloudstack id=93786
2025-10-21T10:53:08.053+0530 [DEBUG] provider: plugin exited
2025-10-21T10:53:08.053+0530 [INFO]  Writing state output to:

Import successful!

The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.

╭─ ~/Desktop/cloudstack-India-demo/cloudstack-terraform-copy                                                                                                                     ✔ ╱ Azure subscription 1  ╱ 10:53:08 AM 
╰─ terraform show                                                                                         
# cloudstack_traffic_type.management:
resource "cloudstack_traffic_type" "management" {
    id                  = "d2d1c8f7-ae4f-45f4-9b29-e3f45ed8d0d9"
    kvm_network_label   = "cloudbr0"
    physical_network_id = "79213e81-1498-45f6-ae02-02524c3b9831"
    traffic_type        = "Storage"
    xen_network_label   = "xenbr0"
}

@poddm
Copy link
Contributor

poddm commented Oct 21, 2025

@Pearl1594 , Great work. I left you comments in apache/cloudstack#11875.

This only handles import. The ongoing lifecycle of the resources in still impacted in the Read method.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Traffic Types not handled correctly

4 participants