diff options
author | Dmitry Tantsur <dtantsur@protonmail.com> | 2019-09-23 15:09:05 +0200 |
---|---|---|
committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2019-09-24 13:01:53 +0000 |
commit | fbbbf35d98a7257b3317b73a4db9d655d9fe1805 (patch) | |
tree | d2c5e9c8a4587c49c33ec2cf119a436d341c7fe0 | |
parent | c5767bbddcd06e18c4837750336ed429c99f9209 (diff) | |
download | python-ironicclient-fbbbf35d98a7257b3317b73a4db9d655d9fe1805.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
(cherry picked from commit c3e490800aaeb1f814aa0af25a9155fa6f794215)
-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. |