OpenNebula / terraform-provider-opennebula

Terraform provider for OpenNebula
https://www.terraform.io/docs/providers/opennebula/
Mozilla Public License 2.0
63 stars 53 forks source link

error for import in terraform state opennebula_virtual_network #436

Closed sor88 closed 1 year ago

sor88 commented 1 year ago

terraform resource

This my resource for import in tfstate. It created manually with web ui opennebula.

resource "opennebula_virtual_network" "network28" {
  name = data.opennebula_virtual_network.network28.name
  bridge          = "onebr.25"
  cluster_ids     = [0]
  description     = "managed by Terraform"
  guest_mtu       = 1500
  network_address = "172.16.0.0"
  network_mask    = "255.255.255.0"
  permissions     = "640"
  group           = "oneadmin"
  type            = "ovswitch"
  mtu             = 1500
  dns             = "10.20.0.3"
  gateway         = "172.16.0.1"
  security_groups = [0]
  search_domain   = "test.lan"
  vlan_id         = "27"
  tags = {
    default_tags = "managed_terraform"
    enviroment   = "dev"
  }
  template_section {
    name = "tmp2"
  }
}

Terraform Version

terraform -v
Terraform v1.4.4
on linux_amd64

Panic Output

terraform import opennebula_virtual_network.network28 28
data.opennebula_virtual_network.network28: Reading...
data.opennebula_virtual_network.network28: Read complete after 0s [name=tmp2]
opennebula_virtual_network.network28: Importing from ID "28"...
opennebula_virtual_network.network28: Import prepared!
  Prepared opennebula_virtual_network for import
opennebula_virtual_network.network28: Refreshing state... [id=28]
╷
│ Error: Failed to parse parent network ID
│ 
│ virtual network (ID: 28): strconv.ParseInt: parsing "": invalid syntax
╵
treywelsh commented 1 year ago

When importing the resource, it seems the reservation_vnet attributes doesn't take it's default value -1, but give 0 instead which is a valid virtual network ID.

As a consequence, the reading code of the vnet try to read it as if it was a reservation vnet and then try to parse the parent network ID (but network 0 has no parent ID so the field is empty).

I'll need to add a check in the reading code of the virtual network to truly detect if the current vnet is a reservation (like testing what's inside the parent network ID attribute before trying to parse it)

sor88 commented 1 year ago

resource "opennebula_virtual_network" "network28" { name = data.opennebula_virtual_network.example.name reservation_vnet = 28 reservation_size = 5 }

opennebula_virtual_network.network28: Importing from ID "28"... opennebula_virtual_network.network28: Import prepared! Prepared opennebula_virtual_network for import opennebula_virtual_network.network28: Refreshing state... [id=28] ╷ │ Error: Failed to parse parent network ID │ │ virtual network (ID: 28): strconv.ParseInt: parsing "": invalid syntax ╵

sor88 commented 1 year ago

how did the opennebula provider update come about?

frousselet commented 1 year ago

Hello,

The v1.2.1 is in RC stage and will be released in the next business days.

For now, you can pull tag v1.2.1-rc2 and follow the CONTRIBUTING guide to test it.

Please let me know if you need assistance with that.

sor88 commented 1 year ago

ok. Thank's.

sor88 commented 1 year ago

Awesome! Everything is working! waiting for the release!!!