| 
									
										
										
										
											2014-08-27 11:17:06 -04:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  | import boto | 
					
						
							|  |  |  | from boto.ec2.autoscale.launchconfig import LaunchConfiguration | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  | from boto.ec2.blockdevicemapping import BlockDeviceType, BlockDeviceMapping | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-03 17:21:25 -04:00
										 |  |  | import sure  # noqa | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | from moto import mock_autoscaling | 
					
						
							| 
									
										
										
										
											2013-09-10 17:04:56 -04:00
										 |  |  | from tests.helpers import requires_boto_gte | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_create_launch_configuration(): | 
					
						
							|  |  |  |     conn = boto.connect_autoscale() | 
					
						
							|  |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							|  |  |  |         image_id='ami-abcd1234', | 
					
						
							| 
									
										
										
										
											2015-08-03 21:48:17 -04:00
										 |  |  |         instance_type='t1.micro', | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  |         key_name='the_keys', | 
					
						
							|  |  |  |         security_groups=["default", "default2"], | 
					
						
							| 
									
										
										
										
											2014-08-26 13:25:50 -04:00
										 |  |  |         user_data=b"This is some user_data", | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  |         instance_monitoring=True, | 
					
						
							|  |  |  |         instance_profile_name='arn:aws:iam::123456789012:instance-profile/testing', | 
					
						
							| 
									
										
										
										
											2013-09-10 16:54:57 -04:00
										 |  |  |         spot_price=0.1, | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     launch_config = conn.get_all_launch_configurations()[0] | 
					
						
							|  |  |  |     launch_config.name.should.equal('tester') | 
					
						
							|  |  |  |     launch_config.image_id.should.equal('ami-abcd1234') | 
					
						
							| 
									
										
										
										
											2015-08-03 21:48:17 -04:00
										 |  |  |     launch_config.instance_type.should.equal('t1.micro') | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  |     launch_config.key_name.should.equal('the_keys') | 
					
						
							|  |  |  |     set(launch_config.security_groups).should.equal(set(['default', 'default2'])) | 
					
						
							| 
									
										
										
										
											2014-08-26 13:25:50 -04:00
										 |  |  |     launch_config.user_data.should.equal(b"This is some user_data") | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  |     launch_config.instance_monitoring.enabled.should.equal('true') | 
					
						
							|  |  |  |     launch_config.instance_profile_name.should.equal('arn:aws:iam::123456789012:instance-profile/testing') | 
					
						
							|  |  |  |     launch_config.spot_price.should.equal(0.1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 16:18:26 -04:00
										 |  |  | @requires_boto_gte("2.27.0") | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_create_launch_configuration_with_block_device_mappings(): | 
					
						
							|  |  |  |     block_device_mapping = BlockDeviceMapping() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ephemeral_drive = BlockDeviceType() | 
					
						
							|  |  |  |     ephemeral_drive.ephemeral_name = 'ephemeral0' | 
					
						
							|  |  |  |     block_device_mapping['/dev/xvdb'] = ephemeral_drive | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     snapshot_drive = BlockDeviceType() | 
					
						
							|  |  |  |     snapshot_drive.snapshot_id = "snap-1234abcd" | 
					
						
							|  |  |  |     snapshot_drive.volume_type = "standard" | 
					
						
							|  |  |  |     block_device_mapping['/dev/xvdp'] = snapshot_drive | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ebs_drive = BlockDeviceType() | 
					
						
							|  |  |  |     ebs_drive.volume_type = "io1" | 
					
						
							|  |  |  |     ebs_drive.size = 100 | 
					
						
							|  |  |  |     ebs_drive.iops = 1000 | 
					
						
							|  |  |  |     ebs_drive.delete_on_termination = False | 
					
						
							|  |  |  |     block_device_mapping['/dev/xvdh'] = ebs_drive | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 16:18:26 -04:00
										 |  |  |     conn = boto.connect_autoscale(use_block_device_types=True) | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							|  |  |  |         image_id='ami-abcd1234', | 
					
						
							|  |  |  |         instance_type='m1.small', | 
					
						
							|  |  |  |         key_name='the_keys', | 
					
						
							|  |  |  |         security_groups=["default", "default2"], | 
					
						
							| 
									
										
										
										
											2014-08-26 13:25:50 -04:00
										 |  |  |         user_data=b"This is some user_data", | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  |         instance_monitoring=True, | 
					
						
							|  |  |  |         instance_profile_name='arn:aws:iam::123456789012:instance-profile/testing', | 
					
						
							|  |  |  |         spot_price=0.1, | 
					
						
							|  |  |  |         block_device_mappings=[block_device_mapping] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     launch_config = conn.get_all_launch_configurations()[0] | 
					
						
							|  |  |  |     launch_config.name.should.equal('tester') | 
					
						
							|  |  |  |     launch_config.image_id.should.equal('ami-abcd1234') | 
					
						
							|  |  |  |     launch_config.instance_type.should.equal('m1.small') | 
					
						
							|  |  |  |     launch_config.key_name.should.equal('the_keys') | 
					
						
							|  |  |  |     set(launch_config.security_groups).should.equal(set(['default', 'default2'])) | 
					
						
							| 
									
										
										
										
											2014-08-26 13:25:50 -04:00
										 |  |  |     launch_config.user_data.should.equal(b"This is some user_data") | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  |     launch_config.instance_monitoring.enabled.should.equal('true') | 
					
						
							|  |  |  |     launch_config.instance_profile_name.should.equal('arn:aws:iam::123456789012:instance-profile/testing') | 
					
						
							|  |  |  |     launch_config.spot_price.should.equal(0.1) | 
					
						
							|  |  |  |     len(launch_config.block_device_mappings).should.equal(3) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 16:18:26 -04:00
										 |  |  |     returned_mapping = launch_config.block_device_mappings | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 16:18:26 -04:00
										 |  |  |     set(returned_mapping.keys()).should.equal(set(['/dev/xvdb', '/dev/xvdp', '/dev/xvdh'])) | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 16:18:26 -04:00
										 |  |  |     returned_mapping['/dev/xvdh'].iops.should.equal(1000) | 
					
						
							|  |  |  |     returned_mapping['/dev/xvdh'].size.should.equal(100) | 
					
						
							|  |  |  |     returned_mapping['/dev/xvdh'].volume_type.should.equal("io1") | 
					
						
							|  |  |  |     returned_mapping['/dev/xvdh'].delete_on_termination.should.be.false | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 16:18:26 -04:00
										 |  |  |     returned_mapping['/dev/xvdp'].snapshot_id.should.equal("snap-1234abcd") | 
					
						
							|  |  |  |     returned_mapping['/dev/xvdp'].volume_type.should.equal("standard") | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 16:18:26 -04:00
										 |  |  |     returned_mapping['/dev/xvdb'].ephemeral_name.should.equal('ephemeral0') | 
					
						
							| 
									
										
										
										
											2014-02-25 14:34:53 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-10 17:04:56 -04:00
										 |  |  | @requires_boto_gte("2.12") | 
					
						
							|  |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_create_launch_configuration_for_2_12(): | 
					
						
							|  |  |  |     conn = boto.connect_autoscale() | 
					
						
							|  |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							|  |  |  |         image_id='ami-abcd1234', | 
					
						
							|  |  |  |         ebs_optimized=True, | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     launch_config = conn.get_all_launch_configurations()[0] | 
					
						
							|  |  |  |     launch_config.ebs_optimized.should.equal(True) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 14:08:56 -05:00
										 |  |  | @requires_boto_gte("2.25.0") | 
					
						
							| 
									
										
										
										
											2014-01-24 10:56:08 -05:00
										 |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_create_launch_configuration_using_ip_association(): | 
					
						
							|  |  |  |     conn = boto.connect_autoscale() | 
					
						
							|  |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							|  |  |  |         image_id='ami-abcd1234', | 
					
						
							|  |  |  |         associate_public_ip_address=True, | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     launch_config = conn.get_all_launch_configurations()[0] | 
					
						
							|  |  |  |     launch_config.associate_public_ip_address.should.equal(True) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 14:08:56 -05:00
										 |  |  | @requires_boto_gte("2.25.0") | 
					
						
							| 
									
										
										
										
											2014-01-24 10:56:08 -05:00
										 |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_create_launch_configuration_using_ip_association_should_default_to_false(): | 
					
						
							|  |  |  |     conn = boto.connect_autoscale() | 
					
						
							|  |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							| 
									
										
										
										
											2015-08-03 21:48:17 -04:00
										 |  |  |         image_id='ami-abcd1234', | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2014-01-24 10:56:08 -05:00
										 |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     launch_config = conn.get_all_launch_configurations()[0] | 
					
						
							|  |  |  |     launch_config.associate_public_ip_address.should.equal(False) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_create_launch_configuration_defaults(): | 
					
						
							|  |  |  |     """ Test with the minimum inputs and check that all of the proper defaults
 | 
					
						
							|  |  |  |     are assigned for the other attributes """
 | 
					
						
							|  |  |  |     conn = boto.connect_autoscale() | 
					
						
							|  |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							|  |  |  |         image_id='ami-abcd1234', | 
					
						
							|  |  |  |         instance_type='m1.small', | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     launch_config = conn.get_all_launch_configurations()[0] | 
					
						
							|  |  |  |     launch_config.name.should.equal('tester') | 
					
						
							|  |  |  |     launch_config.image_id.should.equal('ami-abcd1234') | 
					
						
							|  |  |  |     launch_config.instance_type.should.equal('m1.small') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Defaults | 
					
						
							|  |  |  |     launch_config.key_name.should.equal('') | 
					
						
							|  |  |  |     list(launch_config.security_groups).should.equal([]) | 
					
						
							| 
									
										
										
										
											2014-08-26 13:25:50 -04:00
										 |  |  |     launch_config.user_data.should.equal(b"") | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  |     launch_config.instance_monitoring.enabled.should.equal('false') | 
					
						
							|  |  |  |     launch_config.instance_profile_name.should.equal(None) | 
					
						
							|  |  |  |     launch_config.spot_price.should.equal(None) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-10 17:04:56 -04:00
										 |  |  | @requires_boto_gte("2.12") | 
					
						
							|  |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_create_launch_configuration_defaults_for_2_12(): | 
					
						
							|  |  |  |     conn = boto.connect_autoscale() | 
					
						
							|  |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							|  |  |  |         image_id='ami-abcd1234', | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     launch_config = conn.get_all_launch_configurations()[0] | 
					
						
							|  |  |  |     launch_config.ebs_optimized.should.equal(False) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-27 16:24:38 -04:00
										 |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_launch_configuration_describe_filter(): | 
					
						
							|  |  |  |     conn = boto.connect_autoscale() | 
					
						
							|  |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							|  |  |  |         image_id='ami-abcd1234', | 
					
						
							|  |  |  |         instance_type='m1.small', | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  |     config.name = 'tester2' | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  |     config.name = 'tester3' | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.get_all_launch_configurations(names=['tester', 'tester2']).should.have.length_of(2) | 
					
						
							|  |  |  |     conn.get_all_launch_configurations().should.have.length_of(3) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_autoscaling | 
					
						
							|  |  |  | def test_launch_configuration_delete(): | 
					
						
							|  |  |  |     conn = boto.connect_autoscale() | 
					
						
							|  |  |  |     config = LaunchConfiguration( | 
					
						
							|  |  |  |         name='tester', | 
					
						
							|  |  |  |         image_id='ami-abcd1234', | 
					
						
							|  |  |  |         instance_type='m1.small', | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.get_all_launch_configurations().should.have.length_of(1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.delete_launch_configuration('tester') | 
					
						
							|  |  |  |     conn.get_all_launch_configurations().should.have.length_of(0) |