diff --git a/nova/tests/functional/api/client.py b/nova/tests/functional/api/client.py index 4a43c2abf8..db4d58c66f 100644 --- a/nova/tests/functional/api/client.py +++ b/nova/tests/functional/api/client.py @@ -124,6 +124,7 @@ class TestOpenStackClient(object): self.auth_key = auth_key self.auth_uri = auth_uri self.project_id = project_id + self.microversion = None def request(self, url, method='GET', body=None, headers=None): _headers = {'Content-Type': 'application/json'} @@ -167,6 +168,8 @@ class TestOpenStackClient(object): headers = kwargs.setdefault('headers', {}) headers['X-Auth-Token'] = auth_result['x-auth-token'] + if self.microversion: + headers['X-OpenStack-Nova-API-Version'] = self.microversion response = self.request(full_uri, **kwargs) diff --git a/nova/tests/functional/api_sample_tests/test_fixed_ips.py b/nova/tests/functional/api_sample_tests/test_fixed_ips.py index 085adbfed5..1ad6b7fc44 100644 --- a/nova/tests/functional/api_sample_tests/test_fixed_ips.py +++ b/nova/tests/functional/api_sample_tests/test_fixed_ips.py @@ -38,7 +38,7 @@ class FixedIpTest(test_servers.ServersSampleBase): def setUp(self): super(FixedIpTest, self).setUp() - + self.api.microversion = self.microversion instance = dict(test_utils.get_test_instance(), hostname='openstack', host='host') fake_fixed_ips = [{'id': 1, @@ -95,15 +95,13 @@ class FixedIpTest(test_servers.ServersSampleBase): def test_fixed_ip_reserve(self): # Reserve a Fixed IP. response = self._do_post('os-fixed-ips/192.168.1.1/action', - 'fixedip-post-req', {}, - api_version=self.microversion) + 'fixedip-post-req', {}) self.assertEqual(202, response.status_code) self.assertEqual("", response.content) def _test_get_fixed_ip(self, **kwargs): # Return data about the given fixed ip. - response = self._do_get('os-fixed-ips/192.168.1.1', - api_version=self.microversion) + response = self._do_get('os-fixed-ips/192.168.1.1') project = {'cidr': '192.168.1.0/24', 'hostname': 'openstack', 'host': 'host', diff --git a/nova/tests/functional/api_sample_tests/test_instance_actions.py b/nova/tests/functional/api_sample_tests/test_instance_actions.py index 38033bb121..f825bb9f2d 100644 --- a/nova/tests/functional/api_sample_tests/test_instance_actions.py +++ b/nova/tests/functional/api_sample_tests/test_instance_actions.py @@ -47,6 +47,7 @@ class ServerActionsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21): def setUp(self): super(ServerActionsSampleJsonTest, self).setUp() + self.api.microversion = self.microversion self.actions = fake_server_actions.FAKE_ACTIONS self.events = fake_server_actions.FAKE_EVENTS self.instance = test_utils.get_test_instance(obj=True) @@ -79,8 +80,7 @@ class ServerActionsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21): fake_action = self.actions[fake_uuid][fake_request_id] response = self._do_get('servers/%s/os-instance-actions/%s' % - (fake_uuid, fake_request_id), - api_version=self.microversion) + (fake_uuid, fake_request_id)) subs = {} subs['action'] = '(reboot)|(resize)' subs['instance_uuid'] = str(fake_uuid) @@ -93,8 +93,7 @@ class ServerActionsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21): def test_instance_actions_list(self): fake_uuid = fake_server_actions.FAKE_UUID - response = self._do_get('servers/%s/os-instance-actions' % (fake_uuid), - api_version=self.microversion) + response = self._do_get('servers/%s/os-instance-actions' % (fake_uuid)) subs = {} subs['action'] = '(reboot)|(resize)' subs['integer_id'] = '[0-9]+' diff --git a/nova/tests/functional/api_sample_tests/test_keypairs.py b/nova/tests/functional/api_sample_tests/test_keypairs.py index f0312639e6..3065153d8e 100644 --- a/nova/tests/functional/api_sample_tests/test_keypairs.py +++ b/nova/tests/functional/api_sample_tests/test_keypairs.py @@ -39,6 +39,10 @@ class KeyPairsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21): 'nova.api.openstack.compute.contrib.keypairs.Keypairs') return f + def setUp(self): + super(KeyPairsSampleJsonTest, self).setUp() + self.api.microversion = self.microversion + # TODO(sdague): this is only needed because we randomly choose the # uuid each time. def generalize_subs(self, subs, vanilla_regexes): @@ -52,8 +56,7 @@ class KeyPairsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21): """Get api sample of key pairs post request.""" key_name = 'keypair-' + str(uuid.uuid4()) subs = dict(keypair_name=key_name, **kwargs) - response = self._do_post('os-keypairs', 'keypairs-post-req', subs, - api_version=self.microversion) + response = self._do_post('os-keypairs', 'keypairs-post-req', subs) subs = {'keypair_name': key_name} self._verify_response('keypairs-post-resp', subs, response, @@ -77,31 +80,28 @@ class KeyPairsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21): params['public_key'] = public_key params.update(**kwargs) response = self._do_post('os-keypairs', 'keypairs-import-post-req', - params, api_version=self.microversion) + params) self._verify_response('keypairs-import-post-resp', subs, response, self.expected_post_status_code) def test_keypairs_list(self): # Get api sample of key pairs list request. key_name = self.test_keypairs_post() - response = self._do_get('os-keypairs', - api_version=self.microversion) + response = self._do_get('os-keypairs') subs = {'keypair_name': key_name} self._verify_response('keypairs-list-resp', subs, response, 200) def test_keypairs_get(self): # Get api sample of key pairs get request. key_name = self.test_keypairs_post() - response = self._do_get('os-keypairs/%s' % key_name, - api_version=self.microversion) + response = self._do_get('os-keypairs/%s' % key_name) subs = {'keypair_name': key_name} self._verify_response('keypairs-get-resp', subs, response, 200) def test_keypairs_delete(self): # Get api sample of key pairs delete request. key_name = self.test_keypairs_post() - response = self._do_delete('os-keypairs/%s' % key_name, - api_version=self.microversion) + response = self._do_delete('os-keypairs/%s' % key_name) self.assertEqual(self.expected_delete_status_code, response.status_code) @@ -128,8 +128,7 @@ class KeyPairsV22SampleJsonTest(KeyPairsSampleJsonTest): def test_keypairs_post_invalid(self): key_name = 'keypair-' + str(uuid.uuid4()) subs = dict(keypair_name=key_name, keypair_type='fakey_type') - response = self._do_post('os-keypairs', 'keypairs-post-req', subs, - api_version=self.microversion) + response = self._do_post('os-keypairs', 'keypairs-post-req', subs) self.assertEqual(400, response.status_code) @@ -154,7 +153,7 @@ class KeyPairsV22SampleJsonTest(KeyPairsSampleJsonTest): 'public_key': fake_crypto.get_ssh_public_key() } response = self._do_post('os-keypairs', 'keypairs-import-post-req', - subs, api_version=self.microversion) + subs) self.assertEqual(400, response.status_code) @@ -203,8 +202,7 @@ class KeyPairsV210SampleJsonTest(KeyPairsSampleJsonTest): 'user_id': "fake" } key_name = self._check_keypairs_post(**subs) - response = self._do_delete('os-keypairs/%s?user_id=fake' % key_name, - api_version=self.microversion) + response = self._do_delete('os-keypairs/%s?user_id=fake' % key_name) self.assertEqual(self.expected_delete_status_code, response.status_code) @@ -222,8 +220,6 @@ class KeyPairsV210SampleJsonTestNotAdmin(KeyPairsV210SampleJsonTest): subs = dict(keypair_name=key_name, keypair_type=keypair_obj.KEYPAIR_TYPE_SSH, user_id='fake1') - response = self._do_post('os-keypairs', 'keypairs-post-req', subs, - api_version=self.microversion, - ) + response = self._do_post('os-keypairs', 'keypairs-post-req', subs) self.assertEqual(403, response.status_code) diff --git a/nova/tests/functional/api_sample_tests/test_remote_consoles.py b/nova/tests/functional/api_sample_tests/test_remote_consoles.py index 8a2bbfaf9f..83a93a4644 100644 --- a/nova/tests/functional/api_sample_tests/test_remote_consoles.py +++ b/nova/tests/functional/api_sample_tests/test_remote_consoles.py @@ -23,6 +23,7 @@ CONF.import_opt('osapi_compute_extension', class ConsolesSampleJsonTests(test_servers.ServersSampleBase): + microversion = None extension_name = "os-remote-consoles" def _get_flags(self): @@ -34,6 +35,7 @@ class ConsolesSampleJsonTests(test_servers.ServersSampleBase): def setUp(self): super(ConsolesSampleJsonTests, self).setUp() + self.api.microversion = self.microversion self.flags(enabled=True, group='vnc') self.flags(enabled=True, group='spice') self.flags(enabled=True, group='rdp') @@ -96,8 +98,7 @@ class ConsolesV26SampleJsonTests(test_servers.ServersSampleBase): body = {'protocol': 'vnc', 'type': 'novnc'} response = self._do_post('servers/%s/remote-consoles' % uuid, - 'create-vnc-console-req', body, - api_version='2.6') + 'create-vnc-console-req', body) subs = {"url": self.http_regex} self._verify_response('create-vnc-console-resp', subs, response, 200) @@ -117,7 +118,6 @@ class ConsolesV28SampleJsonTests(test_servers.ServersSampleBase): body = {'protocol': 'mks', 'type': 'webmks'} response = self._do_post('servers/%s/remote-consoles' % uuid, - 'create-mks-console-req', body, - api_version='2.8') + 'create-mks-console-req', body) subs = {"url": self.http_regex} self._verify_response('create-mks-console-resp', subs, response, 200) diff --git a/nova/tests/functional/api_sample_tests/test_server_migrations.py b/nova/tests/functional/api_sample_tests/test_server_migrations.py index b2829881b7..0b063f5843 100644 --- a/nova/tests/functional/api_sample_tests/test_server_migrations.py +++ b/nova/tests/functional/api_sample_tests/test_server_migrations.py @@ -30,6 +30,7 @@ class ServerMigrationsSampleJsonTest(test_servers.ServersSampleBase): """setUp method for server usage.""" super(ServerMigrationsSampleJsonTest, self).setUp() self.uuid = self._post_server() + self.api.microversion = '2.22' @mock.patch.object(conductor_manager.ComputeTaskManager, '_live_migrate') @mock.patch.object(db, 'service_get_by_compute_host') @@ -47,6 +48,5 @@ class ServerMigrationsSampleJsonTest(test_servers.ServersSampleBase): self._do_post('servers/%s/action' % self.uuid, 'live-migrate-server', {'hostname': self.compute.host}) response = self._do_post('servers/%s/migrations/%s/action' - % (self.uuid, '3'), 'force_complete', - {}, api_version='2.22') + % (self.uuid, '3'), 'force_complete', {}) self.assertEqual(202, response.status_code) diff --git a/nova/tests/functional/api_sample_tests/test_servers.py b/nova/tests/functional/api_sample_tests/test_servers.py index 61baa4cb58..3497679f4b 100644 --- a/nova/tests/functional/api_sample_tests/test_servers.py +++ b/nova/tests/functional/api_sample_tests/test_servers.py @@ -69,6 +69,10 @@ class ServersSampleJsonTest(ServersSampleBase): sample_dir = 'servers' microversion = None + def setUp(self): + super(ServersSampleJsonTest, self).setUp() + self.api.microversion = self.microversion + def _get_flags(self): f = super(ServersSampleBase, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] @@ -86,8 +90,7 @@ class ServersSampleJsonTest(ServersSampleBase): def test_servers_get(self): uuid = self.test_servers_post() - response = self._do_get('servers/%s' % uuid, - api_version=self.microversion) + response = self._do_get('servers/%s' % uuid) subs = {} subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid @@ -99,15 +102,13 @@ class ServersSampleJsonTest(ServersSampleBase): def test_servers_list(self): uuid = self._post_server() - response = self._do_get('servers', - api_version=self.microversion) + response = self._do_get('servers') subs = {'id': uuid} self._verify_response('servers-list-resp', subs, response, 200) def test_servers_details(self): uuid = self.test_servers_post() - response = self._do_get('servers/detail', - api_version=self.microversion) + response = self._do_get('servers/detail') subs = {} subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid @@ -349,7 +350,6 @@ class ServerTriggerCrashDumpJsonTest(ServersSampleBase): response = self._do_post('servers/%s/action' % uuid, 'server-action-trigger-crash-dump', - {}, - api_version=self.microversion) + {}) self.assertEqual(response.status_code, 202) self.assertEqual(response.content, "") diff --git a/nova/tests/functional/api_sample_tests/test_services.py b/nova/tests/functional/api_sample_tests/test_services.py index 236f4c6e09..fef17f8dfa 100644 --- a/nova/tests/functional/api_sample_tests/test_services.py +++ b/nova/tests/functional/api_sample_tests/test_services.py @@ -44,6 +44,7 @@ class ServicesJsonTest(api_sample_base.ApiSampleTestBaseV21): def setUp(self): super(ServicesJsonTest, self).setUp() + self.api.microversion = self.microversion self.stub_out("nova.db.service_get_all", test_services.fake_db_api_service_get_all) self.stub_out("nova.db.service_get_by_host_and_binary", @@ -54,8 +55,7 @@ class ServicesJsonTest(api_sample_base.ApiSampleTestBaseV21): def test_services_list(self): """Return a list of all agent builds.""" - response = self._do_get('os-services', - api_version=self.microversion) + response = self._do_get('os-services') subs = {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', @@ -68,8 +68,7 @@ class ServicesJsonTest(api_sample_base.ApiSampleTestBaseV21): subs = {"host": "host1", 'binary': 'nova-compute'} response = self._do_put('os-services/enable', - 'service-enable-put-req', subs, - api_version=self.microversion) + 'service-enable-put-req', subs) self._verify_response('service-enable-put-resp', subs, response, 200) def test_service_disable(self): @@ -77,8 +76,7 @@ class ServicesJsonTest(api_sample_base.ApiSampleTestBaseV21): subs = {"host": "host1", 'binary': 'nova-compute'} response = self._do_put('os-services/disable', - 'service-disable-put-req', subs, - api_version=self.microversion) + 'service-disable-put-req', subs) self._verify_response('service-disable-put-resp', subs, response, 200) def test_service_disable_log_reason(self): @@ -87,15 +85,13 @@ class ServicesJsonTest(api_sample_base.ApiSampleTestBaseV21): 'binary': 'nova-compute', 'disabled_reason': 'test2'} response = self._do_put('os-services/disable-log-reason', - 'service-disable-log-put-req', subs, - api_version=self.microversion) + 'service-disable-log-put-req', subs) self._verify_response('service-disable-log-put-resp', subs, response, 200) def test_service_delete(self): """Delete an existing service.""" - response = self._do_delete('os-services/1', - api_version=self.microversion) + response = self._do_delete('os-services/1') self.assertEqual(204, response.status_code) self.assertEqual("", response.content) @@ -108,8 +104,7 @@ class ServicesV211JsonTest(ServicesJsonTest): def test_services_list(self): """Return a list of all agent builds.""" - response = self._do_get('os-services', - api_version=self.microversion) + response = self._do_get('os-services') subs = {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', @@ -124,7 +119,6 @@ class ServicesV211JsonTest(ServicesJsonTest): 'binary': 'nova-compute', 'forced_down': 'true'} response = self._do_put('os-services/force-down', - 'service-force-down-put-req', subs, - api_version=self.microversion) + 'service-force-down-put-req', subs) self._verify_response('service-force-down-put-resp', subs, response, 200) diff --git a/nova/tests/functional/notification_sample_tests/test_service_update.py b/nova/tests/functional/notification_sample_tests/test_service_update.py index 78238635a4..f8858c4baa 100644 --- a/nova/tests/functional/notification_sample_tests/test_service_update.py +++ b/nova/tests/functional/notification_sample_tests/test_service_update.py @@ -56,9 +56,8 @@ class TestServiceUpdateNotificationSample( body = {'host': 'host1', 'binary': 'nova-compute', 'forced_down': True} - self.admin_api.api_put('os-services/force-down', - body, - api_version='2.12') + self.admin_api.microversion = '2.12' + self.admin_api.api_put('os-services/force-down', body) self._verify_notification('service-update', replacements={'forced_down': True, 'disabled': True, diff --git a/nova/tests/functional/test_instance_actions.py b/nova/tests/functional/test_instance_actions.py index 625f394cbd..82c515374d 100644 --- a/nova/tests/functional/test_instance_actions.py +++ b/nova/tests/functional/test_instance_actions.py @@ -67,10 +67,13 @@ class InstanceActionsTestV21(InstanceActionsTestV2): class InstanceActionsTestV221(InstanceActionsTestV21): microversion = '2.21' + def setUp(self): + super(InstanceActionsTestV221, self).setUp() + self.api.microversion = self.microversion + def test_get_instance_actions_deleted(self): server = self._create_server() self._delete_server(server['id']) - actions = self.api.get_instance_actions(server['id'], - api_version=self.microversion) + actions = self.api.get_instance_actions(server['id']) self.assertEqual('delete', actions[0]['action']) self.assertEqual('create', actions[1]['action'])