| 
									
										
										
										
											2014-08-27 11:17:06 -04:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | import boto.ec2 | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  | import boto.ec2.autoscale | 
					
						
							| 
									
										
										
										
											2015-12-13 22:41:17 -05:00
										 |  |  | import boto.ec2.elb | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | import sure | 
					
						
							| 
									
										
										
										
											2019-12-26 17:12:22 +01:00
										 |  |  | from boto3 import Session | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | from moto import mock_ec2_deprecated, mock_autoscaling_deprecated, mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 12:37:33 -07:00
										 |  |  | from moto.ec2 import ec2_backends | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 12:37:33 -07:00
										 |  |  | def test_use_boto_regions(): | 
					
						
							| 
									
										
										
										
											2019-12-26 17:12:22 +01:00
										 |  |  |     boto_regions = set() | 
					
						
							|  |  |  |     for region in Session().get_available_regions("ec2"): | 
					
						
							|  |  |  |         boto_regions.add(region) | 
					
						
							|  |  |  |     for region in Session().get_available_regions("ec2", partition_name="aws-us-gov"): | 
					
						
							|  |  |  |         boto_regions.add(region) | 
					
						
							|  |  |  |     for region in Session().get_available_regions("ec2", partition_name="aws-cn"): | 
					
						
							|  |  |  |         boto_regions.add(region) | 
					
						
							| 
									
										
										
										
											2017-05-26 12:37:33 -07:00
										 |  |  |     moto_regions = set(ec2_backends) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     moto_regions.should.equal(boto_regions) | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | def add_servers_to_region(ami_id, count, region): | 
					
						
							|  |  |  |     conn = boto.ec2.connect_to_region(region) | 
					
						
							|  |  |  |     for index in range(count): | 
					
						
							|  |  |  |         conn.run_instances(ami_id) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_ec2_deprecated | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | def test_add_servers_to_a_single_region(): | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     region = "ap-northeast-1" | 
					
						
							|  |  |  |     add_servers_to_region("ami-1234abcd", 1, region) | 
					
						
							|  |  |  |     add_servers_to_region("ami-5678efgh", 1, region) | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     conn = boto.ec2.connect_to_region(region) | 
					
						
							| 
									
										
										
										
											2014-08-26 18:38:08 -04:00
										 |  |  |     reservations = conn.get_all_instances() | 
					
						
							|  |  |  |     len(reservations).should.equal(2) | 
					
						
							|  |  |  |     reservations.sort(key=lambda x: x.instances[0].image_id) | 
					
						
							| 
									
										
										
										
											2014-08-27 11:17:06 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     reservations[0].instances[0].image_id.should.equal("ami-1234abcd") | 
					
						
							|  |  |  |     reservations[1].instances[0].image_id.should.equal("ami-5678efgh") | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_ec2_deprecated | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | def test_add_servers_to_multiple_regions(): | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     region1 = "us-east-1" | 
					
						
							|  |  |  |     region2 = "ap-northeast-1" | 
					
						
							|  |  |  |     add_servers_to_region("ami-1234abcd", 1, region1) | 
					
						
							|  |  |  |     add_servers_to_region("ami-5678efgh", 1, region2) | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     us_conn = boto.ec2.connect_to_region(region1) | 
					
						
							|  |  |  |     ap_conn = boto.ec2.connect_to_region(region2) | 
					
						
							| 
									
										
										
										
											2014-08-26 18:38:08 -04:00
										 |  |  |     us_reservations = us_conn.get_all_instances() | 
					
						
							|  |  |  |     ap_reservations = ap_conn.get_all_instances() | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-26 18:38:08 -04:00
										 |  |  |     len(us_reservations).should.equal(1) | 
					
						
							|  |  |  |     len(ap_reservations).should.equal(1) | 
					
						
							| 
									
										
										
										
											2014-08-27 11:17:06 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     us_reservations[0].instances[0].image_id.should.equal("ami-1234abcd") | 
					
						
							|  |  |  |     ap_reservations[0].instances[0].image_id.should.equal("ami-5678efgh") | 
					
						
							| 
									
										
										
										
											2014-08-26 16:42:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_autoscaling_deprecated | 
					
						
							|  |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  | def test_create_autoscaling_group(): | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     elb_conn = boto.ec2.elb.connect_to_region("us-east-1") | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     elb_conn.create_load_balancer( | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         "us_test_lb", zones=[], listeners=[(80, 8080, "http")] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     elb_conn = boto.ec2.elb.connect_to_region("ap-northeast-1") | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     elb_conn.create_load_balancer( | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         "ap_test_lb", zones=[], listeners=[(80, 8080, "http")] | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2015-12-13 22:41:17 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     us_conn = boto.ec2.autoscale.connect_to_region("us-east-1") | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     config = boto.ec2.autoscale.LaunchConfiguration( | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         name="us_tester", image_id="ami-abcd1234", instance_type="m1.small" | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     ) | 
					
						
							| 
									
										
										
										
											2019-05-25 03:18:16 -07:00
										 |  |  |     x = us_conn.create_launch_configuration(config) | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     us_subnet_id = list(ec2_backends["us-east-1"].subnets["us-east-1c"].keys())[0] | 
					
						
							|  |  |  |     ap_subnet_id = list( | 
					
						
							|  |  |  |         ec2_backends["ap-northeast-1"].subnets["ap-northeast-1a"].keys() | 
					
						
							|  |  |  |     )[0] | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     group = boto.ec2.autoscale.AutoScalingGroup( | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         name="us_tester_group", | 
					
						
							|  |  |  |         availability_zones=["us-east-1c"], | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |         default_cooldown=60, | 
					
						
							|  |  |  |         desired_capacity=2, | 
					
						
							|  |  |  |         health_check_period=100, | 
					
						
							|  |  |  |         health_check_type="EC2", | 
					
						
							|  |  |  |         max_size=2, | 
					
						
							|  |  |  |         min_size=2, | 
					
						
							|  |  |  |         launch_config=config, | 
					
						
							|  |  |  |         load_balancers=["us_test_lb"], | 
					
						
							|  |  |  |         placement_group="us_test_placement", | 
					
						
							| 
									
										
										
										
											2019-05-25 03:18:16 -07:00
										 |  |  |         vpc_zone_identifier=us_subnet_id, | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |         termination_policies=["OldestInstance", "NewestInstance"], | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     us_conn.create_auto_scaling_group(group) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     ap_conn = boto.ec2.autoscale.connect_to_region("ap-northeast-1") | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     config = boto.ec2.autoscale.LaunchConfiguration( | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         name="ap_tester", image_id="ami-efgh5678", instance_type="m1.small" | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     ) | 
					
						
							|  |  |  |     ap_conn.create_launch_configuration(config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     group = boto.ec2.autoscale.AutoScalingGroup( | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         name="ap_tester_group", | 
					
						
							|  |  |  |         availability_zones=["ap-northeast-1a"], | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |         default_cooldown=60, | 
					
						
							|  |  |  |         desired_capacity=2, | 
					
						
							|  |  |  |         health_check_period=100, | 
					
						
							|  |  |  |         health_check_type="EC2", | 
					
						
							|  |  |  |         max_size=2, | 
					
						
							|  |  |  |         min_size=2, | 
					
						
							|  |  |  |         launch_config=config, | 
					
						
							|  |  |  |         load_balancers=["ap_test_lb"], | 
					
						
							|  |  |  |         placement_group="ap_test_placement", | 
					
						
							| 
									
										
										
										
											2019-05-25 03:18:16 -07:00
										 |  |  |         vpc_zone_identifier=ap_subnet_id, | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |         termination_policies=["OldestInstance", "NewestInstance"], | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     ap_conn.create_auto_scaling_group(group) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     len(us_conn.get_all_groups()).should.equal(1) | 
					
						
							|  |  |  |     len(ap_conn.get_all_groups()).should.equal(1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     us_group = us_conn.get_all_groups()[0] | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     us_group.name.should.equal("us_tester_group") | 
					
						
							|  |  |  |     list(us_group.availability_zones).should.equal(["us-east-1c"]) | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     us_group.desired_capacity.should.equal(2) | 
					
						
							|  |  |  |     us_group.max_size.should.equal(2) | 
					
						
							|  |  |  |     us_group.min_size.should.equal(2) | 
					
						
							| 
									
										
										
										
											2019-05-25 03:18:16 -07:00
										 |  |  |     us_group.vpc_zone_identifier.should.equal(us_subnet_id) | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     us_group.launch_config_name.should.equal("us_tester") | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     us_group.default_cooldown.should.equal(60) | 
					
						
							|  |  |  |     us_group.health_check_period.should.equal(100) | 
					
						
							|  |  |  |     us_group.health_check_type.should.equal("EC2") | 
					
						
							|  |  |  |     list(us_group.load_balancers).should.equal(["us_test_lb"]) | 
					
						
							|  |  |  |     us_group.placement_group.should.equal("us_test_placement") | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     list(us_group.termination_policies).should.equal( | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         ["OldestInstance", "NewestInstance"] | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     ap_group = ap_conn.get_all_groups()[0] | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     ap_group.name.should.equal("ap_tester_group") | 
					
						
							|  |  |  |     list(ap_group.availability_zones).should.equal(["ap-northeast-1a"]) | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     ap_group.desired_capacity.should.equal(2) | 
					
						
							|  |  |  |     ap_group.max_size.should.equal(2) | 
					
						
							|  |  |  |     ap_group.min_size.should.equal(2) | 
					
						
							| 
									
										
										
										
											2019-05-25 03:18:16 -07:00
										 |  |  |     ap_group.vpc_zone_identifier.should.equal(ap_subnet_id) | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     ap_group.launch_config_name.should.equal("ap_tester") | 
					
						
							| 
									
										
										
										
											2014-08-26 17:45:19 -04:00
										 |  |  |     ap_group.default_cooldown.should.equal(60) | 
					
						
							|  |  |  |     ap_group.health_check_period.should.equal(100) | 
					
						
							|  |  |  |     ap_group.health_check_type.should.equal("EC2") | 
					
						
							|  |  |  |     list(ap_group.load_balancers).should.equal(["ap_test_lb"]) | 
					
						
							|  |  |  |     ap_group.placement_group.should.equal("ap_test_placement") | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     list(ap_group.termination_policies).should.equal( | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         ["OldestInstance", "NewestInstance"] | 
					
						
							|  |  |  |     ) |