diff --git a/designate/objects/adapters/api_v2/base.py b/designate/objects/adapters/api_v2/base.py index b5585aa9d..841bf374c 100644 --- a/designate/objects/adapters/api_v2/base.py +++ b/designate/objects/adapters/api_v2/base.py @@ -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, diff --git a/designate/objects/adapters/api_v2/floating_ip.py b/designate/objects/adapters/api_v2/floating_ip.py index 008ba722f..742ac90ac 100644 --- a/designate/objects/adapters/api_v2/floating_ip.py +++ b/designate/objects/adapters/api_v2/floating_ip.py @@ -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): diff --git a/designate/objects/adapters/api_v2/service_status.py b/designate/objects/adapters/api_v2/service_status.py index 600ae0dc2..772671229 100644 --- a/designate/objects/adapters/api_v2/service_status.py +++ b/designate/objects/adapters/api_v2/service_status.py @@ -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 diff --git a/designate/objects/adapters/api_v2/zone_import.py b/designate/objects/adapters/api_v2/zone_import.py index d6f4dfab9..5d582d817 100644 --- a/designate/objects/adapters/api_v2/zone_import.py +++ b/designate/objects/adapters/api_v2/zone_import.py @@ -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 diff --git a/designate/objects/adapters/api_v2/zone_transfer_accept.py b/designate/objects/adapters/api_v2/zone_transfer_accept.py index 90e10e6ec..397b711b0 100644 --- a/designate/objects/adapters/api_v2/zone_transfer_accept.py +++ b/designate/objects/adapters/api_v2/zone_transfer_accept.py @@ -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