make microversion a client level construct for tests
Instead of passing around microversion in every method call, the way microversions are expected to be used by a client is by setting it globally for the client and using that microversion for all requests. This adds that support to the base test client, and updates nearly all tests to use it that way. test_server_group is tightly coupled and will require some much more specific unwind. Change-Id: I2263104c34328f11c687c6b8ef3a1cfd21980a63
This commit is contained in:
parent
5d97e62d19
commit
dbe8c9354d
|
@ -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)
|
||||
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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'] = 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]+'
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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, "")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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'])
|
||||
|
|
Loading…
Reference in New Issue