Strip endpoint version in OSC plugin
To achieve this, we pass endpoint argument to the Client constructor, which is then set as endpoint_override with version stripped from it. Closes-Bug: #1619229 Change-Id: Idad0e6816ce8a5a0542e624cfe81f56c0ff2461c
This commit is contained in:
@@ -43,6 +43,12 @@ def make_client(instance):
|
|||||||
os_ironic_api_version=instance._api_version[API_NAME],
|
os_ironic_api_version=instance._api_version[API_NAME],
|
||||||
session=instance.session,
|
session=instance.session,
|
||||||
region_name=instance._region_name,
|
region_name=instance._region_name,
|
||||||
|
# NOTE(vdrok): This will be set as endpoint_override, and the Client
|
||||||
|
# class will be able to do the version stripping if needed
|
||||||
|
endpoint=instance.get_endpoint_for_service_type(
|
||||||
|
API_NAME, interface=instance.interface,
|
||||||
|
region_name=instance._region_name
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return client
|
return client
|
||||||
|
@@ -35,6 +35,10 @@ class FakeClientManager(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.identity = None
|
self.identity = None
|
||||||
self.auth_ref = None
|
self.auth_ref = None
|
||||||
|
self.interface = 'public'
|
||||||
|
self._region_name = 'RegionOne'
|
||||||
|
self.session = 'fake session'
|
||||||
|
self._api_version = {'baremetal': '1.6'}
|
||||||
|
|
||||||
|
|
||||||
class FakeResource(object):
|
class FakeResource(object):
|
||||||
|
35
ironicclient/tests/unit/osc/test_plugin.py
Normal file
35
ironicclient/tests/unit/osc/test_plugin.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
import mock
|
||||||
|
import testtools
|
||||||
|
|
||||||
|
from ironicclient.osc import plugin
|
||||||
|
from ironicclient.tests.unit.osc import fakes
|
||||||
|
from ironicclient.v1 import client
|
||||||
|
|
||||||
|
|
||||||
|
class MakeClientTest(testtools.TestCase):
|
||||||
|
|
||||||
|
@mock.patch.object(client, 'Client', autospec=True)
|
||||||
|
def test_make_client(self, mock_client):
|
||||||
|
instance = fakes.FakeClientManager()
|
||||||
|
instance.get_endpoint_for_service_type = mock.Mock(
|
||||||
|
return_value='endpoint')
|
||||||
|
plugin.make_client(instance)
|
||||||
|
mock_client.assert_called_once_with(os_ironic_api_version='1.6',
|
||||||
|
session=instance.session,
|
||||||
|
region_name=instance._region_name,
|
||||||
|
endpoint='endpoint')
|
||||||
|
instance.get_endpoint_for_service_type.assert_called_once_with(
|
||||||
|
'baremetal', region_name=instance._region_name,
|
||||||
|
interface=instance.interface)
|
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- Fixes an issue with OpenStackClient plugin not being able to work with
|
||||||
|
versioned ironic endpoints.
|
Reference in New Issue
Block a user