Fix OS_AUTH_URL for subcloud case

Expected IP in OS_AUTH_URL is the public interface of keystone
identity, not the admin interface.

TEST PLAN:
[PASS] Build, install
[PASS] Check if downloaded file shows correct endpoint for subcloud
OS_AUTH_URL

Closes-Bug: 2056782

Change-Id: I5c6b24cedf97cac3f58ddd2e78fa5d52b4e45ae0
Signed-off-by: Davi Frossard <dbarrosf@windriver.com>
This commit is contained in:
Davi Frossard 2024-04-23 11:45:34 -03:00
parent ccb42149e9
commit d6f2a27d42
2 changed files with 34 additions and 6 deletions

View File

@ -2,7 +2,7 @@
{% load align_auth_url %}
#
# Copyright (c) 2023 Wind River Systems, Inc.
# Copyright (c) 2023-2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
@ -19,8 +19,10 @@
# only for the Identity API served through keystone.
{% if region == 'SystemController' %}
export OS_AUTH_URL={{ auth_url|align_auth_url }}/v{{ os_identity_api_version }}
{% else %}
{% elif region == 'RegionOne' %}
export OS_AUTH_URL={{ auth_url }}/v{{ os_identity_api_version }}
{% else %}
export OS_AUTH_URL={% align_subcloud_auth_url auth_url %}/v{{ os_identity_api_version }}
{% endif %}
# With the addition of Keystone we have standardized on the term **project**

View File

@ -1,16 +1,42 @@
#
# Copyright (c) 2020 Wind River Systems, Inc.
# Copyright (c) 2020-2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
from dcmanagerclient.api.v1 import client
from django import template
from openstack_dashboard.api import base
register = template.Library()
AUTH_PORT = '5000'
def align_ip_port(url, ip):
url_list = url.split('//')
url_list[-1] = ip
return '//'.join(url_list) + ':' + AUTH_PORT
@register.filter(name="align_auth_url")
def align_auth_url(url):
url_list = url.split(':')
url_list[-1] = '5000'
def align_auth_url(auth_url):
url_list = auth_url.split(':')
url_list[-1] = AUTH_PORT
return ':'.join(url_list)
@register.simple_tag(name='align_subcloud_auth_url', takes_context=True)
def align_subcloud_auth_url(context, auth_url):
request = context["request"]
subcloud_name = request.COOKIES.get("subcloud_" +
request.user.services_region)
request.user.services_region = 'SystemController'
endpoint = base.url_for(request, 'dcmanager')
dc_manager = client.Client(project_id=request.user.project_id,
user_id=request.user.id,
auth_token=request.user.token.id,
dcmanager_url=endpoint)
result = dc_manager.subcloud_manager.\
subcloud_additional_details(subcloud_name)
subcloud_oam_floating_ip = result[0].oam_floating_ip
return align_ip_port(auth_url, subcloud_oam_floating_ip)