Endpoint type for glanceclient

At this moment nevertheless of 'endpoint_type' parameter from
'glance_client' section Zun always tries to interact with Glance
public API endpoint. If public API endpoint unaccessible from
compute nodes zun-compute service is unable to run new container
from image stored in the glance repository.

This patch intended to make Zun use 'endpoint_type' parameter
from 'glance_client' section of zun.conf file and pass the same
type of endpoint to the glanceclient.

Change-Id: Ibfa5cd8a48502c3dec357437fef0094ab8960a77
This commit is contained in:
Stanislav Dmitriev 2019-06-28 19:45:21 +00:00 committed by Hongbin Lu
parent 009424db69
commit bcd102c97e
2 changed files with 24 additions and 3 deletions

View File

@ -62,7 +62,15 @@ class OpenStackClients(object):
glanceclient_version = self._get_client_option('glance', 'api_version')
session = self.keystone().session
endpoint_type = self._get_client_option('glance', 'endpoint_type')
region_name = self._get_client_option('glance', 'region_name')
glance_url = self.url_for(service_type='image',
interface=endpoint_type,
region_name=region_name)
self._glance = glanceclient.Client(glanceclient_version,
endpoint=glance_url,
session=session)
return self._glance

View File

@ -61,14 +61,26 @@ class ClientsTest(base.BaseTestCase):
@mock.patch.object(clients.OpenStackClients, 'keystone')
def _test_clients_glance(self, expected_region_name, mock_keystone,
mock_call):
mock_keystone.return_value = mock.Mock(session='fake-session')
mock_session = mock_keystone.return_value.session
mock_session.get_endpoint.return_value = 'glance_url'
fake_region = 'fake_region'
fake_endpoint = 'fake_endpoint'
zun.conf.CONF.set_override('region_name', fake_region,
group='glance_client')
zun.conf.CONF.set_override('endpoint_type', fake_endpoint,
group='glance_client')
con = mock.MagicMock()
obj = clients.OpenStackClients(con)
obj._glance = None
obj.glance()
mock_session.get_endpoint.assert_called_once_with(
region_name=fake_region, service_type='image',
interface=fake_endpoint)
mock_call.assert_called_once_with(
zun.conf.CONF.glance_client.api_version,
session='fake-session')
endpoint='glance_url',
session=mock_session)
def test_clients_glance(self):
self._test_clients_glance(None)
@ -80,7 +92,8 @@ class ClientsTest(base.BaseTestCase):
@mock.patch.object(clients.OpenStackClients, 'keystone')
def test_clients_glance_cached(self, mock_keystone):
mock_keystone.return_value = mock.Mock(session='fake-session')
mock_keystone.return_value.session.get_endpoint.return_value = \
'glance_url'
con = mock.MagicMock()
obj = clients.OpenStackClients(con)
obj._glance = None