diff options
author | Dmitry Tantsur <dtantsur@protonmail.com> | 2019-09-23 15:09:05 +0200 |
---|---|---|
committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2019-09-23 15:09:05 +0200 |
commit | c3e490800aaeb1f814aa0af25a9155fa6f794215 (patch) | |
tree | e4aab67459ac9205e30ce08e8a2e99663e7f88da | |
parent | 5a9964b17601bda378fa71296737e97451300fb7 (diff) | |
download | python-ironicclient-c3e490800aaeb1f814aa0af25a9155fa6f794215.tar.gz |
Remove the requirement on either endpoint_override or os_ironic_api_version
It makes zero sense from a caller's perspective. We only use it for efficient
caching of API versions, which can safely be bypassed.
Change-Id: I00508d36ec1679cdcc9c9d1ec744d818dee74e0b
-rw-r--r-- | ironicclient/tests/unit/v1/test_client.py | 10 | ||||
-rw-r--r-- | ironicclient/v1/client.py | 31 | ||||
-rw-r--r-- | releasenotes/notes/endpoint-plus-version-4248f4f229dbc7dd.yaml | 6 |
3 files changed, 27 insertions, 20 deletions
diff --git a/ironicclient/tests/unit/v1/test_client.py b/ironicclient/tests/unit/v1/test_client.py index 40414d2..2881532 100644 --- a/ironicclient/tests/unit/v1/test_client.py +++ b/ironicclient/tests/unit/v1/test_client.py @@ -14,7 +14,6 @@ import mock from ironicclient.common import filecache from ironicclient.common import http -from ironicclient import exc from ironicclient.tests.unit import utils from ironicclient.v1 import client @@ -89,10 +88,11 @@ class ClientTest(utils.BaseTestCase): api_version_select_state='default') def test_client_cache_version_no_endpoint_as_arg(self, http_client_mock): - self.assertRaises(exc.EndpointException, - client.Client, - session='fake_session', - insecure=True) + client.Client(session='fake_session', insecure=True) + http_client_mock.assert_called_once_with( + session='fake_session', insecure=True, + os_ironic_api_version=client.DEFAULT_VER, + api_version_select_state='default') def test_client_initialized_managers(self, http_client_mock): cl = client.Client('http://ironic:6385', token='safe_token', diff --git a/ironicclient/v1/client.py b/ironicclient/v1/client.py index 5b26b4a..6f256b0 100644 --- a/ironicclient/v1/client.py +++ b/ironicclient/v1/client.py @@ -18,8 +18,6 @@ import logging from ironicclient.common import filecache from ironicclient.common import http from ironicclient.common.http import DEFAULT_VER -from ironicclient.common.i18n import _ -from ironicclient import exc from ironicclient.v1 import allocation from ironicclient.v1 import chassis from ironicclient.v1 import conductor @@ -66,23 +64,26 @@ class Client(object): else: kwargs['api_version_select_state'] = "user" else: - if not endpoint_override: - raise exc.EndpointException( - _("Must provide 'endpoint_override' if " - "'os_ironic_api_version' isn't specified")) - - # If the user didn't specify a version, use a cached version if - # one has been stored - host, netport = http.get_server(endpoint_override) - saved_version = filecache.retrieve_data(host=host, port=netport) - if saved_version: - kwargs['api_version_select_state'] = "cached" - kwargs['os_ironic_api_version'] = saved_version + if endpoint_override: + # If the user didn't specify a version, use a cached version if + # one has been stored + host, netport = http.get_server(endpoint_override) + saved_version = filecache.retrieve_data(host=host, + port=netport) + if saved_version: + kwargs['api_version_select_state'] = "cached" + kwargs['os_ironic_api_version'] = saved_version + else: + kwargs['api_version_select_state'] = "default" + kwargs['os_ironic_api_version'] = DEFAULT_VER else: + LOG.debug('Cannot use cached API version since endpoint ' + 'override is not provided. Will negotiate again.') kwargs['api_version_select_state'] = "default" kwargs['os_ironic_api_version'] = DEFAULT_VER - kwargs['endpoint_override'] = endpoint_override + if endpoint_override: + kwargs['endpoint_override'] = endpoint_override self.http_client = http._construct_http_client(*args, **kwargs) self.chassis = chassis.ChassisManager(self.http_client) diff --git a/releasenotes/notes/endpoint-plus-version-4248f4f229dbc7dd.yaml b/releasenotes/notes/endpoint-plus-version-4248f4f229dbc7dd.yaml new file mode 100644 index 0000000..3749e80 --- /dev/null +++ b/releasenotes/notes/endpoint-plus-version-4248f4f229dbc7dd.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Removes the requirement on passing either ``endpoint_override`` or + ``os_ironic_api_version`` to ``get_client``. This is only required for + efficient caching of API versions and shouldn't be a hard requirement. |