summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
Diffstat (limited to 'nova')
-rw-r--r--nova/api/ec2/__init__.py1
-rw-r--r--nova/api/ec2/cloud.py30
-rw-r--r--nova/endpoint/notes.txt16
3 files changed, 19 insertions, 28 deletions
diff --git a/nova/api/ec2/__init__.py b/nova/api/ec2/__init__.py
index 7e345d297..b4a1894cc 100644
--- a/nova/api/ec2/__init__.py
+++ b/nova/api/ec2/__init__.py
@@ -108,6 +108,7 @@ class Router(wsgi.Application):
self.controllers = dict(Cloud=cloud.CloudController(),
Admin=admin.AdminController())
+ @webob.dec.wsgify
def __call__(self, req):
# Obtain the appropriate controller for this request.
match = self.map.match(req.path)
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index 30634429d..decd2a2c0 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -27,8 +27,6 @@ import logging
import os
import time
-from twisted.internet import defer
-
from nova import datastore
from nova import exception
from nova import flags
@@ -298,10 +296,9 @@ class CloudController(object):
return v
@rbac.allow('projectmanager', 'sysadmin')
- @defer.inlineCallbacks
def create_volume(self, context, size, **kwargs):
# TODO(vish): refactor this to create the volume object here and tell service to create it
- result = yield rpc.call(FLAGS.volume_topic, {"method": "create_volume",
+ result = rpc.call(FLAGS.volume_topic, {"method": "create_volume",
"args": {"size": size,
"user_id": context.user.id,
"project_id": context.project.id}})
@@ -480,31 +477,28 @@ class CloudController(object):
return {'addressesSet': addresses}
@rbac.allow('netadmin')
- @defer.inlineCallbacks
def allocate_address(self, context, **kwargs):
- network_topic = yield self._get_network_topic(context)
- public_ip = yield rpc.call(network_topic,
+ network_topic = self._get_network_topic(context)
+ public_ip = rpc.call(network_topic,
{"method": "allocate_elastic_ip",
"args": {"user_id": context.user.id,
"project_id": context.project.id}})
defer.returnValue({'addressSet': [{'publicIp': public_ip}]})
@rbac.allow('netadmin')
- @defer.inlineCallbacks
def release_address(self, context, public_ip, **kwargs):
# NOTE(vish): Should we make sure this works?
- network_topic = yield self._get_network_topic(context)
+ network_topic = self._get_network_topic(context)
rpc.cast(network_topic,
{"method": "deallocate_elastic_ip",
"args": {"elastic_ip": public_ip}})
defer.returnValue({'releaseResponse': ["Address released."]})
@rbac.allow('netadmin')
- @defer.inlineCallbacks
def associate_address(self, context, instance_id, public_ip, **kwargs):
instance = self._get_instance(context, instance_id)
address = self._get_address(context, public_ip)
- network_topic = yield self._get_network_topic(context)
+ network_topic = self._get_network_topic(context)
rpc.cast(network_topic,
{"method": "associate_elastic_ip",
"args": {"elastic_ip": address['address'],
@@ -513,28 +507,25 @@ class CloudController(object):
defer.returnValue({'associateResponse': ["Address associated."]})
@rbac.allow('netadmin')
- @defer.inlineCallbacks
def disassociate_address(self, context, public_ip, **kwargs):
address = self._get_address(context, public_ip)
- network_topic = yield self._get_network_topic(context)
+ network_topic = self._get_network_topic(context)
rpc.cast(network_topic,
{"method": "disassociate_elastic_ip",
"args": {"elastic_ip": address['address']}})
defer.returnValue({'disassociateResponse': ["Address disassociated."]})
- @defer.inlineCallbacks
def _get_network_topic(self, context):
"""Retrieves the network host for a project"""
host = network_service.get_host_for_project(context.project.id)
if not host:
- host = yield rpc.call(FLAGS.network_topic,
+ host = rpc.call(FLAGS.network_topic,
{"method": "set_network_host",
"args": {"user_id": context.user.id,
"project_id": context.project.id}})
defer.returnValue('%s.%s' %(FLAGS.network_topic, host))
@rbac.allow('projectmanager', 'sysadmin')
- @defer.inlineCallbacks
def run_instances(self, context, **kwargs):
# make sure user can access the image
# vpn image is private so it doesn't show up on lists
@@ -566,7 +557,7 @@ class CloudController(object):
raise exception.ApiError('Key Pair %s not found' %
kwargs['key_name'])
key_data = key_pair.public_key
- network_topic = yield self._get_network_topic(context)
+ network_topic = self._get_network_topic(context)
# TODO: Get the real security group of launch in here
security_group = "default"
for num in range(int(kwargs['max_count'])):
@@ -574,7 +565,7 @@ class CloudController(object):
if image_id == FLAGS.vpn_image_id:
is_vpn = True
inst = self.instdir.new()
- allocate_data = yield rpc.call(network_topic,
+ allocate_data = rpc.call(network_topic,
{"method": "allocate_fixed_ip",
"args": {"user_id": context.user.id,
"project_id": context.project.id,
@@ -608,10 +599,9 @@ class CloudController(object):
defer.returnValue(self._format_run_instances(context, reservation_id))
@rbac.allow('projectmanager', 'sysadmin')
- @defer.inlineCallbacks
def terminate_instances(self, context, instance_id, **kwargs):
logging.debug("Going to start terminating instances")
- network_topic = yield self._get_network_topic(context)
+ network_topic = self._get_network_topic(context)
for i in instance_id:
logging.debug("Going to try and terminate %s" % i)
try:
diff --git a/nova/endpoint/notes.txt b/nova/endpoint/notes.txt
index 7a85cdc93..cbb7b0cd0 100644
--- a/nova/endpoint/notes.txt
+++ b/nova/endpoint/notes.txt
@@ -43,20 +43,20 @@ CloudController and AdminController:
* Controllers:
move the @rbac.allow data into an auth WSGI that is right above the call
to the controller
- verify @defer.inlineCallbacks is just to allow the yield statements, then
- remove the yield statements (untangle from twisted)
+x verify @defer.inlineCallbacks is just to allow the yield statements, then
+x remove the yield statements (untangle from twisted)
* nova-api:
verify that cloud_topic is going away which I seem to remember, so we can ignore rpc
* apiserverapplication:
- replace with a Router to a wsgi.Controller
- apirequesthandler stuff is just an entry in api.APIRouter
+x replace with a Router to a wsgi.Controller
+x apirequesthandler stuff is just an entry in api.APIRouter
* apirequesthandler
- wsgi.Controller pointed to by api.APIRouter
- - basically it's execute() from old APIRequestHandler
- change to return data directly instead of _write_callback() and finish()
+x wsgi.Controller pointed to by api.APIRouter
+x - basically it's execute() from old APIRequestHandler
+x change to return data directly instead of _write_callback() and finish()
* apirequest
- doesn't need to change
+x doesn't need to change