from ._base_response import EC2BaseResponse
class NetworkACLs(EC2BaseResponse):
def create_network_acl(self) -> str:
vpc_id = self._get_param("VpcId")
tags = self._get_multi_param("TagSpecification")
if tags:
tags = tags[0].get("Tag")
network_acl = self.ec2_backend.create_network_acl(vpc_id, tags=tags)
template = self.response_template(CREATE_NETWORK_ACL_RESPONSE)
return template.render(network_acl=network_acl)
def create_network_acl_entry(self) -> str:
network_acl_id = self._get_param("NetworkAclId")
rule_number = self._get_param("RuleNumber")
protocol = self._get_param("Protocol")
rule_action = self._get_param("RuleAction")
egress = self._get_param("Egress")
cidr_block = self._get_param("CidrBlock")
icmp_code = self._get_param("Icmp.Code")
icmp_type = self._get_param("Icmp.Type")
port_range_from = self._get_param("PortRange.From")
port_range_to = self._get_param("PortRange.To")
network_acl_entry = self.ec2_backend.create_network_acl_entry(
network_acl_id,
rule_number,
protocol,
rule_action,
egress,
cidr_block,
icmp_code,
icmp_type,
port_range_from,
port_range_to,
)
template = self.response_template(CREATE_NETWORK_ACL_ENTRY_RESPONSE)
return template.render(network_acl_entry=network_acl_entry)
def delete_network_acl(self) -> str:
network_acl_id = self._get_param("NetworkAclId")
self.ec2_backend.delete_network_acl(network_acl_id)
template = self.response_template(DELETE_NETWORK_ACL_ASSOCIATION)
return template.render()
def delete_network_acl_entry(self) -> str:
network_acl_id = self._get_param("NetworkAclId")
rule_number = self._get_param("RuleNumber")
egress = self._get_param("Egress")
self.ec2_backend.delete_network_acl_entry(network_acl_id, rule_number, egress)
template = self.response_template(DELETE_NETWORK_ACL_ENTRY_RESPONSE)
return template.render()
def replace_network_acl_entry(self) -> str:
network_acl_id = self._get_param("NetworkAclId")
rule_number = self._get_param("RuleNumber")
protocol = self._get_param("Protocol")
rule_action = self._get_param("RuleAction")
egress = self._get_param("Egress")
cidr_block = self._get_param("CidrBlock")
icmp_code = self._get_param("Icmp.Code")
icmp_type = self._get_param("Icmp.Type")
port_range_from = self._get_param("PortRange.From")
port_range_to = self._get_param("PortRange.To")
self.ec2_backend.replace_network_acl_entry(
network_acl_id,
rule_number,
protocol,
rule_action,
egress,
cidr_block,
icmp_code,
icmp_type,
port_range_from,
port_range_to,
)
template = self.response_template(REPLACE_NETWORK_ACL_ENTRY_RESPONSE)
return template.render()
def describe_network_acls(self) -> str:
network_acl_ids = self._get_multi_param("NetworkAclId")
filters = self._filters_from_querystring()
network_acls = self.ec2_backend.describe_network_acls(network_acl_ids, filters)
template = self.response_template(DESCRIBE_NETWORK_ACL_RESPONSE)
return template.render(network_acls=network_acls)
def replace_network_acl_association(self) -> str:
association_id = self._get_param("AssociationId")
network_acl_id = self._get_param("NetworkAclId")
association = self.ec2_backend.replace_network_acl_association(
association_id, network_acl_id
)
template = self.response_template(REPLACE_NETWORK_ACL_ASSOCIATION)
return template.render(association=association)
CREATE_NETWORK_ACL_RESPONSE = """
59dbff89-35bd-4eac-99ed-be587EXAMPLE
{{ network_acl.id }}
{{ network_acl.vpc_id }}
false
{% for tag in network_acl.get_tags() %}
-
{{ tag.resource_id }}
{{ tag.resource_type }}
{{ tag.key }}
{{ tag.value }}
{% endfor %}
"""
DESCRIBE_NETWORK_ACL_RESPONSE = """
59dbff89-35bd-4eac-99ed-be587EXAMPLE
{% for network_acl in network_acls %}
-
{{ network_acl.id }}
{{ network_acl.vpc_id }}
{{ network_acl.owner_id }}
{{ network_acl.default }}
{% for entry in network_acl.network_acl_entries %}
-
{{ entry.rule_number }}
{{ entry.protocol }}
{{ entry.rule_action }}
{{ entry.egress.lower() }}
{{ entry.cidr_block }}
{% if entry.port_range_from or entry.port_range_to %}
{{ entry.port_range_from }}
{{ entry.port_range_to }}
{% endif %}
{% endfor %}
{% for association in network_acl.associations.values() %}
-
{{ association.id }}
{{ association.network_acl_id }}
{{ association.subnet_id }}
{% endfor %}
{% for tag in network_acl.get_tags() %}
-
{{ tag.resource_id }}
{{ tag.resource_type }}
{{ tag.key}}
{{ tag.value }}
{% endfor %}
{% endfor %}
"""
CREATE_NETWORK_ACL_ENTRY_RESPONSE = """
59dbff89-35bd-4eac-99ed-be587EXAMPLE
true
"""
REPLACE_NETWORK_ACL_ENTRY_RESPONSE = """
59dbff89-35bd-4eac-99ed-be587EXAMPLE
true
"""
REPLACE_NETWORK_ACL_ASSOCIATION = """
59dbff89-35bd-4eac-99ed-be587EXAMPLE
{{ association.new_association_id }}
"""
DELETE_NETWORK_ACL_ASSOCIATION = """
59dbff89-35bd-4eac-99ed-be587EXAMPLE
true
"""
DELETE_NETWORK_ACL_ENTRY_RESPONSE = """
59dbff89-35bd-4eac-99ed-be587EXAMPLE
true
"""