add target_group support to autoscaling service
This commit is contained in:
parent
efefc1714e
commit
993b092083
4 changed files with 253 additions and 8 deletions
131
tests/test_autoscaling/test_elbv2.py
Normal file
131
tests/test_autoscaling/test_elbv2.py
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
from __future__ import unicode_literals
|
||||
import boto3
|
||||
|
||||
from moto import mock_autoscaling, mock_ec2, mock_elbv2
|
||||
|
||||
@mock_elbv2
|
||||
@mock_ec2
|
||||
@mock_autoscaling
|
||||
def test_attach_detach_target_groups():
|
||||
INSTANCE_COUNT = 2
|
||||
client = boto3.client('autoscaling', region_name='us-east-1')
|
||||
elbv2_client = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
|
||||
response = elbv2_client.create_target_group(
|
||||
Name='a-target',
|
||||
Protocol='HTTP',
|
||||
Port=8080,
|
||||
VpcId=vpc.id,
|
||||
HealthCheckProtocol='HTTP',
|
||||
HealthCheckPort='8080',
|
||||
HealthCheckPath='/',
|
||||
HealthCheckIntervalSeconds=5,
|
||||
HealthCheckTimeoutSeconds=5,
|
||||
HealthyThresholdCount=5,
|
||||
UnhealthyThresholdCount=2,
|
||||
Matcher={'HttpCode': '200'})
|
||||
target_group_arn = response['TargetGroups'][0]['TargetGroupArn']
|
||||
|
||||
client.create_launch_configuration(
|
||||
LaunchConfigurationName='test_launch_configuration')
|
||||
|
||||
# create asg, attach to target group on create
|
||||
client.create_auto_scaling_group(
|
||||
AutoScalingGroupName='test_asg',
|
||||
LaunchConfigurationName='test_launch_configuration',
|
||||
MinSize=0,
|
||||
MaxSize=INSTANCE_COUNT,
|
||||
DesiredCapacity=INSTANCE_COUNT,
|
||||
TargetGroupARNs=[target_group_arn],
|
||||
VPCZoneIdentifier=vpc.id)
|
||||
# create asg without attaching to target group
|
||||
client.create_auto_scaling_group(
|
||||
AutoScalingGroupName='test_asg2',
|
||||
LaunchConfigurationName='test_launch_configuration',
|
||||
MinSize=0,
|
||||
MaxSize=INSTANCE_COUNT,
|
||||
DesiredCapacity=INSTANCE_COUNT,
|
||||
VPCZoneIdentifier=vpc.id)
|
||||
|
||||
response = client.describe_load_balancer_target_groups(
|
||||
AutoScalingGroupName='test_asg')
|
||||
list(response['LoadBalancerTargetGroups']).should.have.length_of(1)
|
||||
|
||||
response = elbv2_client.describe_target_health(
|
||||
TargetGroupArn=target_group_arn)
|
||||
list(response['TargetHealthDescriptions']).should.have.length_of(INSTANCE_COUNT)
|
||||
|
||||
client.attach_load_balancer_target_groups(
|
||||
AutoScalingGroupName='test_asg2',
|
||||
TargetGroupARNs=[target_group_arn])
|
||||
|
||||
response = elbv2_client.describe_target_health(
|
||||
TargetGroupArn=target_group_arn)
|
||||
list(response['TargetHealthDescriptions']).should.have.length_of(INSTANCE_COUNT * 2)
|
||||
|
||||
response = client.detach_load_balancer_target_groups(
|
||||
AutoScalingGroupName='test_asg2',
|
||||
TargetGroupARNs=[target_group_arn])
|
||||
response = elbv2_client.describe_target_health(
|
||||
TargetGroupArn=target_group_arn)
|
||||
list(response['TargetHealthDescriptions']).should.have.length_of(INSTANCE_COUNT)
|
||||
|
||||
@mock_elbv2
|
||||
@mock_ec2
|
||||
@mock_autoscaling
|
||||
def test_detach_all_target_groups():
|
||||
INSTANCE_COUNT = 2
|
||||
client = boto3.client('autoscaling', region_name='us-east-1')
|
||||
elbv2_client = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
|
||||
response = elbv2_client.create_target_group(
|
||||
Name='a-target',
|
||||
Protocol='HTTP',
|
||||
Port=8080,
|
||||
VpcId=vpc.id,
|
||||
HealthCheckProtocol='HTTP',
|
||||
HealthCheckPort='8080',
|
||||
HealthCheckPath='/',
|
||||
HealthCheckIntervalSeconds=5,
|
||||
HealthCheckTimeoutSeconds=5,
|
||||
HealthyThresholdCount=5,
|
||||
UnhealthyThresholdCount=2,
|
||||
Matcher={'HttpCode': '200'})
|
||||
target_group_arn = response['TargetGroups'][0]['TargetGroupArn']
|
||||
|
||||
client.create_launch_configuration(
|
||||
LaunchConfigurationName='test_launch_configuration')
|
||||
|
||||
client.create_auto_scaling_group(
|
||||
AutoScalingGroupName='test_asg',
|
||||
LaunchConfigurationName='test_launch_configuration',
|
||||
MinSize=0,
|
||||
MaxSize=INSTANCE_COUNT,
|
||||
DesiredCapacity=INSTANCE_COUNT,
|
||||
TargetGroupARNs=[target_group_arn],
|
||||
VPCZoneIdentifier=vpc.id)
|
||||
|
||||
response = client.describe_load_balancer_target_groups(
|
||||
AutoScalingGroupName='test_asg')
|
||||
list(response['LoadBalancerTargetGroups']).should.have.length_of(1)
|
||||
|
||||
response = elbv2_client.describe_target_health(
|
||||
TargetGroupArn=target_group_arn)
|
||||
list(response['TargetHealthDescriptions']).should.have.length_of(INSTANCE_COUNT)
|
||||
|
||||
response = client.detach_load_balancer_target_groups(
|
||||
AutoScalingGroupName='test_asg',
|
||||
TargetGroupARNs=[target_group_arn])
|
||||
|
||||
response = elbv2_client.describe_target_health(
|
||||
TargetGroupArn=target_group_arn)
|
||||
list(response['TargetHealthDescriptions']).should.have.length_of(0)
|
||||
response = client.describe_load_balancer_target_groups(
|
||||
AutoScalingGroupName='test_asg')
|
||||
list(response['LoadBalancerTargetGroups']).should.have.length_of(0)
|
||||
Loading…
Add table
Add a link
Reference in a new issue