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 2021-12-12 00:57:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.messaging (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.messaging.new.2520 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.messaging"

Sun Dec 12 00:57:33 2021 rev:25 rq:939533 version:12.9.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-oslo.messaging/python-oslo.messaging.changes  
    2021-05-08 22:07:25.345741333 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-oslo.messaging.new.2520/python-oslo.messaging.changes
    2021-12-12 00:57:38.354585601 +0100
@@ -1,0 +2,20 @@
+Mon Dec  6 09:34:51 UTC 2021 - [email protected]
+
+- update to version 12.9.1
+  - bindep: Add 'librdkafka-dev' dependency
+  - setup.cfg: Replace dashes with underscores
+  - amqp1: re-organize TestFailover to be reused by TestSSL
+  - Remove the oslo_utils.fnmatch
+  - Changed minversion in tox to 3.18.0
+  - Revert "Disable AMQP 1.0 SSL unit tests"
+  - amqp1: Do not reuse _socket_connection on reconnect
+  - Add Python3 xena unit tests
+  - Upgrade the pre-commit-hooks version
+  - Update master for stable/wallaby
+  - Fix formatting of release list
+  - Remove references to 'sys.version_info'
+  - Remove lower constraints.
+  - Add Support For oslo.metrics
+  - Move flake8 as a pre-commit local target.
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ python-oslo.messaging.spec ++++++
--- /var/tmp/diff_new_pack.J47H3w/_old  2021-12-12 00:57:38.818585919 +0100
+++ /var/tmp/diff_new_pack.J47H3w/_new  2021-12-12 00:57:38.822585922 +0100
@@ -17,13 +17,13 @@
 
 
 Name:           python-oslo.messaging
-Version:        12.7.1
+Version:        12.9.1
 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-12.7.1.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.messaging/oslo.messaging-12.9.1.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python3-PyYAML >= 3.13
 BuildRequires:  python3-WebOb >= 1.7.1
@@ -41,6 +41,7 @@
 BuildRequires:  python3-oslo.config >= 5.2.0
 BuildRequires:  python3-oslo.i18n
 BuildRequires:  python3-oslo.log >= 3.36.0
+BuildRequires:  python3-oslo.metrics >= 0.2.1
 BuildRequires:  python3-oslo.middleware >= 3.31.0
 BuildRequires:  python3-oslo.serialization >= 2.18.0
 BuildRequires:  python3-oslo.service >= 1.24.0
@@ -72,6 +73,7 @@
 Requires:       python3-oslo.config >= 5.2.0
 Requires:       python3-oslo.i18n
 Requires:       python3-oslo.log >= 3.36.0
+Requires:       python3-oslo.metrics >= 0.2.1
 Requires:       python3-oslo.middleware >= 3.31.0
 Requires:       python3-oslo.serialization >= 2.18.0
 Requires:       python3-oslo.service >= 1.24.0
@@ -99,7 +101,7 @@
 This package contains the documentation.
 
 %prep
-%autosetup -p1 -n oslo.messaging-12.7.1
+%autosetup -p1 -n oslo.messaging-12.9.1
 %py_req_cleanup
 
 %build

++++++ _service ++++++
--- /var/tmp/diff_new_pack.J47H3w/_old  2021-12-12 00:57:38.846585939 +0100
+++ /var/tmp/diff_new_pack.J47H3w/_new  2021-12-12 00:57:38.846585939 +0100
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/wallaby/openstack/oslo.messaging/oslo.messaging.spec.j2</param>
+    <param 
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/master/openstack/oslo.messaging/oslo.messaging.spec.j2</param>
     <param name="output-name">python-oslo.messaging.spec</param>
-    <param 
name="requirements">https://opendev.org/openstack/oslo.messaging/raw/branch/stable/wallaby/requirements.txt</param>
+    <param 
name="requirements">https://opendev.org/openstack/oslo.messaging/raw/master/requirements.txt</param>
     <param name="changelog-email">[email protected]</param>
     <param name="changelog-provider">gh,openstack,oslo.messaging</param>
   </service>

++++++ oslo.messaging-12.7.1.tar.gz -> oslo.messaging-12.9.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/.pre-commit-config.yaml 
new/oslo.messaging-12.9.1/.pre-commit-config.yaml
--- old/oslo.messaging-12.7.1/.pre-commit-config.yaml   2021-02-16 
10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/.pre-commit-config.yaml   2021-08-26 
17:39:33.000000000 +0200
@@ -9,7 +9,7 @@
 
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: ebc15addedad713c86ef18ae9632c88e187dd0af  # v3.1.0
+    rev: 9136088a246768144165fcc3ecc3d31bb686920a # v3.3.0
     hooks:
       - id: trailing-whitespace
       # Replaces or checks mixed line ending
@@ -27,9 +27,13 @@
       - id: debug-statements
       - id: check-yaml
         files: .*\.(yaml|yml)$
-  - repo: https://gitlab.com/pycqa/flake8
-    rev: 181bb46098dddf7e2d45319ea654b4b4d58c2840 # 3.8.3
+  - repo: local
     hooks:
       - id: flake8
+        name: flake8
         additional_dependencies:
           - hacking>=3.0.1,<3.1.0
+        language: python
+        entry: flake8
+        files: '^.*\.py$'
+        exclude: '^(doc|releasenotes|tools)/.*$'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/.zuul.yaml 
new/oslo.messaging-12.9.1/.zuul.yaml
--- old/oslo.messaging-12.7.1/.zuul.yaml        2021-02-16 10:01:45.000000000 
+0100
+++ new/oslo.messaging-12.9.1/.zuul.yaml        2021-08-26 17:39:33.000000000 
+0200
@@ -108,7 +108,7 @@
       - check-requirements
       - lib-forward-testing-python3
       - openstack-cover-jobs
-      - openstack-python3-wallaby-jobs
+      - openstack-python3-xena-jobs
       - periodic-stable-jobs
       - publish-openstack-docs-pti
       - release-notes-jobs-python3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/AUTHORS 
new/oslo.messaging-12.9.1/AUTHORS
--- old/oslo.messaging-12.7.1/AUTHORS   2021-02-16 10:02:14.000000000 +0100
+++ new/oslo.messaging-12.9.1/AUTHORS   2021-08-26 17:40:14.000000000 +0200
@@ -29,6 +29,7 @@
 Charles Short <[email protected]>
 Chenjun Shen <[email protected]>
 Chet Burgess <[email protected]>
+Ching Kuo <[email protected]>
 Chris Dent <[email protected]>
 Christian Berendt <[email protected]>
 Christian Strack <[email protected]>
@@ -42,6 +43,7 @@
 Dan Prince <[email protected]>
 Dan Smith <[email protected]>
 Daniel Alvarez <[email protected]>
+Daniel Bengtsson <[email protected]>
 Davanum Srinivas (dims) <[email protected]>
 Davanum Srinivas <[email protected]>
 Davanum Srinivas <[email protected]>
@@ -104,6 +106,7 @@
 Joe Harrison <[email protected]>
 John Eckersberg <[email protected]>
 John L. Villalovos <[email protected]>
+Jorhson Deng <[email protected]>
 Joshua Harlow <[email protected]>
 Joshua Harlow <[email protected]>
 Joshua Harlow <[email protected]>
@@ -199,6 +202,7 @@
 blue55 <[email protected]>
 caoyuan <[email protected]>
 chenxing <[email protected]>
+dengzhaosen <[email protected]>
 dparalen <[email protected]>
 dukhlov <[email protected]>
 ericxiett <[email protected]>
@@ -238,8 +242,10 @@
 venkatamahesh <[email protected]>
 wanglmopenstack <[email protected]>
 weiweigu <[email protected]>
+wu.shiming <[email protected]>
 xuanyandong <[email protected]>
 yan.haifeng <[email protected]>
+yangyawei <[email protected]>
 zhang-shaoman <[email protected]>
 zhangboye <[email protected]>
 zhangjl <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/ChangeLog 
new/oslo.messaging-12.9.1/ChangeLog
--- old/oslo.messaging-12.7.1/ChangeLog 2021-02-16 10:02:14.000000000 +0100
+++ new/oslo.messaging-12.9.1/ChangeLog 2021-08-26 17:40:13.000000000 +0200
@@ -1,9 +1,35 @@
 CHANGES
 =======
 
+12.9.1
+------
+
+* amqp1: Do not reuse \_socket\_connection on reconnect
+* amqp1: re-organize TestFailover to be reused by TestSSL
+* Revert "Disable AMQP 1.0 SSL unit tests"
+
+12.9.0
+------
+
+* Add Support For oslo.metrics
+* Changed minversion in tox to 3.18.0
+* Upgrade the pre-commit-hooks version
+* setup.cfg: Replace dashes with underscores
+* Remove the oslo\_utils.fnmatch
+
+12.8.0
+------
+
+* Remove references to 'sys.version\_info'
+* Fix formatting of release list
+* Move flake8 as a pre-commit local target
+* Add Python3 xena unit tests
+* Update master for stable/wallaby
+
 12.7.1
 ------
 
+* Remove lower constraints
 * Correctly handle missing RabbitMQ queues
 
 12.7.0
@@ -63,6 +89,7 @@
 * Simplify tools/test-setup.sh
 * Drop a python 2 exception management
 * Fix pygments style
+* bindep: Add 'librdkafka-dev' dependency
 
 12.2.0
 ------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/PKG-INFO 
new/oslo.messaging-12.9.1/PKG-INFO
--- old/oslo.messaging-12.7.1/PKG-INFO  2021-02-16 10:02:15.136758800 +0100
+++ new/oslo.messaging-12.9.1/PKG-INFO  2021-08-26 17:40:14.162091500 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: oslo.messaging
-Version: 12.7.1
+Version: 12.9.1
 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-12.7.1/bindep.txt 
new/oslo.messaging-12.9.1/bindep.txt
--- old/oslo.messaging-12.7.1/bindep.txt        2021-02-16 10:01:45.000000000 
+0100
+++ new/oslo.messaging-12.9.1/bindep.txt        2021-08-26 17:39:33.000000000 
+0200
@@ -35,6 +35,7 @@
 # kafka dpkg
 openjdk-8-jdk [platform:dpkg kafka]
 librdkafka1 [platform:dpkg kafka]
+librdkafka-dev [platform:dpkg kafka]
 
 # kafka rpm
 java-1.8.0-openjdk [platform:rpm kafka]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/lower-constraints.txt 
new/oslo.messaging-12.9.1/lower-constraints.txt
--- old/oslo.messaging-12.7.1/lower-constraints.txt     2021-02-16 
10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/lower-constraints.txt     1970-01-01 
01:00:00.000000000 +0100
@@ -1,82 +0,0 @@
-alabaster==0.7.10
-amqp==2.5.2
-appdirs==1.3.0
-Babel==2.3.4
-bandit==1.1.0
-cachetools==2.0.0
-cffi==1.14.0
-cliff==2.8.0
-cmd2==0.8.0
-confluent-kafka==1.3.0
-contextlib2==0.4.0
-coverage==4.0
-debtcollector==1.2.0
-docutils==0.11
-dulwich==0.15.0
-eventlet==0.23.0
-extras==1.0.0
-fasteners==0.7.0
-fixtures==3.0.0
-futurist==1.2.0
-gitdb==0.6.4
-GitPython==1.0.1
-greenlet==0.4.15
-imagesize==0.7.1
-iso8601==0.1.11
-Jinja2==2.10
-keystoneauth1==3.4.0
-kombu==4.6.6
-linecache2==1.0.0
-MarkupSafe==1.1.1
-mock==2.0.0
-mox3==0.20.0
-msgpack-python==0.4.0
-netaddr==0.8.0
-netifaces==0.10.4
-os-client-config==1.28.0
-oslo.concurrency==3.25.0
-oslo.config==5.2.0
-oslo.context==2.19.2
-oslo.i18n==3.15.3
-oslo.log==3.36.0
-oslo.middleware==3.31.0
-oslo.serialization==2.18.0
-oslo.service==1.24.0
-oslo.utils==3.37.0
-oslotest==3.2.0
-Paste==2.0.2
-PasteDeploy==1.5.0
-pbr==2.0.0
-pifpaf==2.2.0
-prettytable==0.7.2
-pycparser==2.18
-Pygments==2.2.0
-pyinotify==0.9.6
-pyngus==2.2.0
-pyparsing==2.1.0
-pyperclip==1.5.27
-python-dateutil==2.5.3
-python-mimeparse==1.6.0
-python-qpid-proton==0.20.0
-python-subunit==1.0.0
-pytz==2013.6
-PyYAML==3.13
-repoze.lru==0.7
-requests==2.14.2
-requestsexceptions==1.2.0
-rfc3986==0.3.1
-Routes==2.3.1
-smmap==0.9.0
-snowballstemmer==1.2.1
-statsd==3.2.1
-stestr==2.0.0
-stevedore==1.20.0
-tenacity==4.4.0
-testscenarios==0.4
-testtools==2.2.0
-traceback2==1.4.0
-unittest2==1.1.0
-vine==1.1.4
-WebOb==1.7.1
-wrapt==1.7.0
-xattr==0.9.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo.messaging.egg-info/PKG-INFO 
new/oslo.messaging-12.9.1/oslo.messaging.egg-info/PKG-INFO
--- old/oslo.messaging-12.7.1/oslo.messaging.egg-info/PKG-INFO  2021-02-16 
10:02:14.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo.messaging.egg-info/PKG-INFO  2021-08-26 
17:40:14.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: oslo.messaging
-Version: 12.7.1
+Version: 12.9.1
 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-12.7.1/oslo.messaging.egg-info/SOURCES.txt 
new/oslo.messaging-12.9.1/oslo.messaging.egg-info/SOURCES.txt
--- old/oslo.messaging-12.7.1/oslo.messaging.egg-info/SOURCES.txt       
2021-02-16 10:02:15.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo.messaging.egg-info/SOURCES.txt       
2021-08-26 17:40:14.000000000 +0200
@@ -10,7 +10,6 @@
 README.rst
 babel.cfg
 bindep.txt
-lower-constraints.txt
 requirements.txt
 setup.cfg
 setup.py
@@ -83,6 +82,8 @@
 oslo_messaging/_drivers/amqp1_driver/oslo_messaging_amqp_driver_overview.rst
 oslo_messaging/_drivers/kafka_driver/__init__.py
 oslo_messaging/_drivers/kafka_driver/kafka_options.py
+oslo_messaging/_metrics/__init__.py
+oslo_messaging/_metrics/client.py
 oslo_messaging/hacking/__init__.py
 oslo_messaging/hacking/checks.py
 oslo_messaging/notify/__init__.py
@@ -154,6 +155,7 @@
 releasenotes/notes/kafka-client-library-change-fe16d5a34550db7f.yaml
 releasenotes/notes/no-log-if-ignore-errors-e2223b8a646b4c40.yaml
 
releasenotes/notes/option-rabbitmq-max_retries-has-been-deprecated-471f66a9e6d672a2.yaml
+releasenotes/notes/oslo-metrics-support-fe16343a637cc14b.yaml
 releasenotes/notes/pika-driver-has-been-deprecated-e2407fa53c91fe5c.yaml
 releasenotes/notes/rabbit-no-wait-for-ack-9e5de3e1320d7660.yaml
 releasenotes/notes/removal-deprecated-options-6d4c5db90525c52d.yaml
@@ -175,6 +177,7 @@
 releasenotes/source/unreleased.rst
 releasenotes/source/ussuri.rst
 releasenotes/source/victoria.rst
+releasenotes/source/wallaby.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-12.7.1/oslo.messaging.egg-info/pbr.json 
new/oslo.messaging-12.9.1/oslo.messaging.egg-info/pbr.json
--- old/oslo.messaging-12.7.1/oslo.messaging.egg-info/pbr.json  2021-02-16 
10:02:14.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo.messaging.egg-info/pbr.json  2021-08-26 
17:40:14.000000000 +0200
@@ -1 +1 @@
-{"git_version": "11a49a0a", "is_release": true}
\ No newline at end of file
+{"git_version": "f9de265f", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo.messaging.egg-info/requires.txt 
new/oslo.messaging-12.9.1/oslo.messaging.egg-info/requires.txt
--- old/oslo.messaging-12.7.1/oslo.messaging.egg-info/requires.txt      
2021-02-16 10:02:14.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo.messaging.egg-info/requires.txt      
2021-08-26 17:40:14.000000000 +0200
@@ -7,6 +7,7 @@
 kombu>=4.6.6
 oslo.config>=5.2.0
 oslo.log>=3.36.0
+oslo.metrics>=0.2.1
 oslo.middleware>=3.31.0
 oslo.serialization!=2.19.1,>=2.18.0
 oslo.service!=1.28.1,>=1.24.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo_messaging/_drivers/amqp1_driver/controller.py 
new/oslo.messaging-12.9.1/oslo_messaging/_drivers/amqp1_driver/controller.py
--- 
old/oslo.messaging-12.7.1/oslo_messaging/_drivers/amqp1_driver/controller.py    
    2021-02-16 10:01:45.000000000 +0100
+++ 
new/oslo.messaging-12.9.1/oslo_messaging/_drivers/amqp1_driver/controller.py    
    2021-08-26 17:39:33.000000000 +0200
@@ -1265,7 +1265,7 @@
             host = self.hosts.next()
             LOG.info("Reconnecting to: %(hostname)s:%(port)s",
                      {'hostname': host.hostname, 'port': host.port})
-            self._socket_connection.connect(host)
+            self.processor.wakeup(lambda: self._do_connect())
 
     def _hard_reset(self, reason):
         """Reset the controller to its pre-connection state"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo_messaging/_drivers/pool.py 
new/oslo.messaging-12.9.1/oslo_messaging/_drivers/pool.py
--- old/oslo.messaging-12.7.1/oslo_messaging/_drivers/pool.py   2021-02-16 
10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo_messaging/_drivers/pool.py   2021-08-26 
17:39:33.000000000 +0200
@@ -14,7 +14,6 @@
 
 import abc
 import collections
-import sys
 import threading
 
 from oslo_log import log as logging
@@ -24,16 +23,6 @@
 
 LOG = logging.getLogger(__name__)
 
-# TODO(harlowja): remove this when we no longer have to support 2.7
-if sys.version_info[0:2] < (3, 2):
-    def wait_condition(cond):
-        # FIXME(markmc): timeout needed to allow keyboard interrupt
-        # http://bugs.python.org/issue8844
-        cond.wait(timeout=1)
-else:
-    def wait_condition(cond):
-        cond.wait()
-
 
 class Pool(object, metaclass=abc.ABCMeta):
     """A thread-safe object pool.
@@ -102,7 +91,7 @@
                             "current size %s surpasses max "
                             "configured rpc_conn_pool_size %s",
                             self._current_size, self._max_size)
-                wait_condition(self._cond)
+                self._cond.wait()
 
         # We've grabbed a slot and dropped the lock, now do the creation
         try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo_messaging/_metrics/__init__.py 
new/oslo.messaging-12.9.1/oslo_messaging/_metrics/__init__.py
--- old/oslo.messaging-12.7.1/oslo_messaging/_metrics/__init__.py       
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo_messaging/_metrics/__init__.py       
2021-08-26 17:39:33.000000000 +0200
@@ -0,0 +1,19 @@
+# Copyright 2020 LINE 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.
+__all__ = [
+    'MetricsCollectorClient',
+    'get_collector',
+]
+
+from .client import *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo_messaging/_metrics/client.py 
new/oslo.messaging-12.9.1/oslo_messaging/_metrics/client.py
--- old/oslo.messaging-12.7.1/oslo_messaging/_metrics/client.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo_messaging/_metrics/client.py 2021-08-26 
17:39:33.000000000 +0200
@@ -0,0 +1,256 @@
+
+# Copyright 2020 LINE 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 queue
+import socket
+import threading
+import time
+
+from oslo_config import cfg
+from oslo_log import log as logging
+from oslo_metrics import message_type
+from oslo_utils import eventletutils
+from oslo_utils import importutils
+
+
+LOG = logging.getLogger(__name__)
+
+eventlet = importutils.try_import('eventlet')
+if eventlet and eventletutils.is_monkey_patched("thread"):
+    # Here we initialize module with the native python threading module
+    # if it was already monkey patched by eventlet/greenlet.
+    stdlib_threading = eventlet.patcher.original('threading')
+else:
+    # Manage the case where we run this driver in a non patched environment
+    # and where user even so configure the driver to run heartbeat through
+    # a python thread, if we don't do that when the heartbeat will start
+    # we will facing an issue by trying to override the threading module.
+    stdlib_threading = threading
+
+oslo_messaging_metrics = [
+    cfg.BoolOpt('metrics_enabled', default=False,
+                help='Boolean to send rpc metrics to oslo.metrics.'),
+    cfg.IntOpt('metrics_buffer_size', default=1000,
+               help='Buffer size to store in oslo.messaging.'),
+    cfg.StrOpt('metrics_socket_file',
+               default='/var/tmp/metrics_collector.sock',
+               help='Unix domain socket file to be used'
+                    ' to send rpc related metrics'),
+    cfg.StrOpt('metrics_process_name',
+               default='',
+               help='Process name which is used to identify which process'
+                    ' produce metrics'),
+    cfg.IntOpt('metrics_thread_stop_timeout',
+               default=10,
+               help='Sending thread stop once metrics_thread_stop_timeout'
+                    ' seconds after the last successful metrics send.'
+                    ' So that this thread will not be the blocker'
+                    ' when process is shutting down.'
+                    ' If the process is still running, sending thread will'
+                    ' be restarted at the next metrics queueing time')
+]
+cfg.CONF.register_opts(oslo_messaging_metrics, group='oslo_messaging_metrics')
+
+
+class MetricsCollectorClient(object):
+
+    def __init__(self, conf, metrics_type, **kwargs):
+        self.conf = conf.oslo_messaging_metrics
+        self.unix_socket = self.conf.metrics_socket_file
+        buffer_size = self.conf.metrics_buffer_size
+        self.tx_queue = queue.Queue(buffer_size)
+        self.next_send_metric = None
+        self.metrics_type = metrics_type
+        self.args = kwargs
+        self.send_thread = threading.Thread(target=self.send_loop)
+        self.send_thread.start()
+
+    def __enter__(self):
+        if not self.conf.metrics_enabled:
+            return None
+        self.start_time = time.time()
+        send_method = getattr(self, self.metrics_type +
+                              "_invocation_start_total")
+        send_method(**self.args)
+        return self
+
+    def __exit__(self, exc_type, exc_value, traceback):
+        if self.conf.metrics_enabled:
+            duration = time.time() - self.start_time
+            send_method = getattr(
+                self, self.metrics_type + "_processing_seconds")
+            send_method(duration=duration, **self.args)
+            send_method = getattr(
+                self, self.metrics_type + "_invocation_end_total")
+            send_method(**self.args)
+
+    def put_into_txqueue(self, metrics_name, action, **labels):
+
+        labels['process'] = \
+            self.conf.metrics_process_name
+        m = message_type.Metric("oslo_messaging", metrics_name, action,
+                                **labels)
+
+        try:
+            self.tx_queue.put_nowait(m)
+        except queue.Full:
+            LOG.warning("tx queues is already full(%s/%s). Fails to "
+                        "send the metrics(%s)" %
+                        (self.tx_queue.qsize(), self.tx_queue.maxsize, m))
+
+        if not self.send_thread.is_alive():
+            self.send_thread = threading.Thread(target=self.send_loop)
+            self.send_thread.start()
+
+    def send_loop(self):
+        timeout = self.conf.metrics_thread_stop_timeout
+        stoptime = time.time() + timeout
+        while stoptime > time.time():
+            if self.next_send_metric is None:
+                try:
+                    self.next_send_metric = self.tx_queue.get(timeout=timeout)
+                except queue.Empty:
+                    continue
+            try:
+                self.send_metric(self.next_send_metric)
+                self.next_send_metric = None
+                stoptime = time.time() + timeout
+            except Exception as e:
+                LOG.error("Failed to send metrics: %s. "
+                          "Wait 1 seconds for next try." % e)
+                time.sleep(1)
+
+    def send_metric(self, metric):
+        s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
+        s.connect(self.unix_socket)
+        s.send(metric.to_json().encode())
+        s.close()
+
+    def put_rpc_client_metrics_to_txqueue(self, metric_name, action,
+                                          target, method, call_type, timeout,
+                                          exception=None):
+        kwargs = {
+            'call_type': call_type,
+            'exchange': target.exchange,
+            'topic': target.topic,
+            'namespace': target.namespace,
+            'version': target.version,
+            'server': target.server,
+            'fanout': target.fanout,
+            'method': method,
+            'timeout': timeout,
+        }
+        if exception:
+            kwargs['exception'] = exception
+
+        self.put_into_txqueue(metric_name, action, **kwargs)
+
+    def rpc_client_invocation_start_total(self, target, method, call_type,
+                                          timeout=None):
+        self.put_rpc_client_metrics_to_txqueue(
+            "rpc_client_invocation_start_total",
+            message_type.MetricAction("inc", None),
+            target, method, call_type, timeout
+        )
+
+    def rpc_client_invocation_end_total(self, target, method, call_type,
+                                        timeout=None):
+        self.put_rpc_client_metrics_to_txqueue(
+            "rpc_client_invocation_end_total",
+            message_type.MetricAction("inc", None),
+            target, method, call_type, timeout
+        )
+
+    def rpc_client_processing_seconds(self, target, method, call_type,
+                                      duration, timeout=None):
+        self.put_rpc_client_metrics_to_txqueue(
+            "rpc_client_processing_seconds",
+            message_type.MetricAction("observe", duration),
+            target, method, call_type, timeout
+        )
+
+    def rpc_client_exception_total(self, target, method, call_type, exception,
+                                   timeout=None):
+        self.put_rpc_client_metrics_to_txqueue(
+            "rpc_client_exception_total",
+            message_type.MetricAction("inc", None),
+            target, method, call_type, timeout, exception
+        )
+
+    def put_rpc_server_metrics_to_txqueue(self, metric_name, action,
+                                          target, endpoint, ns, ver, method,
+                                          exception=None):
+        kwargs = {
+            'endpoint': endpoint,
+            'namespace': ns,
+            'version': ver,
+            'method': method,
+            'exchange': None,
+            'topic': None,
+            'server': None
+        }
+        if target:
+            kwargs['exchange'] = target.exchange
+            kwargs['topic'] = target.topic
+            kwargs['server'] = target.server
+        if exception:
+            kwargs['exception'] = exception
+
+        self.put_into_txqueue(metric_name, action, **kwargs)
+
+    def rpc_server_invocation_start_total(self, target, endpoint,
+                                          ns, ver, method):
+        self.put_rpc_server_metrics_to_txqueue(
+            "rpc_server_invocation_start_total",
+            message_type.MetricAction("inc", None),
+            target, endpoint, ns, ver, method
+        )
+
+    def rpc_server_invocation_end_total(self, target, endpoint,
+                                        ns, ver, method):
+        self.put_rpc_server_metrics_to_txqueue(
+            "rpc_server_invocation_end_total",
+            message_type.MetricAction("inc", None),
+            target, endpoint, ns, ver, method
+        )
+
+    def rpc_server_processing_seconds(self, target, endpoint, ns, ver,
+                                      method, duration):
+        self.put_rpc_server_metrics_to_txqueue(
+            "rpc_server_processing_seconds",
+            message_type.MetricAction("observe", duration),
+            target, endpoint, ns, ver, method
+        )
+
+    def rpc_server_exception_total(self, target, endpoint, ns, ver,
+                                   method, exception):
+        self.put_rpc_server_metrics_to_txqueue(
+            "rpc_server_exception_total",
+            message_type.MetricAction("inc", None),
+            target, endpoint, ns, ver, method, exception=exception
+        )
+
+
+METRICS_COLLECTOR = None
+
+
+def get_collector(conf, metrics_type, **kwargs):
+    global threading
+    threading = stdlib_threading
+    global METRICS_COLLECTOR
+    if METRICS_COLLECTOR is None:
+        METRICS_COLLECTOR = MetricsCollectorClient(
+            conf, metrics_type, **kwargs)
+    return METRICS_COLLECTOR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/oslo_messaging/conffixture.py 
new/oslo.messaging-12.9.1/oslo_messaging/conffixture.py
--- old/oslo.messaging-12.7.1/oslo_messaging/conffixture.py     2021-02-16 
10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo_messaging/conffixture.py     2021-08-26 
17:39:33.000000000 +0200
@@ -67,6 +67,10 @@
                      'oslo_messaging.notify.notifier',
                      '_notifier_opts',
                      'oslo_messaging_notifications')
