Fix:Added Tags for Network-ACL,RouteTable,InternetGateway (#3430)

* Fix:Added Tags for Network-ACL,RouteTable,InternetGateway

* Modified internet-gateway tags

* Lint

Co-authored-by: usmankb <usman@krazybee.com>
This commit is contained in:
usmangani1 2020-11-02 19:00:02 +05:30 committed by GitHub
commit f57a77451c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 83 additions and 8 deletions

View file

@ -3969,10 +3969,12 @@ class RouteTableBackend(object):
self.route_tables = {}
super(RouteTableBackend, self).__init__()
def create_route_table(self, vpc_id, main=False):
def create_route_table(self, vpc_id, tags=[], main=False):
route_table_id = random_route_table_id()
vpc = self.get_vpc(vpc_id) # Validate VPC exists
route_table = RouteTable(self, route_table_id, vpc_id, main=main)
for tag in tags:
route_table.add_tag(tag.get("Key"), tag.get("Value"))
self.route_tables[route_table_id] = route_table
# AWS creates a default local route.
@ -4300,8 +4302,10 @@ class InternetGatewayBackend(object):
self.internet_gateways = {}
super(InternetGatewayBackend, self).__init__()
def create_internet_gateway(self):
def create_internet_gateway(self, tags=[]):
igw = InternetGateway(self)
for tag in tags:
igw.add_tag(tag.get("Key"), tag.get("Value"))
self.internet_gateways[igw.id] = igw
return igw
@ -5299,10 +5303,12 @@ class NetworkAclBackend(object):
raise InvalidNetworkAclIdError(network_acl_id)
return network_acl
def create_network_acl(self, vpc_id, default=False):
def create_network_acl(self, vpc_id, tags=[], default=False):
network_acl_id = random_network_acl_id()
self.get_vpc(vpc_id)
network_acl = NetworkAcl(self, network_acl_id, vpc_id, default)
for tag in tags:
network_acl.add_tag(tag.get("Key"), tag.get("Value"))
self.network_acls[network_acl_id] = network_acl
if default:
self.add_default_entries(network_acl_id)

View file

@ -14,7 +14,10 @@ class InternetGateways(BaseResponse):
def create_internet_gateway(self):
if self.is_not_dryrun("CreateInternetGateway"):
igw = self.ec2_backend.create_internet_gateway()
tags = self._get_multi_param("TagSpecification")
if tags:
tags = tags[0].get("Tag")
igw = self.ec2_backend.create_internet_gateway(tags=tags)
template = self.response_template(CREATE_INTERNET_GATEWAY_RESPONSE)
return template.render(internet_gateway=igw)

View file

@ -6,7 +6,10 @@ 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)
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)
@ -161,7 +164,7 @@ DESCRIBE_NETWORK_ACL_RESPONSE = """
<item>
<resourceId>{{ tag.resource_id }}</resourceId>
<resourceType>{{ tag.resource_type }}</resourceType>
<key>{{ tag.key }}</key>
<key>{{ tag.key}}</key>
<value>{{ tag.value }}</value>
</item>
{% endfor %}

View file

@ -39,7 +39,10 @@ class RouteTables(BaseResponse):
def create_route_table(self):
vpc_id = self._get_param("VpcId")
route_table = self.ec2_backend.create_route_table(vpc_id)
tags = self._get_multi_param("TagSpecification")
if tags:
tags = tags[0].get("Tag")
route_table = self.ec2_backend.create_route_table(vpc_id, tags)
template = self.response_template(CREATE_ROUTE_TABLE_RESPONSE)
return template.render(route_table=route_table)