summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lower-constraints.txt2
-rw-r--r--nova/network/neutronv2/api.py10
-rw-r--r--nova/scheduler/client/report.py22
-rw-r--r--nova/tests/unit/network/test_neutronv2.py16
-rw-r--r--nova/tests/unit/scheduler/client/test_report.py99
-rw-r--r--requirements.txt2
6 files changed, 70 insertions, 81 deletions
diff --git a/lower-constraints.txt b/lower-constraints.txt
index 873f8c1cea..8a1812c568 100644
--- a/lower-constraints.txt
+++ b/lower-constraints.txt
@@ -44,7 +44,7 @@ jsonpath-rw==1.4.0
jsonpath-rw-ext==1.1.3
jsonpointer==2.0
jsonschema==2.6.0
-keystoneauth1==3.9.0
+keystoneauth1==3.15.0
keystonemiddleware==4.20.0
kombu==4.1.0
linecache2==1.0.0
diff --git a/nova/network/neutronv2/api.py b/nova/network/neutronv2/api.py
index 4b1fd24603..3e27bd4ac9 100644
--- a/nova/network/neutronv2/api.py
+++ b/nova/network/neutronv2/api.py
@@ -22,7 +22,6 @@ from keystoneauth1 import loading as ks_loading
from neutronclient.common import exceptions as neutron_client_exc
from neutronclient.v2_0 import client as clientv20
from oslo_log import log as logging
-from oslo_middleware import request_id
from oslo_utils import excutils
from oslo_utils import strutils
from oslo_utils import uuidutils
@@ -1328,7 +1327,7 @@ class API(base_api.NetworkAPI):
"""
return client.post(
'/v2.0/ports/%s/bindings' % port_id, json=data, raise_exc=False,
- headers={request_id.INBOUND_HEADER: context.global_id})
+ global_request_id=context.global_id)
def delete_port_binding(self, context, port_id, host):
"""Delete the port binding for the given port ID and host
@@ -1371,7 +1370,7 @@ class API(base_api.NetworkAPI):
"""
return client.delete(
'/v2.0/ports/%s/bindings/%s' % (port_id, host), raise_exc=False,
- headers={request_id.INBOUND_HEADER: context.global_id})
+ global_request_id=context.global_id)
def activate_port_binding(self, context, port_id, host):
"""Activates an inactive port binding.
@@ -1393,7 +1392,7 @@ class API(base_api.NetworkAPI):
resp = client.put(
'/v2.0/ports/%s/bindings/%s/activate' % (port_id, host),
raise_exc=False,
- headers={request_id.INBOUND_HEADER: context.global_id})
+ global_request_id=context.global_id)
if resp:
LOG.debug('Activated binding for port %s and host %s.',
port_id, host)
@@ -2701,8 +2700,7 @@ class API(base_api.NetworkAPI):
# port and destination host.
resp = client.get(
'/v2.0/ports/%s/bindings/%s' % (vif['id'], dest_host),
- raise_exc=False,
- headers={request_id.INBOUND_HEADER: context.global_id})
+ raise_exc=False, global_request_id=context.global_id)
if resp:
if resp.json()['binding']['status'] != 'ACTIVE':
self.activate_port_binding(context, vif['id'], dest_host)
diff --git a/nova/scheduler/client/report.py b/nova/scheduler/client/report.py
index 68330b0c3a..541c17b74d 100644
--- a/nova/scheduler/client/report.py
+++ b/nova/scheduler/client/report.py
@@ -247,36 +247,28 @@ class SchedulerReportClient(object):
return client
def get(self, url, version=None, global_request_id=None):
- headers = ({request_id.INBOUND_HEADER: global_request_id}
- if global_request_id else {})
- return self._client.get(url, microversion=version, headers=headers)
+ return self._client.get(url, microversion=version,
+ global_request_id=global_request_id)
def post(self, url, data, version=None, global_request_id=None):
- headers = ({request_id.INBOUND_HEADER: global_request_id}
- if global_request_id else {})
# NOTE(sdague): using json= instead of data= sets the
# media type to application/json for us. Placement API is
# more sensitive to this than other APIs in the OpenStack
# ecosystem.
return self._client.post(url, json=data, microversion=version,
- headers=headers)
+ global_request_id=global_request_id)
def put(self, url, data, version=None, global_request_id=None):
# NOTE(sdague): using json= instead of data= sets the
# media type to application/json for us. Placement API is
# more sensitive to this than other APIs in the OpenStack
# ecosystem.
- kwargs = {'microversion': version,
- 'headers': {request_id.INBOUND_HEADER:
- global_request_id} if global_request_id else {}}
- if data is not None:
- kwargs['json'] = data
- return self._client.put(url, **kwargs)
+ return self._client.put(url, json=data, microversion=version,
+ global_request_id=global_request_id)
def delete(self, url, version=None, global_request_id=None):
- headers = ({request_id.INBOUND_HEADER: global_request_id}
- if global_request_id else {})
- return self._client.delete(url, microversion=version, headers=headers)
+ return self._client.delete(url, microversion=version,
+ global_request_id=global_request_id)
@safe_connect
def get_allocation_candidates(self, context, resources):
diff --git a/nova/tests/unit/network/test_neutronv2.py b/nova/tests/unit/network/test_neutronv2.py
index 85c74334ef..f34276845f 100644
--- a/nova/tests/unit/network/test_neutronv2.py
+++ b/nova/tests/unit/network/test_neutronv2.py
@@ -5715,7 +5715,7 @@ class TestNeutronv2WithMock(TestNeutronv2Base):
activate.assert_called_once_with(self.context, uuids.port_id, 'dest')
get_client_mock.return_value.get.assert_called_once_with(
'/v2.0/ports/%s/bindings/dest' % uuids.port_id, raise_exc=False,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
@mock.patch('nova.network.neutronv2.api._get_ksa_client')
def test_migrate_instance_start_already_active(self, get_client_mock):
@@ -5738,7 +5738,7 @@ class TestNeutronv2WithMock(TestNeutronv2Base):
self.context, instance, migration)
get_client_mock.return_value.get.assert_called_once_with(
'/v2.0/ports/%s/bindings/dest' % uuids.port_id, raise_exc=False,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
@mock.patch('nova.network.neutronv2.api._get_ksa_client')
def test_migrate_instance_start_no_bindings(self, get_client_mock):
@@ -5763,7 +5763,7 @@ class TestNeutronv2WithMock(TestNeutronv2Base):
self.context, instance, migration)
get_client_mock.return_value.get.assert_called_once_with(
'/v2.0/ports/%s/bindings/dest' % uuids.port1, raise_exc=False,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
@mock.patch('nova.network.neutronv2.api._get_ksa_client')
def test_migrate_instance_start_get_error(self, get_client_mock):
@@ -5788,11 +5788,11 @@ class TestNeutronv2WithMock(TestNeutronv2Base):
mock.call(
'/v2.0/ports/%s/bindings/dest' % uuids.port1,
raise_exc=False,
- headers={'X-Openstack-Request-Id': self.context.global_id}),
+ global_request_id=self.context.global_id),
mock.call(
'/v2.0/ports/%s/bindings/dest' % uuids.port2,
raise_exc=False,
- headers={'X-Openstack-Request-Id': self.context.global_id})])
+ global_request_id=self.context.global_id)])
class TestNeutronv2ModuleMethods(test.NoDBTestCase):
@@ -6294,7 +6294,7 @@ class TestNeutronv2Portbinding(TestNeutronv2Base):
mock_client.return_value.put.assert_called_once_with(
'/v2.0/ports/%s/bindings/fake-host/activate' % uuids.port_id,
raise_exc=False,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
@mock.patch('nova.network.neutronv2.api._get_ksa_client')
@mock.patch('nova.network.neutronv2.api.LOG.warning')
@@ -6307,7 +6307,7 @@ class TestNeutronv2Portbinding(TestNeutronv2Base):
mock_client.return_value.put.assert_called_once_with(
'/v2.0/ports/%s/bindings/fake-host/activate' % uuids.port_id,
raise_exc=False,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertEqual(1, mock_log_warning.call_count)
self.assertIn('is already active', mock_log_warning.call_args[0][0])
@@ -6321,7 +6321,7 @@ class TestNeutronv2Portbinding(TestNeutronv2Base):
mock_client.return_value.put.assert_called_once_with(
'/v2.0/ports/%s/bindings/fake-host/activate' % uuids.port_id,
raise_exc=False,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
class TestAllocateForInstance(test.NoDBTestCase):
diff --git a/nova/tests/unit/scheduler/client/test_report.py b/nova/tests/unit/scheduler/client/test_report.py
index 6849a595f8..efb1aa6d5e 100644
--- a/nova/tests/unit/scheduler/client/test_report.py
+++ b/nova/tests/unit/scheduler/client/test_report.py
@@ -438,7 +438,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
expected_payload['user_id'] = user_id
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.12', json=expected_payload,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertTrue(res)
@@ -482,7 +482,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
'user_id': user_id}
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.12', json=expected_payload,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertTrue(res)
def test_claim_resources_success_resize_to_same_host_no_shared(self):
@@ -548,7 +548,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
'user_id': user_id}
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# We have to pull the json body from the mock call_args to validate
# it separately otherwise hash seed issues get in the way.
actual_payload = self.ks_adap_mock.put.call_args[1]['json']
@@ -628,7 +628,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
'user_id': user_id}
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# We have to pull the json body from the mock call_args to validate
# it separately otherwise hash seed issues get in the way.
actual_payload = self.ks_adap_mock.put.call_args[1]['json']
@@ -715,7 +715,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
'user_id': user_id}
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# We have to pull the json body from the mock call_args to validate
# it separately otherwise hash seed issues get in the way.
actual_payload = self.ks_adap_mock.put.call_args[1]['json']
@@ -814,7 +814,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
'user_id': user_id}
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# We have to pull the json body from the mock call_args to validate
# it separately otherwise hash seed issues get in the way.
actual_payload = self.ks_adap_mock.put.call_args[1]['json']
@@ -904,7 +904,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
'user_id': user_id}
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# We have to pull the json body from the mock call_args to validate
# it separately otherwise hash seed issues get in the way.
actual_payload = self.ks_adap_mock.put.call_args[1]['json']
@@ -1007,7 +1007,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
'user_id': user_id}
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# We have to pull the json body from the mock call_args to validate
# it separately otherwise hash seed issues get in the way.
actual_payload = self.ks_adap_mock.put.call_args[1]['json']
@@ -1063,8 +1063,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
# identical since we're retrying the same HTTP request
expected_calls = [
mock.call(expected_url, microversion='1.28', json=expected_payload,
- headers={'X-Openstack-Request-Id':
- self.context.global_id})] * 2
+ global_request_id=self.context.global_id)] * 2
self.assertEqual(len(expected_calls),
self.ks_adap_mock.put.call_count)
self.ks_adap_mock.put.assert_has_calls(expected_calls)
@@ -1115,7 +1114,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
expected_payload['consumer_generation'] = None
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=expected_payload,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertFalse(res)
self.assertTrue(mock_log.called)
@@ -1163,7 +1162,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
'consumer_generation': None}
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=expected_payload,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
def test_remove_provider_from_inst_alloc_no_shared(self):
"""Tests that the method which manipulates an existing doubled-up
@@ -1235,7 +1234,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
self.assertEqual(expected_payload, actual_payload)
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertTrue(res)
@@ -1322,7 +1321,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
self.assertEqual(expected_payload, actual_payload)
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertTrue(res)
@@ -1507,12 +1506,12 @@ class TestPutAllocations(SchedulerReportClientTestCase):
[
mock.call(
'/allocations/%s' % consumer_uuid,
- headers=mock.ANY,
+ global_request_id=self.context.global_id,
microversion='1.28'
),
mock.call(
'/resource_providers?in_tree=%s' % uuids.source_compute,
- headers=mock.ANY,
+ global_request_id=self.context.global_id,
microversion='1.14'
)
],
@@ -1524,7 +1523,7 @@ class TestPutAllocations(SchedulerReportClientTestCase):
self.assertEqual(expected_payload, actual_payload)
self.ks_adap_mock.put.assert_called_once_with(
expected_url, microversion='1.28', json=mock.ANY,
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertTrue(res)
@@ -2115,7 +2114,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_query)
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.31',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertEqual(mock.sentinel.alloc_reqs, alloc_reqs)
self.assertEqual(mock.sentinel.p_sums, p_sums)
@@ -2155,7 +2154,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
self.assertEqual(mock.sentinel.alloc_reqs, alloc_reqs)
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.31',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertEqual(mock.sentinel.p_sums, p_sums)
def test_get_allocation_candidates_not_found(self):
@@ -2177,7 +2176,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
self.ks_adap_mock.get.assert_called_once_with(
mock.ANY, microversion='1.31',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
url = self.ks_adap_mock.get.call_args[0][0]
split_url = parse.urlsplit(url)
query = parse.parse_qs(split_url.query)
@@ -2210,7 +2209,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers/' + uuid
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.14',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertEqual(expected_provider_dict, result)
def test_get_resource_provider_not_found(self):
@@ -2225,7 +2224,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers/' + uuid
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.14',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertIsNone(result)
@mock.patch.object(report.LOG, 'error')
@@ -2246,7 +2245,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers/' + uuid
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.14',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# A 503 Service Unavailable should trigger an error log that
# includes the placement request id and return None
# from _get_resource_provider()
@@ -2285,7 +2284,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
'&required=MISC_SHARES_VIA_AGGREGATE')
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.18',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertEqual(rpjson, result)
def test_get_sharing_providers_emptylist(self):
@@ -2311,7 +2310,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
'&required=MISC_SHARES_VIA_AGGREGATE')
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.18',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# A 503 Service Unavailable should trigger an error log that
# includes the placement request id
self.assertTrue(logging_mock.called)
@@ -2346,7 +2345,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers?in_tree=' + root
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.14',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertEqual(rpjson, result)
@mock.patch.object(report.LOG, 'error')
@@ -2366,7 +2365,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers?in_tree=' + uuid
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.14',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# A 503 Service Unavailable should trigger an error log that includes
# the placement request id
self.assertTrue(logging_mock.called)
@@ -2400,7 +2399,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers'
self.ks_adap_mock.post.assert_called_once_with(
expected_url, json=expected_payload, microversion='1.20',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
def test_create_resource_provider_with_parent(self):
"""Test that when specifying a parent provider UUID, that the
@@ -2430,7 +2429,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers'
self.ks_adap_mock.post.assert_called_once_with(
expected_url, json=expected_payload, microversion='1.20',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
@mock.patch.object(report.LOG, 'info')
@mock.patch('nova.scheduler.client.report.SchedulerReportClient.'
@@ -2460,7 +2459,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers'
self.ks_adap_mock.post.assert_called_once_with(
expected_url, json=expected_payload, microversion='1.20',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertEqual(mock.sentinel.get_rp, result)
# The 409 response will produce a message to the info log.
self.assertTrue(logging_mock.called)
@@ -2500,7 +2499,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
expected_url = '/resource_providers'
self.ks_adap_mock.post.assert_called_once_with(
expected_url, json=expected_payload, microversion='1.20',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# A 503 Service Unavailable should log an error that
# includes the placement request id and
# _create_resource_provider() should return None
@@ -2515,7 +2514,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
url = '/resource_providers/%s/aggregates' % uuids.foo
self.client.put(url, [])
self.ks_adap_mock.put.assert_called_once_with(
- url, json=[], microversion=None, headers={})
+ url, json=[], microversion=None, global_request_id=None)
def test_delete_provider(self):
delete_mock = fake_requests.FakeResponse(None)
@@ -2532,7 +2531,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
self.ks_adap_mock.delete.assert_called_once_with(
'/resource_providers/' + uuids.root,
- headers={'X-Openstack-Request-Id': 'gri'}, microversion=None)
+ global_request_id='gri', microversion=None)
self.assertFalse(self.client._provider_tree.exists(uuids.root))
self.assertNotIn(uuids.root, self.client._association_refresh_time)
@@ -2549,7 +2548,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
self.assertRaises(exc, self.client._delete_provider, uuids.root)
self.ks_adap_mock.delete.assert_called_once_with(
'/resource_providers/' + uuids.root, microversion=None,
- headers={})
+ global_request_id=None)
self.ks_adap_mock.delete.reset_mock()
@@ -2572,7 +2571,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
self.ks_adap_mock.put.assert_called_once_with(
'/resource_providers/%s/aggregates' % uuids.rp, json=exp_payload,
microversion='1.19',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# Cache was updated
ptree_data = self.client._provider_tree.data(uuids.rp)
self.assertEqual(set(aggs), ptree_data.aggregates)
@@ -2634,7 +2633,7 @@ class TestProviderOperations(SchedulerReportClientTestCase):
self.ks_adap_mock.put.assert_called_once_with(
'/resource_providers/%s/aggregates' % uuids.rp, json=exp_payload,
microversion='1.19',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
# Cache was updated
ptree_data = self.client._provider_tree.data(uuids.rp)
self.assertEqual(set(), ptree_data.aggregates)
@@ -2712,7 +2711,7 @@ class TestAggregates(SchedulerReportClientTestCase):
expected_url = '/resource_providers/' + uuid + '/aggregates'
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.19',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertEqual(set(aggs), result)
self.assertEqual(42, gen)
@@ -2735,7 +2734,7 @@ class TestAggregates(SchedulerReportClientTestCase):
expected_url = '/resource_providers/' + uuid + '/aggregates'
self.ks_adap_mock.get.assert_called_once_with(
expected_url, microversion='1.19',
- headers={'X-Openstack-Request-Id': self.context.global_id})
+ global_request_id=self.context.global_id)
self.assertTrue(log_mock.called)
self.assertEqual(uuids.request_id,
log_mock.call_args[0][1]['placement_req_id'])
@@ -2762,7 +2761,7 @@ class TestTraits(SchedulerReportClientTestCase):
expected_url = '/resource_providers/' + uuid + '/traits'
self.ks_adap_mock.get.assert_called_once_with(
expected_url,
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
self.assertEqual(set(traits), result)
self.assertEqual(42, gen)
@@ -2786,7 +2785,7 @@ class TestTraits(SchedulerReportClientTestCase):
expected_url = '/resource_providers/' + uuid + '/traits'
self.ks_adap_mock.get.assert_called_once_with(
expected_url,
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
self.assertTrue(log_mock.called)
self.assertEqual(uuids.request_id,
@@ -2803,7 +2802,7 @@ class TestTraits(SchedulerReportClientTestCase):
expected_url = '/resource_providers/' + uuid + '/traits'
self.ks_adap_mock.get.assert_called_once_with(
expected_url,
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
def test_ensure_traits(self):
@@ -2822,12 +2821,12 @@ class TestTraits(SchedulerReportClientTestCase):
self.client._ensure_traits(self.context, all_traits)
self.ks_adap_mock.get.assert_called_once_with(
'/traits?name=in:' + ','.join(all_traits),
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
self.ks_adap_mock.put.assert_has_calls(
[mock.call('/traits/' + trait,
- headers={'X-Openstack-Request-Id': self.context.global_id},
- **self.trait_api_kwargs)
+ global_request_id=self.context.global_id, json=None,
+ **self.trait_api_kwargs)
for trait in custom_traits], any_order=True)
self.ks_adap_mock.reset_mock()
@@ -2837,7 +2836,7 @@ class TestTraits(SchedulerReportClientTestCase):
self.client._ensure_traits(self.context, standard_traits)
self.ks_adap_mock.get.assert_called_once_with(
'/traits?name=in:' + ','.join(standard_traits),
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
self.ks_adap_mock.put.assert_not_called()
@@ -2858,7 +2857,7 @@ class TestTraits(SchedulerReportClientTestCase):
self.ks_adap_mock.get.assert_called_once_with(
'/traits?name=in:FOO',
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
self.ks_adap_mock.put.assert_not_called()
@@ -2874,11 +2873,11 @@ class TestTraits(SchedulerReportClientTestCase):
self.ks_adap_mock.get.assert_called_once_with(
'/traits?name=in:FOO',
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
self.ks_adap_mock.put.assert_called_once_with(
'/traits/FOO',
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id, json=None,
**self.trait_api_kwargs)
def test_set_traits_for_provider(self):
@@ -2904,12 +2903,12 @@ class TestTraits(SchedulerReportClientTestCase):
# Verify API calls
self.ks_adap_mock.get.assert_called_once_with(
'/traits?name=in:' + ','.join(traits),
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
self.ks_adap_mock.put.assert_called_once_with(
'/resource_providers/%s/traits' % uuids.rp,
json={'traits': traits, 'resource_provider_generation': 0},
- headers={'X-Openstack-Request-Id': self.context.global_id},
+ global_request_id=self.context.global_id,
**self.trait_api_kwargs)
# And ensure the provider tree cache was updated appropriately
diff --git a/requirements.txt b/requirements.txt
index f5db1e343c..9d3d537410 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -27,7 +27,7 @@ enum34>=1.0.4;python_version=='2.7' or python_version=='2.6' or python_version==
iso8601>=0.1.11 # MIT
jsonschema>=2.6.0 # MIT
python-cinderclient!=4.0.0,>=3.3.0 # Apache-2.0
-keystoneauth1>=3.9.0 # Apache-2.0
+keystoneauth1>=3.15.0 # Apache-2.0
python-neutronclient>=6.7.0 # Apache-2.0
python-glanceclient>=2.8.0 # Apache-2.0
requests>=2.14.2 # Apache-2.0