summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCerberus <matt.dietz@rackspace.com>2010-09-25 13:35:23 -0500
committerCerberus <matt.dietz@rackspace.com>2010-09-25 13:35:23 -0500
commite627748aec6a4747e22975d6cd59c8f20bc00c70 (patch)
tree287d3e97ebf69e2c901abdabf85c0aed49fe9b7e
parent307b16447a16e438d78b8149418c0ef728c5300e (diff)
downloadnova-e627748aec6a4747e22975d6cd59c8f20bc00c70.tar.gz
nova-e627748aec6a4747e22975d6cd59c8f20bc00c70.tar.xz
nova-e627748aec6a4747e22975d6cd59c8f20bc00c70.zip
Modification of test stubbing to match new domain requirements for the router, and removal of the unnecessary rackspace base controller
-rw-r--r--nova/api/rackspace/base.py24
-rw-r--r--nova/api/rackspace/flavors.py3
-rw-r--r--nova/api/rackspace/images.py3
-rw-r--r--nova/api/rackspace/servers.py29
-rw-r--r--nova/api/rackspace/sharedipgroups.py4
-rw-r--r--nova/tests/api/rackspace/auth.py4
-rw-r--r--nova/tests/api/rackspace/servers.py4
-rw-r--r--nova/tests/api/rackspace/test_helper.py30
8 files changed, 47 insertions, 54 deletions
diff --git a/nova/api/rackspace/base.py b/nova/api/rackspace/base.py
deleted file mode 100644
index 5e5bd6f54..000000000
--- a/nova/api/rackspace/base.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2010 OpenStack LLC.
-# All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-from nova import wsgi
-
-
-class Controller(wsgi.Controller):
- """TODO(eday): Base controller for all rackspace controllers. What is this
- for? Is this just Rackspace specific? """
- pass
diff --git a/nova/api/rackspace/flavors.py b/nova/api/rackspace/flavors.py
index 60b35c939..024011a71 100644
--- a/nova/api/rackspace/flavors.py
+++ b/nova/api/rackspace/flavors.py
@@ -17,9 +17,10 @@
from nova.api.rackspace import base
from nova.compute import instance_types
+from nova import wsgi
from webob import exc
-class Controller(base.Controller):
+class Controller(wsgi.Controller):
"""Flavor controller for the Rackspace API."""
_serialization_metadata = {
diff --git a/nova/api/rackspace/images.py b/nova/api/rackspace/images.py
index 2f3e928b9..9aaec52e2 100644
--- a/nova/api/rackspace/images.py
+++ b/nova/api/rackspace/images.py
@@ -16,11 +16,12 @@
# under the License.
import nova.image.service
+from nova import wsgi
from nova.api.rackspace import base
from nova.api.rackspace import _id_translator
from webob import exc
-class Controller(base.Controller):
+class Controller(wsgi.Controller):
_serialization_metadata = {
'application/xml': {
diff --git a/nova/api/rackspace/servers.py b/nova/api/rackspace/servers.py
index 9243f3ae6..d94295861 100644
--- a/nova/api/rackspace/servers.py
+++ b/nova/api/rackspace/servers.py
@@ -21,16 +21,14 @@ from nova import flags
from nova import rpc
from nova import utils
from nova import compute
+from nova import flags
from nova.api.rackspace import base
from nova.api.rackspace import _id_translator
from webob import exc
-from nova import flags
FLAGS = flags.FLAGS
-class ServersContext(object): pass
-
-class Controller(base.Controller):
+class Controller(wsgi.Controller):
_serialization_metadata = {
'application/xml': {
"plurals": "servers",
@@ -43,27 +41,30 @@ class Controller(base.Controller):
}
def __init__(self, db_driver=None):
- self.context = ServersContext()
if not db_driver:
db_driver = FLAGS.db_driver
self.db = utils.import_object(db_driver)
def index(self, req):
unfiltered = [ 'id', 'name']
- instance_list = self.instance_get_all(self.context)
- return [_entity_inst(inst, unfiltered) for inst in instance_list]
+ instance_list = self.db.instance_get_all(None)
+ res = [self._entity_inst(inst, unfiltered) for inst in \
+ instance_list]
+ return self._entity_list(res)
def detail(self, req):
- return [_entity_inst(inst) for inst in instdir.all]
+ res = [self._entity_inst(inst) for inst in \
+ self.db.instance_get_all(None)]
+ return self._entity_list(res)
def show(self, req, id):
- inst = self.instdir.get(id)
+ inst = self.db.instance_get(None, id)
if inst:
- return _entity_inst(inst)
+ return self._entity_inst(inst)
raise exc.HTTPNotFound()
def delete(self, req, id):
- instance = self.instdir.get(id)
+ instance = self.db.instance_get(None, id)
if not instance:
return exc.HTTPNotFound()
@@ -79,7 +80,7 @@ class Controller(base.Controller):
return _entity_inst(inst)
def update(self, req, id):
- instance = self.instdir.get(instance_id)
+ instance = self.db.instance_get(None, id)
if not instance:
return exc.HTTPNotFound()
instance.update(kwargs['server'])
@@ -107,7 +108,6 @@ class Controller(base.Controller):
inst['launch_time'] = ltime
inst['mac_address'] = utils.generate_mac()
- # TODO(dietz) Do we need any of these?
inst['project_id'] = env['project']['id']
inst['reservation_id'] = reservation
reservation = utils.generate_uid('r')
@@ -125,6 +125,9 @@ class Controller(base.Controller):
inst.save()
return _entity_inst(inst)
+ def _entity_list(self, entities):
+ return dict(servers=entities)
+
def _entity_inst(self, inst, allowed_keys=None):
""" Maps everything to Rackspace-like attributes for return"""
diff --git a/nova/api/rackspace/sharedipgroups.py b/nova/api/rackspace/sharedipgroups.py
index 986f11434..4d2d0ede1 100644
--- a/nova/api/rackspace/sharedipgroups.py
+++ b/nova/api/rackspace/sharedipgroups.py
@@ -15,4 +15,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-class Controller(object): pass
+from nova import wsgi
+
+class Controller(wsgi.Controller): pass
diff --git a/nova/tests/api/rackspace/auth.py b/nova/tests/api/rackspace/auth.py
index 429c22ad2..a6e10970f 100644
--- a/nova/tests/api/rackspace/auth.py
+++ b/nova/tests/api/rackspace/auth.py
@@ -15,8 +15,8 @@ class Test(unittest.TestCase):
'__init__', test_helper.fake_auth_init)
test_helper.FakeAuthManager.auth_data = {}
test_helper.FakeAuthDatabase.data = {}
- self.stubs.Set(nova.api.rackspace, 'RateLimitingMiddleware',
- test_helper.FakeRateLimiter)
+ test_helper.stub_out_rate_limiting(self.stubs)
+ test_helper.stub_for_testing(self.stubs)
def tearDown(self):
self.stubs.UnsetAll()
diff --git a/nova/tests/api/rackspace/servers.py b/nova/tests/api/rackspace/servers.py
index 6addc4614..e50581632 100644
--- a/nova/tests/api/rackspace/servers.py
+++ b/nova/tests/api/rackspace/servers.py
@@ -27,13 +27,15 @@ class ServersTest(unittest.TestCase):
self.stubs = stubout.StubOutForTesting()
test_helper.FakeAuthManager.auth_data = {}
test_helper.FakeAuthDatabase.data = {}
+ test_helper.stub_for_testing(self.stubs)
+ test_helper.stub_out_rate_limiting(self.stubs)
test_helper.stub_out_auth(self.stubs)
def tearDown(self):
self.stubs.UnsetAll()
def test_get_server_list(self):
- req = webob.Request.blank('/v1.0/servers/')
+ req = webob.Request.blank('/v1.0/servers')
res = req.get_response(nova.api.API())
print res
diff --git a/nova/tests/api/rackspace/test_helper.py b/nova/tests/api/rackspace/test_helper.py
index 784f3e466..971eaf20a 100644
--- a/nova/tests/api/rackspace/test_helper.py
+++ b/nova/tests/api/rackspace/test_helper.py
@@ -5,6 +5,9 @@ import datetime
from nova.wsgi import Router
from nova import auth
import nova.api.rackspace.auth
+from nova import flags
+
+FLAGS = flags.FLAGS
class Context(object):
pass
@@ -26,30 +29,35 @@ def fake_auth_init(self):
self.auth = FakeAuthManager()
self.host = 'foo'
+@webob.dec.wsgify
+def fake_wsgi(self, req):
+ return self.application
+
def stub_out_auth(stubs):
def fake_auth_init(self, app):
self.application = app
+
+ stubs.Set(nova.api.rackspace.AuthMiddleware,
+ '__init__', fake_auth_init)
+ stubs.Set(nova.api.rackspace.AuthMiddleware,
+ '__call__', fake_wsgi)
+def stub_out_rate_limiting(stubs):
def fake_rate_init(self, app):
super(nova.api.rackspace.RateLimitingMiddleware, self).__init__(app)
self.application = app
- @webob.dec.wsgify
- def fake_wsgi(self, req):
- return self.application
-
- def get_my_ip():
- return '127.0.0.1'
-
- stubs.Set(nova.api.rackspace.AuthMiddleware,
- '__init__', fake_auth_init)
stubs.Set(nova.api.rackspace.RateLimitingMiddleware,
'__init__', fake_rate_init)
- stubs.Set(nova.api.rackspace.AuthMiddleware,
- '__call__', fake_wsgi)
+
stubs.Set(nova.api.rackspace.RateLimitingMiddleware,
'__call__', fake_wsgi)
+
+def stub_for_testing(stubs):
+ def get_my_ip():
+ return '127.0.0.1'
stubs.Set(nova.utils, 'get_my_ip', get_my_ip)
+ FLAGS.FAKE_subdomain = 'rs'
class FakeAuthDatabase(object):
data = {}