| 
									
										
										
										
											2022-03-21 19:55:19 -01:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from moto import mock_elbv2, mock_ec2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_elbv2 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_set_subnets_errors(): | 
					
						
							|  |  |  |     client = boto3.client("elbv2", region_name="us-east-1") | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-east-1") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     security_group = ec2.create_security_group( | 
					
						
							|  |  |  |         GroupName="a-security-group", Description="First One" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default") | 
					
						
							|  |  |  |     subnet1 = ec2.create_subnet( | 
					
						
							|  |  |  |         VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone="us-east-1a" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     subnet2 = ec2.create_subnet( | 
					
						
							|  |  |  |         VpcId=vpc.id, CidrBlock="172.28.7.64/26", AvailabilityZone="us-east-1b" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     subnet3 = ec2.create_subnet( | 
					
						
							|  |  |  |         VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone="us-east-1c" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     response = client.create_load_balancer( | 
					
						
							|  |  |  |         Name="my-lb", | 
					
						
							|  |  |  |         Subnets=[subnet1.id, subnet2.id], | 
					
						
							|  |  |  |         SecurityGroups=[security_group.id], | 
					
						
							|  |  |  |         Scheme="internal", | 
					
						
							|  |  |  |         Tags=[{"Key": "key_name", "Value": "a_value"}], | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     arn = response["LoadBalancers"][0]["LoadBalancerArn"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.set_subnets( | 
					
						
							|  |  |  |         LoadBalancerArn=arn, Subnets=[subnet1.id, subnet2.id, subnet3.id] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     resp = client.describe_load_balancers(LoadBalancerArns=[arn]) | 
					
						
							| 
									
										
										
										
											2023-07-24 12:50:35 +00:00
										 |  |  |     assert len(resp["LoadBalancers"][0]["AvailabilityZones"]) == 3 | 
					
						
							| 
									
										
										
										
											2022-03-21 19:55:19 -01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_elbv2 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_set_subnets__mapping(): | 
					
						
							|  |  |  |     client = boto3.client("elbv2", region_name="us-east-1") | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-east-1") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     security_group = ec2.create_security_group( | 
					
						
							|  |  |  |         GroupName="a-security-group", Description="First One" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default") | 
					
						
							|  |  |  |     subnet1 = ec2.create_subnet( | 
					
						
							|  |  |  |         VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone="us-east-1a" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     subnet2 = ec2.create_subnet( | 
					
						
							|  |  |  |         VpcId=vpc.id, CidrBlock="172.28.7.64/26", AvailabilityZone="us-east-1b" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     response = client.create_load_balancer( | 
					
						
							|  |  |  |         Name="my-lb", | 
					
						
							|  |  |  |         Subnets=[subnet1.id, subnet2.id], | 
					
						
							|  |  |  |         SecurityGroups=[security_group.id], | 
					
						
							|  |  |  |         Scheme="internal", | 
					
						
							|  |  |  |         Tags=[{"Key": "key_name", "Value": "a_value"}], | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     arn = response["LoadBalancers"][0]["LoadBalancerArn"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.set_subnets( | 
					
						
							|  |  |  |         LoadBalancerArn=arn, | 
					
						
							|  |  |  |         SubnetMappings=[{"SubnetId": subnet1.id}, {"SubnetId": subnet2.id}], | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     resp = client.describe_load_balancers(LoadBalancerArns=[arn]) | 
					
						
							|  |  |  |     a_zones = resp["LoadBalancers"][0]["AvailabilityZones"] | 
					
						
							| 
									
										
										
										
											2023-07-24 12:50:35 +00:00
										 |  |  |     assert len(a_zones) == 2 | 
					
						
							|  |  |  |     assert {"ZoneName": "us-east-1a", "SubnetId": subnet1.id} in a_zones | 
					
						
							|  |  |  |     assert {"ZoneName": "us-east-1b", "SubnetId": subnet2.id} in a_zones |