Adding VPN Gateway filters (#3155)
* Adding attchment.vpc-id, attachment.state, type, and vpn-gateway-id filters for VPN Gateways. fixes #3154 * Run formatting on tests Co-authored-by: Alan Baldwin <alan.baldwin.jr@gmail.com>
This commit is contained in:
		
							parent
							
								
									a507314d45
								
							
						
					
					
						commit
						b09c8034e6
					
				| @ -4973,6 +4973,14 @@ class VpnGateway(TaggedEC2Resource): | |||||||
|         super(VpnGateway, self).__init__() |         super(VpnGateway, self).__init__() | ||||||
| 
 | 
 | ||||||
|     def get_filter_value(self, filter_name): |     def get_filter_value(self, filter_name): | ||||||
|  |         if filter_name == "attachment.vpc-id": | ||||||
|  |             return self.attachments.keys() | ||||||
|  |         elif filter_name == "attachment.state": | ||||||
|  |             return [attachment.state for attachment in self.attachments.values()] | ||||||
|  |         elif filter_name == "vpn-gateway-id": | ||||||
|  |             return self.id | ||||||
|  |         elif filter_name == "type": | ||||||
|  |             return self.type | ||||||
|         return super(VpnGateway, self).get_filter_value( |         return super(VpnGateway, self).get_filter_value( | ||||||
|             filter_name, "DescribeVpnGateways" |             filter_name, "DescribeVpnGateways" | ||||||
|         ) |         ) | ||||||
|  | |||||||
| @ -1,8 +1,9 @@ | |||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| import boto | import boto | ||||||
|  | import boto3 | ||||||
| import sure  # noqa | import sure  # noqa | ||||||
| 
 | 
 | ||||||
| from moto import mock_ec2_deprecated | from moto import mock_ec2_deprecated, mock_ec2 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @mock_ec2_deprecated | @mock_ec2_deprecated | ||||||
| @ -33,6 +34,138 @@ def test_describe_vpn_gateway(): | |||||||
|     vpn_gateway.availability_zone.should.equal("us-east-1a") |     vpn_gateway.availability_zone.should.equal("us-east-1a") | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @mock_ec2 | ||||||
|  | def test_describe_vpn_connections_attachment_vpc_id_filter(): | ||||||
|  |     """ describe_vpn_gateways attachment.vpc-id filter """ | ||||||
|  | 
 | ||||||
|  |     ec2 = boto3.client("ec2", region_name="us-east-1") | ||||||
|  | 
 | ||||||
|  |     vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16") | ||||||
|  |     vpc_id = vpc["Vpc"]["VpcId"] | ||||||
|  |     gateway = ec2.create_vpn_gateway(AvailabilityZone="us-east-1a", Type="ipsec.1") | ||||||
|  |     gateway_id = gateway["VpnGateway"]["VpnGatewayId"] | ||||||
|  | 
 | ||||||
|  |     ec2.attach_vpn_gateway(VpcId=vpc_id, VpnGatewayId=gateway_id) | ||||||
|  | 
 | ||||||
|  |     gateways = ec2.describe_vpn_gateways( | ||||||
|  |         Filters=[{"Name": "attachment.vpc-id", "Values": [vpc_id]}] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     gateways["VpnGateways"].should.have.length_of(1) | ||||||
|  |     gateways["VpnGateways"][0]["VpnGatewayId"].should.equal(gateway_id) | ||||||
|  |     gateways["VpnGateways"][0]["VpcAttachments"].should.contain( | ||||||
|  |         {"State": "attached", "VpcId": vpc_id} | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @mock_ec2 | ||||||
|  | def test_describe_vpn_connections_state_filter_attached(): | ||||||
|  |     """ describe_vpn_gateways attachment.state filter - match attached """ | ||||||
|  | 
 | ||||||
|  |     ec2 = boto3.client("ec2", region_name="us-east-1") | ||||||
|  | 
 | ||||||
|  |     vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16") | ||||||
|  |     vpc_id = vpc["Vpc"]["VpcId"] | ||||||
|  |     gateway = ec2.create_vpn_gateway(AvailabilityZone="us-east-1a", Type="ipsec.1") | ||||||
|  |     gateway_id = gateway["VpnGateway"]["VpnGatewayId"] | ||||||
|  | 
 | ||||||
|  |     ec2.attach_vpn_gateway(VpcId=vpc_id, VpnGatewayId=gateway_id) | ||||||
|  | 
 | ||||||
|  |     gateways = ec2.describe_vpn_gateways( | ||||||
|  |         Filters=[{"Name": "attachment.state", "Values": ["attached"]}] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     gateways["VpnGateways"].should.have.length_of(1) | ||||||
|  |     gateways["VpnGateways"][0]["VpnGatewayId"].should.equal(gateway_id) | ||||||
|  |     gateways["VpnGateways"][0]["VpcAttachments"].should.contain( | ||||||
|  |         {"State": "attached", "VpcId": vpc_id} | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @mock_ec2 | ||||||
|  | def test_describe_vpn_connections_state_filter_deatched(): | ||||||
|  |     """ describe_vpn_gateways attachment.state filter - don't match detatched """ | ||||||
|  | 
 | ||||||
|  |     ec2 = boto3.client("ec2", region_name="us-east-1") | ||||||
|  | 
 | ||||||
|  |     vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16") | ||||||
|  |     vpc_id = vpc["Vpc"]["VpcId"] | ||||||
|  |     gateway = ec2.create_vpn_gateway(AvailabilityZone="us-east-1a", Type="ipsec.1") | ||||||
|  |     gateway_id = gateway["VpnGateway"]["VpnGatewayId"] | ||||||
|  | 
 | ||||||
|  |     ec2.attach_vpn_gateway(VpcId=vpc_id, VpnGatewayId=gateway_id) | ||||||
|  | 
 | ||||||
|  |     gateways = ec2.describe_vpn_gateways( | ||||||
|  |         Filters=[{"Name": "attachment.state", "Values": ["detached"]}] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     gateways["VpnGateways"].should.have.length_of(0) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @mock_ec2 | ||||||
|  | def test_describe_vpn_connections_id_filter_match(): | ||||||
|  |     """ describe_vpn_gateways vpn-gateway-id filter - match correct id """ | ||||||
|  | 
 | ||||||
|  |     ec2 = boto3.client("ec2", region_name="us-east-1") | ||||||
|  | 
 | ||||||
|  |     gateway = ec2.create_vpn_gateway(AvailabilityZone="us-east-1a", Type="ipsec.1") | ||||||
|  |     gateway_id = gateway["VpnGateway"]["VpnGatewayId"] | ||||||
|  | 
 | ||||||
|  |     gateways = ec2.describe_vpn_gateways( | ||||||
|  |         Filters=[{"Name": "vpn-gateway-id", "Values": [gateway_id]}] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     gateways["VpnGateways"].should.have.length_of(1) | ||||||
|  |     gateways["VpnGateways"][0]["VpnGatewayId"].should.equal(gateway_id) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @mock_ec2 | ||||||
|  | def test_describe_vpn_connections_id_filter_miss(): | ||||||
|  |     """ describe_vpn_gateways vpn-gateway-id filter - don't match """ | ||||||
|  | 
 | ||||||
|  |     ec2 = boto3.client("ec2", region_name="us-east-1") | ||||||
|  | 
 | ||||||
|  |     ec2.create_vpn_gateway(AvailabilityZone="us-east-1a", Type="ipsec.1") | ||||||
|  | 
 | ||||||
|  |     gateways = ec2.describe_vpn_gateways( | ||||||
|  |         Filters=[{"Name": "vpn-gateway-id", "Values": ["unknown_gateway_id"]}] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     gateways["VpnGateways"].should.have.length_of(0) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @mock_ec2 | ||||||
|  | def test_describe_vpn_connections_type_filter_match(): | ||||||
|  |     """ describe_vpn_gateways type filter - match """ | ||||||
|  | 
 | ||||||
|  |     ec2 = boto3.client("ec2", region_name="us-east-1") | ||||||
|  | 
 | ||||||
|  |     gateway = ec2.create_vpn_gateway(AvailabilityZone="us-east-1a", Type="ipsec.1") | ||||||
|  |     gateway_id = gateway["VpnGateway"]["VpnGatewayId"] | ||||||
|  | 
 | ||||||
|  |     gateways = ec2.describe_vpn_gateways( | ||||||
|  |         Filters=[{"Name": "type", "Values": ["ipsec.1"]}] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     gateways["VpnGateways"].should.have.length_of(1) | ||||||
|  |     gateways["VpnGateways"][0]["VpnGatewayId"].should.equal(gateway_id) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @mock_ec2 | ||||||
|  | def test_describe_vpn_connections_type_filter_miss(): | ||||||
|  |     """ describe_vpn_gateways type filter - don't match """ | ||||||
|  | 
 | ||||||
|  |     ec2 = boto3.client("ec2", region_name="us-east-1") | ||||||
|  | 
 | ||||||
|  |     ec2.create_vpn_gateway(AvailabilityZone="us-east-1a", Type="ipsec.1") | ||||||
|  | 
 | ||||||
|  |     gateways = ec2.describe_vpn_gateways( | ||||||
|  |         Filters=[{"Name": "type", "Values": ["unknown_type"]}] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     gateways["VpnGateways"].should.have.length_of(0) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @mock_ec2_deprecated | @mock_ec2_deprecated | ||||||
| def test_vpn_gateway_vpc_attachment(): | def test_vpn_gateway_vpc_attachment(): | ||||||
|     conn = boto.connect_vpc("the_key", "the_secret") |     conn = boto.connect_vpc("the_key", "the_secret") | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user