Deprecate ServiceCatalog(region_name)
There was a FIXME to deprecate ServiceCatalog's region_name parameter and property. This is now deprecated. Note that debtcollector isn't used here since the deprecation happens on ServiceCatalog's __init__() to catch use in subclasses of ServiceCatalog. ServiceCatalog also has a factory function that constructs the correct instance and the factory function always passes region_name, so it's always using the deprecated kwarg even when region_name isn't passed to the factory. It's not worth figuring out how to do this with debtcollector. bp deprecations Change-Id: I0e64712474ca2767f3c0ade919359132450f6776
This commit is contained in:
@@ -279,8 +279,13 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
|
|||||||
self._management_url = management_urls[0]
|
self._management_url = management_urls[0]
|
||||||
self.auth_token_from_user = self.auth_ref.auth_token
|
self.auth_token_from_user = self.auth_ref.auth_token
|
||||||
self.trust_id = self.auth_ref.trust_id
|
self.trust_id = self.auth_ref.trust_id
|
||||||
|
|
||||||
|
# TODO(blk-u): Using self.auth_ref.service_catalog._region_name is
|
||||||
|
# deprecated and this code must be removed when the property is
|
||||||
|
# actually removed.
|
||||||
if self.auth_ref.has_service_catalog() and not region_name:
|
if self.auth_ref.has_service_catalog() and not region_name:
|
||||||
region_name = self.auth_ref.service_catalog.region_name
|
region_name = self.auth_ref.service_catalog._region_name
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.auth_ref = None
|
self.auth_ref = None
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import abc
|
import abc
|
||||||
|
import warnings
|
||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@@ -27,11 +28,27 @@ from keystoneclient import utils
|
|||||||
|
|
||||||
@six.add_metaclass(abc.ABCMeta)
|
@six.add_metaclass(abc.ABCMeta)
|
||||||
class ServiceCatalog(object):
|
class ServiceCatalog(object):
|
||||||
"""Helper methods for dealing with a Keystone Service Catalog."""
|
"""Helper methods for dealing with a Keystone Service Catalog.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Setting region_name is deprecated in favor of passing the region name
|
||||||
|
as a parameter to calls made to the service catalog as of the 1.7.0
|
||||||
|
release and may be removed in the 2.0.0 release.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def factory(cls, resource_dict, token=None, region_name=None):
|
def factory(cls, resource_dict, token=None, region_name=None):
|
||||||
"""Create ServiceCatalog object given an auth token."""
|
"""Create ServiceCatalog object given an auth token.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Setting region_name is deprecated in favor of passing the region
|
||||||
|
name as a parameter to calls made to the service catalog as of the
|
||||||
|
1.7.0 release and may be removed in the 2.0.0 release.
|
||||||
|
|
||||||
|
"""
|
||||||
if ServiceCatalogV3.is_valid(resource_dict):
|
if ServiceCatalogV3.is_valid(resource_dict):
|
||||||
return ServiceCatalogV3(token, resource_dict, region_name)
|
return ServiceCatalogV3(token, resource_dict, region_name)
|
||||||
elif ServiceCatalogV2.is_valid(resource_dict):
|
elif ServiceCatalogV2.is_valid(resource_dict):
|
||||||
@@ -40,13 +57,32 @@ class ServiceCatalog(object):
|
|||||||
raise NotImplementedError(_('Unrecognized auth response'))
|
raise NotImplementedError(_('Unrecognized auth response'))
|
||||||
|
|
||||||
def __init__(self, region_name=None):
|
def __init__(self, region_name=None):
|
||||||
|
if region_name:
|
||||||
|
warnings.warn(
|
||||||
|
'Setting region_name on the service catalog is deprecated in '
|
||||||
|
'favor of passing the region name as a parameter to calls '
|
||||||
|
'made to the service catalog as of the 1.7.0 release and may '
|
||||||
|
'be removed in the 2.0.0 release.',
|
||||||
|
DeprecationWarning)
|
||||||
|
|
||||||
self._region_name = region_name
|
self._region_name = region_name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def region_name(self):
|
def region_name(self):
|
||||||
# FIXME(jamielennox): Having region_name set on the service catalog
|
"""Region name.
|
||||||
# directly is deprecated. It should instead be provided as a parameter
|
|
||||||
# to calls made to the service_catalog. Provide appropriate warning.
|
.. warning::
|
||||||
|
|
||||||
|
region_name is deprecated in favor of passing the region name as a
|
||||||
|
parameter to calls made to the service catalog as of the 1.7.0
|
||||||
|
release and may be removed in the 2.0.0 release.
|
||||||
|
|
||||||
|
"""
|
||||||
|
warnings.warn(
|
||||||
|
'region_name is deprecated in favor of passing the region name as '
|
||||||
|
'a parameter to calls made to the service catalog as of the 1.7.0 '
|
||||||
|
'release and may be removed in the 2.0.0 release.',
|
||||||
|
DeprecationWarning)
|
||||||
return self._region_name
|
return self._region_name
|
||||||
|
|
||||||
def _get_endpoint_region(self, endpoint):
|
def _get_endpoint_region(self, endpoint):
|
||||||
|
@@ -48,7 +48,9 @@ class ServiceCatalogTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_service_catalog_regions(self):
|
def test_service_catalog_regions(self):
|
||||||
self.AUTH_RESPONSE_BODY['access']['region_name'] = "North"
|
self.AUTH_RESPONSE_BODY['access']['region_name'] = "North"
|
||||||
auth_ref = access.AccessInfo.factory(None, self.AUTH_RESPONSE_BODY)
|
# Setting region_name on the catalog is deprecated.
|
||||||
|
with self.deprecations.expect_deprecations_here():
|
||||||
|
auth_ref = access.AccessInfo.factory(None, self.AUTH_RESPONSE_BODY)
|
||||||
sc = auth_ref.service_catalog
|
sc = auth_ref.service_catalog
|
||||||
|
|
||||||
url = sc.url_for(service_type='image', endpoint_type='publicURL')
|
url = sc.url_for(service_type='image', endpoint_type='publicURL')
|
||||||
@@ -133,7 +135,9 @@ class ServiceCatalogTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_service_catalog_param_overrides_body_region(self):
|
def test_service_catalog_param_overrides_body_region(self):
|
||||||
self.AUTH_RESPONSE_BODY['access']['region_name'] = "North"
|
self.AUTH_RESPONSE_BODY['access']['region_name'] = "North"
|
||||||
auth_ref = access.AccessInfo.factory(None, self.AUTH_RESPONSE_BODY)
|
# Setting region_name on the catalog is deprecated.
|
||||||
|
with self.deprecations.expect_deprecations_here():
|
||||||
|
auth_ref = access.AccessInfo.factory(None, self.AUTH_RESPONSE_BODY)
|
||||||
sc = auth_ref.service_catalog
|
sc = auth_ref.service_catalog
|
||||||
|
|
||||||
url = sc.url_for(service_type='image')
|
url = sc.url_for(service_type='image')
|
||||||
|
@@ -191,6 +191,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
def test_client_with_region_name_passes_to_service_catalog(self):
|
def test_client_with_region_name_passes_to_service_catalog(self):
|
||||||
# NOTE(jamielennox): this is deprecated behaviour that should be
|
# NOTE(jamielennox): this is deprecated behaviour that should be
|
||||||
# removed ASAP, however must remain compatible.
|
# removed ASAP, however must remain compatible.
|
||||||
|
self.deprecations.expect_deprecations()
|
||||||
|
|
||||||
self.stub_auth(json=client_fixtures.auth_response_body())
|
self.stub_auth(json=client_fixtures.auth_response_body())
|
||||||
|
|
||||||
|
@@ -66,8 +66,10 @@ class ServiceCatalogTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_service_catalog_regions(self):
|
def test_service_catalog_regions(self):
|
||||||
self.AUTH_RESPONSE_BODY['token']['region_name'] = "North"
|
self.AUTH_RESPONSE_BODY['token']['region_name'] = "North"
|
||||||
auth_ref = access.AccessInfo.factory(self.RESPONSE,
|
# Setting region_name on the catalog is deprecated.
|
||||||
self.AUTH_RESPONSE_BODY)
|
with self.deprecations.expect_deprecations_here():
|
||||||
|
auth_ref = access.AccessInfo.factory(self.RESPONSE,
|
||||||
|
self.AUTH_RESPONSE_BODY)
|
||||||
sc = auth_ref.service_catalog
|
sc = auth_ref.service_catalog
|
||||||
|
|
||||||
url = sc.url_for(service_type='image', endpoint_type='public')
|
url = sc.url_for(service_type='image', endpoint_type='public')
|
||||||
@@ -149,7 +151,9 @@ class ServiceCatalogTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_service_catalog_param_overrides_body_region(self):
|
def test_service_catalog_param_overrides_body_region(self):
|
||||||
self.AUTH_RESPONSE_BODY['token']['region_name'] = "North"
|
self.AUTH_RESPONSE_BODY['token']['region_name'] = "North"
|
||||||
auth_ref = access.AccessInfo.factory(None, self.AUTH_RESPONSE_BODY)
|
# Passing region_name to service catalog is deprecated.
|
||||||
|
with self.deprecations.expect_deprecations_here():
|
||||||
|
auth_ref = access.AccessInfo.factory(None, self.AUTH_RESPONSE_BODY)
|
||||||
sc = auth_ref.service_catalog
|
sc = auth_ref.service_catalog
|
||||||
|
|
||||||
url = sc.url_for(service_type='image')
|
url = sc.url_for(service_type='image')
|
||||||
|
Reference in New Issue
Block a user