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:
Vladyslav Drok
2016-09-02 13:44:23 +03:00
parent 68e5a55cc8
commit 2218e65c8f
4 changed files with 49 additions and 0 deletions

View File

@@ -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

View File

@@ -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):

View 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)

View File

@@ -0,0 +1,4 @@
---
fixes:
- Fixes an issue with OpenStackClient plugin not being able to work with
versioned ironic endpoints.