From d3f6ca0b47e2a5a3413b27617d9655f02b191c6a Mon Sep 17 00:00:00 2001
From: Steve Kowalik <steven@wedontsleep.org>
Date: Thu, 13 Sep 2018 15:01:27 -0600
Subject: [PATCH] Remove rpc_backend and ConfFixture.transport_driver

Now that most projects have transitioned from using
ConfFixture.transport_driver, we can remove it and rpc_backend as a
whole. rpc_backend was first deprecated in 5.10.0, released during
Ocata.

Closes-Bug: #1712399
Change-Id: I193cc0e613459a6dbbfd54ed0901a54ded78d712
---
 oslo_messaging/conffixture.py          |  9 ------
 oslo_messaging/tests/test_fixture.py   |  3 --
 oslo_messaging/tests/test_opts.py      |  3 --
 oslo_messaging/tests/test_transport.py | 44 ++++++++------------------
 oslo_messaging/tests/test_urls.py      | 25 +++------------
 oslo_messaging/transport.py            | 35 +-------------------
 6 files changed, 20 insertions(+), 99 deletions(-)

diff --git a/oslo_messaging/conffixture.py b/oslo_messaging/conffixture.py
index 297694a45..6a4c4660c 100644
--- a/oslo_messaging/conffixture.py
+++ b/oslo_messaging/conffixture.py
@@ -114,15 +114,6 @@ class ConfFixture(fixtures.Fixture):
         self.addCleanup(self._teardown_decorator)
         self.addCleanup(self.conf.reset)
 
-    @property
-    def transport_driver(self):
-        """The transport driver - for example 'rabbit', 'amqp' or 'fake'."""
-        return self.conf.rpc_backend
-
-    @transport_driver.setter
-    def transport_driver(self, value):
-        self.conf.set_override('rpc_backend', value)
-
     @property
     def transport_url(self):
         """The transport url"""
diff --git a/oslo_messaging/tests/test_fixture.py b/oslo_messaging/tests/test_fixture.py
index 20f56fe82..4a2c0ae5b 100644
--- a/oslo_messaging/tests/test_fixture.py
+++ b/oslo_messaging/tests/test_fixture.py
@@ -48,10 +48,7 @@ class TestConfFixture(test_utils.BaseTestCase):
 
     def test_fixture_properties(self):
         conf = self.messaging_conf.conf
-        self.messaging_conf.transport_driver = 'fake'
         self.messaging_conf.transport_url = 'fake:/vhost'
-        self.assertEqual('fake', self.messaging_conf.transport_driver)
-        self.assertEqual('fake', conf.rpc_backend)
         self.assertEqual('fake:/vhost', self.messaging_conf.transport_url)
         self.assertEqual('fake:/vhost', conf.transport_url)
 
diff --git a/oslo_messaging/tests/test_opts.py b/oslo_messaging/tests/test_opts.py
index 1c2ff71ca..b870d2cdd 100644
--- a/oslo_messaging/tests/test_opts.py
+++ b/oslo_messaging/tests/test_opts.py
@@ -37,9 +37,6 @@ class OptsTestCase(test_utils.BaseTestCase):
         self.assertIn('oslo_messaging_rabbit', groups)
         self.assertIn('oslo_messaging_kafka', groups)
 
-        opt_names = [o.name for (g, l) in result for o in l]
-        self.assertIn('rpc_backend', opt_names)
-
     def test_list_opts(self):
         self._test_list_opts(opts.list_opts())
 
