Created tests for calling CreateAutoScalingGroup with an instance id.
This commit is contained in:
parent
ab0d23a0ba
commit
4ca0bd807f
@ -7,11 +7,13 @@ from boto.ec2.autoscale.group import AutoScalingGroup
|
||||
from boto.ec2.autoscale import Tag
|
||||
import boto.ec2.elb
|
||||
import sure # noqa
|
||||
from botocore.exceptions import ClientError
|
||||
from nose.tools import assert_raises
|
||||
|
||||
from moto import mock_autoscaling, mock_ec2_deprecated, mock_elb_deprecated, mock_elb, mock_autoscaling_deprecated, mock_ec2
|
||||
from tests.helpers import requires_boto_gte
|
||||
|
||||
from utils import setup_networking, setup_networking_deprecated
|
||||
from utils import setup_networking, setup_networking_deprecated, setup_instance_with_networking
|
||||
|
||||
|
||||
@mock_autoscaling_deprecated
|
||||
@ -724,6 +726,67 @@ def test_create_autoscaling_group_boto3():
|
||||
response['ResponseMetadata']['HTTPStatusCode'].should.equal(200)
|
||||
|
||||
|
||||
@mock_autoscaling
|
||||
def test_create_autoscaling_group_from_instance():
|
||||
autoscaling_group_name = 'test_asg'
|
||||
image_id = 'ami-0cc293023f983ed53'
|
||||
instance_type = 't2.micro'
|
||||
|
||||
mocked_instance_with_networking = setup_instance_with_networking(image_id, instance_type)
|
||||
client = boto3.client('autoscaling', region_name='us-east-1')
|
||||
response = client.create_auto_scaling_group(
|
||||
AutoScalingGroupName=autoscaling_group_name,
|
||||
InstanceId=mocked_instance_with_networking['instance'],
|
||||
MinSize=1,
|
||||
MaxSize=3,
|
||||
DesiredCapacity=2,
|
||||
Tags=[
|
||||
{'ResourceId': 'test_asg',
|
||||
'ResourceType': 'auto-scaling-group',
|
||||
'Key': 'propogated-tag-key',
|
||||
'Value': 'propogate-tag-value',
|
||||
'PropagateAtLaunch': True
|
||||
},
|
||||
{'ResourceId': 'test_asg',
|
||||
'ResourceType': 'auto-scaling-group',
|
||||
'Key': 'not-propogated-tag-key',
|
||||
'Value': 'not-propogate-tag-value',
|
||||
'PropagateAtLaunch': False
|
||||
}],
|
||||
VPCZoneIdentifier=mocked_instance_with_networking['subnet1'],
|
||||
NewInstancesProtectedFromScaleIn=False,
|
||||
)
|
||||
response['ResponseMetadata']['HTTPStatusCode'].should.equal(200)
|
||||
|
||||
describe_launch_configurations_response = client.describe_launch_configurations()
|
||||
describe_launch_configurations_response['LaunchConfigurations'].should.have.length_of(1)
|
||||
launch_configuration_from_instance = describe_launch_configurations_response['LaunchConfigurations'][0]
|
||||
launch_configuration_from_instance['LaunchConfigurationName'].should.equal('test_asg')
|
||||
launch_configuration_from_instance['ImageId'].should.equal(image_id)
|
||||
launch_configuration_from_instance['InstanceType'].should.equal(instance_type)
|
||||
|
||||
|
||||
@mock_autoscaling
|
||||
def test_create_autoscaling_group_from_invalid_instance_id():
|
||||
invalid_instance_id = 'invalid_instance'
|
||||
|
||||
mocked_networking = setup_networking()
|
||||
client = boto3.client('autoscaling', region_name='us-east-1')
|
||||
with assert_raises(ClientError) as ex:
|
||||
client.create_auto_scaling_group(
|
||||
AutoScalingGroupName='test_asg',
|
||||
InstanceId=invalid_instance_id,
|
||||
MinSize=9,
|
||||
MaxSize=15,
|
||||
DesiredCapacity=12,
|
||||
VPCZoneIdentifier=mocked_networking['subnet1'],
|
||||
NewInstancesProtectedFromScaleIn=False,
|
||||
)
|
||||
ex.exception.response['ResponseMetadata']['HTTPStatusCode'].should.equal(400)
|
||||
ex.exception.response['Error']['Code'].should.equal('ValidationError')
|
||||
ex.exception.response['Error']['Message'].should.equal('Instance [{0}] is invalid.'.format(invalid_instance_id))
|
||||
|
||||
|
||||
@mock_autoscaling
|
||||
def test_describe_autoscaling_groups_boto3():
|
||||
mocked_networking = setup_networking()
|
||||
|
@ -31,3 +31,18 @@ def setup_networking_deprecated():
|
||||
"10.11.2.0/24",
|
||||
availability_zone='us-east-1b')
|
||||
return {'vpc': vpc.id, 'subnet1': subnet1.id, 'subnet2': subnet2.id}
|
||||
|
||||
|
||||
@mock_ec2
|
||||
def setup_instance_with_networking(image_id, instance_type):
|
||||
mock_data = setup_networking()
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
instances = ec2.create_instances(
|
||||
ImageId=image_id,
|
||||
InstanceType=instance_type,
|
||||
MaxCount=1,
|
||||
MinCount=1,
|
||||
SubnetId=mock_data['subnet1']
|
||||
)
|
||||
mock_data['instance'] = instances[0].id
|
||||
return mock_data
|
||||
|
Loading…
Reference in New Issue
Block a user