add vpc commands
This commit is contained in:
parent
0d51349662
commit
584f1f01b6
4 changed files with 102 additions and 6 deletions
|
|
@ -10,6 +10,7 @@ from .utils import (
|
|||
random_security_group_id,
|
||||
random_snapshot_id,
|
||||
random_volume_id,
|
||||
random_vpc_id,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -390,7 +391,33 @@ class EBSBackend(object):
|
|||
return False
|
||||
|
||||
|
||||
class EC2Backend(BaseBackend, InstanceBackend, TagBackend, AmiBackend, RegionsAndZonesBackend, SecurityGroupBackend, EBSBackend):
|
||||
class VPC(object):
|
||||
def __init__(self, vpc_id, cidr_block):
|
||||
self.id = vpc_id
|
||||
self.cidr_block = cidr_block
|
||||
|
||||
|
||||
class VPCBackend(object):
|
||||
def __init__(self):
|
||||
self.vpcs = {}
|
||||
super(VPCBackend, self).__init__()
|
||||
|
||||
def create_vpc(self, cidr_block):
|
||||
vpc_id = random_vpc_id()
|
||||
vpc = VPC(vpc_id, cidr_block)
|
||||
self.vpcs[vpc_id] = vpc
|
||||
return vpc
|
||||
|
||||
def get_all_vpcs(self):
|
||||
return self.vpcs.values()
|
||||
|
||||
def delete_vpc(self, vpc_id):
|
||||
return self.vpcs.pop(vpc_id, None)
|
||||
|
||||
|
||||
class EC2Backend(BaseBackend, InstanceBackend, TagBackend, AmiBackend,
|
||||
RegionsAndZonesBackend, SecurityGroupBackend, EBSBackend,
|
||||
VPCBackend):
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,66 @@
|
|||
from jinja2 import Template
|
||||
|
||||
from moto.ec2.models import ec2_backend
|
||||
from moto.ec2.utils import resource_ids_from_querystring
|
||||
|
||||
|
||||
class VPCs(object):
|
||||
def __init__(self, querystring):
|
||||
self.querystring = querystring
|
||||
|
||||
def create_vpc(self):
|
||||
raise NotImplementedError('VPCs(AmazonVPC).create_vpc is not yet implemented')
|
||||
cidr_block = self.querystring.get('CidrBlock')[0]
|
||||
vpc = ec2_backend.create_vpc(cidr_block)
|
||||
template = Template(CREATE_VPC_RESPONSE)
|
||||
return template.render(vpc=vpc)
|
||||
|
||||
def delete_vpc(self):
|
||||
raise NotImplementedError('VPCs(AmazonVPC).delete_vpc is not yet implemented')
|
||||
vpc_id = self.querystring.get('VpcId')[0]
|
||||
vpc = ec2_backend.delete_vpc(vpc_id)
|
||||
if vpc:
|
||||
template = Template(DELETE_VPC_RESPONSE)
|
||||
return template.render(vpc=vpc)
|
||||
else:
|
||||
return "", dict(status=404)
|
||||
|
||||
def describe_vpcs(self):
|
||||
raise NotImplementedError('VPCs(AmazonVPC).describe_vpcs is not yet implemented')
|
||||
vpcs = ec2_backend.get_all_vpcs()
|
||||
template = Template(DESCRIBE_VPCS_RESPONSE)
|
||||
return template.render(vpcs=vpcs)
|
||||
|
||||
|
||||
CREATE_VPC_RESPONSE = """
|
||||
<CreateVpcResponse xmlns="http://ec2.amazonaws.com/doc/2012-12-01/">
|
||||
<requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>
|
||||
<vpc>
|
||||
<vpcId>{{ vpc.id }}</vpcId>
|
||||
<state>pending</state>
|
||||
<cidrBlock>{{ vpc.cidr_block }}</cidrBlock>
|
||||
<dhcpOptionsId>dopt-1a2b3c4d2</dhcpOptionsId>
|
||||
<instanceTenancy>default</instanceTenancy>
|
||||
<tagSet/>
|
||||
</vpc>
|
||||
</CreateVpcResponse>"""
|
||||
|
||||
DESCRIBE_VPCS_RESPONSE = """
|
||||
<DescribeVpcsResponse xmlns="http://ec2.amazonaws.com/doc/2012-12-01/">
|
||||
<requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>
|
||||
<vpcSet>
|
||||
{% for vpc in vpcs %}
|
||||
<item>
|
||||
<vpcId>{{ vpc.id }}</vpcId>
|
||||
<state>available</state>
|
||||
<cidrBlock>{{ vpc.cidr_block }}</cidrBlock>
|
||||
<dhcpOptionsId>dopt-7a8b9c2d</dhcpOptionsId>
|
||||
<instanceTenancy>default</instanceTenancy>
|
||||
<tagSet/>
|
||||
</item>
|
||||
{% endfor %}
|
||||
</vpcSet>
|
||||
</DescribeVpcsResponse>"""
|
||||
|
||||
DELETE_VPC_RESPONSE = """
|
||||
<DeleteVpcResponse xmlns="http://ec2.amazonaws.com/doc/2012-12-01/">
|
||||
<requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>
|
||||
<return>true</return>
|
||||
</DeleteVpcResponse>
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -29,6 +29,10 @@ def random_volume_id():
|
|||
return random_id(prefix='vol')
|
||||
|
||||
|
||||
def random_vpc_id():
|
||||
return random_id(prefix='vpc')
|
||||
|
||||
|
||||
def random_snapshot_id():
|
||||
return random_id(prefix='snap')
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue