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],
|
||||
session=instance.session,
|
||||
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
|
||||
|
@@ -35,6 +35,10 @@ class FakeClientManager(object):
|
||||
def __init__(self):
|
||||
self.identity = 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):
|
||||
|
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