Also you must change /opt/stack/horizon/horizon/api/base.py def url_for(request, service_type, admin=False, endpoint_type=None): endpoint_type = endpoint_type or getattr(settings, 'OPENSTACK_ENDPOINT_TYPE', 'publicURL') + region_name = request.session.get('region_name') catalog = request.user.service_catalog service = get_service_from_catalog(catalog, service_type) if service: try: if admin: - return service['endpoints'][0]['adminURL'] + for endpoint in service['endpoints']: + if endpoint['region'] == region_name: + return endpoint['adminURL'] else: - return service['endpoints'][0][endpoint_type] + for endpoint in service['endpoints']: + if endpoint['region'] == region_name: + return endpoint[endpoint_type] raise ValueError(region_name) except (IndexError, KeyError): raise exceptions.ServiceCatalogException(service_type) else: raise exceptions.ServiceCatalogException(service_type)
Also you must change /opt/stack/ horizon/ horizon/ api/base. py type=None) :
'OPENSTACK_ ENDPOINT_ TYPE',
'publicURL' ) session. get('region_ name') user.service_ catalog from_catalog( catalog, service_type) 'endpoints' ][0]['adminURL' ] 'endpoints' ]: 'adminURL' ] 'endpoints' ][0][endpoint_ type] 'endpoints' ]: endpoint_ type] region_ name) ServiceCatalogE xception( service_ type) ServiceCatalogE xception( service_ type)
def url_for(request, service_type, admin=False, endpoint_
endpoint_type = endpoint_type or getattr(settings,
+ region_name = request.
catalog = request.
service = get_service_
if service:
try:
if admin:
- return service[
+ for endpoint in service[
+ if endpoint['region'] == region_name:
+ return endpoint[
else:
- return service[
+ for endpoint in service[
+ if endpoint['region'] == region_name:
+ return endpoint[
raise ValueError(
except (IndexError, KeyError):
raise exceptions.
else:
raise exceptions.