From edf3e39cd395150adfe36375b09253f2eef0bd2e Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Tue, 11 Oct 2011 16:32:56 -0400 Subject: Remove OSAPI v1.0 Change-Id: I92302c9c2b8f98d140c4844d4522adbcb45c8dd7 --- nova/tests/api/openstack/fakes.py | 14 +- nova/tests/api/openstack/test_accounts.py | 8 +- nova/tests/api/openstack/test_adminapi.py | 47 -- nova/tests/api/openstack/test_auth.py | 51 +- nova/tests/api/openstack/test_consoles.py | 18 +- nova/tests/api/openstack/test_extensions.py | 22 +- nova/tests/api/openstack/test_faults.py | 59 +- nova/tests/api/openstack/test_flavors.py | 100 +-- nova/tests/api/openstack/test_images.py | 305 +------- nova/tests/api/openstack/test_limits.py | 144 +--- nova/tests/api/openstack/test_server_actions.py | 527 ++++--------- nova/tests/api/openstack/test_servers.py | 911 ++-------------------- nova/tests/api/openstack/test_shared_ip_groups.py | 51 -- nova/tests/api/openstack/test_urlmap.py | 31 - nova/tests/api/openstack/test_users.py | 14 +- nova/tests/api/openstack/test_versions.py | 286 +------ nova/tests/api/openstack/test_zones.py | 16 +- nova/tests/integrated/test_servers.py | 7 +- 18 files changed, 362 insertions(+), 2249 deletions(-) delete mode 100644 nova/tests/api/openstack/test_adminapi.py delete mode 100644 nova/tests/api/openstack/test_shared_ip_groups.py (limited to 'nova/tests') 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(""" - - scram - - """ % 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(""" - - sorry - 4 - - """ % 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(""" - - """ % (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(""" - - """ % (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(""" - - Image not found. - - """.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(""" - - - - - """.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(""" - - - - - - - - """.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 = '' -# 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,297 +2319,12 @@ 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 = """ -""" - 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 = """ - - -""" - 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 = """ - - -""" - 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 = """ - - - -""" - 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 = """ - - - -""" - 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 = """ - - - aabbccdd - -""" - 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 = """ - -aabbccdd -abcd""" - 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 = """ - - - aabbccdd - - - anything - -""" - 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 = """ - -aabbccdd""" - 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 = """ - -""" - 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 = """ - -""" - 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 = """ - - - beta - -""" - 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 = """ - - - beta - bar - -""" - 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 = """ - - - - -""" - 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 = """ - - - - - -""" - 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 = """ - - - beta - -""" - 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 = """ - - - beta - gamma - -""" - 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 = """ - - - bar - baz - -""" - 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 = """ - - - Apache1 - - - \ -ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp\ -dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k\ -IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs\ -c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g\ -QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo\ -ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv\ -dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy\ -c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6\ -b25zLiINCg0KLVJpY2hhcmQgQmFjaA== - -""" - 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['name'], server['imageId'], server['flavorId'])]) + '' % ( + server['name'], server['imageRef'], server['flavorRef'])]) if 'metadata' in server: metadata = server['metadata'] body_parts.append('') @@ -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", @@ -118,16 +89,6 @@ class VersionsTest(test.TestCase): self.assertEqual(res.content_type, "application/json") 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", @@ -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 -- cgit