+        _import_opts(self.conf,
+                     'oslo_messaging._metrics.client',
+                     'oslo_messaging_metrics',
+                     'oslo_messaging_metrics')
 
         if transport_url is not None:
             self.transport_url = transport_url
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo_messaging/notify/_impl_routing.py 
new/oslo.messaging-12.9.1/oslo_messaging/notify/_impl_routing.py
--- old/oslo.messaging-12.7.1/oslo_messaging/notify/_impl_routing.py    
2021-02-16 10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo_messaging/notify/_impl_routing.py    
2021-08-26 17:39:33.000000000 +0200
@@ -13,10 +13,10 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import fnmatch
 import logging
 
 from oslo_config import cfg
-from oslo_utils import fnmatch
 from stevedore import dispatch
 import yaml
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/oslo_messaging/rpc/client.py 
new/oslo.messaging-12.9.1/oslo_messaging/rpc/client.py
--- old/oslo.messaging-12.7.1/oslo_messaging/rpc/client.py      2021-02-16 
10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo_messaging/rpc/client.py      2021-08-26 
17:39:33.000000000 +0200
@@ -21,6 +21,7 @@
 from oslo_config import cfg
 
 from oslo_messaging._drivers import base as driver_base
+from oslo_messaging import _metrics as metrics
 from oslo_messaging import _utils as utils
 from oslo_messaging import exceptions
 from oslo_messaging import serializer as msg_serializer
