Fix resource links in API endpoints

Change-Id: Ia1a0c9102fcc930d96b6e4c0f2c5ef4bef70c5be
Closes-Bug: #1896192
This commit is contained in:
Igor Malinovskiy 2020-09-18 11:06:19 +03:00
parent 9eae67abc6
commit b823eb3507
5 changed files with 28 additions and 19 deletions

View File

@ -76,14 +76,18 @@ class APIv2Adapter(base.DesignateAdapter):
#####################
@classmethod
def _get_resource_links(cls, obj, request):
def _get_base_url(cls, request):
if cfg.CONF['service:api'].enable_host_header:
try:
base_uri = request.host_url
return request.host_url
except Exception:
base_uri = cls.BASE_URI
return cls.BASE_URI
else:
base_uri = cls.BASE_URI
return cls.BASE_URI
@classmethod
def _get_resource_links(cls, obj, request):
base_uri = cls._get_base_url(request)
path = cls._get_path(request, obj)
return {'self': '%s%s/%s' % (base_uri, path, obj.id)}
@ -135,13 +139,7 @@ class APIv2Adapter(base.DesignateAdapter):
if extra_params is not None:
params.update(extra_params)
if cfg.CONF['service:api'].enable_host_header:
try:
base_uri = request.host_url
except Exception:
base_uri = cls.BASE_URI
else:
base_uri = cls.BASE_URI
base_uri = cls._get_base_url(request)
href = "%s%s?%s" % (
base_uri,

View File

@ -51,8 +51,13 @@ class FloatingIPAPIv2Adapter(base.APIv2Adapter):
@classmethod
def _get_resource_links(cls, object, request):
return {'self': '%s%s/%s' %
(cls.BASE_URI, cls._get_path(request), object.key)}
return {
'self': '%s%s/%s' % (
cls._get_base_url(request),
cls._get_path(request),
object.key
)
}
class FloatingIPListAPIv2Adapter(base.APIv2Adapter):

View File

@ -44,8 +44,10 @@ class ServiceStatusAPIv2Adapter(base.APIv2Adapter):
obj = super(ServiceStatusAPIv2Adapter, cls)._render_object(
object, *args, **kwargs)
obj['links']['self'] = \
'%s/v2/%s/%s' % (cls.BASE_URI, 'service_statuses', obj['id'])
obj['links']['self'] = (
'%s/v2/%s/%s' % (cls._get_base_url(kwargs['request']),
'service_statuses', obj['id'])
)
return obj

View File

@ -48,8 +48,10 @@ class ZoneImportAPIv2Adapter(base.APIv2Adapter):
object, *args, **kwargs)
if obj['zone_id'] is not None:
obj['links']['zone'] = \
'%s/v2/%s/%s' % (cls.BASE_URI, 'zones', obj['zone_id'])
obj['links']['zone'] = (
'%s/v2/%s/%s' % (cls._get_base_url(kwargs['request']), 'zones',
obj['zone_id'])
)
return obj

View File

@ -49,8 +49,10 @@ class ZoneTransferAcceptAPIv2Adapter(base.APIv2Adapter):
obj = super(ZoneTransferAcceptAPIv2Adapter, cls)._render_object(
object, *args, **kwargs)
obj['links']['zone'] = \
'%s/v2/%s/%s' % (cls.BASE_URI, 'zones', obj['zone_id'])
obj['links']['zone'] = (
'%s/v2/%s/%s' % (cls._get_base_url(kwargs['request']), 'zones',
obj['zone_id'])
)
return obj