func resourceAwsLoadBalancerPolicyUnassign(policyName, loadBalancerName string, elbconn *elb.ELB) (Reassignment, error) { reassignments := Reassignment{} describeElbOpts := &elb.DescribeLoadBalancersInput{ LoadBalancerNames: []*string{aws.String(loadBalancerName)}, } describeResp, err := elbconn.DescribeLoadBalancers(describeElbOpts) if err != nil { if ec2err, ok := err.(awserr.Error); ok { if ec2err.Code() == "LoadBalancerNotFound" { return reassignments, nil } } return reassignments, fmt.Errorf("Error retrieving ELB description: %s", err) } if len(describeResp.LoadBalancerDescriptions) != 1 { return reassignments, fmt.Errorf("Unable to find ELB: %#v", describeResp.LoadBalancerDescriptions) } lb := describeResp.LoadBalancerDescriptions[0] for _, backendServer := range lb.BackendServerDescriptions { policies := []*string{} for _, name := range backendServer.PolicyNames { if policyName != *name { policies = append(policies, name) } } if len(backendServer.PolicyNames) != len(policies) { setOpts := &elb.SetLoadBalancerPoliciesForBackendServerInput{ LoadBalancerName: aws.String(loadBalancerName), InstancePort: aws.Int64(*backendServer.InstancePort), PolicyNames: policies, } reassignOpts := &elb.SetLoadBalancerPoliciesForBackendServerInput{ LoadBalancerName: aws.String(loadBalancerName), InstancePort: aws.Int64(*backendServer.InstancePort), PolicyNames: backendServer.PolicyNames, } reassignments.backendServerPolicies = append(reassignments.backendServerPolicies, reassignOpts) _, err = elbconn.SetLoadBalancerPoliciesForBackendServer(setOpts) if err != nil { return reassignments, fmt.Errorf("Error Setting Load Balancer Policies for Backend Server: %s", err) } } } for _, listener := range lb.ListenerDescriptions { policies := []*string{} for _, name := range listener.PolicyNames { if policyName != *name { policies = append(policies, name) } } if len(listener.PolicyNames) != len(policies) { setOpts := &elb.SetLoadBalancerPoliciesOfListenerInput{ LoadBalancerName: aws.String(loadBalancerName), LoadBalancerPort: aws.Int64(*listener.Listener.LoadBalancerPort), PolicyNames: policies, } reassignOpts := &elb.SetLoadBalancerPoliciesOfListenerInput{ LoadBalancerName: aws.String(loadBalancerName), LoadBalancerPort: aws.Int64(*listener.Listener.LoadBalancerPort), PolicyNames: listener.PolicyNames, } reassignments.listenerPolicies = append(reassignments.listenerPolicies, reassignOpts) _, err = elbconn.SetLoadBalancerPoliciesOfListener(setOpts) if err != nil { return reassignments, fmt.Errorf("Error Setting Load Balancer Policies of Listener: %s", err) } } } return reassignments, nil }