Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-oslo.messaging for 
openSUSE:Factory checked in at 2023-05-03 15:42:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.messaging (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.messaging.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.messaging"

Wed May  3 15:42:24 2023 rev:28 rq:1084312 version:14.2.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-oslo.messaging/python-oslo.messaging.changes  
    2022-10-03 13:47:21.445692000 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-oslo.messaging.new.1533/python-oslo.messaging.changes
    2023-05-03 15:42:25.562772096 +0200
@@ -1,0 +2,13 @@
+Wed May  3 12:20:24 UTC 2023 - [email protected]
+
+- update to version 14.2.0
+  - Force creating non durable control exchange when a precondition failed
+  - update hacking pin to support flake8 3.8.3
+  - tox cleanups
+  - Update master for stable/zed
+  - Support overriding class for get_rpc_* helper functions
+  - Warn when we force creating a non durable exchange
+  - Implement get_rpc_client function
+  - Remove logging from ProducerConnection._produce_message
+
+-------------------------------------------------------------------

Old:
----
  oslo.messaging-14.0.0.tar.gz

New:
----
  oslo.messaging-14.2.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-oslo.messaging.spec ++++++
--- /var/tmp/diff_new_pack.7NLCIg/_old  2023-05-03 15:42:26.030774869 +0200
+++ /var/tmp/diff_new_pack.7NLCIg/_new  2023-05-03 15:42:26.034774892 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-oslo.messaging
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
 
 
 Name:           python-oslo.messaging
-Version:        14.0.0
+Version:        14.2.0
 Release:        0
 Summary:        OpenStack oslo.messaging library
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://docs.openstack.org/oslo.messaging
-Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.messaging/oslo.messaging-14.0.0.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.messaging/oslo.messaging-14.2.0.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python3-PyYAML >= 3.13
 BuildRequires:  python3-WebOb >= 1.7.1
@@ -98,7 +98,7 @@
 This package contains the documentation.
 
 %prep
-%autosetup -p1 -n oslo.messaging-14.0.0
+%autosetup -p1 -n oslo.messaging-14.2.0
 %py_req_cleanup
 
 %build
@@ -118,7 +118,7 @@
 # fail without it
 rm -rf oslo_messaging/tests/functional
 # 3 cyrus tests fail on rdo with time out
-python3 -m stestr.cli run --black-regex 
'^oslo_messaging.tests.(functional|drivers.test_amqp_driver.TestCyrusAuthentication.test_authentication_(ok|ignore_default_realm|default_realm))'
+%{openstack_stestr_run} --black-regex 
'^oslo_messaging.tests.(functional|drivers.test_amqp_driver.TestCyrusAuthentication.test_authentication_(ok|ignore_default_realm|default_realm))'
 
 %files -n python3-oslo.messaging
 %license LICENSE

++++++ oslo.messaging-14.0.0.tar.gz -> oslo.messaging-14.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/.pre-commit-config.yaml 
new/oslo.messaging-14.2.0/.pre-commit-config.yaml
--- old/oslo.messaging-14.0.0/.pre-commit-config.yaml   2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/.pre-commit-config.yaml   2023-02-01 
11:58:55.000000000 +0100
@@ -32,7 +32,7 @@
       - id: flake8
         name: flake8
         additional_dependencies:
-          - hacking>=3.0.1,<3.1.0
+          - hacking>=3.0.1,<=4.1.0
         language: python
         entry: flake8
         files: '^.*\.py$'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/AUTHORS 
new/oslo.messaging-14.2.0/AUTHORS
--- old/oslo.messaging-14.0.0/AUTHORS   2022-08-24 15:27:23.000000000 +0200
+++ new/oslo.messaging-14.2.0/AUTHORS   2023-02-01 11:59:33.000000000 +0100
@@ -76,6 +76,7 @@
 Ghanshyam Mann <[email protected]>
 Gordon Sim <[email protected]>
 Gregory Haynes <[email protected]>
+Guillaume Espanel <[email protected]>
 Haifeng.Yan <[email protected]>
 Hanxi Liu <[email protected]>
 Hervé Beraud <[email protected]>
@@ -168,6 +169,7 @@
 Stanislav Kudriashev <[email protected]>
 Stanisław Pitucha <[email protected]>
 Stephen Finucane <[email protected]>
+Stephen Finucane <[email protected]>
 Steve Kowalik <[email protected]>
 Swapnil Kulkarni (coolsvap) <[email protected]>
 Takashi NATSUME <[email protected]>
@@ -176,6 +178,8 @@
 Thomas Goirand <[email protected]>
 Thomas Herve <[email protected]>
 Thomas Herve <[email protected]>
+Tobias Urdin <[email protected]>
+Tobias Urdin <[email protected]>
 TommyLike <[email protected]>
 Tony Breeds <[email protected]>
 Tovin Seven <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/ChangeLog 
new/oslo.messaging-14.2.0/ChangeLog
--- old/oslo.messaging-14.0.0/ChangeLog 2022-08-24 15:27:22.000000000 +0200
+++ new/oslo.messaging-14.2.0/ChangeLog 2023-02-01 11:59:33.000000000 +0100
@@ -1,14 +1,29 @@
 CHANGES
 =======
 
+14.2.0
+------
+
+* Support overriding class for get\_rpc\_\* helper functions
+* tox cleanups
+
+14.1.0
+------
+
+* Implement get\_rpc\_client function
+* Warn when we force creating a non durable exchange
+* Update master for stable/zed
+
 14.0.0
 ------
 
 * Change default value of "heartbeat\_in\_pthread" to False
+* Remove logging from ProducerConnection.\_produce\_message
 
 13.0.0
 ------
 
+* update hacking pin to support flake8 3.8.3
 * Drop python3.6/3.7 support in testing runtime
 
 12.14.0
@@ -30,6 +45,7 @@
 
 * [rabbit] use retry parameters during notification sending
 * Update python testing classifier
+* Force creating non durable control exchange when a precondition failed
 * Reproduce bug 1917645
 
 12.11.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/PKG-INFO 
new/oslo.messaging-14.2.0/PKG-INFO
--- old/oslo.messaging-14.0.0/PKG-INFO  2022-08-24 15:27:23.258357500 +0200
+++ new/oslo.messaging-14.2.0/PKG-INFO  2023-02-01 11:59:33.452776000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: oslo.messaging
-Version: 14.0.0
+Version: 14.2.0
 Summary: Oslo Messaging API
 Home-page: https://docs.openstack.org/oslo.messaging/latest/
 Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo.messaging.egg-info/PKG-INFO 
new/oslo.messaging-14.2.0/oslo.messaging.egg-info/PKG-INFO
--- old/oslo.messaging-14.0.0/oslo.messaging.egg-info/PKG-INFO  2022-08-24 
15:27:23.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo.messaging.egg-info/PKG-INFO  2023-02-01 
11:59:33.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: oslo.messaging
-Version: 14.0.0
+Version: 14.2.0
 Summary: Oslo Messaging API
 Home-page: https://docs.openstack.org/oslo.messaging/latest/
 Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo.messaging.egg-info/SOURCES.txt 
new/oslo.messaging-14.2.0/oslo.messaging.egg-info/SOURCES.txt
--- old/oslo.messaging-14.0.0/oslo.messaging.egg-info/SOURCES.txt       
2022-08-24 15:27:23.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo.messaging.egg-info/SOURCES.txt       
2023-02-01 11:59:33.000000000 +0100
@@ -147,14 +147,18 @@
 releasenotes/notes/blocking-executor-deprecated-895146c1c3bf2f51.yaml
 releasenotes/notes/blocking-executor-support-dropped-a3bc74c6825863f0.yaml
 
releasenotes/notes/bug-1917645-rabbit-use-retry-parameter-for-notifications-3f7c508ab4437579.yaml
+releasenotes/notes/bug-1981093-kafka-dont-log-in-tpool-execute-fa50ceee2d55ebae.yaml
 releasenotes/notes/bump-amqp-version-due-to-tls-issue-e877b152eb101c15.yaml
 releasenotes/notes/connection_ttl-2cf0fe6e1ab8c73c.yaml
+releasenotes/notes/declare_fallback_durable_exchange-0db677de4fdf1e78.yaml
 releasenotes/notes/deprecate-ZeroMQ-driver-a8af25aaba867c5b.yaml
 releasenotes/notes/disable-mandatory-flag-a6210a534f3853f0.yaml
 
releasenotes/notes/do-not-run-heartbeat-in-pthread-by-default-42e1299f59b841f8.yaml
 releasenotes/notes/drop-python27-support-5ef2f365d8930483.yaml
 releasenotes/notes/enforce_fips_mode-07dd259eb8a73c2b.yaml
 releasenotes/notes/fix-access_policy-deafult-a6954a147cb002b0.yaml
+releasenotes/notes/get-rpc-client-0b4aa62160864b29.yaml
+releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml
 releasenotes/notes/get_rpc_transport-4aa3511ad9754a60.yaml
 releasenotes/notes/handle-missing-queue-553a803f94976be7.yaml
 releasenotes/notes/kafka-client-library-change-fe16d5a34550db7f.yaml
@@ -186,6 +190,7 @@
 releasenotes/source/wallaby.rst
 releasenotes/source/xena.rst
 releasenotes/source/yoga.rst
+releasenotes/source/zed.rst
 releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
 releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo.messaging.egg-info/pbr.json 
new/oslo.messaging-14.2.0/oslo.messaging.egg-info/pbr.json
--- old/oslo.messaging-14.0.0/oslo.messaging.egg-info/pbr.json  2022-08-24 
15:27:23.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo.messaging.egg-info/pbr.json  2023-02-01 
11:59:33.000000000 +0100
@@ -1 +1 @@
-{"git_version": "e44f286e", "is_release": true}
\ No newline at end of file
+{"git_version": "687dea2e", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo.messaging.egg-info/requires.txt 
new/oslo.messaging-14.2.0/oslo.messaging.egg-info/requires.txt
--- old/oslo.messaging-14.0.0/oslo.messaging.egg-info/requires.txt      
2022-08-24 15:27:23.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo.messaging.egg-info/requires.txt      
2023-02-01 11:59:33.000000000 +0100
@@ -28,7 +28,7 @@
 eventlet>=0.23.0
 fixtures>=3.0.0
 greenlet>=0.4.15
-hacking<3.1.0,>=3.0.1
+hacking<=4.1.0,>=3.0.1
 oslotest>=3.2.0
 pifpaf>=2.2.0
 pre-commit>=2.6.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo_messaging/_drivers/impl_kafka.py 
new/oslo.messaging-14.2.0/oslo_messaging/_drivers/impl_kafka.py
--- old/oslo.messaging-14.0.0/oslo_messaging/_drivers/impl_kafka.py     
2022-08-24 15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/_drivers/impl_kafka.py     
2023-02-01 11:58:55.000000000 +0100
@@ -265,18 +265,17 @@
         self.producer = None
         self.producer_lock = threading.Lock()
 
-    def _produce_message(self, topic, message):
-        while True:
-            try:
-                self.producer.produce(topic, message)
-            except KafkaException as e:
-                LOG.error("Produce message failed: %s" % str(e))
-            except BufferError:
-                LOG.debug("Produce message queue full, waiting for deliveries")
-                self.producer.poll(0.5)
-                continue
-            break
-
+    def _produce_message(self, topic, message, poll):
+        if poll:
+            self.producer.poll(poll)
+        try:
+            self.producer.produce(topic, message)
+        except KafkaException as e:
+            self.producer.poll(0)
+            raise e
+        except BufferError as e:
+            # We'll have to poll next time
+            raise e
         self.producer.poll(0)
 
     def notify_send(self, topic, ctxt, msg, retry):
@@ -293,9 +292,22 @@
 
         try:
             self._ensure_producer()
-            if eventletutils.is_monkey_patched('thread'):
-                return tpool.execute(self._produce_message, topic, message)
-            return self._produce_message(topic, message)
+            poll = 0
+            while True:
+                try:
+                    if eventletutils.is_monkey_patched('thread'):
+                        return tpool.execute(self._produce_message, topic,
+                                             message, poll)
+                    return self._produce_message(topic, message, poll)
+                except KafkaException as e:
+                    LOG.error("Produce message failed: %s" % str(e))
+                    break
+                except BufferError:
+                    LOG.debug("Produce message queue full, "
+                              "waiting for deliveries")
+                    # We'll retry with .5s polling
+                    poll = 0.5
+
         except Exception:
             # NOTE(sileht): if something goes wrong close the producer
             # connection
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo_messaging/_drivers/impl_rabbit.py 
new/oslo.messaging-14.2.0/oslo_messaging/_drivers/impl_rabbit.py
--- old/oslo.messaging-14.0.0/oslo_messaging/_drivers/impl_rabbit.py    
2022-08-24 15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/_drivers/impl_rabbit.py    
2023-02-01 11:58:55.000000000 +0100
@@ -349,11 +349,44 @@
         self._declared_on = None
         self.exchange = kombu.entity.Exchange(
             name=exchange_name,
-            type=type,
+            type=self.type,
             durable=self.durable,
             auto_delete=self.exchange_auto_delete)
         self.enable_cancel_on_failover = enable_cancel_on_failover
 
+    def _declare_fallback(self, err, conn, consumer_arguments):
+        """Fallback by declaring a non durable queue.
+
+        When a control exchange is shared between services it is possible
+        that some service created first a non durable control exchange and
+        then after that an other service can try to create the same control
+        exchange but as a durable control exchange. In this case RabbitMQ
+        will raise an exception (PreconditionFailed), and then it will stop
+        our execution and our service will fail entirly. In this case we want
+        to fallback by creating a non durable queue to match the default
+        config.
+        """
+        if "PRECONDITION_FAILED - inequivalent arg 'durable'" in str(err):
+            LOG.info(
+                "[%s] Retrying to declare the exchange (%s) as "
+                "non durable", conn.connection_id, self.exchange_name)
+            self.exchange = kombu.entity.Exchange(
+                name=self.exchange_name,
+                type=self.type,
+                durable=False,
+                auto_delete=self.queue_auto_delete)
+            self.queue = kombu.entity.Queue(
+                name=self.queue_name,
+                channel=conn.channel,
+                exchange=self.exchange,
+                durable=False,
+                auto_delete=self.queue_auto_delete,
+                routing_key=self.routing_key,
+                queue_arguments=self.queue_arguments,
+                consumer_arguments=consumer_arguments
+            )
+            self.queue.declare()
+
     def declare(self, conn):
         """Re-declare the queue after a rabbit (re)connect."""
 
@@ -376,7 +409,18 @@
         try:
             LOG.debug('[%s] Queue.declare: %s',
                       conn.connection_id, self.queue_name)
-            self.queue.declare()
+            try:
+                self.queue.declare()
+            except amqp_exec.PreconditionFailed as err:
+                # NOTE(hberaud): This kind of exception may be triggered
+                # when a control exchange is shared between services and
+                # when services try to create it with configs that differ
+                # from each others. RabbitMQ will reject the services
+                # that try to create it with a configuration that differ
+                # from the one used first.
+                LOG.warning(err)
+                self._declare_fallback(err, conn, consumer_arguments)
+
         except conn.connection.channel_errors as exc:
             # NOTE(jrosenboom): This exception may be triggered by a race
             # condition. Simply retrying will solve the error most of the time
@@ -1354,7 +1398,20 @@
         """Publish a message."""
 
         if not (exchange.passive or exchange.name in self._declared_exchanges):
-            exchange(self.channel).declare()
+            try:
+                exchange(self.channel).declare()
+            except amqp_exec.PreconditionFailed as err:
+                # NOTE(hberaud): This kind of exception may be triggered
+                # when a control exchange is shared between services and
+                # when services try to create it with configs that differ
+                # from each others. RabbitMQ will reject the services
+                # that try to create it with a configuration that differ
+                # from the one used first.
+                if "PRECONDITION_FAILED - inequivalent arg 'durable'" \
+                   in str(err):
+                    LOG.warning("Force creating a non durable exchange.")
+                    exchange.durable = False
+                    exchange(self.channel).declare()
             self._declared_exchanges.add(exchange.name)
 
         log_info = {'msg': msg,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/oslo_messaging/rpc/__init__.py 
new/oslo.messaging-14.2.0/oslo_messaging/rpc/__init__.py
--- old/oslo.messaging-14.0.0/oslo_messaging/rpc/__init__.py    2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/rpc/__init__.py    2023-02-01 
11:58:55.000000000 +0100
@@ -30,6 +30,7 @@
     'expected_exceptions',
     'get_rpc_transport',
     'get_rpc_server',
+    'get_rpc_client',
     'expose'
 ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/oslo_messaging/rpc/client.py 
new/oslo.messaging-14.2.0/oslo_messaging/rpc/client.py
--- old/oslo.messaging-14.0.0/oslo_messaging/rpc/client.py      2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/rpc/client.py      2023-02-01 
11:58:55.000000000 +0100
@@ -32,6 +32,7 @@
     'RPCClient',
     'RPCVersionCapError',
     'RemoteError',
+    'get_rpc_client',
 ]
 
 LOG = logging.getLogger(__name__)
@@ -263,6 +264,9 @@
     The RPCClient class is responsible for sending method invocations to and
     receiving return values from remote RPC servers via a messaging transport.
 
+    The class should always be instantiated by using the get_rpc_client
+    function and not constructing the class directly.
+
     Two RPC patterns are supported: RPC calls and RPC casts.
 
     An RPC cast is used when an RPC method does *not* return a value to
@@ -295,7 +299,7 @@
 
             def __init__(self, transport):
                 target = messaging.Target(topic='test', version='2.0')
-                self._client = messaging.RPCClient(transport, target)
+                self._client = messaging.get_rpc_client(transport, target)
 
             def test(self, ctxt, arg):
                 return self._client.call(ctxt, 'test', arg=arg)
@@ -320,7 +324,7 @@
 
         transport = messaging.get_rpc_transport(cfg.CONF)
         target = messaging.Target(topic='test', version='2.0')
-        client = messaging.RPCClient(transport, target)
+        client = messaging.get_rpc_client(transport, target)
         client.call(ctxt, 'test', arg=arg)
 
     but this is probably only useful in limited circumstances as a wrapper
@@ -334,7 +338,7 @@
     have the RPC request fail with a MessageDeliveryFailure after the given
     number of retries. For example::
 
-        client = messaging.RPCClient(transport, target, retry=None)
+        client = messaging.get_rpc_client(transport, target, retry=None)
         client.call(ctxt, 'sync')
         try:
             client.prepare(retry=0).cast(ctxt, 'ping')
@@ -346,9 +350,13 @@
 
     def __init__(self, transport, target,
                  timeout=None, version_cap=None, serializer=None, retry=None,
-                 call_monitor_timeout=None, transport_options=None):
+                 call_monitor_timeout=None, transport_options=None,
+                 _manual_load=True):
         """Construct an RPC client.
 
+        This should not be called directly, use the get_rpc_client function
+        to instantiate this class.
+
         :param transport: a messaging transport handle
         :type transport: Transport
         :param target: the default target for invocations
@@ -371,7 +379,17 @@
                                      (less than the overall timeout
                                      parameter).
         :type call_monitor_timeout: int
+        :param transport_options: Transport options passed to client.
+        :type transport_options: TransportOptions
+        :param _manual_load: Internal use only to check if class was
+                             manually instantiated or not.
+        :type _manual_load: bool
         """
+        if _manual_load:
+            LOG.warning("Using RPCClient manually to instantiate client. "
+                        "Please use get_rpc_client to obtain an RPC client "
+                        "instance.")
+
         if serializer is None:
             serializer = msg_serializer.NoOpSerializer()
 
@@ -530,3 +548,18 @@
     def can_send_version(self, version=_marker):
         """Check to see if a version is compatible with the version cap."""
         return self.prepare(version=version).can_send_version()
+
+
+def get_rpc_client(transport, target, client_cls=RPCClient, **kwargs):
+    """Construct an RPC client.
+
+    :param transport: the messaging transport
+    :type transport: Transport
+    :param target: the exchange, topic and server to listen on
+    :type target: Target
+    :param client_cls: The client class to instantiate
+    :type client_cls: class
+    :param **kwargs: The kwargs will be passed down to the
+                     client_cls constructor
+    """
+    return client_cls(transport, target, _manual_load=False, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/oslo_messaging/rpc/server.py 
new/oslo.messaging-14.2.0/oslo_messaging/rpc/server.py
--- old/oslo.messaging-14.0.0/oslo_messaging/rpc/server.py      2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/rpc/server.py      2023-02-01 
11:58:55.000000000 +0100
@@ -200,7 +200,8 @@
 
 
 def get_rpc_server(transport, target, endpoints,
-                   executor=None, serializer=None, access_policy=None):
+                   executor=None, serializer=None, access_policy=None,
+                   server_cls=RPCServer):
     """Construct an RPC server.
 
     :param transport: the messaging transport
@@ -217,10 +218,12 @@
     :param access_policy: an optional access policy.
            Defaults to DefaultRPCAccessPolicy
     :type access_policy: RPCAccessPolicyBase
+    :param server_cls: The server class to instantiate
+    :type server_cls: class
     """
     dispatcher = rpc_dispatcher.RPCDispatcher(endpoints, serializer,
                                               access_policy)
-    return RPCServer(transport, target, dispatcher, executor)
+    return server_cls(transport, target, dispatcher, executor)
 
 
 def expected_exceptions(*exceptions):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo_messaging/rpc/transport.py 
new/oslo.messaging-14.2.0/oslo_messaging/rpc/transport.py
--- old/oslo.messaging-14.0.0/oslo_messaging/rpc/transport.py   2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/rpc/transport.py   2023-02-01 
11:58:55.000000000 +0100
@@ -22,7 +22,8 @@
 
 
 def get_rpc_transport(conf, url=None,
-                      allowed_remote_exmods=None):
+                      allowed_remote_exmods=None,
+                      transport_cls=msg_transport.RPCTransport):
     """A factory method for Transport objects for RPCs.
 
     This method should be used to ensure the correct messaging functionality
@@ -43,7 +44,9 @@
                                   transport will deserialize remote exceptions
                                   from
     :type allowed_remote_exmods: list
+    :param transport_cls: the transport class to instantiate
+    :type transport_cls: class
     """
     return msg_transport._get_transport(
         conf, url, allowed_remote_exmods,
-        transport_cls=msg_transport.RPCTransport)
+        transport_cls=transport_cls)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo_messaging/tests/drivers/test_impl_kafka.py 
new/oslo.messaging-14.2.0/oslo_messaging/tests/drivers/test_impl_kafka.py
--- old/oslo.messaging-14.0.0/oslo_messaging/tests/drivers/test_impl_kafka.py   
2022-08-24 15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/tests/drivers/test_impl_kafka.py   
2023-02-01 11:58:55.000000000 +0100
@@ -15,6 +15,8 @@
 import testscenarios
 from unittest import mock
 
