Merge pull request #251 from joekiller/cfn_eni
enable cloudformation of NetworkInterface
This commit is contained in:
commit
41282c9e48
@ -18,6 +18,7 @@ MODEL_MAP = {
|
|||||||
"AWS::EC2::EIP": ec2_models.ElasticAddress,
|
"AWS::EC2::EIP": ec2_models.ElasticAddress,
|
||||||
"AWS::EC2::Instance": ec2_models.Instance,
|
"AWS::EC2::Instance": ec2_models.Instance,
|
||||||
"AWS::EC2::InternetGateway": ec2_models.InternetGateway,
|
"AWS::EC2::InternetGateway": ec2_models.InternetGateway,
|
||||||
|
"AWS::EC2::NetworkInterface": ec2_models.NetworkInterface,
|
||||||
"AWS::EC2::Route": ec2_models.Route,
|
"AWS::EC2::Route": ec2_models.Route,
|
||||||
"AWS::EC2::RouteTable": ec2_models.RouteTable,
|
"AWS::EC2::RouteTable": ec2_models.RouteTable,
|
||||||
"AWS::EC2::SecurityGroup": ec2_models.SecurityGroup,
|
"AWS::EC2::SecurityGroup": ec2_models.SecurityGroup,
|
||||||
|
@ -203,6 +203,10 @@ class NetworkInterface(object):
|
|||||||
raise NotImplementedError('"Fn::GetAtt" : [ "{0}" , "SecondaryPrivateIpAddresses" ]"')
|
raise NotImplementedError('"Fn::GetAtt" : [ "{0}" , "SecondaryPrivateIpAddresses" ]"')
|
||||||
raise UnformattedGetAttTemplateException()
|
raise UnformattedGetAttTemplateException()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def physical_resource_id(self):
|
||||||
|
return self.id
|
||||||
|
|
||||||
|
|
||||||
class NetworkInterfaceBackend(object):
|
class NetworkInterfaceBackend(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
34
tests/test_cloudformation/fixtures/vpc_eni.py
Normal file
34
tests/test_cloudformation/fixtures/vpc_eni.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
template = {
|
||||||
|
"AWSTemplateFormatVersion": "2010-09-09",
|
||||||
|
"Description": "VPC ENI Test CloudFormation",
|
||||||
|
"Resources": {
|
||||||
|
"ENI": {
|
||||||
|
"Type": "AWS::EC2::NetworkInterface",
|
||||||
|
"Properties": {
|
||||||
|
"SubnetId": {"Ref": "Subnet"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Subnet": {
|
||||||
|
"Type": "AWS::EC2::Subnet",
|
||||||
|
"Properties": {
|
||||||
|
"AvailabilityZone": "us-east-1a",
|
||||||
|
"VpcId": {"Ref": "VPC"},
|
||||||
|
"CidrBlock": "10.0.0.0/24"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VPC": {
|
||||||
|
"Type": "AWS::EC2::VPC",
|
||||||
|
"Properties": {
|
||||||
|
"CidrBlock": "10.0.0.0/16"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Outputs": {
|
||||||
|
"NinjaENI": {
|
||||||
|
"Description": "Elastic IP mapping to Auto-Scaling Group",
|
||||||
|
"Value": {"Ref": "ENI"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,8 +7,10 @@ import boto
|
|||||||
from boto.exception import EC2ResponseError
|
from boto.exception import EC2ResponseError
|
||||||
import sure # noqa
|
import sure # noqa
|
||||||
|
|
||||||
from moto import mock_ec2
|
from moto import mock_ec2, mock_cloudformation
|
||||||
from tests.helpers import requires_boto_gte
|
from tests.helpers import requires_boto_gte
|
||||||
|
from tests.test_cloudformation.fixtures import vpc_eni
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
@mock_ec2
|
@mock_ec2
|
||||||
@ -143,3 +145,21 @@ def test_elastic_network_interfaces_filtering():
|
|||||||
# Unsupported filter
|
# Unsupported filter
|
||||||
conn.get_all_network_interfaces.when.called_with(filters={'not-implemented-filter': 'foobar'}).should.throw(NotImplementedError)
|
conn.get_all_network_interfaces.when.called_with(filters={'not-implemented-filter': 'foobar'}).should.throw(NotImplementedError)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_ec2
|
||||||
|
@mock_cloudformation
|
||||||
|
def test_elastic_network_interfaces_cloudformation():
|
||||||
|
template = vpc_eni.template
|
||||||
|
template_json = json.dumps(template)
|
||||||
|
conn = boto.connect_cloudformation()
|
||||||
|
conn.create_stack(
|
||||||
|
"test_stack",
|
||||||
|
template_body=template_json,
|
||||||
|
)
|
||||||
|
ec2_conn = boto.connect_ec2()
|
||||||
|
eni = ec2_conn.get_all_network_interfaces()[0]
|
||||||
|
|
||||||
|
stack = conn.describe_stacks()[0]
|
||||||
|
resources = stack.describe_resources()
|
||||||
|
cfn_eni = [resource for resource in resources if resource.resource_type == 'AWS::EC2::NetworkInterface'][0]
|
||||||
|
cfn_eni.physical_resource_id.should.equal(eni.id)
|
||||||
|
Loading…
Reference in New Issue
Block a user