from __future__ import unicode_literals
from moto.core.responses import BaseResponse
from moto.ec2.utils import filters_from_querystring
class NetworkACLs(BaseResponse):
def create_network_acl(self):
vpc_id = self._get_param('VpcId')
network_acl = self.ec2_backend.create_network_acl(vpc_id)
template = self.response_template(CREATE_NETWORK_ACL_RESPONSE)
return template.render(network_acl=network_acl)
def create_network_acl_entry(self):
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):
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):
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):
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):
network_acl_ids = self._get_multi_param('NetworkAclId')
filters = filters_from_querystring(self.querystring)
network_acls = self.ec2_backend.get_all_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):
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.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
"""