in cloudstack/resource_cloudstack_loadbalancer_rule.go [184:239]
func resourceCloudStackLoadBalancerRuleRead(d *schema.ResourceData, meta interface{}) error {
cs := meta.(*cloudstack.CloudStackClient)
// Get the load balancer details
lb, count, err := cs.LoadBalancer.GetLoadBalancerRuleByID(
d.Id(),
cloudstack.WithProject(d.Get("project").(string)),
)
if err != nil {
if count == 0 {
log.Printf("[DEBUG] Load balancer rule %s does no longer exist", d.Get("name").(string))
d.SetId("")
return nil
}
return err
}
public_port, err := strconv.Atoi(lb.Publicport)
if err != nil {
return err
}
private_port, err := strconv.Atoi(lb.Privateport)
if err != nil {
return err
}
d.Set("name", lb.Name)
d.Set("ip_address_id", lb.Publicipid)
d.Set("algorithm", lb.Algorithm)
d.Set("public_port", public_port)
d.Set("private_port", private_port)
d.Set("protocol", lb.Protocol)
// Only set network if user specified it to avoid spurious diffs
if _, ok := d.GetOk("network_id"); ok {
d.Set("network_id", lb.Networkid)
}
setValueOrID(d, "project", lb.Project, lb.Projectid)
p := cs.LoadBalancer.NewListLoadBalancerRuleInstancesParams(d.Id())
l, err := cs.LoadBalancer.ListLoadBalancerRuleInstances(p)
if err != nil {
return err
}
var mbs []string
for _, i := range l.LoadBalancerRuleInstances {
mbs = append(mbs, i.Id)
}
d.Set("member_ids", mbs)
return nil
}