+from confluent_kafka import KafkaException
+
 import oslo_messaging
 from oslo_messaging._drivers import impl_kafka as kafka_driver
 from oslo_messaging.tests import utils as test_utils
@@ -120,6 +122,36 @@
                 'ssl.key.password': '',
             })
 
+    def test_send_notification_retries_on_buffer_error(self):
+        target = oslo_messaging.Target(topic="topic_test")
+
+        with mock.patch("confluent_kafka.Producer") as producer:
+            fake_producer = mock.MagicMock()
+            fake_producer.produce = mock.Mock(
+                side_effect=[BufferError, BufferError, None])
+            producer.return_value = fake_producer
+
+            self.driver.send_notification(
+                target, {}, {"payload": ["test_1"]},
+                None, retry=3)
+
+            assert fake_producer.produce.call_count == 3
+
+    def test_send_notification_stops_on_kafka_error(self):
+        target = oslo_messaging.Target(topic="topic_test")
+
+        with mock.patch("confluent_kafka.Producer") as producer:
+            fake_producer = mock.MagicMock()
+            fake_producer.produce = mock.Mock(
+                side_effect=[KafkaException, None])
+            producer.return_value = fake_producer
+
+            self.driver.send_notification(
+                target, {}, {"payload": ["test_1"]},
+                None, retry=3)
+
+            assert fake_producer.produce.call_count == 1
+
     def test_listen(self):
         target = oslo_messaging.Target(topic="topic_test")
         self.assertRaises(NotImplementedError, self.driver.listen, target,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo_messaging/tests/functional/utils.py 
new/oslo.messaging-14.2.0/oslo_messaging/tests/functional/utils.py
--- old/oslo.messaging-14.0.0/oslo_messaging/tests/functional/utils.py  
2022-08-24 15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/tests/functional/utils.py  
2023-02-01 11:58:55.000000000 +0100
@@ -114,8 +114,8 @@
             target=self.target,
             endpoints=endpoints,
             executor=self.executor)
