diff --git a/builtin/providers/aws/resource_aws_elb.go b/builtin/providers/aws/resource_aws_elb.go index c08b3d6da..eb05143ab 100644 --- a/builtin/providers/aws/resource_aws_elb.go +++ b/builtin/providers/aws/resource_aws_elb.go @@ -31,6 +31,11 @@ func resourceAwsElb() *schema.Resource { Computed: true, }, + "cross_zone_load_balancing": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + }, + "availability_zones": &schema.Schema{ Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeString}, @@ -218,7 +223,8 @@ func resourceAwsElbCreate(d *schema.ResourceData, meta interface{}) error { } } } - + + return resourceAwsElbUpdate(d, meta) } @@ -300,10 +306,26 @@ func resourceAwsElbUpdate(d *schema.ResourceData, meta interface{}) error { return fmt.Errorf("Failure deregistering instances: %s", err) } } - + d.SetPartial("instances") } + log.Println("[INFO] outside modify attributes") + if d.HasChange("cross_zone_load_balancing") { + log.Println("[INFO] inside modify attributes") + attrs := elb.ModifyLoadBalancerAttributes{ + LoadBalancerName: d.Get("name").(string), + LoadBalancerAttributes: elb.LoadBalancerAttributes{ + CrossZoneLoadBalancingEnabled: d.Get("cross_zone_load_balancing").(bool), + }, + } + _, err := elbconn.ModifyLoadBalancerAttributes(&attrs) + if err != nil { + return fmt.Errorf("Failure configuring health check: %s", err) + } + d.SetPartial("cross_zone_load_balancing") + } + d.Partial(false) return resourceAwsElbRead(d, meta) } diff --git a/builtin/providers/aws/resource_aws_elb_test.go b/builtin/providers/aws/resource_aws_elb_test.go index 05078b673..ec78b22e8 100644 --- a/builtin/providers/aws/resource_aws_elb_test.go +++ b/builtin/providers/aws/resource_aws_elb_test.go @@ -43,6 +43,8 @@ func TestAccAWSELB_basic(t *testing.T) { "aws_elb.bar", "listener.0.lb_port", "80"), resource.TestCheckResourceAttr( "aws_elb.bar", "listener.0.lb_protocol", "http"), + resource.TestCheckResourceAttr( + "aws_elb.bar", "cross_zone_load_balancing", "true"), ), }, }, @@ -256,6 +258,7 @@ resource "aws_elb" "bar" { } instances = [] + cross_zone_load_balancing = true } ` diff --git a/website/source/docs/providers/aws/r/elb.html.markdown b/website/source/docs/providers/aws/r/elb.html.markdown index 4d29178bb..f851a5552 100644 --- a/website/source/docs/providers/aws/r/elb.html.markdown +++ b/website/source/docs/providers/aws/r/elb.html.markdown @@ -42,6 +42,7 @@ resource "aws_elb" "bar" { } instances = ["${aws_instance.foo.id}"] + cross_zone_load_balancing = true } ``` @@ -57,6 +58,7 @@ The following arguments are supported: * `internal` - (Optional) If true, ELB will be an internal ELB. * `listener` - (Required) A list of listener blocks. Listeners documented below. * `health_check` - (Optional) A health_check block. Health Check documented below. +* `cross_zone_load_balancing` - (Optional) Enable cross-zone load balancing. Listeners support the following: