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__()
|
||||
|
||||
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(
|
||||
filter_name, "DescribeVpnGateways"
|
||||
)
|
||||
|
@ -1,8 +1,9 @@
|
||||
from __future__ import unicode_literals
|
||||
import boto
|
||||
import boto3
|
||||
import sure # noqa
|
||||
|
||||
from moto import mock_ec2_deprecated
|
||||
from moto import mock_ec2_deprecated, mock_ec2
|
||||
|
||||
|
||||
@mock_ec2_deprecated
|
||||
@ -33,6 +34,138 @@ def test_describe_vpn_gateway():
|
||||
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
|
||||
def test_vpn_gateway_vpc_attachment():
|
||||
conn = boto.connect_vpc("the_key", "the_secret")
|
||||
|
Loading…
Reference in New Issue
Block a user