-        self._ctrl = oslo_messaging.RPCClient(transport.transport,
-                                              self.ctrl_target)
+        self._ctrl = oslo_messaging.get_rpc_client(transport.transport,
+                                                   self.ctrl_target)
         self._start()
         transport.wait()
 
@@ -230,7 +230,7 @@
                  transport_options=None, **kwargs):
         self.name = name or "functional-tests"
         self.cast = cast
-        self.client = oslo_messaging.RPCClient(
+        self.client = oslo_messaging.get_rpc_client(
             transport=transport,
             target=target,
             transport_options=transport_options,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo_messaging/tests/rpc/test_client.py 
new/oslo.messaging-14.2.0/oslo_messaging/tests/rpc/test_client.py
--- old/oslo.messaging-14.0.0/oslo_messaging/tests/rpc/test_client.py   
2022-08-24 15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/tests/rpc/test_client.py   
2023-02-01 11:58:55.000000000 +0100
@@ -44,8 +44,9 @@
         self.config(rpc_response_timeout=None)
         transport_options = oslo_messaging.TransportOptions()
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
-        client = oslo_messaging.RPCClient(transport, oslo_messaging.Target(),
-                                          transport_options=transport_options)
+        client = oslo_messaging.get_rpc_client(
+            transport, oslo_messaging.Target(),
+            transport_options=transport_options)
 
         transport._send = mock.Mock()
 
@@ -70,7 +71,7 @@
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
 
         transport_options = oslo_messaging.TransportOptions(at_least_once=True)
-        client = oslo_messaging.RPCClient(
+        client = oslo_messaging.get_rpc_client(
             transport,
             oslo_messaging.Target(),
             transport_options=transport_options)
@@ -215,7 +216,7 @@
         expect_target = oslo_messaging.Target(**self.expect)
 
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
-        client = oslo_messaging.RPCClient(transport, target)
+        client = oslo_messaging.get_rpc_client(transport, target)
 
         transport._send = mock.Mock()
 
@@ -269,9 +270,9 @@
         self.config(rpc_response_timeout=self.confval)
 
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
-        client = oslo_messaging.RPCClient(transport, oslo_messaging.Target(),
-                                          timeout=self.ctor,
-                                          call_monitor_timeout=self.cm)
+        client = oslo_messaging.get_rpc_client(
+            transport, oslo_messaging.Target(), timeout=self.ctor,
+            call_monitor_timeout=self.cm)
 
         transport._send = mock.Mock()
 
@@ -302,8 +303,9 @@
 
     def test_call_retry(self):
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
-        client = oslo_messaging.RPCClient(transport, oslo_messaging.Target(),
-                                          retry=self.ctor)
+        client = oslo_messaging.get_rpc_client(
+            transport, oslo_messaging.Target(),
+            retry=self.ctor)
 
         transport._send = mock.Mock()
 
@@ -332,8 +334,8 @@
 
     def test_call_fanout(self):
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
-        client = oslo_messaging.RPCClient(transport,
-                                          oslo_messaging.Target(**self.target))
+        client = oslo_messaging.get_rpc_client(
+            transport, oslo_messaging.Target(**self.target))
 
         if self.prepare is not _notset:
             client = client.prepare(**self.prepare)
@@ -363,8 +365,8 @@
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
         serializer = msg_serializer.NoOpSerializer()
 
-        client = oslo_messaging.RPCClient(transport, oslo_messaging.Target(),
-                                          serializer=serializer)
+        client = oslo_messaging.get_rpc_client(
+            transport, oslo_messaging.Target(), serializer=serializer)
 
         transport._send = mock.Mock()
         kwargs = dict(wait_for_reply=True,
@@ -465,8 +467,8 @@
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
 
         target = oslo_messaging.Target(version=self.version)
-        client = oslo_messaging.RPCClient(transport, target,
-                                          version_cap=self.cap)
+        client = oslo_messaging.get_rpc_client(transport, target,
+                                               version_cap=self.cap)
 
         if self.success:
             transport._send = mock.Mock()
@@ -574,8 +576,8 @@
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
 
         target = oslo_messaging.Target(version=self.version)
-        client = oslo_messaging.RPCClient(transport, target,
-                                          version_cap=self.cap)
+        client = oslo_messaging.get_rpc_client(transport, target,
+                                               version_cap=self.cap)
 
         prep_kwargs = {}
         if self.prepare_cap is not _notset:
@@ -598,7 +600,7 @@
     def test_invalid_version_type(self):
         target = oslo_messaging.Target(topic='sometopic')
         transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
-        client = oslo_messaging.RPCClient(transport, target)
+        client = oslo_messaging.get_rpc_client(transport, target)
         self.assertRaises(exceptions.MessagingException,
                           client.prepare, version='5')
         self.assertRaises(exceptions.MessagingException,
@@ -612,7 +614,7 @@
     @mock.patch('oslo_messaging.rpc.client.LOG')
     def test_warning_when_notifier_transport(self, log):
         transport = oslo_messaging.get_notification_transport(self.conf)
-        oslo_messaging.RPCClient(transport, oslo_messaging.Target())
+        oslo_messaging.get_rpc_client(transport, oslo_messaging.Target())
         log.warning.assert_called_once_with(
             "Using notification transport for RPC. Please use "
             "get_rpc_transport to obtain an RPC transport "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo_messaging/tests/rpc/test_server.py 
new/oslo.messaging-14.2.0/oslo_messaging/tests/rpc/test_server.py
--- old/oslo.messaging-14.0.0/oslo_messaging/tests/rpc/test_server.py   
2022-08-24 15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/tests/rpc/test_server.py   
2023-02-01 11:58:55.000000000 +0100
@@ -102,8 +102,8 @@
 
     def _setup_client(self, transport, topic='testtopic', exchange=None):
         target = oslo_messaging.Target(topic=topic, exchange=exchange)
-        return oslo_messaging.RPCClient(transport, target=target,
-                                        serializer=self.serializer)
+        return oslo_messaging.get_rpc_client(transport, target=target,
+                                             serializer=self.serializer)
 
 
 class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/oslo_messaging/tests/test_transport.py 
new/oslo.messaging-14.2.0/oslo_messaging/tests/test_transport.py
--- old/oslo.messaging-14.0.0/oslo_messaging/tests/test_transport.py    
2022-08-24 15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/oslo_messaging/tests/test_transport.py    
2023-02-01 11:58:55.000000000 +0100
@@ -115,7 +115,7 @@
         self.assertIsNotNone(transport_)
         self.assertIs(transport_.conf, self.conf)
         self.assertIs(transport_._driver, drvr)
-        self.assertTrue(isinstance(transport_, transport.RPCTransport))
+        self.assertIsInstance(transport_, transport.RPCTransport)
 
         driver.DriverManager.assert_called_once_with('oslo.messaging.drivers',
                                                      self.expect['backend'],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/releasenotes/notes/bug-1981093-kafka-dont-log-in-tpool-execute-fa50ceee2d55ebae.yaml
 
new/oslo.messaging-14.2.0/releasenotes/notes/bug-1981093-kafka-dont-log-in-tpool-execute-fa50ceee2d55ebae.yaml
--- 
old/oslo.messaging-14.0.0/releasenotes/notes/bug-1981093-kafka-dont-log-in-tpool-execute-fa50ceee2d55ebae.yaml
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.messaging-14.2.0/releasenotes/notes/bug-1981093-kafka-dont-log-in-tpool-execute-fa50ceee2d55ebae.yaml
      2023-02-01 11:58:55.000000000 +0100
@@ -0,0 +1,8 @@
+---
+fixes:
+  - |
+    [`bug 1981093 <https://bugs.launchpad.net/oslo.messaging/+bug/1981093>`_]
+    Pulls calls to logging functions out of ``impl_kafka._produce_message``.
+    Since ``_produce_message`` is called through tpool.execute, calling logging
+    functions inside ``_produce_message`` could cause subsequent calls to
+    logging functions to deadlock.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/releasenotes/notes/declare_fallback_durable_exchange-0db677de4fdf1e78.yaml
 
new/oslo.messaging-14.2.0/releasenotes/notes/declare_fallback_durable_exchange-0db677de4fdf1e78.yaml
--- 
old/oslo.messaging-14.0.0/releasenotes/notes/declare_fallback_durable_exchange-0db677de4fdf1e78.yaml
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.messaging-14.2.0/releasenotes/notes/declare_fallback_durable_exchange-0db677de4fdf1e78.yaml
        2023-02-01 11:58:55.000000000 +0100
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Force creating non durable control exchange when a precondition failed
+    related to config that differ occuring.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/releasenotes/notes/get-rpc-client-0b4aa62160864b29.yaml
 
new/oslo.messaging-14.2.0/releasenotes/notes/get-rpc-client-0b4aa62160864b29.yaml
--- 
old/oslo.messaging-14.0.0/releasenotes/notes/get-rpc-client-0b4aa62160864b29.yaml
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.messaging-14.2.0/releasenotes/notes/get-rpc-client-0b4aa62160864b29.yaml
   2023-02-01 11:58:55.000000000 +0100
@@ -0,0 +1,11 @@
+---
+features:
+  - |
+    Added new ``get_rpc_client`` function to instantiate the RPCClient
+    class
+deprecations:
+  - |
+    Instantiating the RPCClient class directly is deprecated in favor
+    of using the new ``get_rpc_client`` function to expose a more
+    common API similar to existing functions such as ``get_rpc_server``
+    and ``get_rpc_transport``
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-14.0.0/releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml
 
new/oslo.messaging-14.2.0/releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml
--- 
old/oslo.messaging-14.0.0/releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.messaging-14.2.0/releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml
      2023-02-01 11:58:55.000000000 +0100
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    The ``get_rpc_transport``, ``get_rpc_server`` and ``get_rpc_client`` helper
+    functions now have support for overriding the class that is instantiated.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/releasenotes/source/index.rst 
new/oslo.messaging-14.2.0/releasenotes/source/index.rst
--- old/oslo.messaging-14.0.0/releasenotes/source/index.rst     2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/releasenotes/source/index.rst     2023-02-01 
11:58:55.000000000 +0100
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   zed
    yoga
    xena
    wallaby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/releasenotes/source/zed.rst 
new/oslo.messaging-14.2.0/releasenotes/source/zed.rst
--- old/oslo.messaging-14.0.0/releasenotes/source/zed.rst       1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.messaging-14.2.0/releasenotes/source/zed.rst       2023-02-01 
11:58:55.000000000 +0100
@@ -0,0 +1,6 @@
+========================
+Zed Series Release Notes
+========================
+
+.. release-notes::
+   :branch: stable/zed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/test-requirements.txt 
new/oslo.messaging-14.2.0/test-requirements.txt
--- old/oslo.messaging-14.0.0/test-requirements.txt     2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/test-requirements.txt     2023-02-01 
11:58:55.000000000 +0100
@@ -3,7 +3,7 @@
 # process, which may cause wedges in the gate later.
 
 # Hacking already pins down pep8, pyflakes and flake8
-hacking>=3.0.1,<3.1.0 # Apache-2.0
+hacking>=3.0.1,<=4.1.0 # Apache-2.0
 
 fixtures>=3.0.0 # Apache-2.0/BSD
 stestr>=2.0.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/tools/simulator.py 
new/oslo.messaging-14.2.0/tools/simulator.py
--- old/oslo.messaging-14.0.0/tools/simulator.py        2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/tools/simulator.py        2023-02-01 
11:58:55.000000000 +0100
@@ -410,7 +410,7 @@
     def __init__(self, client_id, transport, target, timeout, is_cast,
                  wait_after_msg, sync_mode=False):
 
-        client = rpc.RPCClient(transport, target)
+        client = rpc.get_rpc_client(transport, target)
         method = _rpc_cast if is_cast else _rpc_call
 
         super(RPCClient, self).__init__(client_id,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/tools/test-setup.sh 
new/oslo.messaging-14.2.0/tools/test-setup.sh
--- old/oslo.messaging-14.0.0/tools/test-setup.sh       2022-08-24 
15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/tools/test-setup.sh       2023-02-01 
11:58:55.000000000 +0100
@@ -11,10 +11,10 @@
 # this package here.
 
 # inspired from project-config install-distro-packages.sh
-if apt-get -v >/dev/null 2>&1 ; then
-    sudo add-apt-repository -y ppa:qpid/testing
-    sudo apt-get -qq update
-    sudo PATH=/usr/sbin:/sbin:$PATH DEBIAN_FRONTEND=noninteractive \
-        apt-get -q --option "Dpkg::Options::=--force-confold" \
-        --assume-yes install qdrouterd
-fi
+#if apt-get -v >/dev/null 2>&1 ; then
+#    sudo add-apt-repository -y ppa:qpid/testing
+#    sudo apt-get -qq update
+#    sudo PATH=/usr/sbin:/sbin:$PATH DEBIAN_FRONTEND=noninteractive \
+#        apt-get -q --option "Dpkg::Options::=--force-confold" \
+#        --assume-yes install qdrouterd
+#fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-14.0.0/tox.ini 
new/oslo.messaging-14.2.0/tox.ini
--- old/oslo.messaging-14.0.0/tox.ini   2022-08-24 15:26:44.000000000 +0200
+++ new/oslo.messaging-14.2.0/tox.ini   2023-02-01 11:58:55.000000000 +0100
@@ -1,21 +1,18 @@
 [tox]
 minversion = 3.18.0
-envlist = py3,pep8
-ignore_basepython_conflict = true
+envlist = py3, pep8
 
 [testenv]
-basepython = python3
-setenv =
-    VIRTUAL_ENV={envdir}
-passenv = OS_*
-          ZUUL_CACHE_DIR
-          REQUIREMENTS_PIP_LOCATION
-install_command = pip install {opts} {packages}
+passenv =
+  OS_*
+  ZUUL_CACHE_DIR
+  REQUIREMENTS_PIP_LOCATION
 deps =
   
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
   -r{toxinidir}/test-requirements.txt
   -r{toxinidir}/requirements.txt
-commands = stestr run --slowest {posargs}
+commands =
+  stestr run --slowest {posargs}
 
 [testenv:pep8]
 commands =
@@ -25,7 +22,7 @@
 
 [testenv:cover]
 setenv =
-    PYTHON=coverage run --source oslo_messaging --parallel-mode
+  PYTHON=coverage run --source oslo_messaging --parallel-mode
 commands =
   stestr run --slowest {posargs}
   coverage combine
@@ -37,14 +34,15 @@
 
 [testenv:docs]
 allowlist_externals = rm
-deps = -r{toxinidir}/doc/requirements.txt
+deps =
+  
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+  -r{toxinidir}/doc/requirements.txt
 commands =
   rm -fr doc/build
   sphinx-build -W --keep-going -b html doc/source doc/build/html
 
-#
 # The following functional test scenarios are defined for the
-# testing of the messaging backends and to demonstrated the functiona
+# testing of the messaging backends and to demonstrated the functional
 # correctness across driver combinations (e.g. RPC and Notify)
 #
 #                 RPC      Notify
@@ -56,42 +54,50 @@
 #
 [testenv:py38-func-scenario01]
 setenv =
-    {[testenv]setenv}
-    SCENARIO=scenario01
-commands = {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest 
{posargs:oslo_messaging.tests.functional}
+  SCENARIO=scenario01
+allowlist_externals =
+  {toxinidir}/tools/setup-scenario-env.sh
+commands =
+  {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest 
{posargs:oslo_messaging.tests.functional}
 
 [testenv:py38-func-scenario02]
 setenv =
-    {[testenv]setenv}
-    SCENARIO=scenario02
-commands = {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest 
{posargs:oslo_messaging.tests.functional}
+  SCENARIO=scenario02
+allowlist_externals =
+  {toxinidir}/tools/setup-scenario-env.sh
+commands =
+  {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest 
{posargs:oslo_messaging.tests.functional}
 
 [testenv:py38-func-scenario03]
 setenv =
-    {[testenv]setenv}
-    SCENARIO=scenario03
-    ENVNAME={envname}
-    WORKDIR={toxworkdir}
-commands = {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest 
{posargs:oslo_messaging.tests.functional}
+  SCENARIO=scenario03
+  ENVNAME={envname}
+  WORKDIR={toxworkdir}
+allowlist_externals =
+  {toxinidir}/tools/setup-scenario-env.sh
+commands =
+  {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest 
{posargs:oslo_messaging.tests.functional}
 
 [testenv:py38-func-scenario04]
 setenv =
-    {[testenv]setenv}
-    SCENARIO=scenario04
-    ENVNAME={envname}
-    WORKDIR={toxworkdir}
-commands = {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest 
{posargs:oslo_messaging.tests.functional}
+  SCENARIO=scenario04
+  ENVNAME={envname}
+  WORKDIR={toxworkdir}
+allowlist_externals =
+  {toxinidir}/tools/setup-scenario-env.sh
+commands =
+  {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest 
{posargs:oslo_messaging.tests.functional}
 
 [testenv:bandit]
 # NOTE(kgiusti): This is required for the integration test job of the bandit
 # project. Please do not remove.
-commands = bandit -r oslo_messaging -x tests -n5
+commands =
+  bandit -r oslo_messaging -x tests -n5
 
 [flake8]
-# E731 skipped as assign a lambda expression
-
 show-source = True
 enable-extensions = H203,H106
+# E731 skipped as assign a lambda expression
 ignore = E731,H405,W504
 exclude = .tox,dist,doc,*.egg,build,__init__.py
 
@@ -105,12 +111,16 @@
 paths = ./oslo_messaging/hacking
 
 [testenv:releasenotes]
-allowlist_externals = rm
+allowlist_externals =
+  rm
 commands =
   rm -rf releasenotes/build
   sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html 
releasenotes/source releasenotes/build/html
-deps = -r{toxinidir}/doc/requirements.txt
+deps =
+  
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+  -r{toxinidir}/doc/requirements.txt
 
 [testenv:bindep]
-deps = bindep
+deps =
+  bindep
 commands = bindep {posargs}

Reply via email to