From 15cd99050c6d2714b90059e0faad9f9e3409eaaa Mon Sep 17 00:00:00 2001 From: Matt Riedemann Date: Thu, 19 Nov 2015 10:42:34 -0800 Subject: [PATCH] Provide alias to oslo_messaging.notify._impl_messaging Ifb96c2ae9868426cac2700bf4917c27c02c90b15 moved the _impl_messaging module to oslo_messaging.notify.messaging which breaks neutron. Neutron is fixed on master for mitaka but neutron on stable/liberty is broken, and changing neutron on stable/liberty to use the new path would require a global-requirements minimum version bump for oslo.messaging to 2.6.0, which we want to avoid for people that have already shipped liberty. So provide an alias to the moved module so neutron in stable/liberty continues to work. We deprecate the module so consumers know they need to upgrade and move off this. We may need to cap oslo.messaging in global-requirements on stable/liberty at some point when we remove the deprecated alias module. Change-Id: I29453e0fbf30b0a571c2b1afc7cc81d1a11535f0 Closes-Bug: #1513630 --- oslo_messaging/notify/_impl_messaging.py | 24 +++++++++++++++ .../tests/notify/test_impl_messaging.py | 30 +++++++++++++++++++ requirements.txt | 2 ++ 3 files changed, 56 insertions(+) create mode 100644 oslo_messaging/notify/_impl_messaging.py create mode 100644 oslo_messaging/tests/notify/test_impl_messaging.py diff --git a/oslo_messaging/notify/_impl_messaging.py b/oslo_messaging/notify/_impl_messaging.py new file mode 100644 index 000000000..9f7c57113 --- /dev/null +++ b/oslo_messaging/notify/_impl_messaging.py @@ -0,0 +1,24 @@ +# Copyright 2015 IBM Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from debtcollector import removals + +from oslo_messaging.notify.messaging import * # noqa + + +# NOTE(mriedem): removal depends on how we can cap requirements in +# stable/liberty such that neutron does not try to load this +removals.removed_module(__name__, + oslo_messaging.notify.messaging.__name__, + removal_version='?') diff --git a/oslo_messaging/tests/notify/test_impl_messaging.py b/oslo_messaging/tests/notify/test_impl_messaging.py new file mode 100644 index 000000000..d2a9a2ee0 --- /dev/null +++ b/oslo_messaging/tests/notify/test_impl_messaging.py @@ -0,0 +1,30 @@ +# Copyright 2015 IBM Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import mock + +from oslo_messaging.tests import utils as test_utils + + +class TestDeprecationWarning(test_utils.BaseTestCase): + + @mock.patch('warnings.warn') + def test_impl_messaging_deprecation_warning(self, mock_warn): + # Tests that we get a deprecation warning when loading a messaging + # driver out of oslo_messaging.notify._impl_messaging. + from oslo_messaging.notify import _impl_messaging as messaging + driver = messaging.MessagingV2Driver( + conf={}, topics=['notifications'], transport='rpc') + # Make sure we got a deprecation warning by loading from the alias + self.assertEqual(1, mock_warn.call_count) diff --git a/requirements.txt b/requirements.txt index 6eea9e1d3..98f1daddb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,8 @@ stevedore>=1.5.0 # Apache-2.0 six>=1.9.0 cachetools>=1.0.0 # MIT License +debtcollector>=0.3.0 # Apache-2.0 + # FIXME(markmc): remove this when the drivers no longer # import eventlet