in cloudstack/resource_cloudstack_network.go [283:348]
func resourceCloudStackNetworkRead(d *schema.ResourceData, meta interface{}) error {
cs := meta.(*cloudstack.CloudStackClient)
// Get the virtual machine details
n, count, err := cs.Network.GetNetworkByID(
d.Id(),
cloudstack.WithProject(d.Get("project").(string)),
)
if err != nil {
if count == 0 {
log.Printf(
"[DEBUG] Network %s does no longer exist", d.Get("name").(string))
d.SetId("")
return nil
}
return err
}
d.Set("name", n.Name)
d.Set("display_text", n.Displaytext)
d.Set("cidr", n.Cidr)
d.Set("gateway", n.Gateway)
d.Set("network_domain", n.Networkdomain)
d.Set("vpc_id", n.Vpcid)
if n.Aclid == "" {
n.Aclid = none
}
d.Set("acl_id", n.Aclid)
tags := make(map[string]interface{})
for _, tag := range n.Tags {
tags[tag.Key] = tag.Value
}
d.Set("tags", tags)
setValueOrID(d, "network_offering", n.Networkofferingname, n.Networkofferingid)
setValueOrID(d, "project", n.Project, n.Projectid)
setValueOrID(d, "zone", n.Zonename, n.Zoneid)
if d.Get("source_nat_ip").(bool) {
ip, count, err := cs.Address.GetPublicIpAddressByID(
d.Get("source_nat_ip_id").(string),
cloudstack.WithProject(d.Get("project").(string)),
)
if err != nil {
if count == 0 {
log.Printf(
"[DEBUG] Source NAT IP with ID %s is no longer associated", d.Id())
d.Set("source_nat_ip", false)
d.Set("source_nat_ip_id", "")
return nil
}
return err
}
if n.Id != ip.Associatednetworkid {
d.Set("source_nat_ip", false)
d.Set("source_nat_ip_id", "")
}
}
return nil
}