You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by GitBox <gi...@apache.org> on 2022/03/29 20:11:46 UTC

[GitHub] [cloudstack-terraform-provider] kohrar opened a new issue #32: network_id remains empty after creating IP address resource

kohrar opened a new issue #32:
URL: https://github.com/apache/cloudstack-terraform-provider/issues/32


   Greetings everyone.
   
   I ran into an issue where the assigned network_id doesn't get saved in the terraform.tfstate file. As a result, subsequent terraform applies will destroy/recreate the IP addresses because it thinks the network_id has changed.
   
   Here is how I create an IP address
   ```
   resource "cloudstack_ipaddress" "public_ip" { 
       count = "${var.num_vms_to_create}" 
    
       vpc_id = "${cloudstack_vpc.default.id}" 
       network_id = "${cloudstack_network.mynet.id}" 
   } 
   ```
   
   When applying this on multiple runs, Terraform will show the following (note that network_id is being added even though the resource is created properly in CloudStack):
   ```
   Terraform will perform the following actions:
   
     # cloudstack_ipaddress.public_ip[2] must be replaced
   -/+ resource "cloudstack_ipaddress" "public_ip" {
         ~ id            = "c823415a-32d4-4fe1-ac7d-65e5c38b5a6b" -> (known after apply)
         ~ ip_address    = "10.44.121.58" -> (known after apply)
         ~ is_source_nat = false -> (known after apply)
         + network_id    = "0aa28065-2d46-4367-a7c0-0e065218aea5" # forces replacement
         + project       = (known after apply)
         ~ tags          = {} -> (known after apply)
           # (2 unchanged attributes hidden)
       }
   ```
   
   The terraform.tfstate file lists the IP address with an empty network_id string.
   ```
       {   
         "mode": "managed", 
         "type": "cloudstack_ipaddress", 
         "name": "public_ip", 
         "provider": "provider[\"registry.terraform.io/cloudstack/cloudstack\"]", 
         "instances": [ 
           {   
             "index_key": 0,  
             "schema_version": 0,  
             "attributes": { 
               "id": "2bdbc636-f6cd-47cc-b462-ae76351b993e", 
               "ip_address": "10.44.120.53", 
               "is_portable": false, 
               "is_source_nat": false, 
               "network_id": "",            <----- shouldn't be empty
               "project": "", 
               "tags": {}, 
               "vpc_id": "5df887ba-9085-4d4b-a613-e6a7ba2e5ad4", 
               "zone": null 
             },  
             "sensitive_attributes": [], 
             "dependencies": [ 
               "cloudstack_network.mynet", 
               "cloudstack_network_acl.default", 
               "cloudstack_vpc.default" 
             ] 
           },  
   ```
   
   # Workaround
   I was able to 'fix' this issue by removing the conditional [`d.GetOk("network_id")`](https://github.com/apache/cloudstack-terraform-provider/blob/main/cloudstack/resource_cloudstack_ipaddress.go#L167) and always setting `network_id` based on the `Associatednetworkid` value from the CloudStack-go library. I'm not sure why that condition would be failing though.
   
   Any advice? Thanks!
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@cloudstack.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org