diff options
author | Dmitry Tantsur <dtantsur@protonmail.com> | 2019-09-24 13:31:43 +0200 |
---|---|---|
committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2019-09-24 13:33:04 +0000 |
commit | 4420811710d0ad2b5e245b4b48369b7313e08df8 (patch) | |
tree | 47b490f4ca1d0599f23bf4e09194b18315ccdf29 | |
parent | c5767bbddcd06e18c4837750336ed429c99f9209 (diff) | |
download | python-ironicclient-4420811710d0ad2b5e245b4b48369b7313e08df8.tar.gz |
Make it clear that a Session is required for v1.client.Client
Change-Id: Icfb5f11a59a6b7cc65dcda0b87240c57c120e228
(cherry picked from commit 66a9c87c39a08727e3a3b8c18ba3281c9999b528)
-rw-r--r-- | ironicclient/common/http.py | 2 | ||||
-rw-r--r-- | ironicclient/tests/unit/v1/test_client.py | 33 | ||||
-rw-r--r-- | ironicclient/v1/client.py | 5 | ||||
-rw-r--r-- | releasenotes/notes/missing-session-cc11e62dc966b4e0.yaml | 10 |
4 files changed, 28 insertions, 22 deletions
diff --git a/ironicclient/common/http.py b/ironicclient/common/http.py index 9ff8f01..ad28e7e 100644 --- a/ironicclient/common/http.py +++ b/ironicclient/common/http.py @@ -481,7 +481,7 @@ class SessionClient(VersionNegotiationMixin, adapter.LegacyJsonAdapter): return self._http_request(url, method, **kwargs) -def _construct_http_client(session=None, +def _construct_http_client(session, token=None, auth_ref=None, os_ironic_api_version=DEFAULT_VER, diff --git a/ironicclient/tests/unit/v1/test_client.py b/ironicclient/tests/unit/v1/test_client.py index 40414d2..62ef64e 100644 --- a/ironicclient/tests/unit/v1/test_client.py +++ b/ironicclient/tests/unit/v1/test_client.py @@ -22,69 +22,67 @@ from ironicclient.v1 import client @mock.patch.object(http, '_construct_http_client', autospec=True) class ClientTest(utils.BaseTestCase): + session = mock.sentinel.session + def test_client_user_api_version(self, http_client_mock): endpoint = 'http://ironic:6385' - token = 'safe_token' os_ironic_api_version = '1.15' - client.Client(endpoint, token=token, + client.Client(endpoint, session=self.session, os_ironic_api_version=os_ironic_api_version) http_client_mock.assert_called_once_with( - endpoint_override=endpoint, token=token, + endpoint_override=endpoint, session=self.session, os_ironic_api_version=os_ironic_api_version, api_version_select_state='user') def test_client_user_api_version_with_downgrade(self, http_client_mock): endpoint = 'http://ironic:6385' - token = 'safe_token' os_ironic_api_version = '1.15' - client.Client(endpoint, token=token, + client.Client(endpoint, session=self.session, os_ironic_api_version=os_ironic_api_version, allow_api_version_downgrade=True) http_client_mock.assert_called_once_with( - token=token, endpoint_override=endpoint, + endpoint_override=endpoint, session=self.session, os_ironic_api_version=os_ironic_api_version, api_version_select_state='default') def test_client_user_api_version_latest_with_downgrade(self, http_client_mock): endpoint = 'http://ironic:6385' - token = 'safe_token' os_ironic_api_version = 'latest' self.assertRaises(ValueError, client.Client, endpoint, - token=token, allow_api_version_downgrade=True, + session=self.session, + allow_api_version_downgrade=True, os_ironic_api_version=os_ironic_api_version) @mock.patch.object(filecache, 'retrieve_data', autospec=True) def test_client_cache_api_version(self, cache_mock, http_client_mock): endpoint = 'http://ironic:6385' - token = 'safe_token' os_ironic_api_version = '1.15' cache_mock.return_value = os_ironic_api_version - client.Client(endpoint, token=token) + client.Client(endpoint, session=self.session) cache_mock.assert_called_once_with(host='ironic', port='6385') http_client_mock.assert_called_once_with( - endpoint_override=endpoint, token=token, + endpoint_override=endpoint, session=self.session, os_ironic_api_version=os_ironic_api_version, api_version_select_state='cached') @mock.patch.object(filecache, 'retrieve_data', autospec=True) def test_client_default_api_version(self, cache_mock, http_client_mock): endpoint = 'http://ironic:6385' - token = 'safe_token' cache_mock.return_value = None - client.Client(endpoint, token=token) + client.Client(endpoint, session=self.session) cache_mock.assert_called_once_with(host='ironic', port='6385') http_client_mock.assert_called_once_with( - endpoint_override=endpoint, token=token, + endpoint_override=endpoint, session=self.session, os_ironic_api_version=client.DEFAULT_VER, api_version_select_state='default') @@ -95,7 +93,7 @@ class ClientTest(utils.BaseTestCase): insecure=True) def test_client_initialized_managers(self, http_client_mock): - cl = client.Client('http://ironic:6385', token='safe_token', + cl = client.Client('http://ironic:6385', session=self.session, os_ironic_api_version='1.15') self.assertIsInstance(cl.node, client.node.NodeManager) @@ -105,15 +103,14 @@ class ClientTest(utils.BaseTestCase): def test_negotiate_api_version(self, http_client_mock): endpoint = 'http://ironic:6385' - token = 'safe_token' os_ironic_api_version = 'latest' - cl = client.Client(endpoint, token=token, + cl = client.Client(endpoint, session=self.session, os_ironic_api_version=os_ironic_api_version) cl.negotiate_api_version() http_client_mock.assert_called_once_with( api_version_select_state='user', endpoint_override=endpoint, - os_ironic_api_version='latest', token=token) + os_ironic_api_version='latest', session=self.session) # TODO(TheJulia): We should verify that negotiate_version # is being called in the client and returns a version, # although mocking might need to be restrutured to diff --git a/ironicclient/v1/client.py b/ironicclient/v1/client.py index 5b26b4a..11b40be 100644 --- a/ironicclient/v1/client.py +++ b/ironicclient/v1/client.py @@ -40,9 +40,8 @@ class Client(object): :param string endpoint_override: A user-supplied endpoint URL for the ironic service. - :param function token: Provides token for authentication. - :param integer timeout: Allows customization of the timeout for client - http requests. (optional) + :param session: A keystoneauth Session object (must be provided as + a keyword argument). """ def __init__(self, endpoint_override=None, *args, **kwargs): diff --git a/releasenotes/notes/missing-session-cc11e62dc966b4e0.yaml b/releasenotes/notes/missing-session-cc11e62dc966b4e0.yaml new file mode 100644 index 0000000..d421e7b --- /dev/null +++ b/releasenotes/notes/missing-session-cc11e62dc966b4e0.yaml @@ -0,0 +1,10 @@ +--- +fixes: + - | + Fixes a confusing error message when a session is not provided for + ``ironicclient.v1.client.Client``. + - | + With the removal of the ``HTTPClient`` class in the release 3.0.0, it is + now mandatory to pass a session into ``ironicclient.v1.client.Client``. + The helper call ``ironicclient.client.get_client`` can also be used to + construct a session implicitly. |