summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2019-09-23 15:09:05 +0200
committerDmitry Tantsur <dtantsur@protonmail.com>2019-09-23 15:09:05 +0200
commitc3e490800aaeb1f814aa0af25a9155fa6f794215 (patch)
treee4aab67459ac9205e30ce08e8a2e99663e7f88da
parent5a9964b17601bda378fa71296737e97451300fb7 (diff)
downloadpython-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.py10
-rw-r--r--ironicclient/v1/client.py31
-rw-r--r--releasenotes/notes/endpoint-plus-version-4248f4f229dbc7dd.yaml6
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.