providers/aws: add refresh, refactor duplication in retrieve
This commit is contained in:
parent
56e5d20b40
commit
feb32e6f8a
|
@ -68,27 +68,12 @@ func resource_aws_elb_create(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
describeElbOpts := &elb.DescribeLoadBalancer{
|
loadBalancer, err := resource_aws_elb_retrieve_balancer(rs.ID, elbconn)
|
||||||
Names: []string{elbName},
|
|
||||||
}
|
|
||||||
|
|
||||||
// Retrieve the ELB properties for updating the state
|
|
||||||
describeResp, err := elbconn.DescribeLoadBalancers(describeElbOpts)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error retrieving ELB: %s", err)
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
loadBalancer := describeResp.LoadBalancers[0]
|
return resource_aws_elb_update_state(rs, loadBalancer)
|
||||||
|
|
||||||
// Verify AWS returned our ELB
|
|
||||||
if len(describeResp.LoadBalancers) != 1 ||
|
|
||||||
describeResp.LoadBalancers[0].LoadBalancerName != elbName {
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("Unable to find ELB: %#v", describeResp.LoadBalancers)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return resource_aws_elb_update_state(rs, &loadBalancer)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func resource_aws_elb_update(
|
func resource_aws_elb_update(
|
||||||
|
@ -136,8 +121,13 @@ func resource_aws_elb_destroy(
|
||||||
func resource_aws_elb_refresh(
|
func resource_aws_elb_refresh(
|
||||||
s *terraform.ResourceState,
|
s *terraform.ResourceState,
|
||||||
meta interface{}) (*terraform.ResourceState, error) {
|
meta interface{}) (*terraform.ResourceState, error) {
|
||||||
|
p := meta.(*ResourceProvider)
|
||||||
|
elbconn := p.elbconn
|
||||||
|
|
||||||
loadBalancer := &elb.LoadBalancer{}
|
loadBalancer, err := resource_aws_elb_retrieve_balancer(s.ID, elbconn)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return resource_aws_elb_update_state(s, loadBalancer)
|
return resource_aws_elb_update_state(s, loadBalancer)
|
||||||
}
|
}
|
||||||
|
@ -170,3 +160,28 @@ func resource_aws_elb_update_state(
|
||||||
s.Attributes["dns_name"] = balancer.DNSName
|
s.Attributes["dns_name"] = balancer.DNSName
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// retrieves an ELB by it's ID
|
||||||
|
func resource_aws_elb_retrieve_balancer(id string, elbconn *elb.ELB) (*elb.LoadBalancer, error) {
|
||||||
|
describeElbOpts := &elb.DescribeLoadBalancer{
|
||||||
|
Names: []string{id},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve the ELB properties for updating the state
|
||||||
|
describeResp, err := elbconn.DescribeLoadBalancers(describeElbOpts)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("Error retrieving ELB: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
loadBalancer := describeResp.LoadBalancers[0]
|
||||||
|
|
||||||
|
// Verify AWS returned our ELB
|
||||||
|
if len(describeResp.LoadBalancers) != 1 ||
|
||||||
|
describeResp.LoadBalancers[0].LoadBalancerName != id {
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("Unable to find ELB: %#v", describeResp.LoadBalancers)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &loadBalancer, nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue