summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/api/openstack/fakes.py14
-rw-r--r--nova/tests/api/openstack/test_accounts.py8
-rw-r--r--nova/tests/api/openstack/test_adminapi.py47
-rw-r--r--nova/tests/api/openstack/test_auth.py51
-rw-r--r--nova/tests/api/openstack/test_consoles.py18
-rw-r--r--nova/tests/api/openstack/test_extensions.py22
-rw-r--r--nova/tests/api/openstack/test_faults.py59
-rw-r--r--nova/tests/api/openstack/test_flavors.py100
-rw-r--r--nova/tests/api/openstack/test_images.py305
-rw-r--r--nova/tests/api/openstack/test_limits.py144
-rw-r--r--nova/tests/api/openstack/test_server_actions.py527
-rw-r--r--nova/tests/api/openstack/test_servers.py911
-rw-r--r--nova/tests/api/openstack/test_shared_ip_groups.py51
-rw-r--r--nova/tests/api/openstack/test_urlmap.py31
-rw-r--r--nova/tests/api/openstack/test_users.py14
-rw-r--r--nova/tests/api/openstack/test_versions.py286
-rw-r--r--nova/tests/api/openstack/test_zones.py16
-rw-r--r--nova/tests/integrated/test_servers.py7
18 files changed, 362 insertions, 2249 deletions
diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py
index 81eee216e..1c6359ff1 100644
--- a/nova/tests/api/openstack/fakes.py
+++ b/nova/tests/api/openstack/fakes.py
@@ -65,32 +65,24 @@ def fake_wsgi(self, req):
return self.application
-def wsgi_app(inner_app10=None, inner_app11=None, fake_auth=True,
- fake_auth_context=None):
- if not inner_app10:
- inner_app10 = openstack.APIRouterV10()
+def wsgi_app(inner_app11=None, fake_auth=True, fake_auth_context=None):
if not inner_app11:
- inner_app11 = openstack.APIRouterV11()
+ inner_app11 = openstack.APIRouter()
if fake_auth:
if fake_auth_context is not None:
ctxt = fake_auth_context
else:
ctxt = context.RequestContext('fake', 'fake', auth_token=True)
- api10 = openstack.FaultWrapper(api_auth.InjectContext(ctxt,
- limits.RateLimitingMiddleware(inner_app10)))
api11 = openstack.FaultWrapper(api_auth.InjectContext(ctxt,
limits.RateLimitingMiddleware(
extensions.ExtensionMiddleware(inner_app11))))
else:
- api10 = openstack.FaultWrapper(auth.AuthMiddleware(
- limits.RateLimitingMiddleware(inner_app10)))
api11 = openstack.FaultWrapper(auth.AuthMiddleware(
limits.RateLimitingMiddleware(
extensions.ExtensionMiddleware(inner_app11))))
Auth = auth
mapper = urlmap.URLMap()
- mapper['/v1.0'] = api10
mapper['/v1.1'] = api11
mapper['/'] = openstack.FaultWrapper(versions.Versions())
return mapper
@@ -401,7 +393,7 @@ class FakeAuthManager(object):
if p:
return p
else:
- raise exc.NotFound
+ raise exc.ProjectNotFound(project_id=pid)
def get_projects(self, user_id=None):
if not user_id:
diff --git a/nova/tests/api/openstack/test_accounts.py b/nova/tests/api/openstack/test_accounts.py
index 707a2599f..125ab8ea0 100644
--- a/nova/tests/api/openstack/test_accounts.py
+++ b/nova/tests/api/openstack/test_accounts.py
@@ -55,7 +55,7 @@ class AccountsTest(test.TestCase):
fakemgr.create_project('test2', superuser)
def test_get_account(self):
- req = webob.Request.blank('/v1.0/accounts/test1')
+ req = webob.Request.blank('/v1.1/fake/accounts/test1')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -65,7 +65,7 @@ class AccountsTest(test.TestCase):
self.assertEqual(res.status_int, 200)
def test_account_delete(self):
- req = webob.Request.blank('/v1.0/accounts/test1')
+ req = webob.Request.blank('/v1.1/fake/accounts/test1')
req.method = 'DELETE'
res = req.get_response(fakes.wsgi_app())
self.assertTrue('test1' not in fakes.FakeAuthManager.projects)
@@ -74,7 +74,7 @@ class AccountsTest(test.TestCase):
def test_account_create(self):
body = dict(account=dict(description='test account',
manager='id1'))
- req = webob.Request.blank('/v1.0/accounts/newacct')
+ req = webob.Request.blank('/v1.1/fake/accounts/newacct')
req.headers["Content-Type"] = "application/json"
req.method = 'PUT'
req.body = json.dumps(body)
@@ -94,7 +94,7 @@ class AccountsTest(test.TestCase):
def test_account_update(self):
body = dict(account=dict(description='test account',
manager='id2'))
- req = webob.Request.blank('/v1.0/accounts/test1')
+ req = webob.Request.blank('/v1.1/fake/accounts/test1')
req.headers["Content-Type"] = "application/json"
req.method = 'PUT'
req.body = json.dumps(body)
diff --git a/nova/tests/api/openstack/test_adminapi.py b/nova/tests/api/openstack/test_adminapi.py
deleted file mode 100644
index c9e66dc4c..000000000
--- a/nova/tests/api/openstack/test_adminapi.py
+++ /dev/null
@@ -1,47 +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.
-
-
-import webob
-
-from nova import test
-from nova.tests.api.openstack import fakes
-
-
-class AdminAPITest(test.TestCase):
-
- def setUp(self):
- super(AdminAPITest, self).setUp()
- fakes.stub_out_networking(self.stubs)
- fakes.stub_out_rate_limiting(self.stubs)
- self.flags(verbose=True)
-
- def test_admin_enabled(self):
- self.flags(allow_admin_api=True)
- # We should still be able to access public operations.
- req = webob.Request.blank('/v1.0/flavors')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- # TODO: Confirm admin operations are available.
-
- def test_admin_disabled(self):
- self.flags(allow_admin_api=False)
- # We should still be able to access public operations.
- req = webob.Request.blank('/v1.0/flavors')
- res = req.get_response(fakes.wsgi_app())
- # TODO: Confirm admin operations are unavailable.
- self.assertEqual(res.status_int, 200)
diff --git a/nova/tests/api/openstack/test_auth.py b/nova/tests/api/openstack/test_auth.py
index 7fd3935a2..72e53060f 100644
--- a/nova/tests/api/openstack/test_auth.py
+++ b/nova/tests/api/openstack/test_auth.py
@@ -50,7 +50,7 @@ class Test(test.TestCase):
user = nova.auth.manager.User('id1', 'user1', 'user1_key', None, None)
f.add_user(user)
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-User'] = 'user1'
req.headers['X-Auth-Key'] = 'user1_key'
req.headers['X-Auth-Project-Id'] = 'user1_project'
@@ -67,21 +67,21 @@ class Test(test.TestCase):
f.add_user(user)
f.create_project('user1_project', user)
- req = webob.Request.blank('/v1.0/', {'HTTP_HOST': 'foo'})
+ req = webob.Request.blank('/v1.1/', {'HTTP_HOST': 'foo'})
req.headers['X-Auth-User'] = 'user1'
req.headers['X-Auth-Key'] = 'user1_key'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '204 No Content')
self.assertEqual(len(result.headers['X-Auth-Token']), 40)
self.assertEqual(result.headers['X-Server-Management-Url'],
- "http://foo/v1.0")
+ "http://foo/v1.1/user1_project")
self.assertEqual(result.headers['X-CDN-Management-Url'],
"")
self.assertEqual(result.headers['X-Storage-Url'], "")
token = result.headers['X-Auth-Token']
- self.stubs.Set(nova.api.openstack, 'APIRouterV10', fakes.FakeRouter)
- req = webob.Request.blank('/v1.0/user1_project')
+ self.stubs.Set(nova.api.openstack, 'APIRouter', fakes.FakeRouter)
+ req = webob.Request.blank('/v1.1/user1_project')
req.headers['X-Auth-Token'] = token
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '200 OK')
@@ -105,7 +105,7 @@ class Test(test.TestCase):
self.stubs.Set(fakes.FakeAuthDatabase, 'auth_token_get',
bad_token)
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-Token'] = 'token_hash'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')
@@ -118,23 +118,22 @@ class Test(test.TestCase):
f.create_project('user1_project', user)
f.create_project('user2_project', user)
- req = webob.Request.blank('/v1.0/', {'HTTP_HOST': 'foo'})
+ req = webob.Request.blank('/v1.1/', {'HTTP_HOST': 'foo'})
req.headers['X-Auth-User'] = 'user1'
req.headers['X-Auth-Key'] = 'user1_key'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '204 No Content')
token = result.headers['X-Auth-Token']
- self.stubs.Set(nova.api.openstack, 'APIRouterV10', fakes.FakeRouter)
- req = webob.Request.blank('/v1.0/')
+ self.stubs.Set(nova.api.openstack, 'APIRouter', fakes.FakeRouter)
+ req = webob.Request.blank('/v1.1/user2_project')
req.headers['X-Auth-Token'] = token
- req.headers['X-Auth-Project-Id'] = 'user2_project'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '200 OK')
self.assertEqual(result.headers['X-Test-Success'], 'True')
def test_bad_user_bad_key(self):
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-User'] = 'unknown_user'
req.headers['X-Auth-Key'] = 'unknown_user_key'
req.headers['X-Auth-Project-Id'] = 'user_project'
@@ -146,19 +145,19 @@ class Test(test.TestCase):
user = nova.auth.manager.User('id1', 'user1', 'user1_key', None, None)
f.add_user(user)
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-User'] = 'unknown_user'
req.headers['X-Auth-Key'] = 'user1_key'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')
def test_no_user(self):
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')
def test_bad_token(self):
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-Token'] = 'unknown_token'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')
@@ -172,17 +171,16 @@ class Test(test.TestCase):
f.create_project('user1_project', user1)
f.create_project('user2_project', user2)
- req = webob.Request.blank('/v1.0/', {'HTTP_HOST': 'foo'})
+ req = webob.Request.blank('/v1.1/', {'HTTP_HOST': 'foo'})
req.headers['X-Auth-User'] = 'user1'
req.headers['X-Auth-Key'] = 'user1_key'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '204 No Content')
token = result.headers['X-Auth-Token']
- self.stubs.Set(nova.api.openstack, 'APIRouterV10', fakes.FakeRouter)
- req = webob.Request.blank('/v1.0/fake')
+ self.stubs.Set(nova.api.openstack, 'APIRouter', fakes.FakeRouter)
+ req = webob.Request.blank('/v1.1/user2_project')
req.headers['X-Auth-Token'] = token
- req.headers['X-Auth-Project-Id'] = 'user2_project'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')
@@ -192,17 +190,16 @@ class Test(test.TestCase):
f.add_user(user1)
f.create_project('user1_project', user1)
- req = webob.Request.blank('/v1.0/', {'HTTP_HOST': 'foo'})
+ req = webob.Request.blank('/v1.1/', {'HTTP_HOST': 'foo'})
req.headers['X-Auth-User'] = 'user1'
req.headers['X-Auth-Key'] = 'user1_key'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '204 No Content')
token = result.headers['X-Auth-Token']
- self.stubs.Set(nova.api.openstack, 'APIRouterV10', fakes.FakeRouter)
- req = webob.Request.blank('/v1.0/fake')
+ self.stubs.Set(nova.api.openstack, 'APIRouter', fakes.FakeRouter)
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-Token'] = token
- req.headers['X-Auth-Project-Id'] = 'unknown_project'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')
@@ -222,13 +219,13 @@ class TestFunctional(test.TestCase):
created_at=datetime.datetime(2000, 1, 1, 12, 0, 0),
))
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-Token'] = 'test_token_hash'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')
def test_token_doesnotexist(self):
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-Token'] = 'nonexistant_token_hash'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')
@@ -254,15 +251,15 @@ class TestLimiter(test.TestCase):
f.add_user(user)
f.create_project('test', user)
- req = webob.Request.blank('/v1.0/')
+ req = webob.Request.blank('/v1.1/')
req.headers['X-Auth-User'] = 'user1'
req.headers['X-Auth-Key'] = 'user1_key'
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(len(result.headers['X-Auth-Token']), 40)
token = result.headers['X-Auth-Token']
- self.stubs.Set(nova.api.openstack, 'APIRouterV10', fakes.FakeRouter)
- req = webob.Request.blank('/v1.0/fake')
+ self.stubs.Set(nova.api.openstack, 'APIRouter', fakes.FakeRouter)
+ req = webob.Request.blank('/v1.1/test')
req.method = 'POST'
req.headers['X-Auth-Token'] = token
result = req.get_response(fakes.wsgi_app(fake_auth=False))
diff --git a/nova/tests/api/openstack/test_consoles.py b/nova/tests/api/openstack/test_consoles.py
index 28c04d082..25414bc7d 100644
--- a/nova/tests/api/openstack/test_consoles.py
+++ b/nova/tests/api/openstack/test_consoles.py
@@ -106,7 +106,7 @@ class ConsolesTest(test.TestCase):
super(ConsolesTest, self).setUp()
self.flags(verbose=True)
self.stubs.Set(db.api, 'instance_get', return_server_by_id)
- self.webreq = common.webob_factory('/v1.0/servers')
+ self.webreq = common.webob_factory('/v1.1/fake/servers')
def test_create_console(self):
def fake_create_console(cons_self, context, instance_id):
@@ -114,7 +114,7 @@ class ConsolesTest(test.TestCase):
return {}
self.stubs.Set(console.API, 'create_console', fake_create_console)
- req = webob.Request.blank('/v1.0/servers/10/consoles')
+ req = webob.Request.blank('/v1.1/fake/servers/10/consoles')
req.method = "POST"
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
@@ -136,7 +136,7 @@ class ConsolesTest(test.TestCase):
self.stubs.Set(console.API, 'get_console', fake_get_console)
- req = webob.Request.blank('/v1.0/servers/10/consoles/20')
+ req = webob.Request.blank('/v1.1/fake/servers/10/consoles/20')
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
res_dict = json.loads(res.body)
@@ -148,7 +148,7 @@ class ConsolesTest(test.TestCase):
self.stubs.Set(console.API, 'get_console', fake_get_console)
- req = webob.Request.blank('/v1.0/servers/10/consoles/20')
+ req = webob.Request.blank('/v1.1/fake/servers/10/consoles/20')
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
@@ -158,7 +158,7 @@ class ConsolesTest(test.TestCase):
self.stubs.Set(console.API, 'get_console', fake_get_console)
- req = webob.Request.blank('/v1.0/servers/10/consoles/20')
+ req = webob.Request.blank('/v1.1/fake/servers/10/consoles/20')
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
@@ -182,7 +182,7 @@ class ConsolesTest(test.TestCase):
self.stubs.Set(console.API, 'get_consoles', fake_get_consoles)
- req = webob.Request.blank('/v1.0/servers/10/consoles')
+ req = webob.Request.blank('/v1.1/fake/servers/10/consoles')
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
res_dict = json.loads(res.body)
@@ -204,7 +204,7 @@ class ConsolesTest(test.TestCase):
self.stubs.Set(console.API, 'get_console', fake_get_console)
self.stubs.Set(console.API, 'delete_console', fake_delete_console)
- req = webob.Request.blank('/v1.0/servers/10/consoles/20')
+ req = webob.Request.blank('/v1.1/fake/servers/10/consoles/20')
req.method = "DELETE"
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 202)
@@ -215,7 +215,7 @@ class ConsolesTest(test.TestCase):
self.stubs.Set(console.API, 'delete_console', fake_delete_console)
- req = webob.Request.blank('/v1.0/servers/10/consoles/20')
+ req = webob.Request.blank('/v1.1/fake/servers/10/consoles/20')
req.method = "DELETE"
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
@@ -226,7 +226,7 @@ class ConsolesTest(test.TestCase):
self.stubs.Set(console.API, 'delete_console', fake_delete_console)
- req = webob.Request.blank('/v1.0/servers/10/consoles/20')
+ req = webob.Request.blank('/v1.1/fake/servers/10/consoles/20')
req.method = "DELETE"
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
diff --git a/nova/tests/api/openstack/test_extensions.py b/nova/tests/api/openstack/test_extensions.py
index c4dc58967..e3fe0e878 100644
--- a/nova/tests/api/openstack/test_extensions.py
+++ b/nova/tests/api/openstack/test_extensions.py
@@ -109,7 +109,7 @@ class ExtensionControllerTest(test.TestCase):
self.ext_list.sort()
def test_list_extensions_json(self):
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app)
request = webob.Request.blank("/123/extensions")
response = request.get_response(ext_midware)
@@ -135,7 +135,7 @@ class ExtensionControllerTest(test.TestCase):
)
def test_get_extension_json(self):
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app)
request = webob.Request.blank("/123/extensions/FOXNSOX")
response = request.get_response(ext_midware)
@@ -151,14 +151,14 @@ class ExtensionControllerTest(test.TestCase):
"links": []})
def test_get_non_existing_extension_json(self):
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app)
request = webob.Request.blank("/123/extensions/4")
response = request.get_response(ext_midware)
self.assertEqual(404, response.status_int)
def test_list_extensions_xml(self):
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app)
request = webob.Request.blank("/123/extensions")
request.accept = "application/xml"
@@ -185,7 +185,7 @@ class ExtensionControllerTest(test.TestCase):
xmlutil.validate_schema(root, 'extensions')
def test_get_extension_xml(self):
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app)
request = webob.Request.blank("/123/extensions/FOXNSOX")
request.accept = "application/xml"
@@ -216,7 +216,7 @@ class ResourceExtensionTest(test.TestCase):
def test_no_extension_present(self):
manager = StubExtensionManager(None)
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app, manager)
request = webob.Request.blank("/blah")
response = request.get_response(ext_midware)
@@ -226,7 +226,7 @@ class ResourceExtensionTest(test.TestCase):
res_ext = extensions.ResourceExtension('tweedles',
StubController(response_body))
manager = StubExtensionManager(res_ext)
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app, manager)
request = webob.Request.blank("/123/tweedles")
response = request.get_response(ext_midware)
@@ -237,7 +237,7 @@ class ResourceExtensionTest(test.TestCase):
res_ext = extensions.ResourceExtension('tweedles',
StubController(response_body))
manager = StubExtensionManager(res_ext)
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app, manager)
request = webob.Request.blank("/123/tweedles")
response = request.get_response(ext_midware)
@@ -261,7 +261,7 @@ class ExtensionManagerTest(test.TestCase):
self.flags(osapi_extensions_path=ext_path)
def test_get_resources(self):
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app)
request = webob.Request.blank("/123/foxnsocks")
response = request.get_response(ext_midware)
@@ -269,7 +269,7 @@ class ExtensionManagerTest(test.TestCase):
self.assertEqual(response_body, response.body)
def test_invalid_extensions(self):
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app)
ext_mgr = ext_midware.ext_mgr
ext_mgr.add_extension(InvalidExtension())
@@ -285,7 +285,7 @@ class ActionExtensionTest(test.TestCase):
self.flags(osapi_extensions_path=ext_path)
def _send_server_action_request(self, url, body):
- app = openstack.APIRouterV11()
+ app = openstack.APIRouter()
ext_midware = extensions.ExtensionMiddleware(app)
request = webob.Request.blank(url)
request.method = 'POST'
diff --git a/nova/tests/api/openstack/test_faults.py b/nova/tests/api/openstack/test_faults.py
index 6da27540a..18bd136df 100644
--- a/nova/tests/api/openstack/test_faults.py
+++ b/nova/tests/api/openstack/test_faults.py
@@ -38,27 +38,6 @@ class TestFaults(test.TestCase):
xml_string = xml_string.replace("\t", "")
return xml_string
- def test_400_fault_xml(self):
- """Test fault serialized to XML via file-extension and/or header."""
- requests = [
- webob.Request.blank('/.xml'),
- webob.Request.blank('/', headers={"Accept": "application/xml"}),
- ]
-
- for request in requests:
- fault = faults.Fault(webob.exc.HTTPBadRequest(explanation='scram'))
- response = request.get_response(fault)
-
- expected = self._prepare_xml("""
- <badRequest code="400" xmlns="%s">
- <message>scram</message>
- </badRequest>
- """ % common.XML_NS_V10)
- actual = self._prepare_xml(response.body)
-
- self.assertEqual(response.content_type, "application/xml")
- self.assertEqual(expected, actual)
-
def test_400_fault_json(self):
"""Test fault serialized to JSON via file-extension and/or header."""
requests = [
@@ -81,30 +60,6 @@ class TestFaults(test.TestCase):
self.assertEqual(response.content_type, "application/json")
self.assertEqual(expected, actual)
- def test_413_fault_xml(self):
- requests = [
- webob.Request.blank('/.xml'),
- webob.Request.blank('/', headers={"Accept": "application/xml"}),
- ]
-
- for request in requests:
- exc = webob.exc.HTTPRequestEntityTooLarge
- fault = faults.Fault(exc(explanation='sorry',
- headers={'Retry-After': 4}))
- response = request.get_response(fault)
-
- expected = self._prepare_xml("""
- <overLimit code="413" xmlns="%s">
- <message>sorry</message>
- <retryAfter>4</retryAfter>
- </overLimit>
- """ % common.XML_NS_V10)
- actual = self._prepare_xml(response.body)
-
- self.assertEqual(expected, actual)
- self.assertEqual(response.content_type, "application/xml")
- self.assertEqual(response.headers['Retry-After'], 4)
-
def test_413_fault_json(self):
"""Test fault serialized to JSON via file-extension and/or header."""
requests = [
@@ -147,19 +102,7 @@ class TestFaults(test.TestCase):
fault = faults.Fault(webob.exc.HTTPBadRequest(explanation='what?'))
self.assertEqual(fault.status_int, 400)
- def test_v10_xml_serializer(self):
- """Ensure that a v1.0 request responds with a v1.0 xmlns"""
- request = webob.Request.blank('/',
- headers={"Accept": "application/xml"})
-
- fault = faults.Fault(webob.exc.HTTPBadRequest(explanation='scram'))
- response = request.get_response(fault)
-
- self.assertTrue(common.XML_NS_V10 in response.body)
- self.assertEqual(response.content_type, "application/xml")
- self.assertEqual(response.status_int, 400)
-
- def test_v11_xml_serializer(self):
+ def test_xml_serializer(self):
"""Ensure that a v1.1 request responds with a v1.1 xmlns"""
request = webob.Request.blank('/v1.1',
headers={"Accept": "application/xml"})
diff --git a/nova/tests/api/openstack/test_flavors.py b/nova/tests/api/openstack/test_flavors.py
index 77aefe507..6cea114b1 100644
--- a/nova/tests/api/openstack/test_flavors.py
+++ b/nova/tests/api/openstack/test_flavors.py
@@ -89,90 +89,15 @@ class FlavorsTest(test.TestCase):
self.stubs.UnsetAll()
super(FlavorsTest, self).tearDown()
- def test_get_flavor_list_v1_0(self):
- req = webob.Request.blank('/v1.0/flavors')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- flavors = json.loads(res.body)["flavors"]
- expected = [
- {
- "id": "1",
- "name": "flavor 1",
- },
- {
- "id": "2",
- "name": "flavor 2",
- },
- ]
- self.assertEqual(flavors, expected)
-
- def test_get_empty_flavor_list_v1_0(self):
- self.stubs.Set(nova.db.api, "instance_type_get_all",
- empty_instance_type_get_all)
-
- req = webob.Request.blank('/v1.0/flavors')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- flavors = json.loads(res.body)["flavors"]
- expected = []
- self.assertEqual(flavors, expected)
-
- def test_get_flavor_list_detail_v1_0(self):
- req = webob.Request.blank('/v1.0/flavors/detail')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- flavors = json.loads(res.body)["flavors"]
- expected = [
- {
- "id": "1",
- "name": "flavor 1",
- "ram": "256",
- "disk": "10",
- "rxtx_cap": "",
- "rxtx_quota": "",
- "swap": "",
- "vcpus": "",
- },
- {
- "id": "2",
- "name": "flavor 2",
- "ram": "512",
- "disk": "20",
- "rxtx_cap": "",
- "rxtx_quota": "",
- "swap": "",
- "vcpus": "",
- },
- ]
- self.assertEqual(flavors, expected)
-
- def test_get_flavor_by_id_v1_0(self):
- req = webob.Request.blank('/v1.0/flavors/1')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- flavor = json.loads(res.body)["flavor"]
- expected = {
- "id": "1",
- "name": "flavor 1",
- "ram": "256",
- "disk": "10",
- "rxtx_cap": "",
- "rxtx_quota": "",
- "swap": "",
- "vcpus": "",
- }
- self.assertEqual(flavor, expected)
-
def test_get_flavor_by_invalid_id(self):
self.stubs.Set(nova.db.api, "instance_type_get_by_flavor_id",
return_instance_type_not_found)
- req = webob.Request.blank('/v1.0/flavors/asdf')
+ req = webob.Request.blank('/v1.1/fake/flavors/asdf')
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
- def test_get_flavor_by_id_v1_1(self):
+ def test_get_flavor_by_id(self):
req = webob.Request.blank('/v1.1/fake/flavors/1')
- req.environ['api.version'] = '1.1'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
flavor = json.loads(res.body)
@@ -200,9 +125,8 @@ class FlavorsTest(test.TestCase):
}
self.assertEqual(flavor, expected)
- def test_get_flavor_list_v1_1(self):
+ def test_get_flavor_list(self):
req = webob.Request.blank('/v1.1/fake/flavors')
- req.environ['api.version'] = '1.1'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
flavor = json.loads(res.body)
@@ -240,9 +164,8 @@ class FlavorsTest(test.TestCase):
}
self.assertEqual(flavor, expected)
- def test_get_flavor_list_detail_v1_1(self):
+ def test_get_flavor_list_detail(self):
req = webob.Request.blank('/v1.1/fake/flavors/detail')
- req.environ['api.version'] = '1.1'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
flavor = json.loads(res.body)
@@ -292,7 +215,7 @@ class FlavorsTest(test.TestCase):
}
self.assertEqual(flavor, expected)
- def test_get_empty_flavor_list_v1_1(self):
+ def test_get_empty_flavor_list(self):
self.stubs.Set(nova.db.api, "instance_type_get_all",
empty_instance_type_get_all)
@@ -303,10 +226,9 @@ class FlavorsTest(test.TestCase):
expected = []
self.assertEqual(flavors, expected)
- def test_get_flavor_list_filter_min_ram_v1_1(self):
+ def test_get_flavor_list_filter_min_ram(self):
"""Flavor lists may be filtered by minRam"""
req = webob.Request.blank('/v1.1/fake/flavors?minRam=512')
- req.environ['api.version'] = '1.1'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
flavor = json.loads(res.body)
@@ -333,7 +255,6 @@ class FlavorsTest(test.TestCase):
def test_get_flavor_list_filter_min_disk(self):
"""Flavor lists may be filtered by minRam"""
req = webob.Request.blank('/v1.1/fake/flavors?minDisk=20')
- req.environ['api.version'] = '1.1'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
flavor = json.loads(res.body)
@@ -357,13 +278,12 @@ class FlavorsTest(test.TestCase):
}
self.assertEqual(flavor, expected)
- def test_get_flavor_list_detail_min_ram_and_min_disk_v1_1(self):
+ def test_get_flavor_list_detail_min_ram_and_min_disk(self):
"""Tests that filtering work on flavor details and that minRam and
minDisk filters can be combined
"""
req = webob.Request.blank(
'/v1.1/fake/flavors/detail?minRam=256&minDisk=20')
- req.environ['api.version'] = '1.1'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
flavor = json.loads(res.body)
@@ -393,11 +313,10 @@ class FlavorsTest(test.TestCase):
}
self.assertEqual(flavor, expected)
- def test_get_flavor_list_detail_bogus_min_ram_v1_1(self):
+ def test_get_flavor_list_detail_bogus_min_ram(self):
"""Tests that bogus minRam filtering values are ignored"""
req = webob.Request.blank(
'/v1.1/fake/flavors/detail?minRam=16GB')
- req.environ['api.version'] = '1.1'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
flavor = json.loads(res.body)
@@ -447,11 +366,10 @@ class FlavorsTest(test.TestCase):
}
self.assertEqual(flavor, expected)
- def test_get_flavor_list_detail_bogus_min_disk_v1_1(self):
+ def test_get_flavor_list_detail_bogus_min_disk(self):
"""Tests that bogus minDisk filtering values are ignored"""
req = webob.Request.blank(
'/v1.1/fake/flavors/detail?minDisk=16GB')
- req.environ['api.version'] = '1.1'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
flavor = json.loads(res.body)
diff --git a/nova/tests/api/openstack/test_images.py b/nova/tests/api/openstack/test_images.py
index 5e32ccf42..62f6c991a 100644
--- a/nova/tests/api/openstack/test_images.py
+++ b/nova/tests/api/openstack/test_images.py
@@ -71,48 +71,7 @@ class ImagesTest(test.TestCase):
auth_token = True
return Context()
- def test_get_image_index(self):
- request = webob.Request.blank('/v1.0/images')
- app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
- response = request.get_response(app)
-
- response_dict = json.loads(response.body)
- response_list = response_dict["images"]
-
- expected = [{'id': 123, 'name': 'public image'},
- {'id': 124, 'name': 'queued snapshot'},
- {'id': 125, 'name': 'saving snapshot'},
- {'id': 126, 'name': 'active snapshot'},
- {'id': 127, 'name': 'killed snapshot'},
- {'id': 128, 'name': 'deleted snapshot'},
- {'id': 129, 'name': 'pending_delete snapshot'},
- {'id': 130, 'name': None}]
-
- self.assertDictListMatch(response_list, expected)
-
def test_get_image(self):
- request = webob.Request.blank('/v1.0/images/123')
- app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
- response = request.get_response(app)
-
- self.assertEqual(200, response.status_int)
-
- actual_image = json.loads(response.body)
-
- expected_image = {
- "image": {
- "id": 123,
- "name": "public image",
- "updated": NOW_API_FORMAT,
- "created": NOW_API_FORMAT,
- "status": "ACTIVE",
- "progress": 100,
- },
- }
-
- self.assertDictMatch(expected_image, actual_image)
-
- def test_get_image_v1_1(self):
self.maxDiff = None
request = webob.Request.blank('/v1.1/fake/images/124')
app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
@@ -169,82 +128,7 @@ class ImagesTest(test.TestCase):
self.assertEqual(expected_image, actual_image)
- def test_get_image_xml(self):
- request = webob.Request.blank('/v1.0/images/123')
- request.accept = "application/xml"
- app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
- response = request.get_response(app)
-
- actual_image = minidom.parseString(response.body.replace(" ", ""))
-
- expected_now = NOW_API_FORMAT
- expected_image = minidom.parseString("""
- <image id="123"
- name="public image"
- updated="%(expected_now)s"
- created="%(expected_now)s"
- status="ACTIVE"
- progress="100"
- xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" />
- """ % (locals()))
-
- self.assertEqual(expected_image.toxml(), actual_image.toxml())
-
- def test_get_image_xml_no_name(self):
- request = webob.Request.blank('/v1.0/images/130')
- request.accept = "application/xml"
- app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
- response = request.get_response(app)
-
- actual_image = minidom.parseString(response.body.replace(" ", ""))
-
- expected_now = NOW_API_FORMAT
- expected_image = minidom.parseString("""
- <image id="130"
- name="None"
- updated="%(expected_now)s"
- created="%(expected_now)s"
- status="ACTIVE"
- progress="100"
- xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" />
- """ % (locals()))
-
- self.assertEqual(expected_image.toxml(), actual_image.toxml())
-
def test_get_image_404_json(self):
- request = webob.Request.blank('/v1.0/images/NonExistantImage')
- response = request.get_response(fakes.wsgi_app())
- self.assertEqual(404, response.status_int)
-
- expected = {
- "itemNotFound": {
- "message": "Image not found.",
- "code": 404,
- },
- }
-
- actual = json.loads(response.body)
-
- self.assertEqual(expected, actual)
-
- def test_get_image_404_xml(self):
- request = webob.Request.blank('/v1.0/images/NonExistantImage')
- request.accept = "application/xml"
- response = request.get_response(fakes.wsgi_app())
- self.assertEqual(404, response.status_int)
-
- expected = minidom.parseString("""
- <itemNotFound code="404"
- xmlns="http://docs.rackspacecloud.com/servers/api/v1.0">
- <message>Image not found.</message>
- </itemNotFound>
- """.replace(" ", "").replace("\n", ""))
-
- actual = minidom.parseString(response.body.replace(" ", ""))
-
- self.assertEqual(expected.toxml(), actual.toxml())
-
- def test_get_image_404_v1_1_json(self):
request = webob.Request.blank('/v1.1/fake/images/NonExistantImage')
response = request.get_response(fakes.wsgi_app())
self.assertEqual(404, response.status_int)
@@ -260,7 +144,7 @@ class ImagesTest(test.TestCase):
self.assertEqual(expected, actual)
- def test_get_image_404_v1_1_xml(self):
+ def test_get_image_404_xml(self):
request = webob.Request.blank('/v1.1/fake/images/NonExistantImage')
request.accept = "application/xml"
response = request.get_response(fakes.wsgi_app())
@@ -279,7 +163,7 @@ class ImagesTest(test.TestCase):
self.assertEqual(expected.toxml(), actual.toxml())
- def test_get_image_index_v1_1(self):
+ def test_get_image_index(self):
request = webob.Request.blank('/v1.1/fake/images')
app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
response = request.get_response(app)
@@ -454,7 +338,7 @@ class ImagesTest(test.TestCase):
self.assertDictListMatch(response_list, expected_images)
- def test_get_image_index_v1_1_with_limit(self):
+ def test_get_image_index_with_limit(self):
request = webob.Request.blank('/v1.1/fake/images?limit=3')
app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
response = request.get_response(app)
@@ -533,7 +417,7 @@ class ImagesTest(test.TestCase):
params = urlparse.parse_qs(href_parts.query)
self.assertDictMatch({'limit': ['3'], 'marker': ['125']}, params)
- def test_get_image_index_v1_1_with_limit_and_extra_params(self):
+ def test_get_image_index_with_limit_and_extra_params(self):
request = webob.Request.blank('/v1.1/fake/images?limit=3&extra=boo')
app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
response = request.get_response(app)
@@ -550,7 +434,7 @@ class ImagesTest(test.TestCase):
{'limit': ['3'], 'marker': ['125'], 'extra': ['boo']},
params)
- def test_get_image_index_v1_1_with_big_limit(self):
+ def test_get_image_index_with_big_limit(self):
"""
Make sure we don't get images_links if limit is set
and the number of images returned is < limit
@@ -566,81 +450,6 @@ class ImagesTest(test.TestCase):
self.assertEqual(len(response_list), 8)
def test_get_image_details(self):
- request = webob.Request.blank('/v1.0/images/detail')
- app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
- response = request.get_response(app)
-
- response_dict = json.loads(response.body)
- response_list = response_dict["images"]
-
- expected = [{
- 'id': 123,
- 'name': 'public image',
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT,
- 'status': 'ACTIVE',
- 'progress': 100,
- },
- {
- 'id': 124,
- 'name': 'queued snapshot',
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT,
- 'status': 'SAVING',
- 'progress': 25,
- },
- {
- 'id': 125,
- 'name': 'saving snapshot',
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT,
- 'status': 'SAVING',
- 'progress': 50,
- },
- {
- 'id': 126,
- 'name': 'active snapshot',
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT,
- 'status': 'ACTIVE',
- 'progress': 100,
- },
- {
- 'id': 127,
- 'name': 'killed snapshot',
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT,
- 'status': 'ERROR',
- 'progress': 0,
- },
- {
- 'id': 128,
- 'name': 'deleted snapshot',
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT,
- 'status': 'DELETED',
- 'progress': 0,
- },
- {
- 'id': 129,
- 'name': 'pending_delete snapshot',
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT,
- 'status': 'DELETED',
- 'progress': 0,
- },
- {
- 'id': 130,
- 'name': None,
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT,
- 'status': 'ACTIVE',
- 'progress': 100,
- }]
-
- self.assertDictListMatch(expected, response_list)
-
- def test_get_image_details_v1_1(self):
request = webob.Request.blank('/v1.1/fake/images/detail')
app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
response = request.get_response(app)
@@ -931,7 +740,7 @@ class ImagesTest(test.TestCase):
self.assertDictListMatch(expected, response_list)
- def test_get_image_details_with_limit_v1_1(self):
+ def test_get_image_details_with_limit(self):
request = webob.Request.blank('/v1.1/fake/images/detail?limit=2')
app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
response = request.get_response(app)
@@ -1022,7 +831,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/images?name=testname')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1034,7 +843,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/images?minRam=0')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1046,7 +855,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/images?minDisk=7')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1058,7 +867,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/images?status=ACTIVE')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1070,7 +879,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/images?property-test=3')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1084,7 +893,7 @@ class ImagesTest(test.TestCase):
request = webob.Request.blank('/v1.1/images?server='
'http://localhost:8774/servers/12')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1097,7 +906,7 @@ class ImagesTest(test.TestCase):
request = webob.Request.blank('/v1.1/images?changes-since='
'2011-01-24T17:08Z')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1109,7 +918,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/images?type=BASE')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1122,7 +931,7 @@ class ImagesTest(test.TestCase):
request = webob.Request.blank('/v1.1/images?status=ACTIVE&'
'UNSUPPORTEDFILTER=testname')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.detail(request)
self.mox.VerifyAll()
@@ -1136,7 +945,7 @@ class ImagesTest(test.TestCase):
request = webob.Request.blank(
'/v1.1/images')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1148,7 +957,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/fake/images/detail?name=testname')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.detail(request)
self.mox.VerifyAll()
@@ -1160,7 +969,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/fake/images/detail?status=ACTIVE')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.detail(request)
self.mox.VerifyAll()
@@ -1173,7 +982,7 @@ class ImagesTest(test.TestCase):
request = webob.Request.blank(
'/v1.1/fake/images/detail?property-test=3')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.detail(request)
self.mox.VerifyAll()
@@ -1187,7 +996,7 @@ class ImagesTest(test.TestCase):
request = webob.Request.blank('/v1.1/fake/images/detail?server='
'http://localhost:8774/servers/12')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1200,7 +1009,7 @@ class ImagesTest(test.TestCase):
request = webob.Request.blank('/v1.1/fake/images/detail?changes-since='
'2011-01-24T17:08Z')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1212,7 +1021,7 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/fake/images/detail?type=BASE')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.index(request)
self.mox.VerifyAll()
@@ -1225,7 +1034,7 @@ class ImagesTest(test.TestCase):
request = webob.Request.blank('/v1.1/fake/images/detail?status=ACTIVE&'
'UNSUPPORTEDFILTER=testname')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.detail(request)
self.mox.VerifyAll()
@@ -1237,82 +1046,24 @@ class ImagesTest(test.TestCase):
self.mox.ReplayAll()
request = webob.Request.blank('/v1.1/fake/images/detail')
request.environ['nova.context'] = context
- controller = images.ControllerV11(image_service=image_service)
+ controller = images.Controller(image_service=image_service)
controller.detail(request)
self.mox.VerifyAll()
- def test_get_image_found(self):
- req = webob.Request.blank('/v1.0/images/123')
- app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
- res = req.get_response(app)
- image_meta = json.loads(res.body)['image']
- expected = {'id': 123, 'name': 'public image',
- 'updated': NOW_API_FORMAT,
- 'created': NOW_API_FORMAT, 'status': 'ACTIVE',
- 'progress': 100}
- self.assertDictMatch(image_meta, expected)
-
- def test_get_image_non_existent(self):
- req = webob.Request.blank('/v1.0/images/4242')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 404)
-
- def test_create_image(self):
- body = dict(image=dict(serverId='123', name='Snapshot 1'))
- req = webob.Request.blank('/v1.0/images')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(200, response.status_int)
- image_meta = json.loads(response.body)['image']
- self.assertEqual(123, image_meta['serverId'])
- self.assertEqual('Snapshot 1', image_meta['name'])
-
- def test_create_snapshot_no_name(self):
- """Name is required for snapshots"""
- body = dict(image=dict(serverId='123'))
- req = webob.Request.blank('/v1.0/images')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(400, response.status_int)
-
- def test_create_image_no_server_id(self):
-
- body = dict(image=dict(name='Snapshot 1'))
- req = webob.Request.blank('/v1.0/images')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(400, response.status_int)
-
- def test_create_image_snapshots_disabled(self):
- self.flags(allow_instance_snapshots=False)
- body = dict(image=dict(serverId='123', name='Snapshot 1'))
- req = webob.Request.blank('/v1.0/images')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(400, response.status_int)
-
- def test_generate_alternate(self):
- view = images_view.ViewBuilderV11(1)
+ def test_generate_alternate_link(self):
+ view = images_view.ViewBuilder(1)
generated_url = view.generate_alternate(1)
actual_url = "%s//images/1" % utils.generate_glance_url()
self.assertEqual(generated_url, actual_url)
- def test_delete_image_v1_1(self):
+ def test_delete_image(self):
request = webob.Request.blank('/v1.1/fake/images/124')
request.method = 'DELETE'
app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
response = request.get_response(app)
self.assertEqual(response.status_int, 204)
- def test_delete_image_not_found_v1_1(self):
+ def test_delete_image_not_found(self):
request = webob.Request.blank('/v1.1/fake/images/300')
request.method = 'DELETE'
app = fakes.wsgi_app(fake_auth_context=self._get_fake_context())
diff --git a/nova/tests/api/openstack/test_limits.py b/nova/tests/api/openstack/test_limits.py
index af34f26a1..51a97f920 100644
--- a/nova/tests/api/openstack/test_limits.py
+++ b/nova/tests/api/openstack/test_limits.py
@@ -72,149 +72,15 @@ class BaseLimitTestSuite(unittest.TestCase):
return self.time
-class LimitsControllerV10Test(BaseLimitTestSuite):
+class LimitsControllerTest(BaseLimitTestSuite):
"""
- Tests for `limits.LimitsControllerV10` class.
+ Tests for `limits.LimitsController` class.
"""
def setUp(self):
"""Run before each test."""
BaseLimitTestSuite.setUp(self)
- self.controller = limits.create_resource('1.0')
-
- def _get_index_request(self, accept_header="application/json"):
- """Helper to set routing arguments."""
- request = webob.Request.blank("/")
- request.accept = accept_header
- request.environ["wsgiorg.routing_args"] = (None, {
- "action": "index",
- "controller": "",
- })
- context = nova.context.RequestContext('testuser', 'testproject')
- request.environ["nova.context"] = context
- return request
-
- def _populate_limits(self, request):
- """Put limit info into a request."""
- _limits = [
- limits.Limit("GET", "*", ".*", 10, 60).display(),
- limits.Limit("POST", "*", ".*", 5, 60 * 60).display(),
- ]
- request.environ["nova.limits"] = _limits
- return request
-
- def _setup_absolute_limits(self):
- self.absolute_limits = {
- 'instances': 5,
- 'cores': 8,
- 'ram': 2 ** 13,
- 'volumes': 21,
- 'gigabytes': 34,
- 'metadata_items': 55,
- 'injected_files': 89,
- 'injected_file_content_bytes': 144,
- }
-
- def test_empty_index_json(self):
- """Test getting empty limit details in JSON."""
- request = self._get_index_request()
- response = request.get_response(self.controller)
- expected = {
- "limits": {
- "rate": [],
- "absolute": {},
- },
- }
- body = json.loads(response.body)
- self.assertEqual(expected, body)
-
- def test_index_json(self):
- """Test getting limit details in JSON."""
- request = self._get_index_request()
- request = self._populate_limits(request)
- self._setup_absolute_limits()
- response = request.get_response(self.controller)
- expected = {
- "limits": {
- "rate": [{
- "regex": ".*",
- "resetTime": 0,
- "URI": "*",
- "value": 10,
- "verb": "GET",
- "remaining": 10,
- "unit": "MINUTE",
- },
- {
- "regex": ".*",
- "resetTime": 0,
- "URI": "*",
- "value": 5,
- "verb": "POST",
- "remaining": 5,
- "unit": "HOUR",
- }],
- "absolute": {
- "maxTotalInstances": 5,
- "maxTotalCores": 8,
- "maxTotalRAMSize": 2 ** 13,
- "maxServerMeta": 55,
- "maxImageMeta": 55,
- "maxPersonality": 89,
- "maxPersonalitySize": 144,
- },
- },
- }
- body = json.loads(response.body)
- self.assertEqual(expected, body)
-
- def test_empty_index_xml(self):
- """Test getting limit details in XML."""
- request = self._get_index_request("application/xml")
- response = request.get_response(self.controller)
-
- expected = minidom.parseString("""
- <limits xmlns="http://docs.rackspacecloud.com/servers/api/v1.0">
- <rate/>
- <absolute/>
- </limits>
- """.replace(" ", "").replace("\n", ""))
-
- body = minidom.parseString(response.body.replace(" ", ""))
-
- self.assertEqual(expected.toxml(), body.toxml())
-
- def test_index_xml(self):
- """Test getting limit details in XML."""
- request = self._get_index_request("application/xml")
- request = self._populate_limits(request)
- response = request.get_response(self.controller)
-
- expected = minidom.parseString("""
- <limits xmlns="http://docs.rackspacecloud.com/servers/api/v1.0">
- <rate>
- <limit URI="*" regex=".*" remaining="10" resetTime="0"
- unit="MINUTE" value="10" verb="GET"/>
- <limit URI="*" regex=".*" remaining="5" resetTime="0"
- unit="HOUR" value="5" verb="POST"/>
- </rate>
- <absolute/>
- </limits>
- """.replace(" ", "").replace("\n", ""))
- body = minidom.parseString(response.body.replace(" ", ""))
-
- self.assertEqual(expected.toxml(), body.toxml())
-
-
-class LimitsControllerV11Test(BaseLimitTestSuite):
- """
- Tests for `limits.LimitsControllerV11` class.
- """
-
- def setUp(self):
- """Run before each test."""
- BaseLimitTestSuite.setUp(self)
- self.controller = limits.create_resource('1.1')
+ self.controller = limits.create_resource()
self.maxDiff = None
def _get_index_request(self, accept_header="application/json"):
@@ -915,10 +781,10 @@ class WsgiLimiterProxyTest(BaseLimitTestSuite):
self.assertEqual((delay, error), expected)
-class LimitsViewBuilderV11Test(test.TestCase):
+class LimitsViewBuilderTest(test.TestCase):
def setUp(self):
- self.view_builder = views.limits.ViewBuilderV11()
+ self.view_builder = views.limits.ViewBuilder()
self.rate_limits = [{"URI": "*",
"regex": ".*",
"value": 10,
diff --git a/nova/tests/api/openstack/test_server_actions.py b/nova/tests/api/openstack/test_server_actions.py
index d72d917f3..516a95094 100644
--- a/nova/tests/api/openstack/test_server_actions.py
+++ b/nova/tests/api/openstack/test_server_actions.py
@@ -117,368 +117,7 @@ class ServerActionsTest(test.TestCase):
def setUp(self):
self.maxDiff = None
super(ServerActionsTest, self).setUp()
- self.flags(verbose=True)
- self.stubs = stubout.StubOutForTesting()
- fakes.stub_out_auth(self.stubs)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- self.stubs.Set(nova.db.api, 'instance_update', instance_update)
-
- self.webreq = common.webob_factory('/v1.0/servers')
-
- def tearDown(self):
- self.stubs.UnsetAll()
-
- def test_server_change_password(self):
- body = {'changePassword': {'adminPass': '1234pass'}}
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.content_type = 'application/json'
- req.body = json.dumps(body)
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_server_change_password_xml(self):
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.content_type = 'application/xml'
- req.body = '<changePassword adminPass="1234pass">'
-# res = req.get_response(fakes.wsgi_app())
-# self.assertEqual(res.status_int, 501)
-
- def test_server_reboot(self):
- body = dict(server=dict(
- name='server_test', imageId=2, flavorId=2, metadata={},
- personality={}))
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.content_type = 'application/json'
- req.body = json.dumps(body)
- res = req.get_response(fakes.wsgi_app())
-
- def test_server_rebuild_accepted(self):
- body = {
- "rebuild": {
- "imageId": 2,
- },
- }
-
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.content_type = 'application/json'
- req.body = json.dumps(body)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 202)
- self.assertEqual(res.body, "")
-
- def test_server_rebuild_rejected_when_building(self):
- body = {
- "rebuild": {
- "imageId": 2,
- },
- }
-
- state = vm_states.BUILDING
- new_return_server = return_server_with_state(state)
- self.stubs.Set(nova.db.api, 'instance_get', new_return_server)
- self.stubs.Set(nova.db, 'instance_get_by_uuid',
- return_server_with_uuid_and_state(state))
-
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.content_type = 'application/json'
- req.body = json.dumps(body)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 409)
-
- def test_server_rebuild_bad_entity(self):
- body = {
- "rebuild": {
- },
- }
-
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.content_type = 'application/json'
- req.body = json.dumps(body)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_resize_server(self):
- req = self.webreq('/1/action', 'POST', dict(resize=dict(flavorId=3)))
-
- self.resize_called = False
-
- def resize_mock(*args):
- self.resize_called = True
-
- self.stubs.Set(nova.compute.api.API, 'resize', resize_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 202)
- self.assertEqual(self.resize_called, True)
-
- def test_resize_bad_flavor_fails(self):
- req = self.webreq('/1/action', 'POST', dict(resize=dict(derp=3)))
-
- self.resize_called = False
-
- def resize_mock(*args):
- self.resize_called = True
-
- self.stubs.Set(nova.compute.api.API, 'resize', resize_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
- self.assertEqual(self.resize_called, False)
-
- def test_resize_raises_fails(self):
- req = self.webreq('/1/action', 'POST', dict(resize=dict(flavorId=3)))
-
- def resize_mock(*args):
- raise Exception('hurr durr')
-
- self.stubs.Set(nova.compute.api.API, 'resize', resize_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 500)
-
- def test_confirm_resize_server(self):
- req = self.webreq('/1/action', 'POST', dict(confirmResize=None))
-
- self.resize_called = False
-
- def confirm_resize_mock(*args):
- self.resize_called = True
-
- self.stubs.Set(nova.compute.api.API, 'confirm_resize',
- confirm_resize_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 204)
- self.assertEqual(self.resize_called, True)
-
- def test_confirm_resize_server_fails(self):
- req = self.webreq('/1/action', 'POST', dict(confirmResize=None))
-
- def confirm_resize_mock(*args):
- raise Exception('hurr durr')
-
- self.stubs.Set(nova.compute.api.API, 'confirm_resize',
- confirm_resize_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_confirm_resize_migration_not_found(self):
- req = self.webreq('/1/action', 'POST', dict(confirmResize=None))
-
- def confirm_resize_mock(*args):
- raise exception.MigrationNotFoundByStatus(instance_id=1,
- status='finished')
-
- self.stubs.Set(nova.compute.api.API,
- 'confirm_resize',
- confirm_resize_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_revert_resize_server(self):
- req = self.webreq('/1/action', 'POST', dict(revertResize=None))
-
- self.resize_called = False
-
- def revert_resize_mock(*args):
- self.resize_called = True
-
- self.stubs.Set(nova.compute.api.API, 'revert_resize',
- revert_resize_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 202)
- self.assertEqual(self.resize_called, True)
-
- def test_revert_resize_server_fails(self):
- req = self.webreq('/1/action', 'POST', dict(revertResize=None))
-
- def revert_resize_mock(*args):
- raise Exception('hurr durr')
-
- self.stubs.Set(nova.compute.api.API, 'revert_resize',
- revert_resize_mock)
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_revert_resize_migration_not_found(self):
- req = self.webreq('/1/action', 'POST', dict(revertResize=None))
-
- def revert_resize_mock(*args):
- raise exception.MigrationNotFoundByStatus(instance_id=1,
- status='finished')
-
- self.stubs.Set(nova.compute.api.API,
- 'revert_resize',
- revert_resize_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_create_backup(self):
- """The happy path for creating backups"""
- self.flags(allow_admin_api=True)
-
- body = {
- 'createBackup': {
- 'name': 'Backup 1',
- 'backup_type': 'daily',
- 'rotation': 1,
- },
- }
-
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(202, response.status_int)
- self.assertTrue(response.headers['Location'])
-
- def test_create_backup_admin_api_off(self):
- """The happy path for creating backups"""
- self.flags(allow_admin_api=False)
-
- body = {
- 'createBackup': {
- 'name': 'Backup 1',
- 'backup_type': 'daily',
- 'rotation': 1,
- },
- }
-
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(400, response.status_int)
-
- def test_create_backup_with_metadata(self):
- self.flags(allow_admin_api=True)
-
- body = {
- 'createBackup': {
- 'name': 'Backup 1',
- 'backup_type': 'daily',
- 'rotation': 1,
- 'metadata': {'123': 'asdf'},
- },
- }
-
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(202, response.status_int)
- self.assertTrue(response.headers['Location'])
-
- def test_create_backup_with_too_much_metadata(self):
- self.flags(allow_admin_api=True)
-
- body = {
- 'createBackup': {
- 'name': 'Backup 1',
- 'backup_type': 'daily',
- 'rotation': 1,
- 'metadata': {'123': 'asdf'},
- },
- }
- for num in range(FLAGS.quota_metadata_items + 1):
- body['createBackup']['metadata']['foo%i' % num] = "bar"
- req = webob.Request.blank('/v1.0/servers/1/action')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(413, response.status_int)
-
- def test_create_backup_no_name(self):
- """Name is required for backups"""
- self.flags(allow_admin_api=True)
-
- body = {
- 'createBackup': {
- 'backup_type': 'daily',
- 'rotation': 1,
- },
- }
-
- req = webob.Request.blank('/v1.0/images')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(400, response.status_int)
-
- def test_create_backup_no_rotation(self):
- """Rotation is required for backup requests"""
- self.flags(allow_admin_api=True)
-
- body = {
- 'createBackup': {
- 'name': 'Backup 1',
- 'backup_type': 'daily',
- },
- }
-
- req = webob.Request.blank('/v1.0/images')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
-
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(400, response.status_int)
-
- def test_create_backup_no_backup_type(self):
- """Backup Type (daily or weekly) is required for backup requests"""
- self.flags(allow_admin_api=True)
-
- body = {
- 'createBackup': {
- 'name': 'Backup 1',
- 'rotation': 1,
- },
- }
- req = webob.Request.blank('/v1.0/images')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
-
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(400, response.status_int)
-
- def test_create_backup_bad_entity(self):
- self.flags(allow_admin_api=True)
-
- body = {'createBackup': 'go'}
- req = webob.Request.blank('/v1.0/images')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
-
- response = req.get_response(fakes.wsgi_app())
- self.assertEqual(400, response.status_int)
-
-
-class ServerActionsTestV11(test.TestCase):
-
- def setUp(self):
- self.maxDiff = None
- super(ServerActionsTestV11, self).setUp()
self.stubs = stubout.StubOutForTesting()
fakes.stub_out_auth(self.stubs)
self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
@@ -851,6 +490,42 @@ class ServerActionsTestV11(test.TestCase):
self.assertEqual(res.status_int, 204)
self.assertEqual(self.confirm_resize_called, True)
+ def test_confirm_resize_migration_not_found(self):
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.content_type = 'application/json'
+ req.method = 'POST'
+ body_dict = dict(confirmResize=None)
+ req.body = json.dumps(body_dict)
+
+ def confirm_resize_mock(*args):
+ raise exception.MigrationNotFoundByStatus(instance_id=1,
+ status='finished')
+
+ self.stubs.Set(nova.compute.api.API,
+ 'confirm_resize',
+ confirm_resize_mock)
+
+ res = req.get_response(fakes.wsgi_app())
+ self.assertEqual(res.status_int, 400)
+
+ def test_revert_resize_migration_not_found(self):
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.content_type = 'application/json'
+ req.method = 'POST'
+ body_dict = dict(revertResize=None)
+ req.body = json.dumps(body_dict)
+
+ def revert_resize_mock(*args):
+ raise exception.MigrationNotFoundByStatus(instance_id=1,
+ status='finished')
+
+ self.stubs.Set(nova.compute.api.API,
+ 'revert_resize',
+ revert_resize_mock)
+
+ res = req.get_response(fakes.wsgi_app())
+ self.assertEqual(res.status_int, 400)
+
def test_revert_resize_server(self):
req = webob.Request.blank('/v1.1/fake/servers/1/action')
req.content_type = 'application/json'
@@ -978,11 +653,137 @@ class ServerActionsTestV11(test.TestCase):
self.assertEqual(202, response.status_int)
self.assertTrue(response.headers['Location'])
+ def test_create_backup_admin_api_off(self):
+ """The happy path for creating backups"""
+ self.flags(allow_admin_api=False)
+
+ body = {
+ 'createBackup': {
+ 'name': 'Backup 1',
+ 'backup_type': 'daily',
+ 'rotation': 1,
+ },
+ }
+
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.method = 'POST'
+ req.body = json.dumps(body)
+ req.headers["content-type"] = "application/json"
+ response = req.get_response(fakes.wsgi_app())
+ self.assertEqual(400, response.status_int)
+
+ def test_create_backup_with_metadata(self):
+ self.flags(allow_admin_api=True)
+
+ body = {
+ 'createBackup': {
+ 'name': 'Backup 1',
+ 'backup_type': 'daily',
+ 'rotation': 1,
+ 'metadata': {'123': 'asdf'},
+ },
+ }
+
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.method = 'POST'
+ req.body = json.dumps(body)
+ req.headers["content-type"] = "application/json"
+ response = req.get_response(fakes.wsgi_app())
+ self.assertEqual(202, response.status_int)
+ self.assertTrue(response.headers['Location'])
+
+ def test_create_backup_with_too_much_metadata(self):
+ self.flags(allow_admin_api=True)
+
+ body = {
+ 'createBackup': {
+ 'name': 'Backup 1',
+ 'backup_type': 'daily',
+ 'rotation': 1,
+ 'metadata': {'123': 'asdf'},
+ },
+ }
+ for num in range(FLAGS.quota_metadata_items + 1):
+ body['createBackup']['metadata']['foo%i' % num] = "bar"
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.method = 'POST'
+ req.body = json.dumps(body)
+ req.headers["content-type"] = "application/json"
+ response = req.get_response(fakes.wsgi_app())
+ self.assertEqual(413, response.status_int)
+
+ def test_create_backup_no_name(self):
+ """Name is required for backups"""
+ self.flags(allow_admin_api=True)
+
+ body = {
+ 'createBackup': {
+ 'backup_type': 'daily',
+ 'rotation': 1,
+ },
+ }
+
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.method = 'POST'
+ req.body = json.dumps(body)
+ req.headers["content-type"] = "application/json"
+ response = req.get_response(fakes.wsgi_app())
+ self.assertEqual(400, response.status_int)
+
+ def test_create_backup_no_rotation(self):
+ """Rotation is required for backup requests"""
+ self.flags(allow_admin_api=True)
+
+ body = {
+ 'createBackup': {
+ 'name': 'Backup 1',
+ 'backup_type': 'daily',
+ },
+ }
+
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.method = 'POST'
+ req.body = json.dumps(body)
+ req.headers["content-type"] = "application/json"
+
+ response = req.get_response(fakes.wsgi_app())
+ self.assertEqual(400, response.status_int)
+
+ def test_create_backup_no_backup_type(self):
+ """Backup Type (daily or weekly) is required for backup requests"""
+ self.flags(allow_admin_api=True)
+
+ body = {
+ 'createBackup': {
+ 'name': 'Backup 1',
+ 'rotation': 1,
+ },
+ }
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.method = 'POST'
+ req.body = json.dumps(body)
+ req.headers["content-type"] = "application/json"
+
+ response = req.get_response(fakes.wsgi_app())
+ self.assertEqual(400, response.status_int)
+
+ def test_create_backup_bad_entity(self):
+ self.flags(allow_admin_api=True)
+
+ body = {'createBackup': 'go'}
+ req = webob.Request.blank('/v1.1/fake/servers/1/action')
+ req.method = 'POST'
+ req.body = json.dumps(body)
+ req.headers["content-type"] = "application/json"
+
+ response = req.get_response(fakes.wsgi_app())
+ self.assertEqual(400, response.status_int)
+
-class TestServerActionXMLDeserializerV11(test.TestCase):
+class TestServerActionXMLDeserializer(test.TestCase):
def setUp(self):
- self.deserializer = servers.ServerXMLDeserializerV11()
+ self.deserializer = servers.ServerXMLDeserializer()
def tearDown(self):
pass
diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py
index 3be082c52..ad603b382 100644
--- a/nova/tests/api/openstack/test_servers.py
+++ b/nova/tests/api/openstack/test_servers.py
@@ -245,16 +245,8 @@ class ServersTest(test.TestCase):
self.stubs.Set(nova.compute.API, "get_diagnostics", fake_compute_api)
self.stubs.Set(nova.compute.API, "get_actions", fake_compute_api)
- self.webreq = common.webob_factory('/v1.0/servers')
self.config_drive = None
- def test_get_server_by_id(self):
- req = webob.Request.blank('/v1.0/servers/1')
- res = req.get_response(fakes.wsgi_app())
- res_dict = json.loads(res.body)
- self.assertEqual(res_dict['server']['id'], 1)
- self.assertEqual(res_dict['server']['name'], 'server1')
-
def test_get_server_by_uuid(self):
"""
The steps involved with resolving a UUID are pretty complicated;
@@ -278,14 +270,13 @@ class ServersTest(test.TestCase):
So, counterintuitively, we call `get` twice on the `show` command.
"""
- req = webob.Request.blank('/v1.0/servers/%s' % FAKE_UUID)
+ req = webob.Request.blank('/v1.1/fake/servers/%s' % FAKE_UUID)
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
self.assertEqual(res_dict['server']['id'], 1)
self.assertEqual(res_dict['server']['uuid'], FAKE_UUID)
- self.assertEqual(res_dict['server']['name'], 'server1')
- def test_get_server_by_id_v1_1(self):
+ def test_get_server_by_id(self):
image_bookmark = "http://localhost/fake/images/10"
flavor_bookmark = "http://localhost/fake/flavors/1"
public_ip = '192.168.0.3'
@@ -378,7 +369,7 @@ class ServersTest(test.TestCase):
self.assertDictMatch(res_dict, expected_server)
- def test_get_server_by_id_v1_1_xml(self):
+ def test_get_server_by_id_xml(self):
image_bookmark = "http://localhost/fake/images/10"
flavor_bookmark = "http://localhost/fake/flavors/1"
public_ip = '192.168.0.3'
@@ -487,7 +478,7 @@ class ServersTest(test.TestCase):
links = root.xpath('atom:link', namespaces=XPATH_NS)
self.assertTrue(common.compare_links(links, expected['links']))
- def test_get_server_with_active_status_by_id_v1_1(self):
+ def test_get_server_with_active_status_by_id(self):
image_bookmark = "http://localhost/fake/images/10"
flavor_bookmark = "http://localhost/fake/flavors/1"
private_ip = "192.168.0.3"
@@ -582,7 +573,7 @@ class ServersTest(test.TestCase):
self.assertDictMatch(res_dict, expected_server)
- def test_get_server_with_id_image_ref_by_id_v1_1(self):
+ def test_get_server_with_id_image_ref_by_id(self):
image_ref = "10"
image_bookmark = "http://localhost/fake/images/10"
flavor_id = "1"
@@ -680,121 +671,8 @@ class ServersTest(test.TestCase):
self.assertDictMatch(res_dict, expected_server)
- def test_get_server_by_id_with_addresses_xml(self):
- private = '192.168.1.2'
- publics = ['1.2.3.4']
- fakes.stub_out_nw_api(self.stubs, private=private, publics=publics)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- req = webob.Request.blank('/v1.0/servers/1')
- req.headers['Accept'] = 'application/xml'
- res = req.get_response(fakes.wsgi_app())
- dom = minidom.parseString(res.body)
- server = dom.childNodes[0]
- self.assertEquals(server.nodeName, 'server')
- self.assertEquals(server.getAttribute('id'), '1')
- self.assertEquals(server.getAttribute('name'), 'server1')
- (public_elem,) = server.getElementsByTagName('public')
- (ip,) = public_elem.getElementsByTagName('ip')
- self.assertEquals(ip.getAttribute('addr'), publics[0])
- (private_elem,) = server.getElementsByTagName('private')
- (ip,) = private_elem.getElementsByTagName('ip')
- self.assertEquals(ip.getAttribute('addr'), private)
-
- def test_get_server_by_id_with_addresses(self):
- private = '192.168.1.2'
- publics = ['1.2.3.4']
- fakes.stub_out_nw_api(self.stubs, private=private, publics=publics)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- req = webob.Request.blank('/v1.0/servers/1')
- res = req.get_response(fakes.wsgi_app())
- res_dict = json.loads(res.body)
- self.assertEqual(res_dict['server']['id'], 1)
- self.assertEqual(res_dict['server']['name'], 'server1')
- addresses = res_dict['server']['addresses']
- self.assertEqual(len(addresses["public"]), len(publics))
- self.assertEqual(addresses["public"][0], publics[0])
- self.assertEqual(len(addresses["private"]), 1)
- self.assertEqual(addresses["private"][0], private)
-
- def test_get_server_addresses_v1_0(self):
- private = '192.168.1.2'
- publics = ['1.2.3.4']
- fakes.stub_out_nw_api(self.stubs, private=private, publics=publics)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- req = webob.Request.blank('/v1.0/servers/1/ips')
- res = req.get_response(fakes.wsgi_app())
- res_dict = json.loads(res.body)
- self.assertEqual(res_dict, {
- 'addresses': {'public': publics, 'private': [private]}})
-
- def test_get_server_addresses_xml_v1_0(self):
- private = '192.168.1.2'
- publics = ['1.2.3.4']
- fakes.stub_out_nw_api(self.stubs, private=private, publics=publics)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- req = webob.Request.blank('/v1.0/servers/1/ips')
- req.headers['Accept'] = 'application/xml'
- res = req.get_response(fakes.wsgi_app())
- dom = minidom.parseString(res.body)
- (addresses,) = dom.childNodes
- self.assertEquals(addresses.nodeName, 'addresses')
- (public_elem,) = addresses.getElementsByTagName('public')
- (ip,) = public_elem.getElementsByTagName('ip')
- self.assertEquals(ip.getAttribute('addr'), publics[0])
- (private_elem,) = addresses.getElementsByTagName('private')
- (ip,) = private_elem.getElementsByTagName('ip')
- self.assertEquals(ip.getAttribute('addr'), private)
-
- def test_get_server_addresses_public_v1_0(self):
- private = '192.168.1.2'
- publics = ['1.2.3.4']
- fakes.stub_out_nw_api(self.stubs, private=private, publics=publics)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- req = webob.Request.blank('/v1.0/servers/1/ips/public')
- res = req.get_response(fakes.wsgi_app())
- res_dict = json.loads(res.body)
- self.assertEqual(res_dict, {'public': publics})
-
- def test_get_server_addresses_private_v1_0(self):
- private = '192.168.1.2'
- publics = ['1.2.3.4']
- fakes.stub_out_nw_api(self.stubs, private=private, publics=publics)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- req = webob.Request.blank('/v1.0/servers/1/ips/private')
- res = req.get_response(fakes.wsgi_app())
- res_dict = json.loads(res.body)
- self.assertEqual(res_dict, {'private': [private]})
-
- def test_get_server_addresses_public_xml_v1_0(self):
- private = '192.168.1.2'
- publics = ['1.2.3.4']
- fakes.stub_out_nw_api(self.stubs, private=private, publics=publics)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- req = webob.Request.blank('/v1.0/servers/1/ips/public')
- req.headers['Accept'] = 'application/xml'
- res = req.get_response(fakes.wsgi_app())
- dom = minidom.parseString(res.body)
- (public_node,) = dom.childNodes
- self.assertEquals(public_node.nodeName, 'public')
- (ip,) = public_node.getElementsByTagName('ip')
- self.assertEquals(ip.getAttribute('addr'), publics[0])
-
- def test_get_server_addresses_private_xml_v1_0(self):
- private = '192.168.1.2'
- publics = ['1.2.3.4']
- fakes.stub_out_nw_api(self.stubs, private=private, publics=publics)
- self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id)
- req = webob.Request.blank('/v1.0/servers/1/ips/private')
- req.headers['Accept'] = 'application/xml'
- res = req.get_response(fakes.wsgi_app())
- dom = minidom.parseString(res.body)
- (private_node,) = dom.childNodes
- self.assertEquals(private_node.nodeName, 'private')
- (ip,) = private_node.getElementsByTagName('ip')
- self.assertEquals(ip.getAttribute('addr'), private)
-
# NOTE(bcwaldon): lp830817
- def test_get_server_by_id_malformed_networks_v1_1(self):
+ def test_get_server_by_id_malformed_networks(self):
nw_info = [(None, None), (None, None)]
@@ -817,7 +695,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res_dict['server']['id'], 1)
self.assertEqual(res_dict['server']['name'], 'server1')
- def test_get_server_by_id_with_addresses_v1_1(self):
+ def test_get_server_by_id_with_addresses(self):
self.flags(use_ipv6=True)
nw_info = [(None, {'label': 'network_1',
'ips': [{'ip': '192.168.0.3'},
@@ -864,7 +742,7 @@ class ServersTest(test.TestCase):
for ip in expected[network]:
self.assertTrue(ip in addresses[network])
- def test_get_server_by_id_with_addresses_v1_1_ipv6_disabled(self):
+ def test_get_server_by_id_with_addresses_ipv6_disabled(self):
self.flags(use_ipv6=False)
nw_info = [(None, {'label': 'network_1',
'ips': [{'ip': '192.168.0.3'},
@@ -911,7 +789,7 @@ class ServersTest(test.TestCase):
self.assertTrue(ip['version'] != 6)
self.assertTrue(ip in addresses[network])
- def test_get_server_addresses_v1_1(self):
+ def test_get_server_addresses(self):
self.flags(use_ipv6=True)
nw_info = [(None, {'label': 'network_1',
'ips': [{'ip': '192.168.0.3'},
@@ -961,7 +839,7 @@ class ServersTest(test.TestCase):
for ip in expected['addresses'][network]:
self.assertTrue(ip in res_dict['addresses'][network])
- def test_get_server_addresses_single_network_v1_1(self):
+ def test_get_server_addresses_single_network(self):
self.flags(use_ipv6=True)
nw_info = [(None, {'label': 'network_1',
'ips': [{'ip': '192.168.0.3'},
@@ -1002,12 +880,12 @@ class ServersTest(test.TestCase):
for ip in expected['network_2']:
self.assertTrue(ip in res_dict['network_2'])
- def test_get_server_addresses_nonexistant_network_v1_1(self):
+ def test_get_server_addresses_nonexistant_network(self):
req = webob.Request.blank('/v1.1/fake/servers/1/ips/network_0')
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
- def test_get_server_addresses_nonexistant_server_v1_1(self):
+ def test_get_server_addresses_nonexistant_server(self):
def fake(*args, **kwargs):
return []
@@ -1020,25 +898,12 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
- def test_get_server_list(self):
- req = webob.Request.blank('/v1.0/servers')
- res = req.get_response(fakes.wsgi_app())
- res_dict = json.loads(res.body)
-
- self.assertEqual(len(res_dict['servers']), 5)
- i = 0
- for s in res_dict['servers']:
- self.assertEqual(s['id'], i)
- self.assertEqual(s['name'], 'server%d' % i)
- self.assertEqual(s.get('imageId', None), None)
- i += 1
-
def test_get_server_list_with_reservation_id(self):
self.stubs.Set(nova.db.api, 'instance_get_all_by_reservation',
return_servers_by_reservation)
self.stubs.Set(nova.scheduler.api, 'call_zone_method',
return_servers_from_child_zones)
- req = webob.Request.blank('/v1.0/servers?reservation_id=foo')
+ req = webob.Request.blank('/v1.1/fake/servers?reservation_id=foo')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -1055,7 +920,8 @@ class ServersTest(test.TestCase):
return_servers_by_reservation_empty)
self.stubs.Set(nova.scheduler.api, 'call_zone_method',
return_servers_from_child_zones_empty)
- req = webob.Request.blank('/v1.0/servers/detail?reservation_id=foo')
+ req = webob.Request.blank('/v1.1/fake/servers/detail?'
+ 'reservation_id=foo')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -1072,7 +938,8 @@ class ServersTest(test.TestCase):
return_servers_by_reservation)
self.stubs.Set(nova.scheduler.api, 'call_zone_method',
return_servers_from_child_zones)
- req = webob.Request.blank('/v1.0/servers/detail?reservation_id=foo')
+ req = webob.Request.blank('/v1.1/fake/servers/detail?'
+ 'reservation_id=foo')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -1084,7 +951,7 @@ class ServersTest(test.TestCase):
self.assertEqual(s.get('name'), 'server%d' % i)
i += 1
- def test_get_server_list_v1_1(self):
+ def test_get_server_list(self):
req = webob.Request.blank('/v1.1/fake/servers')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -1109,17 +976,6 @@ class ServersTest(test.TestCase):
self.assertEqual(s['links'], expected_links)
def test_get_servers_with_limit(self):
- req = webob.Request.blank('/v1.0/servers?limit=3')
- res = req.get_response(fakes.wsgi_app())
- servers = json.loads(res.body)['servers']
- self.assertEqual([s['id'] for s in servers], [0, 1, 2])
-
- req = webob.Request.blank('/v1.0/servers?limit=aaa')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
- self.assertTrue('limit' in res.body)
-
- def test_get_servers_with_limit_v1_1(self):
req = webob.Request.blank('/v1.1/fake/servers?limit=3')
res = req.get_response(fakes.wsgi_app())
servers = json.loads(res.body)['servers']
@@ -1137,7 +993,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res.status_int, 400)
self.assertTrue('limit' in res.body)
- def test_get_server_details_with_limit_v1_1(self):
+ def test_get_server_details_with_limit(self):
req = webob.Request.blank('/v1.1/fake/servers/detail?limit=3')
res = req.get_response(fakes.wsgi_app())
servers = json.loads(res.body)['servers']
@@ -1155,7 +1011,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res.status_int, 400)
self.assertTrue('limit' in res.body)
- def test_get_server_details_with_limit_and_other_params_v1_1(self):
+ def test_get_server_details_with_limit_and_other_params(self):
req = webob.Request.blank('/v1.1/fake/servers/detail?limit=3&blah=2:t')
res = req.get_response(fakes.wsgi_app())
servers = json.loads(res.body)['servers']
@@ -1174,41 +1030,18 @@ class ServersTest(test.TestCase):
self.assertEqual(res.status_int, 400)
self.assertTrue('limit' in res.body)
- def test_get_servers_with_too_big_limit_v1_1(self):
+ def test_get_servers_with_too_big_limit(self):
req = webob.Request.blank('/v1.1/fake/servers?limit=30')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
self.assertTrue('servers_links' not in res_dict)
- def test_get_servers_with_offset(self):
- req = webob.Request.blank('/v1.0/servers?offset=2')
- res = req.get_response(fakes.wsgi_app())
- servers = json.loads(res.body)['servers']
- self.assertEqual([s['id'] for s in servers], [2, 3, 4])
-
- req = webob.Request.blank('/v1.0/servers?offset=aaa')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
- self.assertTrue('offset' in res.body)
-
- def test_get_servers_with_limit_and_offset(self):
- req = webob.Request.blank('/v1.0/servers?limit=2&offset=1')
- res = req.get_response(fakes.wsgi_app())
- servers = json.loads(res.body)['servers']
- self.assertEqual([s['id'] for s in servers], [1, 2])
-
def test_get_servers_with_bad_limit(self):
- req = webob.Request.blank('/v1.0/servers?limit=asdf&offset=1')
+ req = webob.Request.blank('/v1.1/fake/servers?limit=asdf&offset=1')
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
self.assertTrue(res.body.find('limit param') > -1)
- def test_get_servers_with_bad_offset(self):
- req = webob.Request.blank('/v1.0/servers?limit=2&offset=asdf')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
- self.assertTrue(res.body.find('offset param') > -1)
-
def test_get_servers_with_marker(self):
req = webob.Request.blank('/v1.1/fake/servers?marker=2')
res = req.get_response(fakes.wsgi_app())
@@ -1227,21 +1060,20 @@ class ServersTest(test.TestCase):
self.assertEqual(res.status_int, 400)
self.assertTrue(res.body.find('marker param') > -1)
- def test_get_servers_with_bad_option_v1_0(self):
- # 1.0 API ignores unknown options
+ def test_get_servers_with_bad_option(self):
def fake_get_all(compute_self, context, search_opts=None):
return [stub_instance(100)]
self.stubs.Set(nova.compute.API, 'get_all', fake_get_all)
- req = webob.Request.blank('/v1.0/servers?unknownoption=whee')
+ req = webob.Request.blank('/v1.1/fake/servers?unknownoption=whee')
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 200)
servers = json.loads(res.body)['servers']
self.assertEqual(len(servers), 1)
self.assertEqual(servers[0]['id'], 100)
- def test_get_servers_with_bad_option_v1_1(self):
+ def test_get_servers_with_bad_option(self):
# 1.1 API also ignores unknown options
def fake_get_all(compute_self, context, search_opts=None):
return [stub_instance(100)]
@@ -1255,7 +1087,7 @@ class ServersTest(test.TestCase):
self.assertEqual(len(servers), 1)
self.assertEqual(servers[0]['id'], 100)
- def test_get_servers_allows_image_v1_1(self):
+ def test_get_servers_allows_image(self):
def fake_get_all(compute_self, context, search_opts=None):
self.assertNotEqual(search_opts, None)
self.assertTrue('image' in search_opts)
@@ -1294,7 +1126,7 @@ class ServersTest(test.TestCase):
# Failure in fake_get_all returns non 200 status code
self.assertEqual(res.status_int, 200)
- def test_get_servers_allows_flavor_v1_1(self):
+ def test_get_servers_allows_flavor(self):
def fake_get_all(compute_self, context, search_opts=None):
self.assertNotEqual(search_opts, None)
self.assertTrue('flavor' in search_opts)
@@ -1314,7 +1146,7 @@ class ServersTest(test.TestCase):
self.assertEqual(len(servers), 1)
self.assertEqual(servers[0]['id'], 100)
- def test_get_servers_allows_status_v1_1(self):
+ def test_get_servers_allows_status(self):
def fake_get_all(compute_self, context, search_opts=None):
self.assertNotEqual(search_opts, None)
self.assertTrue('vm_state' in search_opts)
@@ -1333,7 +1165,7 @@ class ServersTest(test.TestCase):
self.assertEqual(len(servers), 1)
self.assertEqual(servers[0]['id'], 100)
- def test_get_servers_invalid_status_v1_1(self):
+ def test_get_servers_invalid_status(self):
"""Test getting servers by invalid status"""
self.flags(allow_admin_api=False)
req = webob.Request.blank('/v1.1/fake/servers?status=running')
@@ -1341,7 +1173,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res.status_int, 400)
self.assertTrue(res.body.find('Invalid server status') > -1)
- def test_get_servers_allows_name_v1_1(self):
+ def test_get_servers_allows_name(self):
def fake_get_all(compute_self, context, search_opts=None):
self.assertNotEqual(search_opts, None)
self.assertTrue('name' in search_opts)
@@ -1360,7 +1192,7 @@ class ServersTest(test.TestCase):
self.assertEqual(len(servers), 1)
self.assertEqual(servers[0]['id'], 100)
- def test_get_servers_allows_changes_since_v1_1(self):
+ def test_get_servers_allows_changes_since(self):
def fake_get_all(compute_self, context, search_opts=None):
self.assertNotEqual(search_opts, None)
self.assertTrue('changes-since' in search_opts)
@@ -1379,7 +1211,7 @@ class ServersTest(test.TestCase):
self.assertEqual(len(servers), 1)
self.assertEqual(servers[0]['id'], 100)
- def test_get_servers_allows_changes_since_bad_value_v1_1(self):
+ def test_get_servers_allows_changes_since_bad_value(self):
params = 'changes-since=asdf'
req = webob.Request.blank('/v1.1/fake/servers?%s' % params)
res = req.get_response(fakes.wsgi_app())
@@ -1486,7 +1318,7 @@ class ServersTest(test.TestCase):
self.assertEqual(len(servers), 1)
self.assertEqual(servers[0]['id'], 100)
- def test_get_servers_admin_allows_ip_v1_1(self):
+ def test_get_servers_admin_allows_ip(self):
"""Test getting servers by ip with admin_api enabled and
admin context
"""
@@ -1512,7 +1344,7 @@ class ServersTest(test.TestCase):
self.assertEqual(len(servers), 1)
self.assertEqual(servers[0]['id'], 100)
- def test_get_servers_admin_allows_ip6_v1_1(self):
+ def test_get_servers_admin_allows_ip6(self):
"""Test getting servers by ip6 with admin_api enabled and
admin context
"""
@@ -1622,10 +1454,10 @@ class ServersTest(test.TestCase):
self._setup_for_create_instance()
body = dict(server=dict(
- name='server_test', imageId=3, flavorId=2,
+ name='server_test', imageRef=3, flavorRef=2,
metadata={'hello': 'world', 'open': 'stack'},
personality={}))
- req = webob.Request.blank('/v1.0/servers')
+ req = webob.Request.blank('/v1.1/fake/servers')
req.method = 'POST'
req.body = json.dumps(body)
req.headers["content-type"] = "application/json"
@@ -1637,8 +1469,8 @@ class ServersTest(test.TestCase):
self.assertEqual(FLAGS.password_length, len(server['adminPass']))
self.assertEqual('server_test', server['name'])
self.assertEqual(1, server['id'])
- self.assertEqual(2, server['flavorId'])
- self.assertEqual(3, server['imageId'])
+ self.assertEqual('2', server['flavor']['id'])
+ self.assertEqual('3', server['image']['id'])
self.assertEqual(FAKE_UUID, server['uuid'])
def test_create_instance(self):
@@ -1783,29 +1615,7 @@ class ServersTest(test.TestCase):
fakes.stub_out_key_pair_funcs(self.stubs, have_key_pair=False)
self._test_create_instance()
- def test_create_instance_no_name(self):
- self._setup_for_create_instance()
-
- body = {
- 'server': {
- 'imageId': 3,
- 'flavorId': 1,
- 'metadata': {
- 'hello': 'world',
- 'open': 'stack',
- },
- 'personality': {},
- },
- }
-
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_create_image_conflict_snapshot_v1_1(self):
+ def test_create_image_conflict_snapshot(self):
"""Attempt to create image when image is already being created."""
def snapshot(*args, **kwargs):
raise exception.InstanceSnapshotting
@@ -1822,65 +1632,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 409)
- def test_create_instance_nonstring_name(self):
- self._setup_for_create_instance()
-
- body = {
- 'server': {
- 'name': 12,
- 'imageId': 3,
- 'flavorId': 1,
- 'metadata': {
- 'hello': 'world',
- 'open': 'stack',
- },
- 'personality': {},
- },
- }
-
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_create_instance_no_server_entity(self):
- self._setup_for_create_instance()
-
- body = {}
-
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 422)
-
- def test_create_instance_whitespace_name(self):
- self._setup_for_create_instance()
-
- body = {
- 'server': {
- 'name': ' ',
- 'imageId': 3,
- 'flavorId': 1,
- 'metadata': {
- 'hello': 'world',
- 'open': 'stack',
- },
- 'personality': {},
- },
- }
-
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_create_instance_with_access_ip_v1_1(self):
+ def test_create_instance_with_access_ip(self):
self._setup_for_create_instance()
# proper local hrefs must start with 'http://localhost/v1.1/'
@@ -1944,7 +1696,7 @@ class ServersTest(test.TestCase):
self.assertEqual(access_ipv4, server['accessIPv4'])
self.assertEqual(access_ipv6, server['accessIPv6'])
- def test_create_instance_v1_1(self):
+ def test_create_instance(self):
self._setup_for_create_instance()
# proper local hrefs must start with 'http://localhost/v1.1/'
@@ -2005,7 +1757,7 @@ class ServersTest(test.TestCase):
self.assertEqual('1.2.3.4', server['accessIPv4'])
self.assertEqual('fead::1234', server['accessIPv6'])
- def test_create_instance_v1_1_invalid_key_name(self):
+ def test_create_instance_invalid_key_name(self):
self._setup_for_create_instance()
image_href = 'http://localhost/v1.1/images/2'
@@ -2020,7 +1772,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_v1_1_valid_key_name(self):
+ def test_create_instance_valid_key_name(self):
self._setup_for_create_instance()
image_href = 'http://localhost/v1.1/images/2'
@@ -2035,7 +1787,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 202)
- def test_create_instance_v1_1_invalid_flavor_href(self):
+ def test_create_instance_invalid_flavor_href(self):
self._setup_for_create_instance()
image_href = 'http://localhost/v1.1/images/2'
@@ -2051,7 +1803,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_v1_1_invalid_flavor_id_int(self):
+ def test_create_instance_invalid_flavor_id_int(self):
self._setup_for_create_instance()
image_href = 'http://localhost/v1.1/123/images/2'
@@ -2067,7 +1819,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_v1_1_bad_flavor_href(self):
+ def test_create_instance_bad_flavor_href(self):
self._setup_for_create_instance()
image_href = 'http://localhost/v1.1/images/2'
@@ -2083,7 +1835,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_with_config_drive_v1_1(self):
+ def test_create_instance_with_config_drive(self):
self.config_drive = True
self._setup_for_create_instance()
@@ -2114,7 +1866,7 @@ class ServersTest(test.TestCase):
self.assertEqual(1, server['id'])
self.assertTrue(server['config_drive'])
- def test_create_instance_with_config_drive_as_id_v1_1(self):
+ def test_create_instance_with_config_drive_as_id(self):
self.config_drive = 2
self._setup_for_create_instance()
@@ -2147,7 +1899,7 @@ class ServersTest(test.TestCase):
self.assertTrue(server['config_drive'])
self.assertEqual(2, server['config_drive'])
- def test_create_instance_with_bad_config_drive_v1_1(self):
+ def test_create_instance_with_bad_config_drive(self):
self.config_drive = "asdf"
self._setup_for_create_instance()
@@ -2175,7 +1927,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_without_config_drive_v1_1(self):
+ def test_create_instance_without_config_drive(self):
self._setup_for_create_instance()
image_href = 'http://localhost/v1.1/123/images/2'
@@ -2205,7 +1957,7 @@ class ServersTest(test.TestCase):
self.assertEqual(1, server['id'])
self.assertFalse(server['config_drive'])
- def test_create_instance_v1_1_bad_href(self):
+ def test_create_instance_bad_href(self):
self._setup_for_create_instance()
image_href = 'http://localhost/v1.1/images/asdf'
@@ -2221,7 +1973,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_v1_1_local_href(self):
+ def test_create_instance_local_href(self):
self._setup_for_create_instance()
image_id = "2"
@@ -2264,28 +2016,7 @@ class ServersTest(test.TestCase):
self.assertEqual(expected_flavor, server['flavor'])
self.assertEqual(expected_image, server['image'])
- def test_create_instance_with_admin_pass_v1_0(self):
- self._setup_for_create_instance()
-
- body = {
- 'server': {
- 'name': 'test-server-create',
- 'imageId': 3,
- 'flavorId': 1,
- 'adminPass': 'testpass',
- },
- }
-
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers['content-type'] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- res = json.loads(res.body)
- self.assertNotEqual(res['server']['adminPass'],
- body['server']['adminPass'])
-
- def test_create_instance_v1_1_admin_pass(self):
+ def test_create_instance_admin_pass(self):
self._setup_for_create_instance()
image_href = 'http://localhost/v1.1/images/2'
@@ -2308,7 +2039,7 @@ class ServersTest(test.TestCase):
server = json.loads(res.body)['server']
self.assertEqual(server['adminPass'], body['server']['adminPass'])
- def test_create_instance_v1_1_admin_pass_empty(self):
+ def test_create_instance_admin_pass_empty(self):
self._setup_for_create_instance()
body = {
@@ -2327,30 +2058,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_whitespace_name(self):
- self._setup_for_create_instance()
-
- body = {
- 'server': {
- 'name': ' ',
- 'imageId': 3,
- 'flavorId': 1,
- 'metadata': {
- 'hello': 'world',
- 'open': 'stack',
- },
- 'personality': {},
- },
- }
-
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = json.dumps(body)
- req.headers["content-type"] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_create_instance_v1_1_malformed_entity(self):
+ def test_create_instance_malformed_entity(self):
self._setup_for_create_instance()
req = webob.Request.blank('/v1.1/fake/servers')
req.method = 'POST'
@@ -2359,7 +2067,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_v1_1_malformed_body_string(self):
+ def test_create_instance_malformed_body_string(self):
self._setup_for_create_instance()
req = webob.Request.blank('/v1.1/fake/servers')
req.method = 'POST'
@@ -2368,7 +2076,7 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_create_instance_v1_1_malformed_body_list(self):
+ def test_create_instance_malformed_body_list(self):
self._setup_for_create_instance()
body = ['string']
req = webob.Request.blank('/v1.1/fake/servers')
@@ -2378,103 +2086,13 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 422)
- def test_create_instance_v1_0_malformed_entity(self):
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = json.dumps({'server': 'string'})
- req.headers['content-type'] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_create_instance_v1_0_malformed_body_string(self):
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = 'string'
- req.headers['content-type'] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_create_instance_v1_0_malformed_body_list(self):
- req = webob.Request.blank('/v1.0/servers')
- req.method = 'POST'
- req.body = json.dumps(['string'])
- req.headers['content-type'] = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 422)
-
def test_update_server_no_body(self):
- req = webob.Request.blank('/v1.0/servers/1')
- req.method = 'PUT'
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_update_nonstring_name(self):
- """ Confirm that update is filtering params """
- inst_dict = dict(name=12, adminPass='bacon')
- self.body = json.dumps(dict(server=inst_dict))
-
- req = webob.Request.blank('/v1.0/servers/1')
- req.method = 'PUT'
- req.content_type = "application/json"
- req.body = self.body
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_update_whitespace_name(self):
- """ Confirm that update is filtering params """
- inst_dict = dict(name=' ', adminPass='bacon')
- self.body = json.dumps(dict(server=inst_dict))
-
- req = webob.Request.blank('/v1.0/servers/1')
- req.method = 'PUT'
- req.content_type = "application/json"
- req.body = self.body
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_update_null_name(self):
- """ Confirm that update is filtering params """
- inst_dict = dict(name='', adminPass='bacon')
- self.body = json.dumps(dict(server=inst_dict))
-
- req = webob.Request.blank('/v1.0/servers/1')
- req.method = 'PUT'
- req.content_type = "application/json"
- req.body = self.body
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 400)
-
- def test_update_server_v1_0(self):
- inst_dict = dict(name='server_test', adminPass='bacon')
- self.body = json.dumps(dict(server=inst_dict))
-
- def server_update(context, id, params):
- filtered_dict = dict(display_name='server_test')
- self.assertEqual(params, filtered_dict)
- return filtered_dict
-
- self.stubs.Set(nova.db.api, 'instance_update',
- server_update)
- self.stubs.Set(nova.compute.api.API, "_find_host", find_host)
- mock_method = MockSetAdminPassword()
- self.stubs.Set(nova.compute.api.API, 'set_admin_password', mock_method)
-
- req = webob.Request.blank('/v1.0/servers/1')
- req.method = 'PUT'
- req.content_type = "application/json"
- req.body = self.body
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 204)
- self.assertEqual(mock_method.instance_id, '1')
- self.assertEqual(mock_method.password, 'bacon')
-
- def test_update_server_no_body_v1_1(self):
req = webob.Request.blank('/v1.1/fake/servers/1')
req.method = 'PUT'
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
- def test_update_server_all_attributes_v1_1(self):
+ def test_update_server_all_attributes(self):
self.stubs.Set(nova.db.api, 'instance_get',
return_server_with_attributes(name='server_test',
access_ipv4='0.0.0.0',
@@ -2496,7 +2114,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res_dict['server']['accessIPv4'], '0.0.0.0')
self.assertEqual(res_dict['server']['accessIPv6'], 'beef::0123')
- def test_update_server_name_v1_1(self):
+ def test_update_server_name(self):
self.stubs.Set(nova.db.api, 'instance_get',
return_server_with_attributes(name='server_test'))
req = webob.Request.blank('/v1.1/fake/servers/1')
@@ -2509,7 +2127,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res_dict['server']['id'], 1)
self.assertEqual(res_dict['server']['name'], 'server_test')
- def test_update_server_access_ipv4_v1_1(self):
+ def test_update_server_access_ipv4(self):
self.stubs.Set(nova.db.api, 'instance_get',
return_server_with_attributes(access_ipv4='0.0.0.0'))
req = webob.Request.blank('/v1.1/123/servers/1')
@@ -2522,7 +2140,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res_dict['server']['id'], 1)
self.assertEqual(res_dict['server']['accessIPv4'], '0.0.0.0')
- def test_update_server_access_ipv6_v1_1(self):
+ def test_update_server_access_ipv6(self):
self.stubs.Set(nova.db.api, 'instance_get',
return_server_with_attributes(access_ipv6='beef::0123'))
req = webob.Request.blank('/v1.1/123/servers/1')
@@ -2535,7 +2153,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res_dict['server']['id'], 1)
self.assertEqual(res_dict['server']['accessIPv6'], 'beef::0123')
- def test_update_server_adminPass_ignored_v1_1(self):
+ def test_update_server_adminPass_ignored(self):
inst_dict = dict(name='server_test', adminPass='bacon')
self.body = json.dumps(dict(server=inst_dict))
@@ -2558,64 +2176,7 @@ class ServersTest(test.TestCase):
self.assertEqual(res_dict['server']['id'], 1)
self.assertEqual(res_dict['server']['name'], 'server_test')
- def test_create_backup_schedules(self):
- req = webob.Request.blank('/v1.0/servers/1/backup_schedule')
- req.method = 'POST'
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_delete_backup_schedules(self):
- req = webob.Request.blank('/v1.0/servers/1/backup_schedule/1')
- req.method = 'DELETE'
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_get_server_backup_schedules(self):
- req = webob.Request.blank('/v1.0/servers/1/backup_schedule')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_get_server_backup_schedule(self):
- req = webob.Request.blank('/v1.0/servers/1/backup_schedule/1')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_server_backup_schedule_deprecated_v1_1(self):
- req = webob.Request.blank('/v1.1/fake/servers/1/backup_schedule')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 404)
-
- def test_get_all_server_details_xml_v1_0(self):
- req = webob.Request.blank('/v1.0/servers/detail')
- req.headers['Accept'] = 'application/xml'
- res = req.get_response(fakes.wsgi_app())
- dom = minidom.parseString(res.body)
- for i, server in enumerate(dom.getElementsByTagName('server')):
- self.assertEqual(server.getAttribute('id'), str(i))
- self.assertEqual(server.getAttribute('hostId'), '')
- self.assertEqual(server.getAttribute('name'), 'server%d' % i)
- self.assertEqual(server.getAttribute('imageId'), '10')
- self.assertEqual(server.getAttribute('status'), 'BUILD')
- (meta,) = server.getElementsByTagName('meta')
- self.assertEqual(meta.getAttribute('key'), 'seq')
- self.assertEqual(meta.firstChild.data.strip(), str(i))
-
- def test_get_all_server_details_v1_0(self):
- req = webob.Request.blank('/v1.0/servers/detail')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- res_dict = json.loads(res.body)
-
- for i, s in enumerate(res_dict['servers']):
- self.assertEqual(s['id'], i)
- self.assertEqual(s['hostId'], '')
- self.assertEqual(s['name'], 'server%d' % i)
- self.assertEqual(s['imageId'], 10)
- self.assertEqual(s['flavorId'], 1)
- self.assertEqual(s['status'], 'BUILD')
- self.assertEqual(s['metadata']['seq'], str(i))
-
- def test_get_all_server_details_v1_1(self):
+ def test_get_all_server_details(self):
expected_flavor = {
"id": "1",
"links": [
@@ -2663,7 +2224,7 @@ class ServersTest(test.TestCase):
self.stubs.Set(nova.db.api, 'instance_get_all_by_filters',
return_servers_with_host)
- req = webob.Request.blank('/v1.0/servers/detail')
+ req = webob.Request.blank('/v1.1/fake/servers/detail')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -2676,40 +2237,22 @@ class ServersTest(test.TestCase):
self.assertEqual(s['id'], i)
self.assertEqual(s['hostId'], host_ids[i % 2])
self.assertEqual(s['name'], 'server%d' % i)
- self.assertEqual(s['imageId'], 10)
- self.assertEqual(s['flavorId'], 1)
def test_server_diagnostics(self):
self.flags(allow_admin_api=False)
- req = webob.Request.blank("/v1.0/servers/1/diagnostics")
+ req = webob.Request.blank("/v1.1/fake/servers/1/diagnostics")
req.method = "GET"
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
def test_server_actions(self):
self.flags(allow_admin_api=False)
- req = webob.Request.blank("/v1.0/servers/1/actions")
+ req = webob.Request.blank("/v1.1/fake/servers/1/actions")
req.method = "GET"
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 404)
def test_delete_server_instance(self):
- req = webob.Request.blank('/v1.0/servers/1')
- req.method = 'DELETE'
-
- self.server_delete_called = False
-
- def instance_destroy_mock(context, id):
- self.server_delete_called = True
-
- self.stubs.Set(nova.db.api, 'instance_destroy',
- instance_destroy_mock)
-
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status, '202 Accepted')
- self.assertEqual(self.server_delete_called, True)
-
- def test_delete_server_instance_v1_1(self):
req = webob.Request.blank('/v1.1/fake/servers/1')
req.method = 'DELETE'
@@ -2735,7 +2278,7 @@ class TestServerStatus(test.TestCase):
def _get_with_state(self, vm_state, task_state=None):
new_server = return_server_with_state(vm_state, task_state)
self.stubs.Set(nova.db.api, 'instance_get', new_server)
- request = webob.Request.blank('/v1.0/servers/1')
+ request = webob.Request.blank('/v1.1/fake/servers/1')
response = request.get_response(fakes.wsgi_app())
self.assertEqual(response.status_int, 200)
return json.loads(response.body)
@@ -2776,299 +2319,14 @@ class TestServerStatus(test.TestCase):
self.assertEqual(response['server']['status'], 'STOPPED')
-class TestServerCreateRequestXMLDeserializerV10(unittest.TestCase):
+class TestServerCreateRequestXMLDeserializer(test.TestCase):
def setUp(self):
+ super(TestServerCreateRequestXMLDeserializer, self).setUp()
self.deserializer = servers.ServerXMLDeserializer()
def test_minimal_request(self):
serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1"/>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"server": {
- "name": "new-server-test",
- "imageId": "1",
- "flavorId": "1",
- "metadata": {},
- "personality": [],
- }}
- self.assertEquals(request['body'], expected)
-
- def test_request_with_empty_metadata(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata/>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"server": {
- "name": "new-server-test",
- "imageId": "1",
- "flavorId": "1",
- "metadata": {},
- "personality": [],
- }}
- self.assertEquals(request['body'], expected)
-
- def test_request_with_empty_personality(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <personality/>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"server": {
- "name": "new-server-test",
- "imageId": "1",
- "flavorId": "1",
- "metadata": {},
- "personality": [],
- }}
- self.assertEquals(request['body'], expected)
-
- def test_request_with_empty_metadata_and_personality(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata/>
- <personality/>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"server": {
- "name": "new-server-test",
- "imageId": "1",
- "flavorId": "1",
- "metadata": {},
- "personality": [],
- }}
- self.assertEquals(request['body'], expected)
-
- def test_request_with_empty_metadata_and_personality_reversed(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <personality/>
- <metadata/>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"server": {
- "name": "new-server-test",
- "imageId": "1",
- "flavorId": "1",
- "metadata": {},
- "personality": [],
- }}
- self.assertEquals(request['body'], expected)
-
- def test_request_with_one_personality(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <personality>
- <file path="/etc/conf">aabbccdd</file>
- </personality>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = [{"path": "/etc/conf", "contents": "aabbccdd"}]
- self.assertEquals(request['body']["server"]["personality"], expected)
-
- def test_request_with_two_personalities(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
-<personality><file path="/etc/conf">aabbccdd</file>
-<file path="/etc/sudoers">abcd</file></personality></server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = [{"path": "/etc/conf", "contents": "aabbccdd"},
- {"path": "/etc/sudoers", "contents": "abcd"}]
- self.assertEquals(request['body']["server"]["personality"], expected)
-
- def test_request_second_personality_node_ignored(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <personality>
- <file path="/etc/conf">aabbccdd</file>
- </personality>
- <personality>
- <file path="/etc/ignoreme">anything</file>
- </personality>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = [{"path": "/etc/conf", "contents": "aabbccdd"}]
- self.assertEquals(request['body']["server"]["personality"], expected)
-
- def test_request_with_one_personality_missing_path(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
-<personality><file>aabbccdd</file></personality></server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = [{"contents": "aabbccdd"}]
- self.assertEquals(request['body']["server"]["personality"], expected)
-
- def test_request_with_one_personality_empty_contents(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
-<personality><file path="/etc/conf"></file></personality></server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = [{"path": "/etc/conf", "contents": ""}]
- self.assertEquals(request['body']["server"]["personality"], expected)
-
- def test_request_with_one_personality_empty_contents_variation(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
-<personality><file path="/etc/conf"/></personality></server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = [{"path": "/etc/conf", "contents": ""}]
- self.assertEquals(request['body']["server"]["personality"], expected)
-
- def test_request_with_one_metadata(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata>
- <meta key="alpha">beta</meta>
- </metadata>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"alpha": "beta"}
- self.assertEquals(request['body']["server"]["metadata"], expected)
-
- def test_request_with_two_metadata(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata>
- <meta key="alpha">beta</meta>
- <meta key="foo">bar</meta>
- </metadata>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"alpha": "beta", "foo": "bar"}
- self.assertEquals(request['body']["server"]["metadata"], expected)
-
- def test_request_with_metadata_missing_value(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata>
- <meta key="alpha"></meta>
- </metadata>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"alpha": ""}
- self.assertEquals(request['body']["server"]["metadata"], expected)
-
- def test_request_with_two_metadata_missing_value(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata>
- <meta key="alpha"/>
- <meta key="delta"/>
- </metadata>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"alpha": "", "delta": ""}
- self.assertEquals(request['body']["server"]["metadata"], expected)
-
- def test_request_with_metadata_missing_key(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata>
- <meta>beta</meta>
- </metadata>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"": "beta"}
- self.assertEquals(request['body']["server"]["metadata"], expected)
-
- def test_request_with_two_metadata_missing_key(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata>
- <meta>beta</meta>
- <meta>gamma</meta>
- </metadata>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"": "gamma"}
- self.assertEquals(request['body']["server"]["metadata"], expected)
-
- def test_request_with_metadata_duplicate_key(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata>
- <meta key="foo">bar</meta>
- <meta key="foo">baz</meta>
- </metadata>
-</server>"""
- request = self.deserializer.deserialize(serial_request, 'create')
- expected = {"foo": "baz"}
- self.assertEquals(request['body']["server"]["metadata"], expected)
-
- def test_canonical_request_from_docs(self):
- serial_request = """
-<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
- name="new-server-test" imageId="1" flavorId="1">
- <metadata>
- <meta key="My Server Name">Apache1</meta>
- </metadata>
- <personality>
- <file path="/etc/banner.txt">\
-ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp\
-dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k\
-IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs\
-c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g\
-QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo\
-ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv\
-dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy\
-c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6\
-b25zLiINCg0KLVJpY2hhcmQgQmFjaA==</file>
- </personality>
-</server>"""
- expected = {"server": {
- "name": "new-server-test",
- "imageId": "1",
- "flavorId": "1",
- "metadata": {
- "My Server Name": "Apache1",
- },
- "personality": [
- {
- "path": "/etc/banner.txt",
- "contents": """\
-ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp\
-dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k\
-IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs\
-c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g\
-QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo\
-ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv\
-dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy\
-c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6\
-b25zLiINCg0KLVJpY2hhcmQgQmFjaA==""",
- },
- ],
- }}
- request = self.deserializer.deserialize(serial_request, 'create')
- self.assertEqual(request['body'], expected)
-
-
-class TestServerCreateRequestXMLDeserializerV11(test.TestCase):
-
- def setUp(self):
- super(TestServerCreateRequestXMLDeserializerV11, self).setUp()
- self.deserializer = servers.ServerXMLDeserializerV11()
-
- def test_minimal_request(self):
- serial_request = """
<server xmlns="http://docs.openstack.org/compute/api/v1.1"
name="new-server-test"
imageRef="1"
@@ -3542,10 +2800,7 @@ class TestServerInstanceCreation(test.TestCase):
resv_id = None
- return ([{'id': '1234', 'display_name': 'fakeinstance',
- 'user_id': 'fake',
- 'project_id': 'fake',
- 'uuid': FAKE_UUID}], resv_id)
+ return ([stub_instance(id='1234')], resv_id)
def set_admin_password(self, *args, **kwargs):
pass
@@ -3566,8 +2821,8 @@ class TestServerInstanceCreation(test.TestCase):
def _create_personality_request_dict(self, personality_files):
server = {}
server['name'] = 'new-server-test'
- server['imageId'] = 1
- server['flavorId'] = 1
+ server['imageRef'] = 1
+ server['flavorRef'] = 1
if personality_files is not None:
personalities = []
for path, contents in personality_files:
@@ -3576,7 +2831,7 @@ class TestServerInstanceCreation(test.TestCase):
return {'server': server}
def _get_create_request_json(self, body_dict):
- req = webob.Request.blank('/v1.0/servers')
+ req = webob.Request.blank('/v1.1/fake/servers')
req.headers['Content-Type'] = 'application/json'
req.method = 'POST'
req.body = json.dumps(body_dict)
@@ -3592,9 +2847,9 @@ class TestServerInstanceCreation(test.TestCase):
body_parts = []
body_parts.extend([
'<?xml version="1.0" encoding="UTF-8"?>',
- '<server xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"',
- ' name="%s" imageId="%s" flavorId="%s">' % (
- server['name'], server['imageId'], server['flavorId'])])
+ '<server xmlns="http://docs.openstack.org/compute/api/v1.s"',
+ ' name="%s" imageRef="%s" flavorRef="%s">' % (
+ server['name'], server['imageRef'], server['flavorRef'])])
if 'metadata' in server:
metadata = server['metadata']
body_parts.append('<metadata>')
@@ -3612,7 +2867,7 @@ class TestServerInstanceCreation(test.TestCase):
return ''.join(body_parts)
def _get_create_request_xml(self, body_dict):
- req = webob.Request.blank('/v1.0/servers')
+ req = webob.Request.blank('/v1.1/fake/servers')
req.content_type = 'application/xml'
req.accept = 'application/xml'
req.method = 'POST'
@@ -3826,10 +3081,10 @@ class TestGetKernelRamdiskFromImage(test.TestCase):
return kernel_id, ramdisk_id
-class ServersViewBuilderV11Test(test.TestCase):
+class ServersViewBuilderTest(test.TestCase):
def setUp(self):
- super(ServersViewBuilderV11Test, self).setUp()
+ super(ServersViewBuilderTest, self).setUp()
self.flags(use_ipv6=True)
self.instance = self._get_instance()
self.view_builder = self._get_view_builder()
@@ -3901,12 +3156,12 @@ class ServersViewBuilderV11Test(test.TestCase):
def _get_view_builder(self, project_id=""):
base_url = "http://localhost/v1.1"
views = nova.api.openstack.views
- address_builder = views.addresses.ViewBuilderV11()
- flavor_builder = views.flavors.ViewBuilderV11(base_url, project_id)
- image_builder = views.images.ViewBuilderV11(base_url, project_id)
+ address_builder = views.addresses.ViewBuilder()
+ flavor_builder = views.flavors.ViewBuilder(base_url, project_id)
+ image_builder = views.images.ViewBuilder(base_url, project_id)
ctxt = context.RequestContext('fake_user', project_id)
- view_builder = nova.api.openstack.views.servers.ViewBuilderV11(
+ view_builder = nova.api.openstack.views.servers.ViewBuilder(
ctxt,
address_builder,
flavor_builder,
diff --git a/nova/tests/api/openstack/test_shared_ip_groups.py b/nova/tests/api/openstack/test_shared_ip_groups.py
deleted file mode 100644
index 36fa1de0f..000000000
--- a/nova/tests/api/openstack/test_shared_ip_groups.py
+++ /dev/null
@@ -1,51 +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.
-
-import webob
-
-from nova import test
-from nova.tests.api.openstack import fakes
-
-
-class SharedIpGroupsTest(test.TestCase):
- def test_get_shared_ip_groups(self):
- req = webob.Request.blank('/v1.0/shared_ip_groups')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_create_shared_ip_group(self):
- req = webob.Request.blank('/v1.0/shared_ip_groups')
- req.method = 'POST'
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_update_shared_ip_group(self):
- req = webob.Request.blank('/v1.0/shared_ip_groups/12')
- req.method = 'PUT'
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_delete_shared_ip_group(self):
- req = webob.Request.blank('/v1.0/shared_ip_groups/12')
- req.method = 'DELETE'
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 501)
-
- def test_deprecated_v11(self):
- req = webob.Request.blank('/v1.1/shared_ip_groups')
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 404)
diff --git a/nova/tests/api/openstack/test_urlmap.py b/nova/tests/api/openstack/test_urlmap.py
index 9e7cdda75..49b03283d 100644
--- a/nova/tests/api/openstack/test_urlmap.py
+++ b/nova/tests/api/openstack/test_urlmap.py
@@ -28,16 +28,6 @@ class UrlmapTest(test.TestCase):
super(UrlmapTest, self).setUp()
fakes.stub_out_rate_limiting(self.stubs)
- def test_path_version_v1_0(self):
- """Test URL path specifying v1.0 returns v1.0 content."""
- req = webob.Request.blank('/v1.0/')
- req.accept = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- self.assertEqual(res.content_type, "application/json")
- body = json.loads(res.body)
- self.assertEqual(body['version']['id'], 'v1.0')
-
def test_path_version_v1_1(self):
"""Test URL path specifying v1.1 returns v1.1 content."""
req = webob.Request.blank('/v1.1/')
@@ -48,17 +38,6 @@ class UrlmapTest(test.TestCase):
body = json.loads(res.body)
self.assertEqual(body['version']['id'], 'v1.1')
- def test_content_type_version_v1_0(self):
- """Test Content-Type specifying v1.0 returns v1.0 content."""
- req = webob.Request.blank('/')
- req.content_type = "application/json;version=1.0"
- req.accept = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- self.assertEqual(res.content_type, "application/json")
- body = json.loads(res.body)
- self.assertEqual(body['version']['id'], 'v1.0')
-
def test_content_type_version_v1_1(self):
"""Test Content-Type specifying v1.1 returns v1.1 content."""
req = webob.Request.blank('/')
@@ -70,16 +49,6 @@ class UrlmapTest(test.TestCase):
body = json.loads(res.body)
self.assertEqual(body['version']['id'], 'v1.1')
- def test_accept_version_v1_0(self):
- """Test Accept header specifying v1.0 returns v1.0 content."""
- req = webob.Request.blank('/')
- req.accept = "application/json;version=1.0"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- self.assertEqual(res.content_type, "application/json")
- body = json.loads(res.body)
- self.assertEqual(body['version']['id'], 'v1.0')
-
def test_accept_version_v1_1(self):
"""Test Accept header specifying v1.1 returns v1.1 content."""
req = webob.Request.blank('/')
diff --git a/nova/tests/api/openstack/test_users.py b/nova/tests/api/openstack/test_users.py
index 1d133f9ab..c9af530cf 100644
--- a/nova/tests/api/openstack/test_users.py
+++ b/nova/tests/api/openstack/test_users.py
@@ -56,7 +56,7 @@ class UsersTest(test.TestCase):
fakemgr.add_user(User('id2', 'guy2', 'acc2', 'secret2', True))
def test_get_user_list(self):
- req = webob.Request.blank('/v1.0/users')
+ req = webob.Request.blank('/v1.1/fake/users')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -64,7 +64,7 @@ class UsersTest(test.TestCase):
self.assertEqual(len(res_dict['users']), 2)
def test_get_user_by_id(self):
- req = webob.Request.blank('/v1.0/users/id2')
+ req = webob.Request.blank('/v1.1/fake/users/id2')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -76,7 +76,7 @@ class UsersTest(test.TestCase):
def test_user_delete(self):
# Check the user exists
- req = webob.Request.blank('/v1.0/users/id1')
+ req = webob.Request.blank('/v1.1/fake/users/id1')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -84,7 +84,7 @@ class UsersTest(test.TestCase):
self.assertEqual(res.status_int, 200)
# Delete the user
- req = webob.Request.blank('/v1.0/users/id1')
+ req = webob.Request.blank('/v1.1/fake/users/id1')
req.method = 'DELETE'
res = req.get_response(fakes.wsgi_app())
self.assertTrue('id1' not in [u.id for u in
@@ -92,7 +92,7 @@ class UsersTest(test.TestCase):
self.assertEqual(res.status_int, 200)
# Check the user is not returned (and returns 404)
- req = webob.Request.blank('/v1.0/users/id1')
+ req = webob.Request.blank('/v1.1/fake/users/id1')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
self.assertEqual(res.status_int, 404)
@@ -103,7 +103,7 @@ class UsersTest(test.TestCase):
access='acc3',
secret=secret,
admin=True))
- req = webob.Request.blank('/v1.0/users')
+ req = webob.Request.blank('/v1.1/fake/users')
req.headers["Content-Type"] = "application/json"
req.method = 'POST'
req.body = json.dumps(body)
@@ -130,7 +130,7 @@ class UsersTest(test.TestCase):
body = dict(user=dict(name='guy2',
access='acc2',
secret=new_secret))
- req = webob.Request.blank('/v1.0/users/id2')
+ req = webob.Request.blank('/v1.1/fake/users/id2')
req.headers["Content-Type"] = "application/json"
req.method = 'PUT'
req.body = json.dumps(body)
diff --git a/nova/tests/api/openstack/test_versions.py b/nova/tests/api/openstack/test_versions.py
index 375470a64..3a1bcf3bb 100644
--- a/nova/tests/api/openstack/test_versions.py
+++ b/nova/tests/api/openstack/test_versions.py
@@ -35,35 +35,6 @@ NS = {
'ns': 'http://docs.openstack.org/compute/api/v1.1'
}
VERSIONS = {
- "v1.0": {
- "id": "v1.0",
- "status": "DEPRECATED",
- "updated": "2011-01-21T11:33:21Z",
- "links": [
- {
- "rel": "describedby",
- "type": "application/pdf",
- "href": "http://docs.rackspacecloud.com/"
- "servers/api/v1.0/cs-devguide-20110125.pdf",
- },
- {
- "rel": "describedby",
- "type": "application/vnd.sun.wadl+xml",
- "href": "http://docs.rackspacecloud.com/"
- "servers/api/v1.0/application.wadl",
- },
- ],
- "media-types": [
- {
- "base": "application/xml",
- "type": "application/vnd.openstack.compute+xml;version=1.0",
- },
- {
- "base": "application/json",
- "type": "application/vnd.openstack.compute+json;version=1.0",
- },
- ],
- },
"v1.1": {
"id": "v1.1",
"status": "CURRENT",
@@ -119,16 +90,6 @@ class VersionsTest(test.TestCase):
versions = json.loads(res.body)["versions"]
expected = [
{
- "id": "v1.0",
- "status": "DEPRECATED",
- "updated": "2011-01-21T11:33:21Z",
- "links": [
- {
- "rel": "self",
- "href": "http://localhost/v1.0/",
- }],
- },
- {
"id": "v1.1",
"status": "CURRENT",
"updated": "2011-01-21T11:33:21Z",
@@ -141,52 +102,6 @@ class VersionsTest(test.TestCase):
]
self.assertEqual(versions, expected)
- def test_get_version_1_0_detail(self):
- req = webob.Request.blank('/v1.0/')
- req.accept = "application/json"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- self.assertEqual(res.content_type, "application/json")
- version = json.loads(res.body)
- expected = {
- "version": {
- "id": "v1.0",
- "status": "DEPRECATED",
- "updated": "2011-01-21T11:33:21Z",
- "links": [
- {
- "rel": "self",
- "href": "http://localhost/v1.0/",
- },
- {
- "rel": "describedby",
- "type": "application/pdf",
- "href": "http://docs.rackspacecloud.com/"
- "servers/api/v1.0/cs-devguide-20110125.pdf",
- },
- {
- "rel": "describedby",
- "type": "application/vnd.sun.wadl+xml",
- "href": "http://docs.rackspacecloud.com/"
- "servers/api/v1.0/application.wadl",
- },
- ],
- "media-types": [
- {
- "base": "application/xml",
- "type": "application/"
- "vnd.openstack.compute+xml;version=1.0",
- },
- {
- "base": "application/json",
- "type": "application/"
- "vnd.openstack.compute+json;version=1.0",
- },
- ],
- },
- }
- self.assertEqual(expected, version)
-
def test_get_version_1_1_detail(self):
req = webob.Request.blank('/v1.1/')
req.accept = "application/json"
@@ -279,29 +194,6 @@ class VersionsTest(test.TestCase):
}
self.assertEqual(expected, version)
- def test_get_version_1_0_detail_xml(self):
- req = webob.Request.blank('/v1.0/')
- req.accept = "application/xml"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- self.assertEqual(res.content_type, "application/xml")
-
- version = etree.XML(res.body)
- xmlutil.validate_schema(version, 'version')
-
- expected = VERSIONS['v1.0']
- self.assertTrue(version.xpath('/ns:version', namespaces=NS))
- media_types = version.xpath('ns:media-types/ns:media-type',
- namespaces=NS)
- self.assertTrue(common.compare_media_types(media_types,
- expected['media-types']))
- for key in ['id', 'status', 'updated']:
- self.assertEqual(version.get(key), expected[key])
- links = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(common.compare_links(links,
- [{'rel': 'self', 'href': 'http://localhost/v1.0/'}]
- + expected['links']))
-
def test_get_version_1_1_detail_xml(self):
req = webob.Request.blank('/v1.1/')
req.accept = "application/xml"
@@ -338,9 +230,9 @@ class VersionsTest(test.TestCase):
self.assertTrue(root.xpath('/ns:versions', namespaces=NS))
versions = root.xpath('ns:version', namespaces=NS)
- self.assertEqual(len(versions), 2)
+ self.assertEqual(len(versions), 1)
- for i, v in enumerate(['v1.0', 'v1.1']):
+ for i, v in enumerate(['v1.1']):
version = versions[i]
expected = VERSIONS[v]
for key in ['id', 'status', 'updated']:
@@ -349,47 +241,6 @@ class VersionsTest(test.TestCase):
self.assertTrue(common.compare_links(link,
[{'rel': 'self', 'href': 'http://localhost/%s/' % v}]))
- def test_get_version_1_0_detail_atom(self):
- req = webob.Request.blank('/v1.0/')
- req.accept = "application/atom+xml"
- res = req.get_response(fakes.wsgi_app())
- self.assertEqual(res.status_int, 200)
- self.assertEqual("application/atom+xml", res.content_type)
-
- xmlutil.validate_schema(etree.XML(res.body), 'atom')
-
- f = feedparser.parse(res.body)
- self.assertEqual(f.feed.title, 'About This Version')
- self.assertEqual(f.feed.updated, '2011-01-21T11:33:21Z')
- self.assertEqual(f.feed.id, 'http://localhost/v1.0/')
- self.assertEqual(f.feed.author, 'Rackspace')
- self.assertEqual(f.feed.author_detail.href,
- 'http://www.rackspace.com/')
- self.assertEqual(f.feed.links[0]['href'], 'http://localhost/v1.0/')
- self.assertEqual(f.feed.links[0]['rel'], 'self')
-
- self.assertEqual(len(f.entries), 1)
- entry = f.entries[0]
- self.assertEqual(entry.id, 'http://localhost/v1.0/')
- self.assertEqual(entry.title, 'Version v1.0')
- self.assertEqual(entry.updated, '2011-01-21T11:33:21Z')
- self.assertEqual(len(entry.content), 1)
- self.assertEqual(entry.content[0].value,
- 'Version v1.0 DEPRECATED (2011-01-21T11:33:21Z)')
- self.assertEqual(len(entry.links), 3)
- self.assertEqual(entry.links[0]['href'], 'http://localhost/v1.0/')
- self.assertEqual(entry.links[0]['rel'], 'self')
- self.assertEqual(entry.links[1], {
- 'href': 'http://docs.rackspacecloud.com/servers/api/v1.0/'\
- 'cs-devguide-20110125.pdf',
- 'type': 'application/pdf',
- 'rel': 'describedby'})
- self.assertEqual(entry.links[2], {
- 'href': 'http://docs.rackspacecloud.com/servers/api/v1.0/'\
- 'application.wadl',
- 'type': 'application/vnd.sun.wadl+xml',
- 'rel': 'describedby'})
-
def test_get_version_1_1_detail_atom(self):
req = webob.Request.blank('/v1.1/')
req.accept = "application/atom+xml"
@@ -448,18 +299,8 @@ class VersionsTest(test.TestCase):
self.assertEqual(f.feed.links[0]['href'], 'http://localhost/')
self.assertEqual(f.feed.links[0]['rel'], 'self')
- self.assertEqual(len(f.entries), 2)
+ self.assertEqual(len(f.entries), 1)
entry = f.entries[0]
- self.assertEqual(entry.id, 'http://localhost/v1.0/')
- self.assertEqual(entry.title, 'Version v1.0')
- self.assertEqual(entry.updated, '2011-01-21T11:33:21Z')
- self.assertEqual(len(entry.content), 1)
- self.assertEqual(entry.content[0].value,
- 'Version v1.0 DEPRECATED (2011-01-21T11:33:21Z)')
- self.assertEqual(len(entry.links), 1)
- self.assertEqual(entry.links[0]['href'], 'http://localhost/v1.0/')
- self.assertEqual(entry.links[0]['rel'], 'self')
- entry = f.entries[1]
self.assertEqual(entry.id, 'http://localhost/v1.1/')
self.assertEqual(entry.title, 'Version v1.1')
self.assertEqual(entry.updated, '2011-01-21T11:33:21Z')
@@ -501,28 +342,6 @@ class VersionsTest(test.TestCase):
},
],
},
- {
- "id": "v1.0",
- "status": "DEPRECATED",
- "links": [
- {
- "href": "http://localhost/v1.0/images/1",
- "rel": "self",
- },
- ],
- "media-types": [
- {
- "base": "application/xml",
- "type": "application/vnd.openstack.compute+xml"
- ";version=1.0"
- },
- {
- "base": "application/json",
- "type": "application/vnd.openstack.compute+json"
- ";version=1.0"
- },
- ],
- },
], }
self.assertDictMatch(expected, json.loads(res.body))
@@ -537,7 +356,7 @@ class VersionsTest(test.TestCase):
root = etree.XML(res.body)
self.assertTrue(root.xpath('/ns:choices', namespaces=NS))
versions = root.xpath('ns:version', namespaces=NS)
- self.assertEqual(len(versions), 2)
+ self.assertEqual(len(versions), 1)
version = versions[0]
self.assertEqual(version.get('id'), 'v1.1')
@@ -550,17 +369,6 @@ class VersionsTest(test.TestCase):
self.assertTrue(common.compare_links(links,
[{'rel': 'self', 'href': 'http://localhost/v1.1/images/1'}]))
- version = versions[1]
- self.assertEqual(version.get('id'), 'v1.0')
- self.assertEqual(version.get('status'), 'DEPRECATED')
- media_types = version.xpath('ns:media-types/ns:media-type',
- namespaces=NS)
- self.assertTrue(common.compare_media_types(media_types,
- VERSIONS['v1.0']['media-types']))
- links = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(common.compare_links(links,
- [{'rel': 'self', 'href': 'http://localhost/v1.0/images/1'}]))
-
def test_multi_choice_server_atom(self):
"""
Make sure multi choice responses do not have content-type
@@ -603,28 +411,6 @@ class VersionsTest(test.TestCase):
},
],
},
- {
- "id": "v1.0",
- "status": "DEPRECATED",
- "links": [
- {
- "href": "http://localhost/v1.0/servers/2",
- "rel": "self",
- },
- ],
- "media-types": [
- {
- "base": "application/xml",
- "type": "application/vnd.openstack.compute+xml"
- ";version=1.0"
- },
- {
- "base": "application/json",
- "type": "application/vnd.openstack.compute+json"
- ";version=1.0"
- },
- ],
- },
], }
self.assertDictMatch(expected, json.loads(res.body))
@@ -754,70 +540,6 @@ class VersionsSerializerTests(test.TestCase):
self.assertTrue(common.compare_links(link,
versions_data['choices'][0]['links']))
- def test_version_detail_xml_serializer(self):
- version_data = {
- "version": {
- "id": "v1.0",
- "status": "CURRENT",
- "updated": "2011-01-21T11:33:21Z",
- "links": [
- {
- "rel": "self",
- "href": "http://localhost/v1.0/",
- },
- {
- "rel": "describedby",
- "type": "application/pdf",
- "href": "http://docs.rackspacecloud.com/"
- "servers/api/v1.0/cs-devguide-20110125.pdf",
- },
- {
- "rel": "describedby",
- "type": "application/vnd.sun.wadl+xml",
- "href": "http://docs.rackspacecloud.com/"
- "servers/api/v1.0/application.wadl",
- },
- ],
- "media-types": [
- {
- "base": "application/xml",
- "type": "application/vnd.openstack.compute+xml"
- ";version=1.0",
- },
- {
- "base": "application/json",
- "type": "application/vnd.openstack.compute+json"
- ";version=1.0",
- },
- ],
- },
- }
-
- serializer = versions.VersionsXMLSerializer()
- response = serializer.show(version_data)
-
- root = etree.XML(response)
- self.assertEqual(root.tag.split('}')[1], "version")
- self.assertEqual(root.tag.split('}')[0].strip('{'), wsgi.XMLNS_V11)
-
- children = list(root)
- media_types = children[0]
- media_type_nodes = list(media_types)
- links = (children[1], children[2], children[3])
-
- self.assertEqual(media_types.tag.split('}')[1], 'media-types')
- for i, media_node in enumerate(media_type_nodes):
- self.assertEqual(media_node.tag.split('}')[1], 'media-type')
- for key, val in version_data['version']['media-types'][i].items():
- self.assertEqual(val, media_node.get(key))
-
- for i, link in enumerate(links):
- self.assertEqual(link.tag.split('}')[0].strip('{'),
- 'http://www.w3.org/2005/Atom')
- self.assertEqual(link.tag.split('}')[1], 'link')
- for key, val in version_data['version']['links'][i].items():
- self.assertEqual(val, link.get(key))
-
def test_versions_list_atom_serializer(self):
versions_data = {
'versions': [
diff --git a/nova/tests/api/openstack/test_zones.py b/nova/tests/api/openstack/test_zones.py
index 4a46a5764..869f13183 100644
--- a/nova/tests/api/openstack/test_zones.py
+++ b/nova/tests/api/openstack/test_zones.py
@@ -105,7 +105,7 @@ class ZonesTest(test.TestCase):
def test_get_zone_list_scheduler(self):
self.stubs.Set(api, '_call_scheduler', zone_get_all_scheduler)
- req = webob.Request.blank('/v1.0/zones')
+ req = webob.Request.blank('/v1.1/fake/zones')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -115,7 +115,7 @@ class ZonesTest(test.TestCase):
def test_get_zone_list_db(self):
self.stubs.Set(api, '_call_scheduler', zone_get_all_scheduler_empty)
self.stubs.Set(nova.db, 'zone_get_all', zone_get_all_db)
- req = webob.Request.blank('/v1.0/zones')
+ req = webob.Request.blank('/v1.1/fake/zones')
req.headers["Content-Type"] = "application/json"
res = req.get_response(fakes.wsgi_app())
@@ -124,7 +124,7 @@ class ZonesTest(test.TestCase):
self.assertEqual(len(res_dict['zones']), 2)
def test_get_zone_by_id(self):
- req = webob.Request.blank('/v1.0/zones/1')
+ req = webob.Request.blank('/v1.1/fake/zones/1')
req.headers["Content-Type"] = "application/json"
res = req.get_response(fakes.wsgi_app())
@@ -135,7 +135,7 @@ class ZonesTest(test.TestCase):
self.assertFalse('password' in res_dict['zone'])
def test_zone_delete(self):
- req = webob.Request.blank('/v1.0/zones/1')
+ req = webob.Request.blank('/v1.1/fake/zones/1')
req.headers["Content-Type"] = "application/json"
res = req.get_response(fakes.wsgi_app())
@@ -144,7 +144,7 @@ class ZonesTest(test.TestCase):
def test_zone_create(self):
body = dict(zone=dict(api_url='http://example.com', username='fred',
password='fubar'))
- req = webob.Request.blank('/v1.0/zones')
+ req = webob.Request.blank('/v1.1/fake/zones')
req.headers["Content-Type"] = "application/json"
req.method = 'POST'
req.body = json.dumps(body)
@@ -159,7 +159,7 @@ class ZonesTest(test.TestCase):
def test_zone_update(self):
body = dict(zone=dict(username='zeb', password='sneaky'))
- req = webob.Request.blank('/v1.0/zones/1')
+ req = webob.Request.blank('/v1.1/fake/zones/1')
req.headers["Content-Type"] = "application/json"
req.method = 'PUT'
req.body = json.dumps(body)
@@ -178,7 +178,7 @@ class ZonesTest(test.TestCase):
self.stubs.Set(api, '_call_scheduler', zone_capabilities)
body = dict(zone=dict(username='zeb', password='sneaky'))
- req = webob.Request.blank('/v1.0/zones/info')
+ req = webob.Request.blank('/v1.1/fake/zones/info')
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
@@ -192,7 +192,7 @@ class ZonesTest(test.TestCase):
self.flags(build_plan_encryption_key=key)
self.stubs.Set(api, 'select', zone_select)
- req = webob.Request.blank('/v1.0/zones/select')
+ req = webob.Request.blank('/v1.1/fake/zones/select')
req.method = 'POST'
req.headers["Content-Type"] = "application/json"
# Select queries end up being JSON encoded twice.
diff --git a/nova/tests/integrated/test_servers.py b/nova/tests/integrated/test_servers.py
index be9ed15ed..8eb45d5f3 100644
--- a/nova/tests/integrated/test_servers.py
+++ b/nova/tests/integrated/test_servers.py
@@ -96,18 +96,15 @@ class ServersTest(integrated_helpers._IntegratedTestBase):
self.assertRaises(client.OpenStackApiException,
self.api.post_server, post)
- # Add a valid imageId/imageRef
- server['imageId'] = good_server.get('imageId')
+ # Add a valid imageRef
server['imageRef'] = good_server.get('imageRef')
- # Without flavorId, this throws 500
+ # Without flavorRef, this throws 500
# TODO(justinsb): Check whatever the spec says should be thrown here
self.assertRaises(client.OpenStackApiException,
self.api.post_server, post)
- # Set a valid flavorId/flavorRef
server['flavorRef'] = good_server.get('flavorRef')
- server['flavorId'] = good_server.get('flavorId')
# Without a name, this throws 500
# TODO(justinsb): Check whatever the spec says should be thrown here