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:59 UTC

[06/50] cloudstack-ec2stack git commit: Modify configuration, add 'advanced' network option

Modify configuration, add 'advanced' network option


Project: http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/commit/95150953
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/tree/95150953
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/diff/95150953

Branch: refs/heads/master
Commit: 951509538ec13807dcd4d20c09a7df3207e2b49b
Parents: bd27404
Author: BroganD1993 <da...@hotmail.com>
Authored: Wed Jul 16 21:47:03 2014 +0100
Committer: BroganD1993 <da...@hotmail.com>
Committed: Wed Jul 16 21:47:03 2014 +0100

----------------------------------------------------------------------
 ec2stack/__init__.py                       |   1 +
 ec2stack/configure.py                      |  45 +++++++-
 ec2stack/controllers/default.py            |   3 +-
 ec2stack/providers/cloudstack/requester.py |  21 ++--
 ec2stack/providers/cloudstack/volumes.py   |   2 +-
 ec2stack/providers/cloudstack/vpc.py       | 129 -----------------------
 ec2stack/providers/cloudstack/vpcs.py      | 130 ++++++++++++++++++++++++
 ec2stack/templates/create_vpc.xml          |   2 +-
 ec2stack/templates/vpcs.xml                |   2 +-
 9 files changed, 188 insertions(+), 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/__init__.py
----------------------------------------------------------------------
diff --git a/ec2stack/__init__.py b/ec2stack/__init__.py
index 91ca81d..1c75571 100644
--- a/ec2stack/__init__.py
+++ b/ec2stack/__init__.py
@@ -31,6 +31,7 @@ def create_app(settings=None):
         args = _generate_args()
         profile = args.pop('profile')
         app.config['DEBUG'] = args.pop('debug')
+        app.config['DEBUG'] = True
         config_file = _load_config_file()
         database_uri = _load_database()
         _config_from_config_profile(config_file, profile, app)

http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/configure.py
----------------------------------------------------------------------
diff --git a/ec2stack/configure.py b/ec2stack/configure.py
index 93b4649..3fa337d 100644
--- a/ec2stack/configure.py
+++ b/ec2stack/configure.py
@@ -43,8 +43,9 @@ def _create_config_file(config_folder):
     """
     args = _generate_args()
     profile = args.pop('profile')
+    advanced_network_enabled = args.pop('advanced')
     config_file_path = config_folder + '/ec2stack.conf'
-    config = _modify_config_profile(config_file_path, profile)
+    config = _modify_config_profile(config_file_path, profile, advanced_network_enabled)
     config_file = open(config_file_path, 'w+')
     config.write(config_file)
 
@@ -67,12 +68,20 @@ def _generate_args():
         default='initial'
     )
 
+    parser.add_argument(
+        '-a',
+        '--advanced',
+        required=False,
+        help='Turn advanced network config on for application',
+        default=False
+    )
+
     args = parser.parse_args()
 
     return vars(args)
 
 
-def _modify_config_profile(config_file, profile):
+def _modify_config_profile(config_file, profile, advanced_network_enabled):
     """
     Modify configuration profile.
 
@@ -86,6 +95,23 @@ def _modify_config_profile(config_file, profile):
     if not config.has_section(profile):
         config.add_section(profile)
 
+    config = _set_mandatory_attributes_of_profile(config, profile)
+
+    if advanced_network_enabled:
+        config = _set_advanced_network_attributes_of_profile(config, profile)
+
+    config = _set_optional_attributes_of_profile(config, profile)
+
+    return config
+
+def _set_mandatory_attributes_of_profile(config, profile):
+    """
+    Modify mandatory attributes of profile.
+
+    @param config: current configparser configuration.
+    @param profile: the profile to set the attribute in.
+    @return: configparser configuration.
+    """
     config = _set_attribute_of_profile(
         config, profile, 'ec2stack_bind_address', 'EC2Stack bind address', 'localhost'
     )
@@ -115,7 +141,20 @@ def _modify_config_profile(config_file, profile):
         if config.get(profile, 'cloudstack_default_zone') is not '':
             break
 
-    config = _set_optional_attributes_of_profile(config, profile)
+    return config
+
+
+def _set_advanced_network_attributes_of_profile(config, profile):
+    """
+    Modify advanced network attributes of profile.
+
+    @param config: current configparser configuration.
+    @param profile: the profile to set the attribute in.
+    @return: configparser configuration.
+    """
+    config = _set_attribute_of_profile(
+        config, profile, 'vpc_offering_id', 'VPC offering id', ''
+    )
 
     return config
 

http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/controllers/default.py
----------------------------------------------------------------------
diff --git a/ec2stack/controllers/default.py b/ec2stack/controllers/default.py
index 97293dd..14503d8 100644
--- a/ec2stack/controllers/default.py
+++ b/ec2stack/controllers/default.py
@@ -8,7 +8,7 @@ from ec2stack.helpers import get, error_response, \
 from ec2stack.core import Ec2stackError
 from ec2stack.services import USERS
 from ec2stack.providers.cloudstack import images, instances, keypairs, \