@@ -146,12 +147,23 @@
 
         self._check_version_cap(msg.get('version'))
 
-        try:
-            self.transport._send(self.target, msg_ctxt, msg,
-                                 retry=self.retry,
-                                 transport_options=self.transport_options)
-        except driver_base.TransportDriverError as ex:
-            raise ClientSendError(self.target, ex)
+        with metrics.get_collector(self.conf, "rpc_client",
+                                   target=self.target,
+                                   method=method,
+                                   call_type="cast") as metrics_collector:
+            try:
+                self.transport._send(self.target, msg_ctxt, msg,
+                                     retry=self.retry,
+                                     transport_options=self.transport_options)
+            except driver_base.TransportDriverError as ex:
+                self._metrics_api.rpc_client_exception_total(
+                    self.target, method, "cast", ex.__class__.__name__)
+                raise ClientSendError(self.target, ex)
+            except Exception as ex:
+                if self.conf.oslo_messaging_metrics.metrics_enabled:
+                    metrics_collector.rpc_client_exception_total(
+                        self.target, method, "cast", ex.__class__.__name__)
+                raise
 
     def call(self, ctxt, method, **kwargs):
         """Invoke a method and wait for a reply. See RPCClient.call()."""
@@ -170,17 +182,24 @@
 
         self._check_version_cap(msg.get('version'))
 