diff --git a/oslo_messaging/tests/test_transport.py b/oslo_messaging/tests/test_transport.py
index e1ad1d65e..99182cf97 100755
--- a/oslo_messaging/tests/test_transport.py
+++ b/oslo_messaging/tests/test_transport.py
@@ -51,36 +51,29 @@ class _FakeManager(object):
 class GetTransportTestCase(test_utils.BaseTestCase):
 
     scenarios = [
-        ('rpc_backend',
-         dict(url=None, transport_url=None, rpc_backend='testbackend',
-              control_exchange=None, allowed=None,
-              expect=dict(backend='testbackend',
-                          exchange=None,
-                          url='testbackend:',
-                          allowed=[]))),
         ('transport_url',
-         dict(url=None, transport_url='testtransport:', rpc_backend=None,
+         dict(url=None, transport_url='testtransport:',
               control_exchange=None, allowed=None,
               expect=dict(backend='testtransport',
                           exchange=None,
                           url='testtransport:',
                           allowed=[]))),
         ('url_param',
-         dict(url='testtransport:', transport_url=None, rpc_backend=None,
+         dict(url='testtransport:', transport_url=None,
               control_exchange=None, allowed=None,
               expect=dict(backend='testtransport',
                           exchange=None,
                           url='testtransport:',
                           allowed=[]))),
         ('control_exchange',
-         dict(url=None, transport_url=None, rpc_backend='testbackend',
+         dict(url=None, transport_url='testbackend:',
               control_exchange='testexchange', allowed=None,
               expect=dict(backend='testbackend',
                           exchange='testexchange',
                           url='testbackend:',
                           allowed=[]))),
         ('allowed_remote_exmods',
-         dict(url=None, transport_url=None, rpc_backend='testbackend',
+         dict(url=None, transport_url='testbackend:',
               control_exchange=None, allowed=['foo', 'bar'],
               expect=dict(backend='testbackend',
                           exchange=None,
@@ -90,8 +83,7 @@ class GetTransportTestCase(test_utils.BaseTestCase):
 
     @mock.patch('oslo_messaging.transport.LOG')
     def test_get_transport(self, fake_logger):
-        self.config(rpc_backend=self.rpc_backend,
-                    control_exchange=self.control_exchange,
+        self.config(control_exchange=self.control_exchange,
                     transport_url=self.transport_url)
 
         driver.DriverManager = mock.Mock()
@@ -127,29 +119,27 @@ class GetTransportSadPathTestCase(test_utils.BaseTestCase):
 
     scenarios = [
         ('invalid_transport_url',
-         dict(url=None, transport_url='invalid', rpc_backend=None,
+         dict(url=None, transport_url='invalid',
               ex=dict(cls=oslo_messaging.InvalidTransportURL,
                       msg_contains='No scheme specified',
                       url='invalid'))),
         ('invalid_url_param',
-         dict(url='invalid', transport_url=None, rpc_backend=None,
+         dict(url='invalid', transport_url=None,
               ex=dict(cls=oslo_messaging.InvalidTransportURL,
                       msg_contains='No scheme specified',
                       url='invalid'))),
         ('driver_load_failure',
-         dict(url=None, transport_url=None, rpc_backend='testbackend',
+         dict(url=None, transport_url='testbackend:/',
               ex=dict(cls=oslo_messaging.DriverLoadFailure,
                       msg_contains='Failed to load',
                       driver='testbackend'))),
     ]
 
     def test_get_transport_sad(self):
-        self.config(rpc_backend=self.rpc_backend,
-                    transport_url=self.transport_url)
-
-        if self.rpc_backend:
-            driver.DriverManager = mock.Mock()
+        self.config(transport_url=self.transport_url)
+        driver.DriverManager = mock.Mock()
 
+        try:
             invoke_args = [self.conf,
                            oslo_messaging.TransportURL.parse(self.conf,
                                                              self.url)]
@@ -157,16 +147,10 @@ class GetTransportSadPathTestCase(test_utils.BaseTestCase):
                                allowed_remote_exmods=[])
 
             driver.DriverManager.side_effect = RuntimeError()
-        try:
             oslo_messaging.get_transport(self.conf, url=self.url)
-            self.assertFalse(True)
-
-            driver.DriverManager.\
-                assert_called_once_with('oslo.messaging.drivers',
-                                        self.rpc_backend,
-                                        invoke_on_load=True,
-                                        invoke_args=invoke_args,
-                                        invoke_kwds=invoke_kwds)
+            driver.DriverManager.assert_called_once_with(
+                'oslo.messaging.drivers', invoke_on_load=True,
+                invoke_args=invoke_args, invoke_kwds=invoke_kwds)
         except Exception as ex:
             ex_cls = self.ex.pop('cls')
             ex_msg_contains = self.ex.pop('msg_contains')
diff --git a/oslo_messaging/tests/test_urls.py b/oslo_messaging/tests/test_urls.py
index b3bdfca02..e0db2a482 100644
--- a/oslo_messaging/tests/test_urls.py
+++ b/oslo_messaging/tests/test_urls.py
@@ -131,8 +131,6 @@ class TestParseURL(test_utils.BaseTestCase):
     ]
 
     def test_parse_url(self):
-        self.config(rpc_backend=None)
-
         url = oslo_messaging.TransportURL.parse(self.conf, self.url)
 
         hosts = []
@@ -152,27 +150,18 @@ class TestParseURL(test_utils.BaseTestCase):
 class TestFormatURL(test_utils.BaseTestCase):
 
     scenarios = [
-        ('rpc_backend',
-         dict(rpc_backend='testbackend',
-              transport=None,
-              virtual_host=None,
-              hosts=[],
-              expected='testbackend:///')),
         ('transport',
-         dict(rpc_backend=None,
-              transport='testtransport',
+         dict(transport='testtransport',
               virtual_host=None,
               hosts=[],
               expected='testtransport:///')),
         ('virtual_host',
-         dict(rpc_backend=None,
-              transport='testtransport',
+         dict(transport='testtransport',
               virtual_host='/vhost',
               hosts=[],
               expected='testtransport:////vhost')),
         ('host',
-         dict(rpc_backend=None,
-              transport='testtransport',
+         dict(transport='testtransport',
               virtual_host='/',
               hosts=[
                   dict(hostname='host',
@@ -182,8 +171,7 @@ class TestFormatURL(test_utils.BaseTestCase):
               ],
               expected='testtransport://bob:secret@host:10//')),
         ('multi_host',
-         dict(rpc_backend=None,
-              transport='testtransport',
+         dict(transport='testtransport',
               virtual_host='',
               hosts=[
                   dict(hostname='h1',
@@ -197,8 +185,7 @@ class TestFormatURL(test_utils.BaseTestCase):
               ],
               expected='testtransport://b1:s1@h1:1000,b2:s2@h2:2000/')),
         ('quoting',
-         dict(rpc_backend=None,
-              transport='testtransport',
+         dict(transport='testtransport',
               virtual_host='/$',
               hosts=[
                   dict(hostname='host',
@@ -210,8 +197,6 @@ class TestFormatURL(test_utils.BaseTestCase):
     ]
 
     def test_parse_url(self):
-        self.config(rpc_backend=self.rpc_backend)
-
         hosts = []
         for host in self.hosts:
             hosts.append(oslo_messaging.TransportHost(host.get('hostname'),
diff --git a/oslo_messaging/transport.py b/oslo_messaging/transport.py
index 6372e0a5b..20ea77896 100644
--- a/oslo_messaging/transport.py
+++ b/oslo_messaging/transport.py
@@ -53,12 +53,6 @@ _transport_opts = [
                     'documentation of oslo_messaging.TransportURL at '
                     'https://docs.openstack.org/oslo.messaging/latest/'
                     'reference/transport.html'),
-    cfg.StrOpt('rpc_backend',
-               deprecated_for_removal=True,
-               deprecated_reason="Replaced by [DEFAULT]/transport_url",
-               default='rabbit',
-               help='The messaging driver to use, defaults to rabbit. Other '
-                    'drivers include amqp.'),
 
     cfg.StrOpt('control_exchange',
                default='openstack',
@@ -339,7 +333,7 @@ class TransportURL(object):
                  query=None):
         self.conf = conf
         self.conf.register_opts(_transport_opts)
-        self._transport = transport
+        self.transport = transport
         self.virtual_host = virtual_host
         if hosts is None:
             self.hosts = []
@@ -350,33 +344,6 @@ class TransportURL(object):
         else:
             self.query = query
 
-        self._deprecation_logged = False
-
-    @property
-    def transport(self):
-        if self._transport is None:
-            transport = self.conf.rpc_backend
-        else:
-            transport = self._transport
-        final_transport = transport
-        if not self._deprecation_logged and final_transport != transport:
-            # NOTE(sileht): The first step is deprecate this one cycle.
-            # To ensure deployer have updated they configuration during Ocata
-            # Then in P we will deprecate aliases kwargs of TransportURL() and
-            # get_transport() for consuming application
-            LOG.warning('legacy "rpc_backend" is deprecated, '
-                        '"%(legacy_transport)s" must be replaced by '
-                        '"%(final_transport)s"' % {
-                            'legacy_transport': transport,
-                            'final_transport': final_transport})
-            self._deprecation_logged = True
-
-        return final_transport
-
-    @transport.setter
-    def transport(self, value):
-        self._transport = value
-
     def __hash__(self):
         return hash((tuple(self.hosts), self.transport, self.virtual_host))