-    passwords, security_groups, zones, volumes, tags
+    passwords, security_groups, zones, volumes, tags, vpcs
 
 
 DEFAULT = Blueprint('default', __name__)
@@ -47,6 +47,7 @@ def _get_action(action):
         'CreateSecurityGroup': security_groups.create_security_group,
         'CreateTags': tags.create_tags,
         'CreateVolume': volumes.create_volume,
+        'CreateVpc': vpcs.create_vpc,
         'DeleteKeyPair': keypairs.delete_keypair,
         'DeleteSecurityGroup': security_groups.delete_security_group,
         'DeleteTags': tags.delete_tags,

http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/providers/cloudstack/requester.py
----------------------------------------------------------------------
diff --git a/ec2stack/providers/cloudstack/requester.py b/ec2stack/providers/cloudstack/requester.py
index 147b958..401a617 100644
--- a/ec2stack/providers/cloudstack/requester.py
+++ b/ec2stack/providers/cloudstack/requester.py
@@ -34,20 +34,19 @@ def make_request(args):
 
     response = requests.get(request_url)
 
+    response_data = json.loads(
+        response.text,
+        object_hook=helpers.normalize_dict_keys
+    )
+    current_app.logger.debug(
+        'request url:' + str(request_url) +
+        'status code: ' + str(response.status_code) +
+        json.dumps(response_data, indent=4, separators=(',', ': '))
+    )
+
     if response.status_code in [401, 432]:
         abort(400)
     else:
-        response_data = json.loads(
-            response.text,
-            object_hook=helpers.normalize_dict_keys
-        )
-
-        current_app.logger.debug(
-            'request url:' + str(request_url) +
-            'status code: ' + str(response.status_code) +
-            json.dumps(response_data, indent=4, separators=(',', ': '))
-        )
-
         return response_data
 
 

http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/providers/cloudstack/volumes.py
----------------------------------------------------------------------
diff --git a/ec2stack/providers/cloudstack/volumes.py b/ec2stack/providers/cloudstack/volumes.py
index ec594bb..8b0cb4e 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.uuid()
+    args['name'] = uuid.uuid1()
 
     response = requester.make_request_async(args)
 

http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/providers/cloudstack/vpc.py
----------------------------------------------------------------------
diff --git a/ec2stack/providers/cloudstack/vpc.py b/ec2stack/providers/cloudstack/vpc.py
deleted file mode 100644
index 440b875..0000000
--- a/ec2stack/providers/cloudstack/vpc.py
+++ /dev/null
@@ -1,129 +0,0 @@
-
-#!/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
-    }
-

http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/providers/cloudstack/vpcs.py
----------------------------------------------------------------------
diff --git a/ec2stack/providers/cloudstack/vpcs.py b/ec2stack/providers/cloudstack/vpcs.py
new file mode 100644
index 0000000..5f877e2
--- /dev/null
+++ b/ec2stack/providers/cloudstack/vpcs.py
@@ -0,0 +1,130 @@
+
+#!/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'}
+    id = uuid.uuid1()
+    args['name'] = id
+    args['id'] = id
+    args['displaytext'] = id
+    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
+    }
+

http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/templates/create_vpc.xml
----------------------------------------------------------------------
diff --git a/ec2stack/templates/create_vpc.xml b/ec2stack/templates/create_vpc.xml
index 99f8624..a708e72 100644
--- a/ec2stack/templates/create_vpc.xml
+++ b/ec2stack/templates/create_vpc.xml
@@ -2,7 +2,7 @@
 {% block response_content %}
    <vpc>
       <vpcId>{{ vpc.id }}</vpcId>
-      <state>{{ vpc.state}}</state>
+      <state>{{ vpc.state }}</state>
       <cidrBlock>{{ vpc.cidr }}</cidrBlock>
       <tagSet/>
    </vpc>

http://git-wip-us.apache.org/repos/asf/cloudstack-ec2stack/blob/95150953/ec2stack/templates/vpcs.xml
----------------------------------------------------------------------
diff --git a/ec2stack/templates/vpcs.xml b/ec2stack/templates/vpcs.xml
index 036e1bb..5eb9269 100644
--- a/ec2stack/templates/vpcs.xml
+++ b/ec2stack/templates/vpcs.xml
@@ -4,7 +4,7 @@
         {% for vpc in response.vpc %}
         <item>
             <vpcId>{{ vpc.id }}</vpcId>
-            <state>{{ vpc.state}}</state>
+            <state>{{ vpc.state }}</state>
             <cidrBlock>{{ vpc.cidr }}</cidrBlock>
             <tagSet/>
         </item>