-        try:
-            result = \
-                self.transport._send(self.target, msg_ctxt, msg,
-                                     wait_for_reply=True, timeout=timeout,
-                                     call_monitor_timeout=cm_timeout,
-                                     retry=self.retry,
-                                     transport_options=self.transport_options)
-        except driver_base.TransportDriverError as ex:
-            raise ClientSendError(self.target, ex)
-
-        return self.serializer.deserialize_entity(ctxt, result)
+        with metrics.get_collector(self.conf, "rpc_client",
+                                   target=self.target, method=method,
+                                   call_type="call") as metrics_collector:
+            try:
+                result = self.transport._send(
+                    self.target, msg_ctxt, msg, wait_for_reply=True,
+                    timeout=timeout, call_monitor_timeout=cm_timeout,
+                    retry=self.retry, transport_options=self.transport_options)
+            except driver_base.TransportDriverError as ex:
+                self._metrics_api.rpc_client_exception_total(
+                    self.target, method, "call", ex.__class__.__name__)
+                raise ClientSendError(self.target, ex)
+            except Exception as ex:
+                if self.conf.oslo_messaging_metrics.metrics_enabled:
+                    metrics_collector.rpc_client_exception_total(
+                        self.target, method, "call", ex.__class__.__name__)
+                raise
+            return self.serializer.deserialize_entity(ctxt, result)
 
     @abc.abstractmethod
     def prepare(self, exchange=_marker, topic=_marker, namespace=_marker,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo_messaging/tests/drivers/test_amqp_driver.py 
new/oslo.messaging-12.9.1/oslo_messaging/tests/drivers/test_amqp_driver.py
--- old/oslo.messaging-12.7.1/oslo_messaging/tests/drivers/test_amqp_driver.py  
2021-02-16 10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/oslo_messaging/tests/drivers/test_amqp_driver.py  
2021-08-26 17:39:33.000000000 +0200
@@ -55,8 +55,7 @@
 CYRUS_ENABLED = (pyngus and pyngus.VERSION >= (2, 0, 0) and _proton and
                  getattr(_proton.SASL, "extended", lambda: False)())
 # same with SSL
-# SSL_ENABLED = (_proton and getattr(_proton.SSL, "present", lambda: False)())
-SSL_ENABLED = False
+SSL_ENABLED = (_proton and getattr(_proton.SSL, "present", lambda: False)())
 
 LOG = logging.getLogger(__name__)
 
@@ -932,19 +931,14 @@
         # configure different addressing modes on the brokers to test failing
         # over from one type of backend to another
         self.config(addressing_mode='dynamic', group="oslo_messaging_amqp")
-        self._brokers = [FakeBroker(self.conf.oslo_messaging_amqp,
-                                    product="qpid-cpp"),
-                         FakeBroker(self.conf.oslo_messaging_amqp,
-                                    product="routable")]
+        self._brokers = self._gen_brokers()
         self._primary = 0
         self._backup = 1
         hosts = []
         for broker in self._brokers:
             hosts.append(oslo_messaging.TransportHost(hostname=broker.host,
                                                       port=broker.port))
-        self._broker_url = oslo_messaging.TransportURL(self.conf,
-                                                       transport="amqp",
-                                                       hosts=hosts)
+        self._broker_url = self._gen_transport_url(hosts)
 
     def tearDown(self):
         super(TestFailover, self).tearDown()
@@ -952,6 +946,17 @@
             if broker.is_alive():
                 broker.stop()
 
+    def _gen_brokers(self):
+        return [FakeBroker(self.conf.oslo_messaging_amqp,
+                           product="qpid-cpp"),
+                FakeBroker(self.conf.oslo_messaging_amqp,
+                           product="routable")]
+
+    def _gen_transport_url(self, hosts):
+        return oslo_messaging.TransportURL(self.conf,
+                                           transport="amqp",
+                                           hosts=hosts)
+
     def _failover(self, fail_broker):
         self._brokers[0].start()
         self._brokers[1].start()
@@ -1548,33 +1553,42 @@
 
 
 @testtools.skipUnless(SSL_ENABLED, "OpenSSL not supported")
-class TestSSL(test_utils.BaseTestCase):
+class TestSSL(TestFailover):
     """Test the driver's OpenSSL integration"""
 
     def setUp(self):
-        super(TestSSL, self).setUp()
+        self._broker = None
         # Create the CA, server, and client SSL certificates:
         self._tmpdir = tempfile.mkdtemp(prefix='amqp1')
-        files = ['ca_key', 'ca_cert', 's_key', 's_req', 's_cert', 'c_key',
-                 'c_req', 'c_cert', 'bad_cert', 'bad_req', 'bad_key']
+        files = ['ca_key', 'ca_cert', 's_key', 's_req', 's_cert', 's2_key',
+                 's2_req', 's2_cert', 'c_key', 'c_req', 'c_cert', 'bad_cert',
+                 'bad_req', 'bad_key']
         conf = dict(zip(files, [os.path.join(self._tmpdir, "%s.pem" % f)
                                 for f in files]))
         conf['pw'] = 'password'
         conf['s_name'] = '127.0.0.1'
+        conf['s2_name'] = '127.0.0.2'
         conf['c_name'] = 'client.com'
+
         self._ssl_config = conf
         ssl_setup = [
             # create self-signed CA certificate:
             Template('openssl req -x509 -nodes -newkey rsa:2048'
                      ' -subj "/CN=Trusted.CA.com" -keyout ${ca_key}'
                      ' -out ${ca_cert}').substitute(conf),
-            # create Server key and certificate:
+            # create Server keys and certificates:
             Template('openssl genrsa -out ${s_key} 2048').substitute(conf),
             Template('openssl req -new -key ${s_key} -subj /CN=${s_name}'
                      ' -passin pass:${pw} -out ${s_req}').substitute(conf),
             Template('openssl x509 -req -in ${s_req} -CA ${ca_cert}'
                      ' -CAkey ${ca_key} -CAcreateserial -out'
                      ' ${s_cert}').substitute(conf),
+            Template('openssl genrsa -out ${s2_key} 2048').substitute(conf),
+            Template('openssl req -new -key ${s2_key} -subj /CN=${s2_name}'
+                     ' -passin pass:${pw} -out ${s2_req}').substitute(conf),
+            Template('openssl x509 -req -in ${s2_req} -CA ${ca_cert}'
+                     ' -CAkey ${ca_key} -CAcreateserial -out'
+                     ' ${s2_cert}').substitute(conf),
             # create a "bad" Server cert for testing CN validation:
             Template('openssl genrsa -out ${bad_key} 2048').substitute(conf),
             Template('openssl req -new -key ${bad_key} -subj /CN=Invalid'
@@ -1599,10 +1613,30 @@
                 self._tmpdir = None
                 self.skipTest("OpenSSL tools not installed - skipping")
 
-    def _ssl_server_ok(self, url):
-        self._broker.start()
+        super(TestSSL, self).setUp()
+
         self.config(ssl_ca_file=self._ssl_config['ca_cert'],
                     group='oslo_messaging_amqp')
+
+    def _gen_brokers(self):
+        s2_conf = self._ssl_config.copy()
+        for item in ['name', 'key', 'req', 'cert']:
+            s2_conf["s_%s" % item] = s2_conf["s2_%s" % item]
+
+        return [FakeBroker(self.conf.oslo_messaging_amqp,
+                           sock_addr=self._ssl_config['s_name'],
+                           ssl_config=self._ssl_config),
+                FakeBroker(self.conf.oslo_messaging_amqp,
+                           sock_addr=s2_conf['s_name'],
+                           ssl_config=s2_conf)]
+
+    def _gen_transport_url(self, hosts):
+        url = "amqp://%s" % (",".join(map(lambda x: "%s:%d" %
+                             (x.hostname, x.port), hosts)))
+        return oslo_messaging.TransportURL.parse(self.conf, url)
+
+    def _ssl_server_ok(self, url):
+        self._broker.start()
         tport_url = oslo_messaging.TransportURL.parse(self.conf, url)
         driver = amqp_driver.ProtonDriver(self.conf, tport_url)
         target = oslo_messaging.Target(topic="test-topic")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/oslo_messaging/tests/functional/test_functional.py 
new/oslo.messaging-12.9.1/oslo_messaging/tests/functional/test_functional.py
--- 
old/oslo.messaging-12.7.1/oslo_messaging/tests/functional/test_functional.py    
    2021-02-16 10:01:45.000000000 +0100
+++ 
new/oslo.messaging-12.9.1/oslo_messaging/tests/functional/test_functional.py    
    2021-08-26 17:39:33.000000000 +0200
@@ -12,6 +12,8 @@
 #    under the License.
 
 import os
+import requests
+import subprocess
 import time
 import uuid
 
@@ -565,3 +567,35 @@
         self.assertEqual('test', event[1])
         self.assertEqual('Hello World!', event[2])
         self.assertEqual('abc', event[3])
+
+
+class MetricsTestCase(utils.SkipIfNoTransportURL):
+
+    def setUp(self):
+        super(MetricsTestCase, self).setUp(conf=cfg.ConfigOpts())
+        if self.rpc_url.startswith("kafka://"):
+            self.skipTest("kafka does not support RPC API")
+
+        self.config(metrics_enabled=True,
+                    group='oslo_messaging_metrics')
+
+    def test_functional(self):
+        # verify call metrics is sent and reflected in oslo.metrics
+        self.config(metrics_socket_file='/var/tmp/metrics_collector.sock',
+                    group='oslo_messaging_metrics')
+        metric_server = subprocess.Popen(["python3", "-m", "oslo_metrics"])
+        time.sleep(1)
+        group = self.useFixture(
+            utils.RpcServerGroupFixture(self.conf, self.rpc_url))
+        client = group.client(1)
+        client.add(increment=1)
+        time.sleep(1)
+        r = requests.get('http://localhost:3000')
+        for line in r.text.split('\n'):
+            if 'client_invocation_start_total{' in line:
+                self.assertEqual('1.0', line[-3:])
+            elif 'client_invocation_end_total{' in line:
+                self.assertEqual('1.0', line[-3:])
+            elif 'client_processing_seconds_count{' in line:
+                self.assertEqual('1.0', line[-3:])
+        metric_server.terminate()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/releasenotes/notes/oslo-metrics-support-fe16343a637cc14b.yaml
 
new/oslo.messaging-12.9.1/releasenotes/notes/oslo-metrics-support-fe16343a637cc14b.yaml
--- 
old/oslo.messaging-12.7.1/releasenotes/notes/oslo-metrics-support-fe16343a637cc14b.yaml
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.messaging-12.9.1/releasenotes/notes/oslo-metrics-support-fe16343a637cc14b.yaml
     2021-08-26 17:39:33.000000000 +0200
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    | Introduce support for sending rpc client metrics to oslo.metrics.
+    | This feature can be enabled by setting a configuration parameter:
+
+    [oslo_messaging_metrics]
+    metrics_enabled = True  # default is false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/releasenotes/source/index.rst 
new/oslo.messaging-12.9.1/releasenotes/source/index.rst
--- old/oslo.messaging-12.7.1/releasenotes/source/index.rst     2021-02-16 
10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/releasenotes/source/index.rst     2021-08-26 
17:39:33.000000000 +0200
@@ -2,16 +2,17 @@
  oslo.messaging Release Notes
 =============================
 
- .. toctree::
-    :maxdepth: 1
+.. toctree::
+   :maxdepth: 1
 
-    unreleased
-    victoria
-    ussuri
-    train
-    stein
-    rocky
-    queens
-    pike
-    ocata
-    newton
+   unreleased
+   wallaby
+   victoria
+   ussuri
+   train
+   stein
+   rocky
+   queens
+   pike
+   ocata
+   newton
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.messaging-12.7.1/releasenotes/source/wallaby.rst 
new/oslo.messaging-12.9.1/releasenotes/source/wallaby.rst
--- old/oslo.messaging-12.7.1/releasenotes/source/wallaby.rst   1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.messaging-12.9.1/releasenotes/source/wallaby.rst   2021-08-26 
17:39:33.000000000 +0200
@@ -0,0 +1,6 @@
+============================
+Wallaby Series Release Notes
+============================
+
+.. release-notes::
+   :branch: stable/wallaby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/requirements.txt 
new/oslo.messaging-12.9.1/requirements.txt
--- old/oslo.messaging-12.7.1/requirements.txt  2021-02-16 10:01:45.000000000 
+0100
+++ new/oslo.messaging-12.9.1/requirements.txt  2021-08-26 17:39:33.000000000 
+0200
@@ -28,3 +28,6 @@
 
 # middleware
 oslo.middleware>=3.31.0 # Apache-2.0
+
+# metrics
+oslo.metrics>=0.2.1 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/setup.cfg 
new/oslo.messaging-12.9.1/setup.cfg
--- old/oslo.messaging-12.7.1/setup.cfg 2021-02-16 10:02:15.136758800 +0100
+++ new/oslo.messaging-12.9.1/setup.cfg 2021-08-26 17:40:14.166091400 +0200
@@ -1,12 +1,12 @@
 [metadata]
 name = oslo.messaging
 author = OpenStack
-author-email = [email protected]
+author_email = [email protected]
 summary = Oslo Messaging API
-description-file = 
+description_file = 
        README.rst
-home-page = https://docs.openstack.org/oslo.messaging/latest/
-python-requires = >=3.6
+home_page = https://docs.openstack.org/oslo.messaging/latest/
+python_requires = >=3.6
 classifier = 
        Environment :: OpenStack
        Intended Audience :: Developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.messaging-12.7.1/tox.ini 
new/oslo.messaging-12.9.1/tox.ini
--- old/oslo.messaging-12.7.1/tox.ini   2021-02-16 10:01:45.000000000 +0100
+++ new/oslo.messaging-12.9.1/tox.ini   2021-08-26 17:39:33.000000000 +0200
@@ -1,5 +1,5 @@
 [tox]
-minversion = 3.1
+minversion = 3.18.0
 envlist = py3,pep8
 ignore_basepython_conflict = true
 
@@ -36,7 +36,7 @@
 commands = {posargs}
 
 [testenv:docs]
-whitelist_externals = rm
+allowlist_externals = rm
 deps = -r{toxinidir}/doc/requirements.txt
 commands =
   rm -fr doc/build
@@ -105,7 +105,7 @@
 paths = ./oslo_messaging/hacking
 
 [testenv:releasenotes]
-whitelist_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
@@ -114,9 +114,3 @@
 [testenv:bindep]
 deps = bindep
 commands = bindep {posargs}
-
-[testenv:lower-constraints]
-deps =
-  -c{toxinidir}/lower-constraints.txt
-  -r{toxinidir}/test-requirements.txt
-  -r{toxinidir}/requirements.txt

Reply via email to