From eaa7ddd7443ca166f6646e808dcad959811d158b Mon Sep 17 00:00:00 2001 From: Brant Knudson Date: Sun, 26 Jul 2015 06:53:58 -0500 Subject: [PATCH] Proper deprecation for HTTPClient session and adapter properties HTTPClient's forwarded session and adapter properties weren't properly deprecated since the deprecations was only mentioned in the docstring. Proper deprecation requires use of warnings/ debtcollector and documentation. bp deprecations Change-Id: Iea76d7bbc3bdeb13f7fdb097f13e007b4dd85c8d --- keystoneclient/httpclient.py | 21 ++++++++++++++++----- keystoneclient/tests/unit/test_discovery.py | 3 ++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/keystoneclient/httpclient.py b/keystoneclient/httpclient.py index 9148f8034..c66353597 100644 --- a/keystoneclient/httpclient.py +++ b/keystoneclient/httpclient.py @@ -830,9 +830,6 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin): """ return self._cs_request(url, 'DELETE', **kwargs) - # DEPRECATIONS: The following methods are no longer directly supported - # but maintained for compatibility purposes. - deprecated_session_variables = {'original_ip': None, 'cert': None, 'timeout': None, @@ -841,12 +838,15 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin): deprecated_adapter_variables = {'region_name': None} def __getattr__(self, name): - # FIXME(jamielennox): provide a proper deprecated warning try: var_name = self.deprecated_session_variables[name] except KeyError: pass else: + warnings.warn( + 'The %s session variable is deprecated as of the 1.7.0 ' + 'release and may be removed in the 2.0.0 release' % name, + DeprecationWarning) return getattr(self.session, var_name or name) try: @@ -854,17 +854,24 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin): except KeyError: pass else: + warnings.warn( + 'The %s adapter variable is deprecated as of the 1.7.0 ' + 'release and may be removed in the 2.0.0 release' % name, + DeprecationWarning) return getattr(self._adapter, var_name or name) raise AttributeError(_("Unknown Attribute: %s") % name) def __setattr__(self, name, val): - # FIXME(jamielennox): provide a proper deprecated warning try: var_name = self.deprecated_session_variables[name] except KeyError: pass else: + warnings.warn( + 'The %s session variable is deprecated as of the 1.7.0 ' + 'release and may be removed in the 2.0.0 release' % name, + DeprecationWarning) return setattr(self.session, var_name or name) try: @@ -872,6 +879,10 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin): except KeyError: pass else: + warnings.warn( + 'The %s adapter variable is deprecated as of the 1.7.0 ' + 'release and may be removed in the 2.0.0 release' % name, + DeprecationWarning) return setattr(self._adapter, var_name or name) super(HTTPClient, self).__setattr__(name, val) diff --git a/keystoneclient/tests/unit/test_discovery.py b/keystoneclient/tests/unit/test_discovery.py index 6a76d8fb0..34901ba6a 100644 --- a/keystoneclient/tests/unit/test_discovery.py +++ b/keystoneclient/tests/unit/test_discovery.py @@ -472,7 +472,8 @@ class ClientDiscoveryTests(utils.TestCase): cl = self.assertCreatesV2(auth_url=BASE_URL, **kwargs) - self.assertEqual(cl.original_ip, '100') + with self.deprecations.expect_deprecations_here(): + self.assertEqual(cl.original_ip, '100') self.assertEqual(cl.stale_duration, 15) self.assertFalse(cl.use_keyring)