provider/aws: Err on failure to attach elb in OpsWorks layer update

This commit is contained in:
clint shryock 2016-02-16 10:31:30 -06:00
parent 923f7dca37
commit 320dc3ddf4

View File

@ -67,10 +67,10 @@ func (lt *opsworksLayerType) SchemaResource() *schema.Resource {
Optional: true, Optional: true,
}, },
"elastic_load_balancer": &schema.Schema{ "elastic_load_balancer": &schema.Schema{
Type: schema.TypeString, Type: schema.TypeString,
Optional: true, Optional: true,
}, },
"custom_setup_recipes": &schema.Schema{ "custom_setup_recipes": &schema.Schema{
Type: schema.TypeList, Type: schema.TypeList,
@ -293,25 +293,25 @@ func (lt *opsworksLayerType) Read(d *schema.ResourceData, client *opsworks.OpsWo
lt.SetCustomRecipes(d, layer.CustomRecipes) lt.SetCustomRecipes(d, layer.CustomRecipes)
lt.SetVolumeConfigurations(d, layer.VolumeConfigurations) lt.SetVolumeConfigurations(d, layer.VolumeConfigurations)
/* get ELB */ /* get ELB */
ebsRequest := &opsworks.DescribeElasticLoadBalancersInput{ ebsRequest := &opsworks.DescribeElasticLoadBalancersInput{
LayerIds: []*string{ LayerIds: []*string{
aws.String(d.Id()), aws.String(d.Id()),
}, },
} }
loadBalancers, err := client.DescribeElasticLoadBalancers(ebsRequest) loadBalancers, err := client.DescribeElasticLoadBalancers(ebsRequest)
if err != nil { if err != nil {
return err return err
} }
if loadBalancers.ElasticLoadBalancers == nil || len(loadBalancers.ElasticLoadBalancers) == 0 { if loadBalancers.ElasticLoadBalancers == nil || len(loadBalancers.ElasticLoadBalancers) == 0 {
d.Set("elastic_load_balancer", "") d.Set("elastic_load_balancer", "")
} else { } else {
loadBalancer := loadBalancers.ElasticLoadBalancers[0] loadBalancer := loadBalancers.ElasticLoadBalancers[0]
if loadBalancer != nil { if loadBalancer != nil {
d.Set("elastic_load_balancer", loadBalancer.ElasticLoadBalancerName) d.Set("elastic_load_balancer", loadBalancer.ElasticLoadBalancerName)
} }
} }
return nil return nil
} }
@ -353,19 +353,19 @@ func (lt *opsworksLayerType) Create(d *schema.ResourceData, client *opsworks.Ops
d.SetId(layerId) d.SetId(layerId)
d.Set("id", layerId) d.Set("id", layerId)
loadBalancer := aws.String(d.Get("elastic_load_balancer").(string)) loadBalancer := aws.String(d.Get("elastic_load_balancer").(string))
if loadBalancer != nil && *loadBalancer != "" { if loadBalancer != nil && *loadBalancer != "" {
log.Printf("[DEBUG] Attaching load balancer: %s", *loadBalancer) log.Printf("[DEBUG] Attaching load balancer: %s", *loadBalancer)
_, err := client.AttachElasticLoadBalancer(&opsworks.AttachElasticLoadBalancerInput{ _, err := client.AttachElasticLoadBalancer(&opsworks.AttachElasticLoadBalancerInput{
ElasticLoadBalancerName: loadBalancer, ElasticLoadBalancerName: loadBalancer,
LayerId: &layerId, LayerId: &layerId,
}) })
if err != nil { if err != nil {
return err return err
} }
} }
return lt.Read(d, client) return lt.Read(d, client)
} }
func (lt *opsworksLayerType) Update(d *schema.ResourceData, client *opsworks.OpsWorks) error { func (lt *opsworksLayerType) Update(d *schema.ResourceData, client *opsworks.OpsWorks) error {
@ -395,31 +395,34 @@ func (lt *opsworksLayerType) Update(d *schema.ResourceData, client *opsworks.Ops
log.Printf("[DEBUG] Updating OpsWorks layer: %s", d.Id()) log.Printf("[DEBUG] Updating OpsWorks layer: %s", d.Id())
if d.HasChange("elastic_load_balancer") { if d.HasChange("elastic_load_balancer") {
lbo, lbn := d.GetChange("elastic_load_balancer") lbo, lbn := d.GetChange("elastic_load_balancer")
loadBalancerOld := aws.String(lbo.(string)) loadBalancerOld := aws.String(lbo.(string))
loadBalancerNew := aws.String(lbn.(string)) loadBalancerNew := aws.String(lbn.(string))
if loadBalancerOld != nil && *loadBalancerOld != "" { if loadBalancerOld != nil && *loadBalancerOld != "" {
log.Printf("[DEBUG] Dettaching load balancer: %s", *loadBalancerOld) log.Printf("[DEBUG] Dettaching load balancer: %s", *loadBalancerOld)
_, err := client.DetachElasticLoadBalancer(&opsworks.DetachElasticLoadBalancerInput{ _, err := client.DetachElasticLoadBalancer(&opsworks.DetachElasticLoadBalancerInput{
ElasticLoadBalancerName: loadBalancerOld, ElasticLoadBalancerName: loadBalancerOld,
LayerId: aws.String(d.Id()), LayerId: aws.String(d.Id()),
}) })
if err != nil { if err != nil {
return err return err
} }
} }
if loadBalancerNew != nil && *loadBalancerNew != "" { if loadBalancerNew != nil && *loadBalancerNew != "" {
log.Printf("[DEBUG] Attaching load balancer: %s", *loadBalancerNew) log.Printf("[DEBUG] Attaching load balancer: %s", *loadBalancerNew)
client.AttachElasticLoadBalancer(&opsworks.AttachElasticLoadBalancerInput{ _, err := client.AttachElasticLoadBalancer(&opsworks.AttachElasticLoadBalancerInput{
ElasticLoadBalancerName: loadBalancerNew, ElasticLoadBalancerName: loadBalancerNew,
LayerId: aws.String(d.Id()), LayerId: aws.String(d.Id()),
}) })
} if err != nil {
} return err
}
}
}
_, err := client.UpdateLayer(req) _, err := client.UpdateLayer(req)
if err != nil { if err != nil {