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:
parent
171130fe7b
commit
f57a77451c
@ -3969,10 +3969,12 @@ class RouteTableBackend(object):
|
|||||||
self.route_tables = {}
|
self.route_tables = {}
|
||||||
super(RouteTableBackend, self).__init__()
|
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()
|
route_table_id = random_route_table_id()
|
||||||
vpc = self.get_vpc(vpc_id) # Validate VPC exists
|
vpc = self.get_vpc(vpc_id) # Validate VPC exists
|
||||||
route_table = RouteTable(self, route_table_id, vpc_id, main=main)
|
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
|
self.route_tables[route_table_id] = route_table
|
||||||
|
|
||||||
# AWS creates a default local route.
|
# AWS creates a default local route.
|
||||||
@ -4300,8 +4302,10 @@ class InternetGatewayBackend(object):
|
|||||||
self.internet_gateways = {}
|
self.internet_gateways = {}
|
||||||
super(InternetGatewayBackend, self).__init__()
|
super(InternetGatewayBackend, self).__init__()
|
||||||
|
|
||||||
def create_internet_gateway(self):
|
def create_internet_gateway(self, tags=[]):
|
||||||
igw = InternetGateway(self)
|
igw = InternetGateway(self)
|
||||||
|
for tag in tags:
|
||||||
|
igw.add_tag(tag.get("Key"), tag.get("Value"))
|
||||||
self.internet_gateways[igw.id] = igw
|
self.internet_gateways[igw.id] = igw
|
||||||
return igw
|
return igw
|
||||||
|
|
||||||
@ -5299,10 +5303,12 @@ class NetworkAclBackend(object):
|
|||||||
raise InvalidNetworkAclIdError(network_acl_id)
|
raise InvalidNetworkAclIdError(network_acl_id)
|
||||||
return network_acl
|
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()
|
network_acl_id = random_network_acl_id()
|
||||||
self.get_vpc(vpc_id)
|
self.get_vpc(vpc_id)
|
||||||
network_acl = NetworkAcl(self, network_acl_id, vpc_id, default)
|
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
|
self.network_acls[network_acl_id] = network_acl
|
||||||
if default:
|
if default:
|
||||||
self.add_default_entries(network_acl_id)
|
self.add_default_entries(network_acl_id)
|
||||||
|
@ -14,7 +14,10 @@ class InternetGateways(BaseResponse):
|
|||||||
|
|
||||||
def create_internet_gateway(self):
|
def create_internet_gateway(self):
|
||||||
if self.is_not_dryrun("CreateInternetGateway"):
|
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)
|
template = self.response_template(CREATE_INTERNET_GATEWAY_RESPONSE)
|
||||||
return template.render(internet_gateway=igw)
|
return template.render(internet_gateway=igw)
|
||||||
|
|
||||||
|
@ -6,7 +6,10 @@ from moto.ec2.utils import filters_from_querystring
|
|||||||
class NetworkACLs(BaseResponse):
|
class NetworkACLs(BaseResponse):
|
||||||
def create_network_acl(self):
|
def create_network_acl(self):
|
||||||
vpc_id = self._get_param("VpcId")
|
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)
|
template = self.response_template(CREATE_NETWORK_ACL_RESPONSE)
|
||||||
return template.render(network_acl=network_acl)
|
return template.render(network_acl=network_acl)
|
||||||
|
|
||||||
@ -161,7 +164,7 @@ DESCRIBE_NETWORK_ACL_RESPONSE = """
|
|||||||
<item>
|
<item>
|
||||||
<resourceId>{{ tag.resource_id }}</resourceId>
|
<resourceId>{{ tag.resource_id }}</resourceId>
|
||||||
<resourceType>{{ tag.resource_type }}</resourceType>
|
<resourceType>{{ tag.resource_type }}</resourceType>
|
||||||
<key>{{ tag.key }}</key>
|
<key>{{ tag.key}}</key>
|
||||||
<value>{{ tag.value }}</value>
|
<value>{{ tag.value }}</value>
|
||||||
</item>
|
</item>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -39,7 +39,10 @@ class RouteTables(BaseResponse):
|
|||||||
|
|
||||||
def create_route_table(self):
|
def create_route_table(self):
|
||||||
vpc_id = self._get_param("VpcId")
|
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)
|
template = self.response_template(CREATE_ROUTE_TABLE_RESPONSE)
|
||||||
return template.render(route_table=route_table)
|
return template.render(route_table=route_table)
|
||||||
|
|
||||||
|
@ -7,11 +7,13 @@ from nose.tools import assert_raises
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
import boto
|
import boto
|
||||||
|
import boto3
|
||||||
|
|
||||||
from boto.exception import EC2ResponseError
|
from boto.exception import EC2ResponseError
|
||||||
|
|
||||||
import sure # noqa
|
import sure # noqa
|
||||||
|
|
||||||
from moto import mock_ec2_deprecated
|
from moto import mock_ec2_deprecated, mock_ec2
|
||||||
|
|
||||||
|
|
||||||
VPC_CIDR = "10.0.0.0/16"
|
VPC_CIDR = "10.0.0.0/16"
|
||||||
@ -269,3 +271,19 @@ def test_igw_filter_by_attachment_state():
|
|||||||
result = conn.get_all_internet_gateways(filters={"attachment.state": "available"})
|
result = conn.get_all_internet_gateways(filters={"attachment.state": "available"})
|
||||||
result.should.have.length_of(1)
|
result.should.have.length_of(1)
|
||||||
result[0].id.should.equal(igw1.id)
|
result[0].id.should.equal(igw1.id)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_ec2
|
||||||
|
def test_create_internet_gateway_with_tags():
|
||||||
|
ec2 = boto3.resource("ec2", region_name="eu-central-1")
|
||||||
|
|
||||||
|
igw = ec2.create_internet_gateway(
|
||||||
|
TagSpecifications=[
|
||||||
|
{
|
||||||
|
"ResourceType": "internet-gateway",
|
||||||
|
"Tags": [{"Key": "test", "Value": "TestRouteTable"}],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
)
|
||||||
|
igw.tags.should.have.length_of(1)
|
||||||
|
igw.tags.should.equal([{"Key": "test", "Value": "TestRouteTable"}])
|
||||||
|
@ -304,3 +304,26 @@ def test_describe_network_acls():
|
|||||||
"An error occurred (InvalidRouteTableID.NotFound) when calling the "
|
"An error occurred (InvalidRouteTableID.NotFound) when calling the "
|
||||||
"DescribeNetworkAcls operation: The routeTable ID '1' does not exist"
|
"DescribeNetworkAcls operation: The routeTable ID '1' does not exist"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_ec2
|
||||||
|
def test_create_network_acl_with_tags():
|
||||||
|
conn = boto3.client("ec2", region_name="us-west-2")
|
||||||
|
|
||||||
|
vpc = conn.create_vpc(CidrBlock="10.0.0.0/16")
|
||||||
|
vpc_id = vpc["Vpc"]["VpcId"]
|
||||||
|
|
||||||
|
network_acl = conn.create_network_acl(
|
||||||
|
VpcId=vpc_id,
|
||||||
|
TagSpecifications=[
|
||||||
|
{
|
||||||
|
"ResourceType": "network-acl",
|
||||||
|
"Tags": [{"Key": "test", "Value": "TestTags"}],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
(len(network_acl.get("NetworkAcl").get("Tags"))).should.equal(1)
|
||||||
|
network_acl.get("NetworkAcl").get("Tags").should.equal(
|
||||||
|
[{"Key": "test", "Value": "TestTags"}]
|
||||||
|
)
|
||||||
|
@ -715,3 +715,22 @@ def test_create_vpc_end_point():
|
|||||||
)
|
)
|
||||||
vpc_end_point["VpcEndpoint"]["VpcId"].should.equal(vpc["Vpc"]["VpcId"])
|
vpc_end_point["VpcEndpoint"]["VpcId"].should.equal(vpc["Vpc"]["VpcId"])
|
||||||
len(vpc_end_point["VpcEndpoint"]["DnsEntries"]).should.be.greater_than(0)
|
len(vpc_end_point["VpcEndpoint"]["DnsEntries"]).should.be.greater_than(0)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_ec2
|
||||||
|
def test_create_route_tables_with_tags():
|
||||||
|
ec2 = boto3.resource("ec2", region_name="eu-central-1")
|
||||||
|
|
||||||
|
vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
|
||||||
|
|
||||||
|
route_table = ec2.create_route_table(
|
||||||
|
VpcId=vpc.id,
|
||||||
|
TagSpecifications=[
|
||||||
|
{
|
||||||
|
"ResourceType": "route-table",
|
||||||
|
"Tags": [{"Key": "test", "Value": "TestRouteTable"}],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
route_table.tags.should.have.length_of(1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user