mirror of https://github.com/kubernetes/kops.git
get loadbalancer details from asg
This commit is contained in:
parent
c55d34af5f
commit
b487016f80
|
|
@ -568,28 +568,37 @@ func deleteInstance(c AWSCloud, i *cloudinstances.CloudInstance) error {
|
||||||
// deregisterInstanceFromClassicLoadBalancer ensures that connectionDraining completes for the associated loadBalancer to ensure no dropped connections.
|
// deregisterInstanceFromClassicLoadBalancer ensures that connectionDraining completes for the associated loadBalancer to ensure no dropped connections.
|
||||||
// if instance is associated with an NLB, this method no-ops.
|
// if instance is associated with an NLB, this method no-ops.
|
||||||
func deregisterInstanceFromClassicLoadBalancer(c AWSCloud, i *cloudinstances.CloudInstance) error {
|
func deregisterInstanceFromClassicLoadBalancer(c AWSCloud, i *cloudinstances.CloudInstance) error {
|
||||||
|
asg := i.CloudInstanceGroup.Raw.(*autoscaling.Group)
|
||||||
|
|
||||||
|
asgDetails, err := c.Autoscaling().DescribeAutoScalingGroups(&autoscaling.DescribeAutoScalingGroupsInput{
|
||||||
|
AutoScalingGroupNames: []*string{asg.AutoScalingGroupName},
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("error describing autoScalingGroups: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// there will always be only one loadBalancer in the response.
|
||||||
|
loadBalancerNames := asgDetails.AutoScalingGroups[0].LoadBalancerNames
|
||||||
|
|
||||||
for {
|
for {
|
||||||
instanceDraining := false
|
instanceDraining := false
|
||||||
for _, lb := range i.CloudInstanceGroup.InstanceGroup.Spec.ExternalLoadBalancers {
|
response, err := c.ELB().DescribeLoadBalancers(&elb.DescribeLoadBalancersInput{
|
||||||
if lb.LoadBalancerName != nil {
|
LoadBalancerNames: loadBalancerNames,
|
||||||
response, err := c.ELB().DescribeLoadBalancers(&elb.DescribeLoadBalancersInput{
|
})
|
||||||
LoadBalancerNames: []*string{lb.LoadBalancerName},
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error describing load balancer %q: %v", *lb.LoadBalancerName, err)
|
return fmt.Errorf("error describing load balancers %v: %v", loadBalancerNames, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, awsLb := range response.LoadBalancerDescriptions {
|
for _, awsLb := range response.LoadBalancerDescriptions {
|
||||||
for _, instance := range awsLb.Instances {
|
for _, instance := range awsLb.Instances {
|
||||||
if aws.StringValue(instance.InstanceId) == i.ID {
|
if aws.StringValue(instance.InstanceId) == i.ID {
|
||||||
c.ELB().DeregisterInstancesFromLoadBalancer(&elb.DeregisterInstancesFromLoadBalancerInput{
|
c.ELB().DeregisterInstancesFromLoadBalancer(&elb.DeregisterInstancesFromLoadBalancerInput{
|
||||||
LoadBalancerName: lb.LoadBalancerName,
|
LoadBalancerName: awsLb.LoadBalancerName,
|
||||||
Instances: []*elb.Instance{instance},
|
Instances: []*elb.Instance{instance},
|
||||||
})
|
})
|
||||||
instanceDraining = true
|
instanceDraining = true
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue