You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by se...@apache.org on 2015/05/05 15:25:57 UTC
[04/50] cloudstack-ec2stack git commit: Begin addition of VPC support
Begin addition of VPC support
Project: http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/commit/2260ea07
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/tree/2260ea07
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/diff/2260ea07
Branch: refs/heads/master
Commit: 2260ea07afc5d5c3cacff7c749b47aa2f8b603f0
Parents: 252e43e
Author: BroganD1993 <da...@hotmail.com>
Authored: Tue Jul 15 19:43:55 2014 +0100
Committer: BroganD1993 <da...@hotmail.com>
Committed: Tue Jul 15 19:43:55 2014 +0100
----------------------------------------------------------------------
ec2stack/errors.py | 12 +++
ec2stack/providers/cloudstack/keypairs.py | 4 +-
ec2stack/providers/cloudstack/volumes.py | 2 +-
ec2stack/providers/cloudstack/vpc.py | 129 +++++++++++++++++++++++++
4 files changed, 144 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/2260ea07/ec2stack/errors.py
----------------------------------------------------------------------
diff --git a/ec2stack/errors.py b/ec2stack/errors.py
index bf5040a..e7841eb 100644
--- a/ec2stack/errors.py
+++ b/ec2stack/errors.py
@@ -162,6 +162,18 @@ def invalid_resource_id():
'The specified ID for the resource you are trying to tag is not valid.'
)
+def invalid_vpc_range():
+ """
+ Invalid cidr block.
+
+ @raise Ec2stackError: Defining a bad request and message.
+ """
+ raise Ec2stackError(
+ '400',
+ 'InvalidVpcRange',
+ 'The specified CIDR block range is not valid.'
+ )
+
def duplicate_security_group():
"""
http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/2260ea07/ec2stack/providers/cloudstack/keypairs.py
----------------------------------------------------------------------
diff --git a/ec2stack/providers/cloudstack/keypairs.py b/ec2stack/providers/cloudstack/keypairs.py
index d552b60..2a9ff7e 100644
--- a/ec2stack/providers/cloudstack/keypairs.py
+++ b/ec2stack/providers/cloudstack/keypairs.py
@@ -6,10 +6,10 @@
from base64 import b64decode
-from ec2stack.providers import cloudstack
+from ec2stack import errors
from ec2stack import helpers
+from ec2stack.providers import cloudstack
from ec2stack.providers.cloudstack import requester
-from ec2stack import errors
@helpers.authentication_required
http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/2260ea07/ec2stack/providers/cloudstack/volumes.py
----------------------------------------------------------------------
diff --git a/ec2stack/providers/cloudstack/volumes.py b/ec2stack/providers/cloudstack/volumes.py
index 4f823f0..ec594bb 100644
--- a/ec2stack/providers/cloudstack/volumes.py
+++ b/ec2stack/providers/cloudstack/volumes.py
@@ -107,7 +107,7 @@ def _create_volume_request():
args['zoneid'] = zone_id
args['command'] = 'createVolume'
- args['name'] = uuid.uuid4()
+ args['name'] = uuid.uuid()
response = requester.make_request_async(args)
http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/2260ea07/ec2stack/providers/cloudstack/vpc.py
----------------------------------------------------------------------
diff --git a/ec2stack/providers/cloudstack/vpc.py b/ec2stack/providers/cloudstack/vpc.py
new file mode 100644
index 0000000..440b875
--- /dev/null
+++ b/ec2stack/providers/cloudstack/vpc.py
@@ -0,0 +1,129 @@
+
+#!/usr/bin/env python
+# encoding: utf-8
+
+"""This module contains functions for handling requests in relation to vpcs.
+"""
+
+import uuid
+
+from ec2stack import errors
+from ec2stack import helpers
+from ec2stack.providers import cloudstack
+from ec2stack.providers.cloudstack import requester
+
+
+@helpers.authentication_required
+def create_vpc():
+ """
+ Create a vpc.
+
+ @return: Response.
+ """
+ response = _create_vpc_request()
+ return _create_vpc_response(response)
+
+
+def _create_vpc_request():
+ """
+ Request to create a vpc.
+
+ @return: Response.
+ """
+ args = {'command': 'createVPC'}
+ name = uuid.uuid()
+ args['name'] = name
+ args['id'] = name
+ args['cidr'] = helpers.get('CidrBlock')
+
+ response = requester.make_request(args)
+
+ response = response['createvpcresponse']
+
+ return response
+
+
+def _create_vpc_response(response):
+ """
+ Generates a response for create vpc request.
+
+ @param response: Response from Cloudstack.
+ @return: Response.
+ """
+ if 'errortext' in response:
+ errors.invalid_vpc_range()
+ else:
+ response = response['vpc']
+ return {
+ 'template_name_or_list': 'create_vpc.xml',
+ 'response_type': 'CreateVpcResponse',
+ 'response': response
+ }
+
+@helpers.authentication_required
+def delete_vpc():
+ """
+ Delete a vpc.
+
+ @return: Response.
+ """
+ helpers.require_parameters(['VpcId'])
+ _delete_vpc_request()
+ return _delete_vpc_response()
+
+
+def _delete_vpc_request():
+ """
+ Request to delete a vpc.
+
+ @return: Response.
+ """
+ args = {'command': 'deleteVPC', 'id': helpers.get('VpcId')}
+
+ response = requester.make_request(args)
+
+ return response
+
+
+def _delete_vpc_response():
+ """
+ Generates a response for delete vpc request.
+
+ @return: Response.
+ """
+ return {
+ 'template_name_or_list': 'status.xml',
+ 'response_type': 'DeleteVpcResponse',
+ 'return': 'true'
+ }
+
+@helpers.authentication_required
+def describe_vpcs():
+ """
+ Describes a specific vpc or all vpcs.
+
+ @return: Response.
+ """
+ args = {'command': 'listVPCs'}
+ response = cloudstack.describe_item(
+ args, 'vpc', {}, 'vpcId'
+ )
+
+ return _describe_vpc_response(
+ response
+ )
+
+
+def _describe_vpc_response(response):
+ """
+ Generates a response for describe vpc request.
+
+ @param response: Response from Cloudstack.
+ @return: Response.
+ """
+ return {
+ 'template_name_or_list': 'vpcs.xml',
+ 'response_type': 'DescribeVpcsResponse',
+ 'response': response
+ }
+