Merge "region missing in endpoint selection"
This commit is contained in:
commit
5c0fba5002
@ -457,6 +457,10 @@
|
|||||||
# to be searched. (multi valued)
|
# to be searched. (multi valued)
|
||||||
#policy_dirs=policy.d
|
#policy_dirs=policy.d
|
||||||
|
|
||||||
|
[keystone]
|
||||||
|
|
||||||
|
#The region used for getting endpoints of OpenStack services.
|
||||||
|
#region_name =
|
||||||
|
|
||||||
[agent]
|
[agent]
|
||||||
|
|
||||||
|
@ -23,6 +23,14 @@ from ironic.common.i18n import _
|
|||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
|
keystone_opts = [
|
||||||
|
cfg.StrOpt('region_name',
|
||||||
|
help='The region used for getting endpoints of OpenStack'
|
||||||
|
'services.'),
|
||||||
|
]
|
||||||
|
|
||||||
|
CONF.register_opts(keystone_opts, group='keystone')
|
||||||
|
|
||||||
|
|
||||||
def _is_apiv3(auth_url, auth_version):
|
def _is_apiv3(auth_url, auth_version):
|
||||||
"""Checks if V3 version of API is being used or not.
|
"""Checks if V3 version of API is being used or not.
|
||||||
@ -59,6 +67,7 @@ def _get_ksclient(token=None):
|
|||||||
return client.Client(username=CONF.keystone_authtoken.admin_user,
|
return client.Client(username=CONF.keystone_authtoken.admin_user,
|
||||||
password=CONF.keystone_authtoken.admin_password,
|
password=CONF.keystone_authtoken.admin_password,
|
||||||
tenant_name=CONF.keystone_authtoken.admin_tenant_name,
|
tenant_name=CONF.keystone_authtoken.admin_tenant_name,
|
||||||
|
region_name=CONF.keystone.region_name,
|
||||||
auth_url=auth_url)
|
auth_url=auth_url)
|
||||||
except ksexception.Unauthorized:
|
except ksexception.Unauthorized:
|
||||||
raise exception.KeystoneUnauthorized()
|
raise exception.KeystoneUnauthorized()
|
||||||
@ -103,7 +112,9 @@ def get_service_url(service_type='baremetal', endpoint_type='internal'):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
endpoint = ksclient.service_catalog.url_for(service_type=service_type,
|
endpoint = ksclient.service_catalog.url_for(service_type=service_type,
|
||||||
endpoint_type=endpoint_type)
|
endpoint_type=endpoint_type,
|
||||||
|
region_name=CONF.keystone.region_name)
|
||||||
|
|
||||||
except ksexception.EndpointNotFound:
|
except ksexception.EndpointNotFound:
|
||||||
raise exception.CatalogNotFound(service_type=service_type,
|
raise exception.CatalogNotFound(service_type=service_type,
|
||||||
endpoint_type=endpoint_type)
|
endpoint_type=endpoint_type)
|
||||||
|
@ -81,6 +81,8 @@ def _build_client(token=None):
|
|||||||
params['tenant_name'] = CONF.keystone_authtoken.admin_tenant_name
|
params['tenant_name'] = CONF.keystone_authtoken.admin_tenant_name
|
||||||
params['password'] = CONF.keystone_authtoken.admin_password
|
params['password'] = CONF.keystone_authtoken.admin_password
|
||||||
params['auth_url'] = (CONF.keystone_authtoken.auth_uri or '')
|
params['auth_url'] = (CONF.keystone_authtoken.auth_uri or '')
|
||||||
|
if CONF.keystone.region_name:
|
||||||
|
params['region_name'] = CONF.keystone.region_name
|
||||||
else:
|
else:
|
||||||
params['token'] = token
|
params['token'] = token
|
||||||
params['endpoint_url'] = CONF.neutron.url
|
params['endpoint_url'] = CONF.neutron.url
|
||||||
|
@ -89,6 +89,25 @@ class TestNeutron(db_base.DbTestCase):
|
|||||||
neutron._build_client(token=None)
|
neutron._build_client(token=None)
|
||||||
mock_client_init.assert_called_once_with(**expected)
|
mock_client_init.assert_called_once_with(**expected)
|
||||||
|
|
||||||
|
@mock.patch.object(client.Client, "__init__")
|
||||||
|
def test__build_client_with_region(self, mock_client_init):
|
||||||
|
expected = {'timeout': 30,
|
||||||
|
'retries': 2,
|
||||||
|
'insecure': False,
|
||||||
|
'ca_cert': 'test-file',
|
||||||
|
'endpoint_url': 'test-url',
|
||||||
|
'username': 'test-admin-user',
|
||||||
|
'tenant_name': 'test-admin-tenant',
|
||||||
|
'password': 'test-admin-password',
|
||||||
|
'auth_url': 'test-auth-uri',
|
||||||
|
'region_name': 'test-region'}
|
||||||
|
|
||||||
|
self.config(region_name='test-region',
|
||||||
|
group='keystone')
|
||||||
|
mock_client_init.return_value = None
|
||||||
|
neutron._build_client(token=None)
|
||||||
|
mock_client_init.assert_called_once_with(**expected)
|
||||||
|
|
||||||
@mock.patch.object(client.Client, "__init__")
|
@mock.patch.object(client.Client, "__init__")
|
||||||
def test__build_client_noauth(self, mock_client_init):
|
def test__build_client_noauth(self, mock_client_init):
|
||||||
self.config(auth_strategy='noauth', group='neutron')
|
self.config(auth_strategy='noauth', group='neutron')
|
||||||
|
@ -41,6 +41,7 @@ class KeystoneTestCase(base.TestCase):
|
|||||||
auth_uri='http://127.0.0.1:9898/',
|
auth_uri='http://127.0.0.1:9898/',
|
||||||
admin_user='fake', admin_password='fake',
|
admin_user='fake', admin_password='fake',
|
||||||
admin_tenant_name='fake')
|
admin_tenant_name='fake')
|
||||||
|
self.config(group='keystone', region_name='fake')
|
||||||
|
|
||||||
def test_failure_authorization(self):
|
def test_failure_authorization(self):
|
||||||
self.assertRaises(exception.KeystoneFailure, keystone.get_service_url)
|
self.assertRaises(exception.KeystoneFailure, keystone.get_service_url)
|
||||||
@ -87,6 +88,7 @@ class KeystoneTestCase(base.TestCase):
|
|||||||
keystone.get_service_url()
|
keystone.get_service_url()
|
||||||
mock_ks.assert_called_once_with(username='fake', password='fake',
|
mock_ks.assert_called_once_with(username='fake', password='fake',
|
||||||
tenant_name='fake',
|
tenant_name='fake',
|
||||||
|
region_name='fake',
|
||||||
auth_url=expected_url)
|
auth_url=expected_url)
|
||||||
|
|
||||||
@mock.patch('keystoneclient.v3.client.Client')
|
@mock.patch('keystoneclient.v3.client.Client')
|
||||||
@ -98,6 +100,7 @@ class KeystoneTestCase(base.TestCase):
|
|||||||
keystone.get_service_url()
|
keystone.get_service_url()
|
||||||
mock_ks.assert_called_once_with(username='fake', password='fake',
|
mock_ks.assert_called_once_with(username='fake', password='fake',
|
||||||
tenant_name='fake',
|
tenant_name='fake',
|
||||||
|
region_name='fake',
|
||||||
auth_url=expected_url)
|
auth_url=expected_url)
|
||||||
|
|
||||||
@mock.patch('keystoneclient.v2_0.client.Client')
|
@mock.patch('keystoneclient.v2_0.client.Client')
|
||||||
@ -109,6 +112,7 @@ class KeystoneTestCase(base.TestCase):
|
|||||||
keystone.get_service_url()
|
keystone.get_service_url()
|
||||||
mock_ks.assert_called_once_with(username='fake', password='fake',
|
mock_ks.assert_called_once_with(username='fake', password='fake',
|
||||||
tenant_name='fake',
|
tenant_name='fake',
|
||||||
|
region_name='fake',
|
||||||
auth_url=expected_url)
|
auth_url=expected_url)
|
||||||
|
|
||||||
@mock.patch('keystoneclient.v2_0.client.Client')
|
@mock.patch('keystoneclient.v2_0.client.Client')
|
||||||
@ -117,3 +121,28 @@ class KeystoneTestCase(base.TestCase):
|
|||||||
fake_client.auth_token = '123456'
|
fake_client.auth_token = '123456'
|
||||||
mock_ks.return_value = fake_client
|
mock_ks.return_value = fake_client
|
||||||
self.assertEqual('123456', keystone.get_admin_auth_token())
|
self.assertEqual('123456', keystone.get_admin_auth_token())
|
||||||
|
|
||||||
|
@mock.patch('keystoneclient.v2_0.client.Client')
|
||||||
|
def test_get_region_name_v2(self, mock_ks):
|
||||||
|
mock_ks.return_value = FakeClient()
|
||||||
|
self.config(group='keystone', region_name='fake_region')
|
||||||
|
expected_url = 'http://127.0.0.1:9898/v2.0'
|
||||||
|
expected_region = 'fake_region'
|
||||||
|
keystone.get_service_url()
|
||||||
|
mock_ks.assert_called_once_with(username='fake', password='fake',
|
||||||
|
tenant_name='fake',
|
||||||
|
region_name=expected_region,
|
||||||
|
auth_url=expected_url)
|
||||||
|
|
||||||
|
@mock.patch('keystoneclient.v3.client.Client')
|
||||||
|
def test_get_region_name_v3(self, mock_ks):
|
||||||
|
mock_ks.return_value = FakeClient()
|
||||||
|
self.config(group='keystone', region_name='fake_region')
|
||||||
|
self.config(group='keystone_authtoken', auth_version='v3.0')
|
||||||
|
expected_url = 'http://127.0.0.1:9898/v3'
|
||||||
|
expected_region = 'fake_region'
|
||||||
|
keystone.get_service_url()
|
||||||
|
mock_ks.assert_called_once_with(username='fake', password='fake',
|
||||||
|
tenant_name='fake',
|
||||||
|
region_name=expected_region,
|
||||||
|
auth_url=expected_url)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user