Added ManagedPrefixList (#4169)
This commit is contained in:
parent
0d06ebb5fc
commit
39185cafef
@ -69,7 +69,7 @@ class InvalidSubnetIdError(EC2ClientError):
|
|||||||
def __init__(self, subnet_id):
|
def __init__(self, subnet_id):
|
||||||
super(InvalidSubnetIdError, self).__init__(
|
super(InvalidSubnetIdError, self).__init__(
|
||||||
"InvalidSubnetID.NotFound",
|
"InvalidSubnetID.NotFound",
|
||||||
"The subnet ID '{0}' does not exist".format(subnet_id),
|
"The subnet ID '{}' does not exist".format(subnet_id),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -138,6 +138,7 @@ from .utils import (
|
|||||||
random_reservation_id,
|
random_reservation_id,
|
||||||
random_route_table_id,
|
random_route_table_id,
|
||||||
generate_route_id,
|
generate_route_id,
|
||||||
|
random_managed_prefix_list_id,
|
||||||
create_dns_entries,
|
create_dns_entries,
|
||||||
split_route_id,
|
split_route_id,
|
||||||
random_security_group_id,
|
random_security_group_id,
|
||||||
@ -3263,6 +3264,7 @@ class VPCBackend(object):
|
|||||||
# validates if vpc is present or not.
|
# validates if vpc is present or not.
|
||||||
self.get_vpc(vpc_id)
|
self.get_vpc(vpc_id)
|
||||||
|
|
||||||
|
service_destination_cidr = None
|
||||||
if type and type.lower() == "interface":
|
if type and type.lower() == "interface":
|
||||||
|
|
||||||
network_interface_ids = []
|
network_interface_ids = []
|
||||||
@ -3297,12 +3299,29 @@ class VPCBackend(object):
|
|||||||
security_group_ids,
|
security_group_ids,
|
||||||
tags,
|
tags,
|
||||||
private_dns_enabled,
|
private_dns_enabled,
|
||||||
|
service_destination_cidr,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.vpc_end_points[vpc_endpoint_id] = vpc_end_point
|
self.vpc_end_points[vpc_endpoint_id] = vpc_end_point
|
||||||
|
|
||||||
return vpc_end_point
|
return vpc_end_point
|
||||||
|
|
||||||
|
def delete_vpc_endpoints(self, vpce_ids=[]):
|
||||||
|
vpce_ids
|
||||||
|
for vpce_id in vpce_ids:
|
||||||
|
vpc_endpoint = self.vpc_end_points.get(vpce_id, None)
|
||||||
|
if vpc_endpoint:
|
||||||
|
if vpc_endpoint.type.lower() == "interface":
|
||||||
|
for eni_id in vpc_endpoint.network_interface_ids:
|
||||||
|
self.enis.pop(eni_id, None)
|
||||||
|
else:
|
||||||
|
for route_table_id in vpc_endpoint.route_table_ids:
|
||||||
|
self.delete_route(
|
||||||
|
route_table_id, vpc_endpoint.service_destination_cidr
|
||||||
|
)
|
||||||
|
vpc_endpoint.state = "deleted"
|
||||||
|
return True
|
||||||
|
|
||||||
def get_vpc_end_point(self, vpc_end_point_ids, filters=None):
|
def get_vpc_end_point(self, vpc_end_point_ids, filters=None):
|
||||||
vpc_end_points = self.vpc_end_points.values()
|
vpc_end_points = self.vpc_end_points.values()
|
||||||
|
|
||||||
@ -3759,7 +3778,7 @@ class SubnetBackend(object):
|
|||||||
matches = [sn for sn in matches if sn.id in subnet_ids]
|
matches = [sn for sn in matches if sn.id in subnet_ids]
|
||||||
if len(subnet_ids) > len(matches):
|
if len(subnet_ids) > len(matches):
|
||||||
unknown_ids = set(subnet_ids) - set(matches)
|
unknown_ids = set(subnet_ids) - set(matches)
|
||||||
raise InvalidSubnetIdError(unknown_ids)
|
raise InvalidSubnetIdError(list(unknown_ids)[0])
|
||||||
if filters:
|
if filters:
|
||||||
matches = generic_filter(filters, matches)
|
matches = generic_filter(filters, matches)
|
||||||
|
|
||||||
@ -4358,12 +4377,14 @@ class VPCEndPoint(TaggedEC2Resource):
|
|||||||
security_group_ids=None,
|
security_group_ids=None,
|
||||||
tags=None,
|
tags=None,
|
||||||
private_dns_enabled=None,
|
private_dns_enabled=None,
|
||||||
|
service_destination_cidr=None,
|
||||||
):
|
):
|
||||||
self.ec2_backend = ec2_backend
|
self.ec2_backend = ec2_backend
|
||||||
self.id = id
|
self.id = id
|
||||||
self.vpc_id = vpc_id
|
self.vpc_id = vpc_id
|
||||||
self.service_name = service_name
|
self.service_name = service_name
|
||||||
self.type = type
|
self.type = type
|
||||||
|
self.state = "available"
|
||||||
self.policy_document = policy_document
|
self.policy_document = policy_document
|
||||||
self.route_table_ids = route_table_ids
|
self.route_table_ids = route_table_ids
|
||||||
self.network_interface_ids = network_interface_ids
|
self.network_interface_ids = network_interface_ids
|
||||||
@ -4371,9 +4392,10 @@ class VPCEndPoint(TaggedEC2Resource):
|
|||||||
self.client_token = client_token
|
self.client_token = client_token
|
||||||
self.security_group_ids = security_group_ids
|
self.security_group_ids = security_group_ids
|
||||||
self.private_dns_enabled = private_dns_enabled
|
self.private_dns_enabled = private_dns_enabled
|
||||||
self._created_at = datetime.utcnow()
|
# self.created_at = utc_date_and_time()
|
||||||
self.dns_entries = dns_entries
|
self.dns_entries = dns_entries
|
||||||
self.add_tags(tags or {})
|
self.add_tags(tags or {})
|
||||||
|
self.service_destination_cidr = service_destination_cidr
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def owner_id(self):
|
def owner_id(self):
|
||||||
@ -4381,7 +4403,170 @@ class VPCEndPoint(TaggedEC2Resource):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def created_at(self):
|
def created_at(self):
|
||||||
return iso_8601_datetime_with_milliseconds(self._created_at)
|
return utc_date_and_time()
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedPrefixList(TaggedEC2Resource):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
backend,
|
||||||
|
address_family=None,
|
||||||
|
entry=[],
|
||||||
|
max_entries=None,
|
||||||
|
prefix_list_name=None,
|
||||||
|
region=None,
|
||||||
|
tags={},
|
||||||
|
owner_id=None,
|
||||||
|
):
|
||||||
|
self.ec2_backend = backend
|
||||||
|
self.address_family = address_family
|
||||||
|
self.max_entries = max_entries
|
||||||
|
self.id = random_managed_prefix_list_id()
|
||||||
|
self.prefix_list_name = prefix_list_name
|
||||||
|
self.state = "create-complete"
|
||||||
|
self.state_message = "create complete"
|
||||||
|
self.add_tags(tags or {})
|
||||||
|
self.version = 1
|
||||||
|
self.entries = {self.version: entry} if entry else {}
|
||||||
|
self.resource_owner_id = owner_id if owner_id else None
|
||||||
|
self.prefix_list_arn = self.arn(region, self.owner_id)
|
||||||
|
self.delete_counter = 1
|
||||||
|
|
||||||
|
def arn(self, region, owner_id):
|
||||||
|
return "arn:aws:ec2:{region}:{owner_id}:prefix-list/{resource_id}".format(
|
||||||
|
region=region, resource_id=self.id, owner_id=owner_id
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def owner_id(self):
|
||||||
|
return ACCOUNT_ID if not self.resource_owner_id else self.resource_owner_id
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedPrefixListBackend(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.managed_prefix_lists = {}
|
||||||
|
self.create_default_pls()
|
||||||
|
super(ManagedPrefixListBackend, self).__init__()
|
||||||
|
|
||||||
|
def create_managed_prefix_list(
|
||||||
|
self,
|
||||||
|
address_family=None,
|
||||||
|
entry=[],
|
||||||
|
max_entries=None,
|
||||||
|
prefix_list_name=None,
|
||||||
|
tags={},
|
||||||
|
owner_id=None,
|
||||||
|
):
|
||||||
|
managed_prefix_list = ManagedPrefixList(
|
||||||
|
self,
|
||||||
|
address_family=address_family,
|
||||||
|
entry=entry,
|
||||||
|
max_entries=max_entries,
|
||||||
|
prefix_list_name=prefix_list_name,
|
||||||
|
region=self.region_name,
|
||||||
|
tags=tags,
|
||||||
|
owner_id=owner_id,
|
||||||
|
)
|
||||||
|
self.managed_prefix_lists[managed_prefix_list.id] = managed_prefix_list
|
||||||
|
return managed_prefix_list
|
||||||
|
|
||||||
|
def describe_managed_prefix_lists(self, prefix_list_ids=None, filters=None):
|
||||||
|
managed_prefix_lists = list(self.managed_prefix_lists.values())
|
||||||
|
attr_pairs = (
|
||||||
|
("owner-id", "owner_id"),
|
||||||
|
("prefix-list-id", "id"),
|
||||||
|
("prefix-list-name", "prefix_list_name"),
|
||||||
|
)
|
||||||
|
|
||||||
|
if prefix_list_ids:
|
||||||
|
managed_prefix_lists = [
|
||||||
|
managed_prefix_list
|
||||||
|
for managed_prefix_list in managed_prefix_lists
|
||||||
|
if managed_prefix_list.id in prefix_list_ids
|
||||||
|
]
|
||||||
|
|
||||||
|
result = managed_prefix_lists
|
||||||
|
if filters:
|
||||||
|
result = filter_resources(managed_prefix_lists, filters, attr_pairs)
|
||||||
|
|
||||||
|
for item in result.copy():
|
||||||
|
if not item.delete_counter:
|
||||||
|
self.managed_prefix_lists.pop(item.id, None)
|
||||||
|
result.remove(item)
|
||||||
|
if item.state == "delete-complete":
|
||||||
|
item.delete_counter -= 1
|
||||||
|
return result
|
||||||
|
|
||||||
|
def get_managed_prefix_list_entries(self, prefix_list_id=None):
|
||||||
|
managed_prefix_list = self.managed_prefix_lists.get(prefix_list_id)
|
||||||
|
return managed_prefix_list
|
||||||
|
|
||||||
|
def delete_managed_prefix_list(self, prefix_list_id):
|
||||||
|
managed_prefix_list = self.managed_prefix_lists.get(prefix_list_id)
|
||||||
|
managed_prefix_list.state = "delete-complete"
|
||||||
|
return managed_prefix_list
|
||||||
|
|
||||||
|
def modify_managed_prefix_list(
|
||||||
|
self,
|
||||||
|
add_entry=None,
|
||||||
|
prefix_list_id=None,
|
||||||
|
current_version=None,
|
||||||
|
prefix_list_name=None,
|
||||||
|
remove_entry=None,
|
||||||
|
):
|
||||||
|
managed_pl = self.managed_prefix_lists.get(prefix_list_id)
|
||||||
|
managed_pl.prefix_list_name = prefix_list_name
|
||||||
|
if remove_entry or add_entry:
|
||||||
|
entries = (
|
||||||
|
managed_pl.entries.get(current_version, managed_pl.version).copy()
|
||||||
|
if managed_pl.entries
|
||||||
|
else []
|
||||||
|
)
|
||||||
|
for item in entries.copy():
|
||||||
|
if item.get("Cidr", "") in remove_entry:
|
||||||
|
entries.remove(item)
|
||||||
|
|
||||||
|
for item in add_entry:
|
||||||
|
if item not in entries.copy():
|
||||||
|
entries.append(item)
|
||||||
|
managed_pl.version += 1
|
||||||
|
managed_pl.entries[managed_pl.version] = entries
|
||||||
|
managed_pl.state = "modify-complete"
|
||||||
|
return managed_pl
|
||||||
|
|
||||||
|
def create_default_pls(self):
|
||||||
|
entry = [
|
||||||
|
{"Cidr": "52.216.0.0/15", "Description": "default"},
|
||||||
|
{"Cidr": "3.5.0.0/19", "Description": "default"},
|
||||||
|
{"Cidr": "54.231.0.0/16", "Description": "default"},
|
||||||
|
]
|
||||||
|
|
||||||
|
managed_prefix_list = self.create_managed_prefix_list(
|
||||||
|
address_family="IPv4",
|
||||||
|
entry=entry,
|
||||||
|
prefix_list_name="com.amazonaws.{}.s3".format(self.region_name),
|
||||||
|
owner_id="aws",
|
||||||
|
)
|
||||||
|
managed_prefix_list.version = None
|
||||||
|
managed_prefix_list.max_entries = None
|
||||||
|
self.managed_prefix_lists[managed_prefix_list.id] = managed_prefix_list
|
||||||
|
|
||||||
|
entry = [
|
||||||
|
{"Cidr": "3.218.182.0/24", "Description": "default"},
|
||||||
|
{"Cidr": "3.218.180.0/23", "Description": "default"},
|
||||||
|
{"Cidr": "52.94.0.0/22", "Description": "default"},
|
||||||
|
{"Cidr": "52.119.224.0/20", "Description": "default"},
|
||||||
|
]
|
||||||
|
|
||||||
|
managed_prefix_list = self.create_managed_prefix_list(
|
||||||
|
address_family="IPv4",
|
||||||
|
entry=entry,
|
||||||
|
prefix_list_name="com.amazonaws.{}.dynamodb".format(self.region_name),
|
||||||
|
owner_id="aws",
|
||||||
|
)
|
||||||
|
managed_prefix_list.version = None
|
||||||
|
managed_prefix_list.max_entries = None
|
||||||
|
self.managed_prefix_lists[managed_prefix_list.id] = managed_prefix_list
|
||||||
|
|
||||||
|
|
||||||
class RouteBackend(object):
|
class RouteBackend(object):
|
||||||
@ -7080,6 +7265,7 @@ class EC2Backend(
|
|||||||
SecurityGroupBackend,
|
SecurityGroupBackend,
|
||||||
AmiBackend,
|
AmiBackend,
|
||||||
VPCBackend,
|
VPCBackend,
|
||||||
|
ManagedPrefixListBackend,
|
||||||
SubnetBackend,
|
SubnetBackend,
|
||||||
SubnetRouteTableAssociationBackend,
|
SubnetRouteTableAssociationBackend,
|
||||||
FlowLogsBackend,
|
FlowLogsBackend,
|
||||||
|
@ -218,6 +218,97 @@ class VPCs(BaseResponse):
|
|||||||
template = self.response_template(DESCRIBE_VPC_ENDPOINT_RESPONSE)
|
template = self.response_template(DESCRIBE_VPC_ENDPOINT_RESPONSE)
|
||||||
return template.render(vpc_end_points=vpc_end_points, account_id=ACCOUNT_ID)
|
return template.render(vpc_end_points=vpc_end_points, account_id=ACCOUNT_ID)
|
||||||
|
|
||||||
|
def delete_vpc_endpoints(self):
|
||||||
|
vpc_end_points_ids = self._get_multi_param("VpcEndpointId")
|
||||||
|
response = self.ec2_backend.delete_vpc_endpoints(vpce_ids=vpc_end_points_ids,)
|
||||||
|
template = self.response_template(DELETE_VPC_ENDPOINT_RESPONSE)
|
||||||
|
return template.render(response=response)
|
||||||
|
|
||||||
|
def create_managed_prefix_list(self):
|
||||||
|
address_family = self._get_param("AddressFamily")
|
||||||
|
max_entries = self._get_param("MaxEntries")
|
||||||
|
prefix_list_name = self._get_param("PrefixListName")
|
||||||
|
entry = self._get_multi_param("Entry")
|
||||||
|
|
||||||
|
tags = self._get_multi_param("TagSpecification")
|
||||||
|
tags = tags[0] if isinstance(tags, list) and len(tags) == 1 else tags
|
||||||
|
tags = (tags or {}).get("Tag", [])
|
||||||
|
tags = {t["Key"]: t["Value"] for t in tags}
|
||||||
|
|
||||||
|
managed_prefix_list = self.ec2_backend.create_managed_prefix_list(
|
||||||
|
address_family=address_family,
|
||||||
|
entry=entry,
|
||||||
|
max_entries=max_entries,
|
||||||
|
prefix_list_name=prefix_list_name,
|
||||||
|
tags=tags,
|
||||||
|
)
|
||||||
|
template = self.response_template(CREATE_MANAGED_PREFIX_LIST)
|
||||||
|
return template.render(managed_prefix_list=managed_prefix_list)
|
||||||
|
|
||||||
|
def describe_managed_prefix_lists(self):
|
||||||
|
prefix_list_ids = self._get_multi_param("PrefixListId")
|
||||||
|
filters = filters_from_querystring(self.querystring)
|
||||||
|
managed_prefix_lists = self.ec2_backend.describe_managed_prefix_lists(
|
||||||
|
prefix_list_ids=prefix_list_ids, filters=filters
|
||||||
|
)
|
||||||
|
template = self.response_template(DESCRIBE_MANAGED_PREFIX_LIST)
|
||||||
|
return template.render(managed_prefix_lists=managed_prefix_lists)
|
||||||
|
|
||||||
|
def get_managed_prefix_list_entries(self):
|
||||||
|
prefix_list_id = self._get_param("PrefixListId")
|
||||||
|
target_version = self._get_param("TargetVersion")
|
||||||
|
managed_prefix_list = self.ec2_backend.get_managed_prefix_list_entries(
|
||||||
|
prefix_list_id=prefix_list_id,
|
||||||
|
)
|
||||||
|
entries = []
|
||||||
|
if managed_prefix_list:
|
||||||
|
entries = (
|
||||||
|
list(managed_prefix_list.entries.values())[-1]
|
||||||
|
if managed_prefix_list.entries.values()
|
||||||
|
else []
|
||||||
|
)
|
||||||
|
if target_version:
|
||||||
|
target_version = int(target_version)
|
||||||
|
entries = managed_prefix_list.entries.get(target_version)
|
||||||
|
template = self.response_template(GET_MANAGED_PREFIX_LIST_ENTRIES)
|
||||||
|
return template.render(entries=entries)
|
||||||
|
|
||||||
|
def delete_managed_prefix_list(self):
|
||||||
|
prefix_list_id = self._get_param("PrefixListId")
|
||||||
|
managed_prefix_list = self.ec2_backend.delete_managed_prefix_list(
|
||||||
|
prefix_list_id
|
||||||
|
)
|
||||||
|
template = self.response_template(DELETE_MANAGED_PREFIX_LIST)
|
||||||
|
return template.render(managed_prefix_list=managed_prefix_list)
|
||||||
|
|
||||||
|
def describe_prefix_lists(self):
|
||||||
|
prefix_list_ids = self._get_multi_param("PrefixListId")
|
||||||
|
filters = filters_from_querystring(self.querystring)
|
||||||
|
managed_pls = self.ec2_backend.describe_managed_prefix_lists(
|
||||||
|
prefix_list_ids=prefix_list_ids, filters=filters
|
||||||
|
)
|
||||||
|
template = self.response_template(DESCRIBE_PREFIX_LIST)
|
||||||
|
return template.render(managed_pls=managed_pls)
|
||||||
|
|
||||||
|
def modify_managed_prefix_list(self):
|
||||||
|
add_entry = self._get_multi_param("AddEntry")
|
||||||
|
prefix_list_id = self._get_param("PrefixListId")
|
||||||
|
current_version = self._get_param("CurrentVersion")
|
||||||
|
prefix_list_name = self._get_param("PrefixListName")
|
||||||
|
remove_entry = self._get_multi_param("RemoveEntry")
|
||||||
|
|
||||||
|
current_version = int(current_version) if current_version else None
|
||||||
|
|
||||||
|
managed_prefix_list = self.ec2_backend.modify_managed_prefix_list(
|
||||||
|
add_entry=add_entry,
|
||||||
|
prefix_list_id=prefix_list_id,
|
||||||
|
current_version=current_version,
|
||||||
|
prefix_list_name=prefix_list_name,
|
||||||
|
remove_entry=remove_entry,
|
||||||
|
)
|
||||||
|
template = self.response_template(MODIFY_PREFIX_LIST)
|
||||||
|
return template.render(managed_prefix_list=managed_prefix_list)
|
||||||
|
|
||||||
|
|
||||||
CREATE_VPC_RESPONSE = """
|
CREATE_VPC_RESPONSE = """
|
||||||
<CreateVpcResponse xmlns="http://ec2.amazonaws.com/doc/{{doc_date}}/">
|
<CreateVpcResponse xmlns="http://ec2.amazonaws.com/doc/{{doc_date}}/">
|
||||||
@ -452,7 +543,7 @@ IPV6_DISASSOCIATE_VPC_CIDR_BLOCK_RESPONSE = """
|
|||||||
CREATE_VPC_END_POINT = """ <CreateVpcEndpointResponse xmlns="http://monitoring.amazonaws.com/doc/2010-08-01/">
|
CREATE_VPC_END_POINT = """ <CreateVpcEndpointResponse xmlns="http://monitoring.amazonaws.com/doc/2010-08-01/">
|
||||||
<vpcEndpoint>
|
<vpcEndpoint>
|
||||||
<policyDocument>{{ vpc_end_point.policy_document }}</policyDocument>
|
<policyDocument>{{ vpc_end_point.policy_document }}</policyDocument>
|
||||||
<state> available </state>
|
<state>{{ vpc_end_point.state }}</state>
|
||||||
<vpcEndpointPolicySupported> false </vpcEndpointPolicySupported>
|
<vpcEndpointPolicySupported> false </vpcEndpointPolicySupported>
|
||||||
<serviceName>{{ vpc_end_point.service_name }}</serviceName>
|
<serviceName>{{ vpc_end_point.service_name }}</serviceName>
|
||||||
<vpcId>{{ vpc_end_point.vpc_id }}</vpcId>
|
<vpcId>{{ vpc_end_point.vpc_id }}</vpcId>
|
||||||
@ -535,7 +626,7 @@ DESCRIBE_VPC_ENDPOINT_RESPONSE = """<DescribeVpcEndpointsResponse xmlns="http://
|
|||||||
{% if vpc_end_point.policy_document %}
|
{% if vpc_end_point.policy_document %}
|
||||||
<policyDocument>{{ vpc_end_point.policy_document }}</policyDocument>
|
<policyDocument>{{ vpc_end_point.policy_document }}</policyDocument>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<state>available</state>
|
<state>{{ vpc_end_point.state }}</state>
|
||||||
<privateDnsEnabled>{{ 'true' if vpc_end_point.private_dns_enabled else 'false' }}</privateDnsEnabled>
|
<privateDnsEnabled>{{ 'true' if vpc_end_point.private_dns_enabled else 'false' }}</privateDnsEnabled>
|
||||||
<serviceName>{{ vpc_end_point.service_name }}</serviceName>
|
<serviceName>{{ vpc_end_point.service_name }}</serviceName>
|
||||||
<vpcId>{{ vpc_end_point.vpc_id }}</vpcId>
|
<vpcId>{{ vpc_end_point.vpc_id }}</vpcId>
|
||||||
@ -593,3 +684,145 @@ DESCRIBE_VPC_ENDPOINT_RESPONSE = """<DescribeVpcEndpointsResponse xmlns="http://
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</vpcEndpointSet>
|
</vpcEndpointSet>
|
||||||
</DescribeVpcEndpointsResponse>"""
|
</DescribeVpcEndpointsResponse>"""
|
||||||
|
|
||||||
|
|
||||||
|
DELETE_VPC_ENDPOINT_RESPONSE = """<DeleteVpcEndpointsResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
|
||||||
|
<requestId>19a9ff46-7df6-49b8-9726-3df27527089d</requestId>
|
||||||
|
<unsuccessful>{{ 'Error' if not response else '' }}</unsuccessful>
|
||||||
|
</DeleteVpcEndpointsResponse>"""
|
||||||
|
|
||||||
|
|
||||||
|
CREATE_MANAGED_PREFIX_LIST = """<CreateManagedPrefixListResponse xmlns="http://monitoring.amazonaws.com/doc/2010-08-01/">
|
||||||
|
<prefixList>
|
||||||
|
<addressFamily>{{ managed_prefix_list.address_family }}</addressFamily>
|
||||||
|
<maxEntries>{{ managed_prefix_list.max_entries }}</maxEntries>
|
||||||
|
<ownerId>{{ managed_prefix_list.owner_id }}</ownerId>
|
||||||
|
<prefixListArn>{{ managed_prefix_list.prefix_list_arn }}</prefixListArn>
|
||||||
|
<prefixListId>{{ managed_prefix_list.id }}</prefixListId>
|
||||||
|
<prefixListName>{{ managed_prefix_list.prefix_list_name }}</prefixListName>
|
||||||
|
<state>{{ managed_prefix_list.state }}</state>
|
||||||
|
<tagSet>
|
||||||
|
{% for tag in managed_prefix_list.get_tags() %}
|
||||||
|
<item>
|
||||||
|
<key>{{ tag.key }}</key>
|
||||||
|
<value>{{ tag.value }}</value>
|
||||||
|
</item>
|
||||||
|
{% endfor %}
|
||||||
|
</tagSet>
|
||||||
|
<version>{{ managed_prefix_list.version }}</version>
|
||||||
|
</prefixList>
|
||||||
|
</CreateManagedPrefixListResponse>"""
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIBE_MANAGED_PREFIX_LIST = """<DescribeManagedPrefixListsResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
|
||||||
|
<requestId>934214d3-4501-4797-b896-13e8fc7ec256</requestId>
|
||||||
|
<prefixListSet>
|
||||||
|
{% for managed_prefix_list in managed_prefix_lists %}
|
||||||
|
<item>
|
||||||
|
<addressFamily>{{ managed_prefix_list.address_family }}</addressFamily>
|
||||||
|
{% if managed_prefix_list.max_entries %}
|
||||||
|
<maxEntries>{{ managed_prefix_list.max_entries }}</maxEntries>
|
||||||
|
{% endif %}
|
||||||
|
<ownerId>{{ managed_prefix_list.owner_id }}</ownerId>
|
||||||
|
<prefixListArn>{{ managed_prefix_list.prefix_list_arn }}</prefixListArn>
|
||||||
|
<prefixListId>{{ managed_prefix_list.id }}</prefixListId>
|
||||||
|
<prefixListName>{{ managed_prefix_list.prefix_list_name }}</prefixListName>
|
||||||
|
<state>{{ managed_prefix_list.state }}</state>
|
||||||
|
<tagSet>
|
||||||
|
{% for tag in managed_prefix_list.get_tags() %}
|
||||||
|
<item>
|
||||||
|
<key>{{ tag.key }}</key>
|
||||||
|
<value>{{ tag.value }}</value>
|
||||||
|
</item>
|
||||||
|
{% endfor %}
|
||||||
|
</tagSet>
|
||||||
|
{% if managed_prefix_list.version %}
|
||||||
|
<version>{{ managed_prefix_list.version }}</version>
|
||||||
|
{% endif %}
|
||||||
|
</item>
|
||||||
|
{% endfor %}
|
||||||
|
</prefixListSet>
|
||||||
|
</DescribeManagedPrefixListsResponse>
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
GET_MANAGED_PREFIX_LIST_ENTRIES = """<GetManagedPrefixListEntriesResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
|
||||||
|
<requestId>39a3c79f-846f-4382-a592-example</requestId>
|
||||||
|
<entrySet>
|
||||||
|
{% for entry in entries %}
|
||||||
|
<item>
|
||||||
|
<cidr>{{ entry.Cidr or ''}}</cidr>
|
||||||
|
<description>{{ entry.Description or ''}}</description>
|
||||||
|
</item>
|
||||||
|
{% endfor %}
|
||||||
|
</entrySet>
|
||||||
|
</GetManagedPrefixListEntriesResponse>
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
DELETE_MANAGED_PREFIX_LIST = """<DeleteManagedPrefixListResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
|
||||||
|
<requestId>39a3c79f-846f-4382-a592-example</requestId>
|
||||||
|
<prefixList>
|
||||||
|
<addressFamily>{{ managed_prefix_list.address_family }}</addressFamily>
|
||||||
|
<maxEntries>{{ managed_prefix_list.max_entries or '' }}</maxEntries>
|
||||||
|
<ownerId>{{ managed_prefix_list.owner_id }}</ownerId>
|
||||||
|
<prefixListArn>{{ managed_prefix_list.prefix_list_arn }}</prefixListArn>
|
||||||
|
<prefixListId>{{ managed_prefix_list.id }}</prefixListId>
|
||||||
|
<prefixListName>{{ managed_prefix_list.prefix_list_name }}</prefixListName>
|
||||||
|
<state>{{ managed_prefix_list.state }}</state>
|
||||||
|
<tagSet>
|
||||||
|
{% for tag in managed_prefix_list.get_tags() %}
|
||||||
|
<item>
|
||||||
|
<key>{{ tag.key }}</key>
|
||||||
|
<value>{{ tag.value }}</value>
|
||||||
|
</item>
|
||||||
|
{% endfor %}
|
||||||
|
</tagSet>
|
||||||
|
<version>{{ managed_prefix_list.version or ''}}</version>
|
||||||
|
</prefixList>
|
||||||
|
</DeleteManagedPrefixListResponse>
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIBE_PREFIX_LIST = """<DescribePrefixListsResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
|
||||||
|
<requestId>8a2ec0e2-6918-4270-ae45-58e61971e97d</requestId>
|
||||||
|
<prefixListSet>
|
||||||
|
{% for pl in managed_pls %}
|
||||||
|
{% if pl.prefix_list_name.startswith("com.amazonaws.") %}
|
||||||
|
<item>
|
||||||
|
<cidrSet>
|
||||||
|
{% for entry in pl.entries.1 %}
|
||||||
|
<item>{{ entry.Cidr }}</item>
|
||||||
|
{% endfor %}
|
||||||
|
</cidrSet>
|
||||||
|
<prefixListId>{{ pl.id }}</prefixListId>
|
||||||
|
<prefixListName>{{ pl.prefix_list_name }}</prefixListName>
|
||||||
|
</item>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</prefixListSet>
|
||||||
|
</DescribePrefixListsResponse>
|
||||||
|
"""
|
||||||
|
|
||||||
|
MODIFY_PREFIX_LIST = """<ModifyManagedPrefixListResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
|
||||||
|
<requestId>602f3752-c348-4b14-81e2-example</requestId>
|
||||||
|
<prefixList>
|
||||||
|
<addressFamily>{{ managed_prefix_list.address_family }}</addressFamily>
|
||||||
|
<maxEntries>{{ managed_prefix_list.max_entries or '' }}</maxEntries>
|
||||||
|
<ownerId>{{ managed_prefix_list.owner_id }}</ownerId>
|
||||||
|
<prefixListArn>{{ managed_prefix_list.prefix_list_arn }}</prefixListArn>
|
||||||
|
<prefixListId>{{ managed_prefix_list.id }}</prefixListId>
|
||||||
|
<prefixListName>{{ managed_prefix_list.prefix_list_name }}</prefixListName>
|
||||||
|
<state>{{ managed_prefix_list.state }}</state>
|
||||||
|
<tagSet>
|
||||||
|
{% for tag in managed_prefix_list.get_tags() %}
|
||||||
|
<item>
|
||||||
|
<key>{{ tag.key }}</key>
|
||||||
|
<value>{{ tag.value }}</value>
|
||||||
|
</item>
|
||||||
|
{% endfor %}
|
||||||
|
</tagSet>
|
||||||
|
<version>{{ managed_prefix_list.version or ''}}</version>
|
||||||
|
</prefixList>
|
||||||
|
</ModifyManagedPrefixListResponse>
|
||||||
|
"""
|
||||||
|
@ -41,6 +41,7 @@ EC2_RESOURCE_TO_PREFIX = {
|
|||||||
"volume": "vol",
|
"volume": "vol",
|
||||||
"vpc": "vpc",
|
"vpc": "vpc",
|
||||||
"vpc-endpoint": "vpce",
|
"vpc-endpoint": "vpce",
|
||||||
|
"managed-prefix-list": "pl",
|
||||||
"vpc-cidr-association-id": "vpc-cidr-assoc",
|
"vpc-cidr-association-id": "vpc-cidr-assoc",
|
||||||
"vpc-elastic-ip": "eipalloc",
|
"vpc-elastic-ip": "eipalloc",
|
||||||
"vpc-elastic-ip-association": "eipassoc",
|
"vpc-elastic-ip-association": "eipassoc",
|
||||||
@ -230,6 +231,10 @@ def generate_route_id(route_table_id, cidr_block, ipv6_cidr_block=None):
|
|||||||
return "%s~%s" % (route_table_id, cidr_block)
|
return "%s~%s" % (route_table_id, cidr_block)
|
||||||
|
|
||||||
|
|
||||||
|
def random_managed_prefix_list_id():
|
||||||
|
return random_id(prefix=EC2_RESOURCE_TO_PREFIX["managed-prefix-list"], size=8)
|
||||||
|
|
||||||
|
|
||||||
def create_dns_entries(service_name, vpc_endpoint_id):
|
def create_dns_entries(service_name, vpc_endpoint_id):
|
||||||
dns_entries = {}
|
dns_entries = {}
|
||||||
dns_entries["dns_name"] = "{}-{}.{}".format(
|
dns_entries["dns_name"] = "{}-{}.{}".format(
|
||||||
|
@ -82,4 +82,5 @@ TestAccAWSRouteTable_vgwRoutePropagation
|
|||||||
TestAccAWSRouteTable_RequireRouteTarget
|
TestAccAWSRouteTable_RequireRouteTarget
|
||||||
TestAccAWSRouteTable_disappears_SubnetAssociation
|
TestAccAWSRouteTable_disappears_SubnetAssociation
|
||||||
TestAccAWSRouteTable_disappears
|
TestAccAWSRouteTable_disappears
|
||||||
TestAccAWSRouteTable_basic
|
TestAccAWSRouteTable_basic
|
||||||
|
TestAccAwsEc2ManagedPrefixList
|
Loading…
Reference in New Issue
Block a user