openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2024
- 2 participants
- 1220 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-barbicanclient for openSUSE:Factory checked in at 2024-06-05 17:42:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-barbicanclient (Old)
and /work/SRC/openSUSE:Factory/.python-barbicanclient.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-barbicanclient"
Wed Jun 5 17:42:00 2024 rev:19 rq:1178605 version:6.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-barbicanclient/python-barbicanclient.changes 2023-12-03 20:49:19.778914064 +0100
+++ /work/SRC/openSUSE:Factory/.python-barbicanclient.new.24587/python-barbicanclient.changes 2024-06-05 17:42:36.874573901 +0200
@@ -1,0 +2,19 @@
+Tue Jun 4 20:04:03 UTC 2024 - cloud-devel(a)suse.de
+
+- update to version 6.0.0
+ - Bump hacking
+ - Migrate back to Launchpad
+ - Remove old excludes
+ - Update python classifier in setup.cfg
+ - Replace pytz
+ - coveragerc: Remove non-existent path
+
+-------------------------------------------------------------------
+Wed Jan 10 16:42:36 UTC 2024 - cloud-devel(a)suse.de
+
+- update to version 5.6.1
+ - Fixed typo in the release notes
+ - Use constraints for docs job
+ - Fix functional tests
+
+-------------------------------------------------------------------
Old:
----
python-barbicanclient-5.5.0.tar.gz
New:
----
python-barbicanclient-6.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-barbicanclient.spec ++++++
--- /var/tmp/diff_new_pack.EhHIfX/_old 2024-06-05 17:42:37.486596189 +0200
+++ /var/tmp/diff_new_pack.EhHIfX/_new 2024-06-05 17:42:37.490596334 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-barbicanclient
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 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-barbicanclient
-Version: 5.5.0
+Version: 6.0.0
Release: 0
Summary: Client for the Barbican Key Management API
License: Apache-2.0
Group: Development/Languages/Python
URL: https://docs.openstack.org/python-barbicanclient
-Source0: https://files.pythonhosted.org/packages/source/p/python-barbicanclient/pyth…
+Source0: https://files.pythonhosted.org/packages/source/p/python-barbicanclient/pyth…
BuildRequires: openstack-macros
BuildRequires: python3-cliff >= 2.8.0
BuildRequires: python3-keystoneauth1 >= 5.1.1
@@ -39,11 +39,11 @@
BuildArch: noarch
%if 0%{?suse_version}
Requires(post): update-alternatives
-Requires(postun):update-alternatives
+Requires(postun): update-alternatives
%else
# on RDO, update-alternatives is in chkconfig
Requires(post): chkconfig
-Requires(postun):chkconfig
+Requires(postun): chkconfig
%endif
%description
++++++ _service ++++++
--- /var/tmp/diff_new_pack.EhHIfX/_old 2024-06-05 17:42:37.526597645 +0200
+++ /var/tmp/diff_new_pack.EhHIfX/_new 2024-06-05 17:42:37.530597790 +0200
@@ -1,13 +1,13 @@
<services>
- <service mode="disabled" name="renderspec">
+ <service mode="manual" name="renderspec">
<param name="input-template">https://opendev.org/openstack/rpm-packaging/raw/master/openstack/python-bar…</param>
<param name="output-name">python-barbicanclient.spec</param>
<param name="requirements">https://opendev.org/openstack/python-barbicanclient/raw/branch/master/requi…</param>
<param name="changelog-email">cloud-devel(a)suse.de</param>
<param name="changelog-provider">gh,openstack,python-barbicanclient</param>
</service>
- <service mode="disabled" name="download_files">
+ <service mode="manual" name="download_files">
</service>
- <service name="format_spec_file" mode="disabled"/>
+ <service name="format_spec_file" mode="manual"/>
</services>
++++++ python-barbicanclient-5.5.0.tar.gz -> python-barbicanclient-6.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/.coveragerc new/python-barbicanclient-6.0.0/.coveragerc
--- old/python-barbicanclient-5.5.0/.coveragerc 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/.coveragerc 2024-05-23 10:01:15.000000000 +0200
@@ -1,3 +1,7 @@
[run]
branch = True
-omit = barbicanclient/openstack/*,barbicanclient/tests/*
\ No newline at end of file
+source = barbicanclient
+omit = barbicanclient/tests/*
+
+[report]
+ignore_errors = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/AUTHORS new/python-barbicanclient-6.0.0/AUTHORS
--- old/python-barbicanclient-5.5.0/AUTHORS 2023-02-15 14:13:31.000000000 +0100
+++ new/python-barbicanclient-6.0.0/AUTHORS 2024-05-23 10:01:56.000000000 +0200
@@ -78,6 +78,7 @@
Steve Heyman <steve.heyman(a)rackspace.com>
Steven Gonzales <stevendgonzales(a)gmail.com>
Swapnil Kulkarni (coolsvap) <me(a)coolsvap.net>
+Takashi Kajinami <kajinamit(a)oss.nttdata.com>
Takashi Kajinami <tkajinam(a)redhat.com>
Thiago da Silva <thiago(a)redhat.com>
Thomas Dinkjian <thomas.dinkjian(a)rackspace.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/CONTRIBUTING.rst new/python-barbicanclient-6.0.0/CONTRIBUTING.rst
--- old/python-barbicanclient-5.5.0/CONTRIBUTING.rst 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/CONTRIBUTING.rst 2024-05-23 10:01:15.000000000 +0200
@@ -11,6 +11,6 @@
Pull requests submitted through GitHub will be ignored.
-Bugs should be filed on OpenStack StoryBoard, not GitHub:
+Bugs should be filed on Launchpad, not GitHub:
- https://storyboard.openstack.org/#!/project/984
+ https://bugs.launchpad.net/python-barbicanclient
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/ChangeLog new/python-barbicanclient-6.0.0/ChangeLog
--- old/python-barbicanclient-5.5.0/ChangeLog 2023-02-15 14:13:31.000000000 +0100
+++ new/python-barbicanclient-6.0.0/ChangeLog 2024-05-23 10:01:56.000000000 +0200
@@ -1,6 +1,32 @@
CHANGES
=======
+6.0.0
+-----
+
+* Remove old excludes
+* Replace pytz
+* Bump hacking
+* Bump hacking
+* coveragerc: Remove non-existent path
+* Update python classifier in setup.cfg
+
+5.7.0
+-----
+
+* Migrate back to Launchpad
+
+5.6.1
+-----
+
+* Use constraints for docs job
+* Fix functional tests
+
+5.6.0
+-----
+
+* Fixed typo in the release notes
+
5.5.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/PKG-INFO new/python-barbicanclient-6.0.0/PKG-INFO
--- old/python-barbicanclient-5.5.0/PKG-INFO 2023-02-15 14:13:31.227807800 +0100
+++ new/python-barbicanclient-6.0.0/PKG-INFO 2024-05-23 10:01:56.740876400 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: python-barbicanclient
-Version: 5.5.0
+Version: 6.0.0
Summary: Client Library for OpenStack Barbican Key Management API
Home-page: https://docs.openstack.org/python-barbicanclient/latest/
Author: OpenStack
@@ -211,7 +211,7 @@
.. _Online Documentation: https://docs.openstack.org/python-barbicanclient/latest/
.. _Launchpad project: https://launchpad.net/python-barbicanclient/
.. _Blueprints: https://blueprints.launchpad.net/python-barbicanclient/
- .. _Bugs: https://storyboard.openstack.org/#!/project/984
+ .. _Bugs: https://bugs.launchpad.net/python-barbicanclient
.. _Source: https://opendev.org/openstack/python-barbicanclient/
.. _Getting involved: https://docs.openstack.org/barbican/latest/contributor/getting_involved.html
.. _Specs: https://specs.openstack.org/openstack/barbican-specs/
@@ -229,7 +229,7 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/README.rst new/python-barbicanclient-6.0.0/README.rst
--- old/python-barbicanclient-5.5.0/README.rst 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/README.rst 2024-05-23 10:01:15.000000000 +0200
@@ -203,7 +203,7 @@
.. _Online Documentation: https://docs.openstack.org/python-barbicanclient/latest/
.. _Launchpad project: https://launchpad.net/python-barbicanclient/
.. _Blueprints: https://blueprints.launchpad.net/python-barbicanclient/
-.. _Bugs: https://storyboard.openstack.org/#!/project/984
+.. _Bugs: https://bugs.launchpad.net/python-barbicanclient
.. _Source: https://opendev.org/openstack/python-barbicanclient/
.. _Getting involved: https://docs.openstack.org/barbican/latest/contributor/getting_involved.html
.. _Specs: https://specs.openstack.org/openstack/barbican-specs/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/doc/requirements.txt new/python-barbicanclient-6.0.0/doc/requirements.txt
--- old/python-barbicanclient-5.5.0/doc/requirements.txt 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/doc/requirements.txt 2024-05-23 10:01:15.000000000 +0200
@@ -1,7 +1,3 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
-sphinx>=2.0.0,!=2.1.0 # BSD
+sphinx>=2.0.0 # BSD
sphinxcontrib-svg2pdfconverter>=0.1.0 # BSD
openstackdocstheme>=2.2.1 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/functionaltests/client/v1/functional/test_orders.py new/python-barbicanclient-6.0.0/functionaltests/client/v1/functional/test_orders.py
--- old/python-barbicanclient-5.5.0/functionaltests/client/v1/functional/test_orders.py 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/functionaltests/client/v1/functional/test_orders.py 2024-05-23 10:01:15.000000000 +0200
@@ -12,7 +12,7 @@
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-import pytz
+import datetime
import sys
from functionaltests.client import base
@@ -432,7 +432,7 @@
timestamp = utils.create_timestamp_w_tz_and_offset(**kwargs)
date = timeutils.parse_isotime(timestamp)
- date = date.astimezone(pytz.utc)
+ date = date.astimezone(datetime.timezone.utc)
order = self.barbicanclient.orders.create_key(**order_create_key_data)
order.expiration = timestamp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/python_barbicanclient.egg-info/PKG-INFO new/python-barbicanclient-6.0.0/python_barbicanclient.egg-info/PKG-INFO
--- old/python-barbicanclient-5.5.0/python_barbicanclient.egg-info/PKG-INFO 2023-02-15 14:13:31.000000000 +0100
+++ new/python-barbicanclient-6.0.0/python_barbicanclient.egg-info/PKG-INFO 2024-05-23 10:01:56.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: python-barbicanclient
-Version: 5.5.0
+Version: 6.0.0
Summary: Client Library for OpenStack Barbican Key Management API
Home-page: https://docs.openstack.org/python-barbicanclient/latest/
Author: OpenStack
@@ -211,7 +211,7 @@
.. _Online Documentation: https://docs.openstack.org/python-barbicanclient/latest/
.. _Launchpad project: https://launchpad.net/python-barbicanclient/
.. _Blueprints: https://blueprints.launchpad.net/python-barbicanclient/
- .. _Bugs: https://storyboard.openstack.org/#!/project/984
+ .. _Bugs: https://bugs.launchpad.net/python-barbicanclient
.. _Source: https://opendev.org/openstack/python-barbicanclient/
.. _Getting involved: https://docs.openstack.org/barbican/latest/contributor/getting_involved.html
.. _Specs: https://specs.openstack.org/openstack/barbican-specs/
@@ -229,7 +229,7 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/python_barbicanclient.egg-info/pbr.json new/python-barbicanclient-6.0.0/python_barbicanclient.egg-info/pbr.json
--- old/python-barbicanclient-5.5.0/python_barbicanclient.egg-info/pbr.json 2023-02-15 14:13:31.000000000 +0100
+++ new/python-barbicanclient-6.0.0/python_barbicanclient.egg-info/pbr.json 2024-05-23 10:01:56.000000000 +0200
@@ -1 +1 @@
-{"git_version": "ad14b64", "is_release": true}
\ No newline at end of file
+{"git_version": "73e1732", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/python_barbicanclient.egg-info/requires.txt new/python-barbicanclient-6.0.0/python_barbicanclient.egg-info/requires.txt
--- old/python-barbicanclient-5.5.0/python_barbicanclient.egg-info/requires.txt 2023-02-15 14:13:31.000000000 +0100
+++ new/python-barbicanclient-6.0.0/python_barbicanclient.egg-info/requires.txt 2024-05-23 10:01:56.000000000 +0200
@@ -1,7 +1,7 @@
-cliff!=2.9.0,>=2.8.0
+cliff>=2.8.0
keystoneauth1>=5.1.1
oslo.i18n>=3.15.3
-oslo.serialization!=2.19.1,>=2.18.0
+oslo.serialization>=2.18.0
oslo.utils>=3.33.0
-pbr!=2.1.0,>=2.0.0
+pbr>=2.0.0
requests>=2.14.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/releasenotes/notes/add-secret-consumers-a65cd6b22d28184d.yaml new/python-barbicanclient-6.0.0/releasenotes/notes/add-secret-consumers-a65cd6b22d28184d.yaml
--- old/python-barbicanclient-5.5.0/releasenotes/notes/add-secret-consumers-a65cd6b22d28184d.yaml 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/releasenotes/notes/add-secret-consumers-a65cd6b22d28184d.yaml 2024-05-23 10:01:15.000000000 +0200
@@ -3,8 +3,8 @@
The Barbican API has been extended to allow secrets to have one or
more consumers. This extension has been documented here:
https://docs.openstack.org/barbican/latest/api/reference/secret_consumers.h…
-
+
This functionality has now been exposed in the barbican client.
- Users may add, remove or delete consumers by calling new mechods on the
+ Users may add, remove or delete consumers by calling new methods on the
SecretManager. In addition, new CLI options have been provided to add, remove
and list consumers. See the documentation for details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/requirements.txt new/python-barbicanclient-6.0.0/requirements.txt
--- old/python-barbicanclient-5.5.0/requirements.txt 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/requirements.txt 2024-05-23 10:01:15.000000000 +0200
@@ -1,14 +1,10 @@
# Requirements lower bounds listed here are our best effort to keep them up to
# date but we do not test them so no guarantee of having them all correct. If
# you find any incorrect lower bounds, let us know or propose a fix.
-
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-pbr!=2.1.0,>=2.0.0 # Apache-2.0
+pbr>=2.0.0 # Apache-2.0
requests>=2.14.2 # Apache-2.0
-cliff!=2.9.0,>=2.8.0 # Apache-2.0
+cliff>=2.8.0 # Apache-2.0
keystoneauth1>=5.1.1 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0
-oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
+oslo.serialization>=2.18.0 # Apache-2.0
oslo.utils>=3.33.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/setup.cfg new/python-barbicanclient-6.0.0/setup.cfg
--- old/python-barbicanclient-5.5.0/setup.cfg 2023-02-15 14:13:31.227807800 +0100
+++ new/python-barbicanclient-6.0.0/setup.cfg 2024-05-23 10:01:56.740876400 +0200
@@ -15,10 +15,10 @@
Programming Language :: Python
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.6
- Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Programming Language :: Python :: 3.11
[files]
packages =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/test-requirements.txt new/python-barbicanclient-6.0.0/test-requirements.txt
--- old/python-barbicanclient-5.5.0/test-requirements.txt 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/test-requirements.txt 2024-05-23 10:01:15.000000000 +0200
@@ -1,9 +1,6 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-hacking>=3.1.0,<3.2.0 # Apache-2.0
+hacking>=6.1.0,<6.2.0 # Apache-2.0
-coverage!=4.4,>=4.1 # Apache-2.0
+coverage>=4.1 # Apache-2.0
fixtures>=3.0.0 # Apache-2.0/BSD
requests-mock>=1.2.0 # Apache-2.0
stestr>=2.0.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-barbicanclient-5.5.0/tox.ini new/python-barbicanclient-6.0.0/tox.ini
--- old/python-barbicanclient-5.5.0/tox.ini 2023-02-15 14:13:04.000000000 +0100
+++ new/python-barbicanclient-6.0.0/tox.ini 2024-05-23 10:01:15.000000000 +0200
@@ -1,36 +1,31 @@
[tox]
minversion = 3.18.0
envlist = py38,py39,pep8
-skipsdist = True
-ignore_basepython_conflict = True
[testenv]
-basepython = python3
-usedevelop = True
-install_command = pip install {opts} {packages}
setenv =
- PYTHON=coverage run --source barbicanclient --parallel-mode
- VIRTUAL_ENV={envdir}
+ PYTHON=coverage run --source barbicanclient --parallel-mode
deps =
- -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
- -r{toxinidir}/requirements.txt
- -r{toxinidir}/test-requirements.txt
-
+ -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+ -r{toxinidir}/requirements.txt
+ -r{toxinidir}/test-requirements.txt
commands =
- rm -f .testrepository/times.dbm
coverage erase
stestr run {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
coverage report -m
-allowlist_externals = rm
+allowlist_externals =
+ rm
[testenv:debug]
-commands = oslo_debug_helper -t barbicanclient/tests {posargs}
+commands =
+ oslo_debug_helper -t barbicanclient/tests {posargs}
[testenv:pep8]
-commands = flake8 {posargs}
+commands =
+ flake8 {posargs}
[testenv:venv]
commands = {posargs}
@@ -39,10 +34,10 @@
# This environment is called from CI scripts to test and publish
# the main docs to https://docs.openstack.org/python-barbicanclient
description = Build main documentation
-basepython = python3
deps =
- -r{toxinidir}/requirements.txt
- -r{toxinidir}/doc/requirements.txt
+ -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+ -r{toxinidir}/requirements.txt
+ -r{toxinidir}/doc/requirements.txt
commands=
rm -rf doc/build/html doc/build/doctrees
sphinx-build -W -b html -d doc/build/doctrees doc/source doc/build/html
@@ -51,20 +46,22 @@
[testenv:pdf-docs]
deps = {[testenv:docs]deps}
allowlist_externals =
- make
- rm
+ make
+ rm
commands =
- rm -rf doc/build/pdf
- sphinx-build -W -b latex doc/source doc/build/pdf
- make -C doc/build/pdf
+ rm -rf doc/build/pdf
+ sphinx-build -W -b latex doc/source doc/build/pdf
+ make -C doc/build/pdf
[testenv:functional]
# This tox env is purely to make local test development easier
# Note: This requires local running instances of Barbican
-deps = {[testenv]deps}
-commands = stestr run --serial --slowest --test-path {toxinidir}/functionaltests {posargs}
+deps =
+ {[testenv]deps}
+commands =
+ stestr run --serial --slowest --test-path {toxinidir}/functionaltests {posargs}
[flake8]
ignore = H202,W504
show-source = True
-exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build
+exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-ovsdbapp for openSUSE:Factory checked in at 2024-06-05 17:41:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ovsdbapp (Old)
and /work/SRC/openSUSE:Factory/.python-ovsdbapp.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ovsdbapp"
Wed Jun 5 17:41:58 2024 rev:17 rq:1178604 version:2.7.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ovsdbapp/python-ovsdbapp.changes 2024-05-10 12:07:21.270325658 +0200
+++ /work/SRC/openSUSE:Factory/.python-ovsdbapp.new.24587/python-ovsdbapp.changes 2024-06-05 17:42:34.590490719 +0200
@@ -1,0 +2,18 @@
+Tue Jun 4 20:03:08 UTC 2024 - cloud-devel(a)suse.de
+
+- update to version 2.7.1
+ - reno: Update master for unmaintained/xena
+ - reno: Update master for unmaintained/zed
+ - ovn-sb: remove chassis from Chassis_Private on ChassisDelCommand
+ - reno: Update master for unmaintained/wallaby
+ - Handle IPv6 addresses for LB IP port mappings
+ - Add pre-commit configuration
+ - Remove executable from python files which don't really needs it
+ - Add if_exists to lrp_set_options
+ - nb: commands: fix passing string to LSP attach/detach mirror API
+ - Backend: always operate on (class level) ovsdb_connection
+ - reno: Update master for unmaintained/victoria
+ - Fix BFD functional test, avoid comparing status column
+ - Update master for stable/2024.1
+
+-------------------------------------------------------------------
Old:
----
ovsdbapp-2.6.0.tar.gz
New:
----
ovsdbapp-2.7.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ovsdbapp.spec ++++++
--- /var/tmp/diff_new_pack.6fTve8/_old 2024-06-05 17:42:35.634528740 +0200
+++ /var/tmp/diff_new_pack.6fTve8/_new 2024-06-05 17:42:35.634528740 +0200
@@ -18,18 +18,18 @@
%define with_tests 1
Name: python-ovsdbapp
-Version: 2.6.0
+Version: 2.7.1
Release: 0
Summary: A library for creating OVSDB applications
License: Apache-2.0
Group: Development/Languages/Python
URL: https://docs.openstack.org/ovsdbapp
-Source0: https://files.pythonhosted.org/packages/source/o/ovsdbapp/ovsdbapp-2.6.0.ta…
+Source0: https://files.pythonhosted.org/packages/source/o/ovsdbapp/ovsdbapp-2.7.1.ta…
# https://review.opendev.org/c/openstack/ovsdbapp/+/918970
Patch1: 0001-Improve-compatibility-with-netaddr-1.x.patch
BuildRequires: openstack-macros
BuildRequires: python3-fixtures >= 3.0.0
-BuildRequires: python3-netaddr >= 0.7.18
+BuildRequires: python3-netaddr >= 0.10.0
BuildRequires: python3-oslotest
BuildRequires: python3-ovs >= 2.10.0
BuildRequires: python3-pbr >= 2.0.0
@@ -46,7 +46,7 @@
%package -n python3-ovsdbapp
Summary: A library for creating OVSDB applications
Requires: python3-fixtures >= 3.0.0
-Requires: python3-netaddr >= 0.7.18
+Requires: python3-netaddr >= 0.10.0
Requires: python3-ovs >= 2.10.0
Requires: python3-pbr >= 2.0.0
Requires: python3-six
@@ -72,7 +72,7 @@
%{py3_build}
# generate html docs
-PBR_VERSION=2.6.0 PYTHONPATH=. \
+PBR_VERSION=2.7.1 PYTHONPATH=. \
%sphinx_build -b html doc/source doc/build/html
rm -rf doc/build/html/.{doctrees,buildinfo}
++++++ ovsdbapp-2.6.0.tar.gz -> ovsdbapp-2.7.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/.pre-commit-config.yaml new/ovsdbapp-2.7.1/.pre-commit-config.yaml
--- old/ovsdbapp-2.6.0/.pre-commit-config.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/ovsdbapp-2.7.1/.pre-commit-config.yaml 2024-05-20 20:55:01.000000000 +0200
@@ -0,0 +1,38 @@
+---
+default_language_version:
+ # force all unspecified python hooks to run python3
+ python: python3
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.5.0
+ hooks:
+ - id: trailing-whitespace
+ - id: mixed-line-ending
+ args: ['--fix', 'lf']
+ exclude: '.*\.(svg)$'
+ - id: check-byte-order-marker
+ - id: check-executables-have-shebangs
+ - id: check-merge-conflict
+ - id: debug-statements
+ - id: check-yaml
+ - repo: https://github.com/lucas-c/pre-commit-hooks
+ rev: v1.5.4
+ hooks:
+ - id: remove-tabs
+ exclude: '.*\.(svg)$'
+ - repo: https://opendev.org/openstack/hacking
+ rev: 6.1.0
+ hooks:
+ - id: hacking
+ additional_dependencies: []
+ exclude: '^(doc|releasenotes|tools)/.*$'
+ - repo: local
+ hooks:
+ - id: flake8
+ name: flake8
+ additional_dependencies:
+ - hacking>=6.1.0,<6.2.0
+ language: python
+ entry: flake8
+ files: '^.*\.py$'
+ exclude: '^(doc|releasenotes|tools)/.*$'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/AUTHORS new/ovsdbapp-2.7.1/AUTHORS
--- old/ovsdbapp-2.6.0/AUTHORS 2024-02-22 16:11:45.000000000 +0100
+++ new/ovsdbapp-2.7.1/AUTHORS 2024-05-20 20:55:28.000000000 +0200
@@ -19,6 +19,7 @@
Cyril Roelandt <cyril.roelandt(a)enovance.com>
Daniel Alvarez <dalvarez(a)redhat.com>
Davanum Srinivas <davanum(a)gmail.com>
+Dmitrii Skorykh <dskorykh(a)gmail.com>
Dong Jun <dongj(a)dtdream.com>
Doug Hellmann <doug(a)doughellmann.com>
Doug Wiegley <dougw(a)a10networks.com>
@@ -26,6 +27,7 @@
Emma Foley <emma.l.foley(a)intel.com>
Flavio Fernandes <flaviof(a)redhat.com>
Frank Wang <wangpeihuixyz(a)126.com>
+Frode Nordahl <fnordahl(a)ubuntu.com>
Frode Nordahl <frode.nordahl(a)canonical.com>
Gal Sagie <gal.sagie(a)huawei.com>
Gary Kotton <gkotton(a)vmware.com>
@@ -59,6 +61,7 @@
Rodolfo Alonso <ralonsoh(a)redhat.com>
Rodolfo Alonso Hernandez <ralonsoh(a)redhat.com>
Sean Mooney <sean.k.mooney(a)intel.com>
+Seena Fallah <seenafallah(a)gmail.com>
Slawek Kaplonski <skaplons(a)redhat.com>
Takashi Kajinami <kajinamit(a)oss.nttdata.com>
Takashi Natsume <takanattie(a)gmail.com>
@@ -88,6 +91,7 @@
shanyunfan33 <shanyunfan(a)inspur.com>
wangzihao <wangzihao(a)yovole.com>
yan.haifeng <yanheven(a)qq.com>
+yatinkarel <ykarel(a)redhat.com>
zhangboye <zhangboye(a)inspur.com>
zhangzs <zhangzhaoshan(a)inspur.com>
zhouguowei <zhouguowei(a)inspur.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ChangeLog new/ovsdbapp-2.7.1/ChangeLog
--- old/ovsdbapp-2.6.0/ChangeLog 2024-02-22 16:11:45.000000000 +0100
+++ new/ovsdbapp-2.7.1/ChangeLog 2024-05-20 20:55:28.000000000 +0200
@@ -1,6 +1,27 @@
CHANGES
=======
+2.7.1
+-----
+
+* Add if\_exists to lrp\_set\_options
+
+2.7.0
+-----
+
+* Backend: always operate on (class level) ovsdb\_connection
+* Add pre-commit configuration
+* Remove executable from python files which don't really needs it
+* reno: Update master for unmaintained/zed
+* Handle IPv6 addresses for LB IP port mappings
+* Fix BFD functional test, avoid comparing status column
+* ovn-sb: remove chassis from Chassis\_Private on ChassisDelCommand
+* Update master for stable/2024.1
+* reno: Update master for unmaintained/xena
+* reno: Update master for unmaintained/wallaby
+* reno: Update master for unmaintained/victoria
+* nb: commands: fix passing string to LSP attach/detach mirror API
+
2.6.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/PKG-INFO new/ovsdbapp-2.7.1/PKG-INFO
--- old/ovsdbapp-2.6.0/PKG-INFO 2024-02-22 16:11:45.992421600 +0100
+++ new/ovsdbapp-2.7.1/PKG-INFO 2024-05-20 20:55:28.470827000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: ovsdbapp
-Version: 2.6.0
+Version: 2.7.1
Summary: A library for creating OVSDB applications
Home-page: https://pypi.org/project/ovsdbapp/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp/backend/ovs_idl/__init__.py new/ovsdbapp-2.7.1/ovsdbapp/backend/ovs_idl/__init__.py
--- old/ovsdbapp-2.6.0/ovsdbapp/backend/ovs_idl/__init__.py 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp/backend/ovs_idl/__init__.py 2024-05-20 20:55:01.000000000 +0200
@@ -32,12 +32,12 @@
super().__init__(**kwargs)
self.ovsdb_connection = connection
if auto_index:
- if connection.is_running:
+ if self.ovsdb_connection.is_running:
LOG.debug("Connection already started, not creating indices")
else:
self.autocreate_indices()
if start:
- self.start_connection(connection)
+ self.start_connection(self.ovsdb_connection)
@property
def ovsdb_connection(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp/backend/ovs_idl/command.py new/ovsdbapp-2.7.1/ovsdbapp/backend/ovs_idl/command.py
--- old/ovsdbapp-2.6.0/ovsdbapp/backend/ovs_idl/command.py 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp/backend/ovs_idl/command.py 2024-05-20 20:55:01.000000000 +0200
@@ -348,14 +348,20 @@
class BaseSetOptionsCommand(BaseCommand):
table = []
- def __init__(self, api, entity, **options):
+ def __init__(self, api, entity, if_exists=False, **options):
super().__init__(api)
self.entity = entity
self.options = options
+ self.if_exists = if_exists
def run_idl(self, txn):
- entity = self.api.lookup(self.table, self.entity)
- entity.options = self.options
+ try:
+ entity = self.api.lookup(self.table, self.entity)
+ entity.options = self.options
+ except idlutils.RowNotFound:
+ if self.if_exists:
+ return
+ raise
class BaseGetOptionsCommand(ReadOnlyCommand):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp/schema/ovn_northbound/api.py new/ovsdbapp-2.7.1/ovsdbapp/schema/ovn_northbound/api.py
--- old/ovsdbapp-2.6.0/ovsdbapp/schema/ovn_northbound/api.py 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp/schema/ovn_northbound/api.py 2024-05-20 20:55:01.000000000 +0200
@@ -650,14 +650,17 @@
"""
@abc.abstractmethod
- def lrp_set_options(self, port, **options):
+ def lrp_set_options(self, port, if_exists=False, **options):
"""Set options related to the type of 'port'
- :param port: The name or uuid of the port
- :type port: string or uuid.UUID
- :param options: keys and values for the port 'options' dict
- :type options: key: string, value: string
- :returns: :class:`Command` with no result
+ :param port: The name or uuid of the port
+ :type port: string or uuid.UUID
+ :param options: keys and values for the port 'options' dict
+ :param if_exists: If True, don't fail if the logical router port
+ doesn't exist
+ :type if_exists: boolean
+ :type options: key: string, value: string
+ :returns: :class:`Command` with no result
"""
@abc.abstractmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp/schema/ovn_northbound/commands.py new/ovsdbapp-2.7.1/ovsdbapp/schema/ovn_northbound/commands.py
--- old/ovsdbapp-2.6.0/ovsdbapp/schema/ovn_northbound/commands.py 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp/schema/ovn_northbound/commands.py 2024-05-20 20:55:01.000000000 +0200
@@ -1223,7 +1223,7 @@
msg = "Mirror Rule %s is already set on LSP %s" % (self.mirror,
self.port)
raise RuntimeError(msg)
- lsp.addvalue('mirror_rules', self.mirror)
+ lsp.addvalue('mirror_rules', mirror)
except idlutils.RowNotFound as e:
raise RuntimeError("LSP %s not found" % self.port) from e
@@ -1243,7 +1243,7 @@
msg = "Mirror Rule %s doesn't exist on LSP %s" % (self.mirror,
self.port)
raise RuntimeError(msg)
- lsp.delvalue('mirror_rules', self.mirror)
+ lsp.delvalue('mirror_rules', mirror)
except idlutils.RowNotFound as e:
if self.if_exists:
return
@@ -1670,15 +1670,22 @@
raise RuntimeError(msg)
-class LbAddIpPortMappingCommand(cmd.BaseCommand):
+class LbIpPortMappingCommand(cmd.BaseCommand):
+ @staticmethod
+ def normalize_ip(ip_str):
+ ip = netaddr.IPAddress(ip_str)
+ return f"[{ip}]" if ip.version == 6 else str(ip)
+
+
+class LbAddIpPortMappingCommand(LbIpPortMappingCommand):
table = 'Load_Balancer'
def __init__(self, api, lb, endpoint_ip, port_name, source_ip):
super().__init__(api)
self.lb = lb
- self.endpoint_ip = str(netaddr.IPAddress(endpoint_ip))
+ self.endpoint_ip = self.normalize_ip(endpoint_ip)
self.port_name = port_name
- self.source_ip = str(netaddr.IPAddress(source_ip))
+ self.source_ip = self.normalize_ip(source_ip)
def run_idl(self, txn):
lb = self.api.lookup(self.table, self.lb)
@@ -1686,13 +1693,13 @@
'%s:%s' % (self.port_name, self.source_ip))
-class LbDelIpPortMappingCommand(cmd.BaseCommand):
+class LbDelIpPortMappingCommand(LbIpPortMappingCommand):
table = 'Load_Balancer'
def __init__(self, api, lb, endpoint_ip):
super().__init__(api)
self.lb = lb
- self.endpoint_ip = str(netaddr.IPAddress(endpoint_ip))
+ self.endpoint_ip = self.normalize_ip(endpoint_ip)
def run_idl(self, txn):
lb = self.api.lookup(self.table, self.lb)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp/schema/ovn_northbound/impl_idl.py new/ovsdbapp-2.7.1/ovsdbapp/schema/ovn_northbound/impl_idl.py
--- old/ovsdbapp-2.6.0/ovsdbapp/schema/ovn_northbound/impl_idl.py 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp/schema/ovn_northbound/impl_idl.py 2024-05-20 20:55:01.000000000 +0200
@@ -212,8 +212,8 @@
def lrp_get_enabled(self, port):
return cmd.LrpGetEnabledCommand(self, port)
- def lrp_set_options(self, port, **options):
- return cmd.LrpSetOptionsCommand(self, port, **options)
+ def lrp_set_options(self, port, if_exists=False, **options):
+ return cmd.LrpSetOptionsCommand(self, port, if_exists, **options)
def lrp_get_options(self, port):
return cmd.LrpGetOptionsCommand(self, port)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp/schema/ovn_southbound/commands.py new/ovsdbapp-2.7.1/ovsdbapp/schema/ovn_southbound/commands.py
--- old/ovsdbapp-2.6.0/ovsdbapp/schema/ovn_southbound/commands.py 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp/schema/ovn_southbound/commands.py 2024-05-20 20:55:01.000000000 +0200
@@ -74,6 +74,12 @@
encap.delete()
chassis.delete()
+ try:
+ chassis_private = self.api.lookup('Chassis_Private', self.chassis)
+ chassis_private.delete()
+ except idlutils.RowNotFound:
+ pass
+
class ChassisListCommand(cmd.ReadOnlyCommand):
def run_idl(self, txn):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py new/ovsdbapp-2.7.1/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py
--- old/ovsdbapp-2.6.0/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp/tests/functional/schema/ovn_northbound/test_impl_idl.py 2024-05-20 20:55:01.000000000 +0200
@@ -12,6 +12,7 @@
import netaddr
import testscenarios
+import types
import uuid
from ovsdbapp.backend.ovs_idl import idlutils
@@ -1641,6 +1642,17 @@
self.assertEqual(options, self.api.lrp_get_options(lrp.uuid).execute(
check_error=True))
+ def test_lrp_set_options_if_exists(self):
+ options = {'one': 'two', 'three': 'four'}
+ self.api.lrp_set_options(utils.get_rand_device_name(),
+ if_exists=True,
+ **options).execute(check_error=True)
+
+ def test_lrp_set_options_no_exist(self):
+ options = {'one': 'two', 'three': 'four'}
+ cmd = self.api.lrp_set_options(utils.get_rand_device_name(), **options)
+ self.assertRaises(idlutils.RowNotFound, cmd.execute, check_error=True)
+
def test_lrp_get_set_gateway_chassis(self):
lrp = self._lrp_add(None)
c1_name = utils.get_rand_device_name()
@@ -1906,10 +1918,11 @@
self.api.lb_del_health_check(lb.name, uuid.uuid4(),
if_exists=True).execute(check_error=True)
- def _test_lb_add_del_ip_port_mapping(self, col):
- endpoint_ip = '172.31.0.4'
+ def _test_lb_add_del_ip_port_mapping(self, col, input, expected):
+ endpoint_ip, source_ip = input
+ expected_endpoint_ip, expected_source_ip = expected
port_name = 'sw1-p1'
- source_ip = '172.31.0.6'
+
lb = self._lb_add(utils.get_rand_device_name(),
'192.0.0.1', ['10.0.0.1'])
self.assertEqual(lb.ip_port_mappings, {})
@@ -1918,18 +1931,30 @@
endpoint_ip,
port_name,
source_ip).execute(check_error=True)
- self.assertEqual(lb.ip_port_mappings[endpoint_ip],
- '%s:%s' % (port_name, source_ip))
+ self.assertEqual(lb.ip_port_mappings[expected_endpoint_ip],
+ '%s:%s' % (port_name, expected_source_ip))
self.api.lb_del_ip_port_mapping(val,
endpoint_ip).execute(check_error=True)
self.assertEqual(lb.ip_port_mappings, {})
def test_lb_add_del_ip_port_mapping_uuid(self):
- self._test_lb_add_del_ip_port_mapping('uuid')
+ input = ('172.31.0.3', '172.31.0.6')
+ self._test_lb_add_del_ip_port_mapping('uuid', input, input)
+
+ def test_lb_add_del_ip_port_mapping_uuid_v6(self):
+ input = ('2001:db8::1', '2001:db8::2')
+ expected = (f"[{input[0]}]", f"[{input[1]}]")
+ self._test_lb_add_del_ip_port_mapping('uuid', input, expected)
def test_lb_add_del_ip_port_mapping_name(self):
- self._test_lb_add_del_ip_port_mapping('name')
+ input = ('172.31.0.3', '172.31.0.6')
+ self._test_lb_add_del_ip_port_mapping('name', input, input)
+
+ def test_lb_add_del_ip_port_mapping_name_v6(self):
+ input = ('2001:db8::1', '2001:db8::2')
+ expected = (f"[{input[0]}]", f"[{input[1]}]")
+ self._test_lb_add_del_ip_port_mapping('name', input, expected)
def test_hc_get_set_options(self):
hc_options = {
@@ -2542,6 +2567,13 @@
super(TestBFDOps, self).setUp()
self.table = self.api.tables['BFD']
+ @staticmethod
+ def _freeze_and_filter_row(row, filter_columns):
+ return types.SimpleNamespace(
+ **{k: v
+ for k, v in idlutils.frozen_row(row)._asdict().items()
+ if k not in filter_columns})
+
def _bfd_add(self, *args, **kwargs):
cmd = self.api.bfd_add(*args, **kwargs)
row = cmd.execute(check_error=True)
@@ -2555,7 +2587,7 @@
'detect_mult'] else [], row.detect_mult)
self.assertEqual(cmd.columns['external_ids'] or {}, row.external_ids)
self.assertEqual(cmd.columns['options'] or {}, row.options)
- return idlutils.frozen_row(row)
+ return self._freeze_and_filter_row(row, ('status',))
def test_bfd_add(self):
name = utils.get_rand_name()
@@ -2633,8 +2665,12 @@
def test_bfd_get(self):
name = utils.get_rand_name()
- b1 = self.api.bfd_add(name, name).execute(check_error=True)
- b2 = self.api.bfd_get(b1.uuid).execute(check_error=True)
+ b1 = self._freeze_and_filter_row(
+ self.api.bfd_add(name, name).execute(check_error=True),
+ ('status',))
+ b2 = self._freeze_and_filter_row(
+ self.api.bfd_get(b1.uuid).execute(check_error=True),
+ ('status',))
self.assertEqual(b1, b2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp.egg-info/PKG-INFO new/ovsdbapp-2.7.1/ovsdbapp.egg-info/PKG-INFO
--- old/ovsdbapp-2.6.0/ovsdbapp.egg-info/PKG-INFO 2024-02-22 16:11:45.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp.egg-info/PKG-INFO 2024-05-20 20:55:28.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: ovsdbapp
-Version: 2.6.0
+Version: 2.7.1
Summary: A library for creating OVSDB applications
Home-page: https://pypi.org/project/ovsdbapp/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp.egg-info/SOURCES.txt new/ovsdbapp-2.7.1/ovsdbapp.egg-info/SOURCES.txt
--- old/ovsdbapp-2.6.0/ovsdbapp.egg-info/SOURCES.txt 2024-02-22 16:11:45.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp.egg-info/SOURCES.txt 2024-05-20 20:55:28.000000000 +0200
@@ -1,3 +1,4 @@
+.pre-commit-config.yaml
.pylintrc
.stestr.conf
AUTHORS
@@ -132,6 +133,7 @@
releasenotes/notes/provide-lrp-networks-modifying-1af13589064c12c6.yaml
releasenotes/source/2023.1.rst
releasenotes/source/2023.2.rst
+releasenotes/source/2024.1.rst
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/pike.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/ovsdbapp.egg-info/pbr.json new/ovsdbapp-2.7.1/ovsdbapp.egg-info/pbr.json
--- old/ovsdbapp-2.6.0/ovsdbapp.egg-info/pbr.json 2024-02-22 16:11:45.000000000 +0100
+++ new/ovsdbapp-2.7.1/ovsdbapp.egg-info/pbr.json 2024-05-20 20:55:28.000000000 +0200
@@ -1 +1 @@
-{"git_version": "11b11a1", "is_release": true}
\ No newline at end of file
+{"git_version": "c717691", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/releasenotes/source/2024.1.rst new/ovsdbapp-2.7.1/releasenotes/source/2024.1.rst
--- old/ovsdbapp-2.6.0/releasenotes/source/2024.1.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/ovsdbapp-2.7.1/releasenotes/source/2024.1.rst 2024-05-20 20:55:01.000000000 +0200
@@ -0,0 +1,6 @@
+===========================
+2024.1 Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/2024.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/releasenotes/source/index.rst new/ovsdbapp-2.7.1/releasenotes/source/index.rst
--- old/ovsdbapp-2.6.0/releasenotes/source/index.rst 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/releasenotes/source/index.rst 2024-05-20 20:55:01.000000000 +0200
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ 2024.1
2023.2
2023.1
zed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/releasenotes/source/victoria.rst new/ovsdbapp-2.7.1/releasenotes/source/victoria.rst
--- old/ovsdbapp-2.6.0/releasenotes/source/victoria.rst 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/releasenotes/source/victoria.rst 2024-05-20 20:55:01.000000000 +0200
@@ -3,4 +3,4 @@
=============================
.. release-notes::
- :branch: stable/victoria
+ :branch: unmaintained/victoria
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/releasenotes/source/wallaby.rst new/ovsdbapp-2.7.1/releasenotes/source/wallaby.rst
--- old/ovsdbapp-2.6.0/releasenotes/source/wallaby.rst 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/releasenotes/source/wallaby.rst 2024-05-20 20:55:01.000000000 +0200
@@ -3,4 +3,4 @@
============================
.. release-notes::
- :branch: stable/wallaby
+ :branch: unmaintained/wallaby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/releasenotes/source/xena.rst new/ovsdbapp-2.7.1/releasenotes/source/xena.rst
--- old/ovsdbapp-2.6.0/releasenotes/source/xena.rst 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/releasenotes/source/xena.rst 2024-05-20 20:55:01.000000000 +0200
@@ -3,4 +3,4 @@
=========================
.. release-notes::
- :branch: stable/xena
+ :branch: unmaintained/xena
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ovsdbapp-2.6.0/releasenotes/source/zed.rst new/ovsdbapp-2.7.1/releasenotes/source/zed.rst
--- old/ovsdbapp-2.6.0/releasenotes/source/zed.rst 2024-02-22 16:11:10.000000000 +0100
+++ new/ovsdbapp-2.7.1/releasenotes/source/zed.rst 2024-05-20 20:55:01.000000000 +0200
@@ -3,4 +3,4 @@
========================
.. release-notes::
- :branch: stable/zed
+ :branch: unmaintained/zed
1
0
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 2024-06-05 17:41:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.messaging (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.messaging.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.messaging"
Wed Jun 5 17:41:57 2024 rev:32 rq:1178603 version:14.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.messaging/python-oslo.messaging.changes 2024-05-03 19:45:50.819681027 +0200
+++ /work/SRC/openSUSE:Factory/.python-oslo.messaging.new.24587/python-oslo.messaging.changes 2024-06-05 17:42:32.994432595 +0200
@@ -1,0 +2,16 @@
+Tue Jun 4 20:02:49 UTC 2024 - cloud-devel(a)suse.de
+
+- update to version 14.8.0
+ - reno: Update master for unmaintained/xena
+ - reno: Update master for unmaintained/zed
+ - Restore read stream queues from last known offset
+ - Make oslo.messaging, magnum, and zaqar reproducible.
+ - reno: Update master for unmaintained/victoria
+ - Update master for stable/2024.1
+ - Use StopWatch timer when waiting for message
+ - reno: Update master for unmaintained/wallaby
+ - Remove old excludes
+ - kafka: Fix invalid hostaddr format for IPv6 address
+ - Fix incorrect desc of rabbit_stream_fanout option
+
+-------------------------------------------------------------------
Old:
----
oslo.messaging-14.7.0.tar.gz
New:
----
oslo.messaging-14.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.messaging.spec ++++++
--- /var/tmp/diff_new_pack.2AFpoH/_old 2024-06-05 17:42:33.690457942 +0200
+++ /var/tmp/diff_new_pack.2AFpoH/_new 2024-06-05 17:42:33.694458088 +0200
@@ -17,13 +17,13 @@
Name: python-oslo.messaging
-Version: 14.7.0
+Version: 14.8.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.messag…
+Source0: https://files.pythonhosted.org/packages/source/o/oslo.messaging/oslo.messag…
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.7.0
+%autosetup -p1 -n oslo.messaging-14.8.0
%py_req_cleanup
%build
++++++ oslo.messaging-14.7.0.tar.gz -> oslo.messaging-14.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/AUTHORS new/oslo.messaging-14.8.0/AUTHORS
--- old/oslo.messaging-14.7.0/AUTHORS 2024-02-22 16:37:48.000000000 +0100
+++ new/oslo.messaging-14.8.0/AUTHORS 2024-05-23 10:13:05.000000000 +0200
@@ -81,6 +81,7 @@
Gorka Eguileor <geguileo(a)redhat.com>
Gregory Haynes <greg(a)greghaynes.net>
Guillaume Espanel <guillaume.espanel.ext(a)ovhcloud.com>
+Guillaume Espanel <guillaume.espanel(a)ovhcloud.com>
Haifeng.Yan <yanheven(a)qq.com>
Hanxi Liu <hanxi.liu(a)easystack.cn>
Hervé Beraud <hberaud(a)redhat.com>
@@ -219,6 +220,7 @@
dparalen <vetrisko(a)gmail.com>
dukhlov <dukhlov(a)mirantis.com>
ericxiett <eric_xiett(a)163.com>
+frankming <chen27508959(a)outlook.com>
gecong1973 <ge.cong(a)zte.com.cn>
gord chung <gord(a)live.ca>
gordon chung <gord(a)live.ca>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/ChangeLog new/oslo.messaging-14.8.0/ChangeLog
--- old/oslo.messaging-14.7.0/ChangeLog 2024-02-22 16:37:48.000000000 +0100
+++ new/oslo.messaging-14.8.0/ChangeLog 2024-05-23 10:13:05.000000000 +0200
@@ -1,6 +1,21 @@
CHANGES
=======
+14.8.0
+------
+
+* reno: Update master for unmaintained/zed
+* Remove old excludes
+* Make oslo.messaging, magnum, and zaqar reproducible
+* Fix incorrect desc of rabbit\_stream\_fanout option
+* Update master for stable/2024.1
+* reno: Update master for unmaintained/xena
+* reno: Update master for unmaintained/wallaby
+* reno: Update master for unmaintained/victoria
+* kafka: Fix invalid hostaddr format for IPv6 address
+* Use StopWatch timer when waiting for message
+* Restore read stream queues from last known offset
+
14.7.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/PKG-INFO new/oslo.messaging-14.8.0/PKG-INFO
--- old/oslo.messaging-14.7.0/PKG-INFO 2024-02-22 16:37:48.555224400 +0100
+++ new/oslo.messaging-14.8.0/PKG-INFO 2024-05-23 10:13:05.556646300 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: oslo.messaging
-Version: 14.7.0
+Version: 14.8.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.7.0/doc/requirements.txt new/oslo.messaging-14.8.0/doc/requirements.txt
--- old/oslo.messaging-14.7.0/doc/requirements.txt 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/doc/requirements.txt 2024-05-23 10:12:37.000000000 +0200
@@ -1,9 +1,5 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
openstackdocstheme>=2.2.0 # Apache-2.0
-sphinx>=2.0.0,!=2.1.0 # BSD
+sphinx>=2.0.0 # BSD
reno>=3.1.0 # Apache-2.0
# imported when the source code is parsed for generating documentation:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/oslo.messaging.egg-info/PKG-INFO new/oslo.messaging-14.8.0/oslo.messaging.egg-info/PKG-INFO
--- old/oslo.messaging-14.7.0/oslo.messaging.egg-info/PKG-INFO 2024-02-22 16:37:48.000000000 +0100
+++ new/oslo.messaging-14.8.0/oslo.messaging.egg-info/PKG-INFO 2024-05-23 10:13:05.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: oslo.messaging
-Version: 14.7.0
+Version: 14.8.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.7.0/oslo.messaging.egg-info/SOURCES.txt new/oslo.messaging-14.8.0/oslo.messaging.egg-info/SOURCES.txt
--- old/oslo.messaging-14.7.0/oslo.messaging.egg-info/SOURCES.txt 2024-02-22 16:37:48.000000000 +0100
+++ new/oslo.messaging-14.8.0/oslo.messaging.egg-info/SOURCES.txt 2024-05-23 10:13:05.000000000 +0200
@@ -186,6 +186,7 @@
releasenotes/notes/use-extras-for-optional-deps-2a00e8007ef7a629.yaml
releasenotes/source/2023.1.rst
releasenotes/source/2023.2.rst
+releasenotes/source/2024.1.rst
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/newton.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/oslo.messaging.egg-info/pbr.json new/oslo.messaging-14.8.0/oslo.messaging.egg-info/pbr.json
--- old/oslo.messaging-14.7.0/oslo.messaging.egg-info/pbr.json 2024-02-22 16:37:48.000000000 +0100
+++ new/oslo.messaging-14.8.0/oslo.messaging.egg-info/pbr.json 2024-05-23 10:13:05.000000000 +0200
@@ -1 +1 @@
-{"git_version": "ebdc7db1", "is_release": true}
\ No newline at end of file
+{"git_version": "d0952415", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/oslo.messaging.egg-info/requires.txt new/oslo.messaging-14.8.0/oslo.messaging.egg-info/requires.txt
--- old/oslo.messaging-14.7.0/oslo.messaging.egg-info/requires.txt 2024-02-22 16:37:48.000000000 +0100
+++ new/oslo.messaging-14.8.0/oslo.messaging.egg-info/requires.txt 2024-05-23 10:13:05.000000000 +0200
@@ -10,10 +10,10 @@
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
+oslo.serialization>=2.18.0
+oslo.service>=1.24.0
oslo.utils>=3.37.0
-pbr!=2.1.0,>=2.0.0
+pbr>=2.0.0
stevedore>=1.20.0
[amqp1]
@@ -25,7 +25,7 @@
[test]
bandit<1.8.0,>=1.7.0
confluent-kafka>=1.3.0
-coverage!=4.4,>=4.0
+coverage>=4.0
eventlet>=0.23.0
fixtures>=3.0.0
greenlet>=0.4.15
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/oslo_messaging/_drivers/amqpdriver.py new/oslo.messaging-14.8.0/oslo_messaging/_drivers/amqpdriver.py
--- old/oslo.messaging-14.7.0/oslo_messaging/_drivers/amqpdriver.py 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/oslo_messaging/_drivers/amqpdriver.py 2024-05-23 10:12:37.000000000 +0200
@@ -496,12 +496,18 @@
self._wrn_threshold = 10
def get(self, msg_id, timeout):
- try:
- return self._queues[msg_id].get(block=True, timeout=timeout)
- except queue.Empty:
- raise oslo_messaging.MessagingTimeout(
- 'Timed out waiting for a reply '
- 'to message ID %s' % msg_id)
+ watch = timeutils.StopWatch(duration=timeout)
+ watch.start()
+ while not watch.expired():
+ try:
+ # NOTE(amorin) we can't use block=True
+ # See lp-2035113
+ return self._queues[msg_id].get(block=False)
+ except queue.Empty:
+ time.sleep(0.5)
+ raise oslo_messaging.MessagingTimeout(
+ 'Timed out waiting for a reply '
+ 'to message ID %s' % msg_id)
def put(self, msg_id, message_data):
LOG.info('Received RPC response for msg %s', msg_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/oslo_messaging/_drivers/impl_kafka.py new/oslo.messaging-14.8.0/oslo_messaging/_drivers/impl_kafka.py
--- old/oslo.messaging-14.7.0/oslo_messaging/_drivers/impl_kafka.py 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/oslo_messaging/_drivers/impl_kafka.py 2024-05-23 10:12:37.000000000 +0200
@@ -125,7 +125,12 @@
LOG.warning("Different transport usernames detected")
if host.hostname:
- self.hostaddrs.append("%s:%s" % (host.hostname, host.port))
+ if ':' in host.hostname:
+ hostaddr = "[%s]:%s" % (host.hostname, host.port)
+ else:
+ hostaddr = "%s:%s" % (host.hostname, host.port)
+
+ self.hostaddrs.append(hostaddr)
def reset(self):
"""Reset a connection so it can be used again."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/oslo_messaging/_drivers/impl_rabbit.py new/oslo.messaging-14.8.0/oslo_messaging/_drivers/impl_rabbit.py
--- old/oslo.messaging-14.7.0/oslo_messaging/_drivers/impl_rabbit.py 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/oslo_messaging/_drivers/impl_rabbit.py 2024-05-23 10:12:37.000000000 +0200
@@ -246,19 +246,21 @@
default=False,
help='Should we use consistant queue names or random ones'),
cfg.StrOpt('hostname',
+ sample_default='node1.example.com',
default=socket.gethostname(),
- help='Hostname used by queue manager'),
+ help='Hostname used by queue manager. Defaults to the value '
+ 'returned by socket.gethostname().'),
cfg.StrOpt('processname',
default=os.path.basename(sys.argv[0]),
help='Process name used by queue manager'),
cfg.BoolOpt('rabbit_stream_fanout',
default=False,
help='Use stream queues in RabbitMQ (x-queue-type: stream). '
- 'The stream queue is a modern queue type for RabbitMQ '
- 'implementing a durable, replicated FIFO queue based on the '
- 'Raft consensus algorithm. It is available as of '
- 'RabbitMQ 3.8.0. If set this option will replace all fanout '
- 'queues with only one stream queue.'),
+ 'Streams are a new persistent and replicated data structure '
+ '("queue type") in RabbitMQ which models an append-only log '
+ 'with non-destructive consumer semantics. It is available '
+ 'as of RabbitMQ 3.9.0. If set this option will replace all '
+ 'fanout queues with only one stream queue.'),
]
LOG = logging.getLogger(__name__)
@@ -397,6 +399,8 @@
durable=self.durable,
auto_delete=self.exchange_auto_delete)
self.enable_cancel_on_failover = enable_cancel_on_failover
+ self.rabbit_stream_fanout = rabbit_stream_fanout
+ self.next_stream_offset = "last"
def _declare_fallback(self, err, conn, consumer_arguments):
"""Fallback by declaring a non durable queue.
@@ -431,6 +435,13 @@
)
self.queue.declare()
+ def reset_stream_offset(self):
+ if not self.rabbit_stream_fanout:
+ return
+ LOG.warn("Reset consumer for queue %s next offset was at %s.",
+ self.queue_name, self.next_stream_offset)
+ self.next_stream_offset = "last"
+
def declare(self, conn):
"""Re-declare the queue after a rabbit (re)connect."""
@@ -439,6 +450,10 @@
consumer_arguments = {
"x-cancel-on-ha-failover": True}
+ if self.rabbit_stream_fanout:
+ consumer_arguments = {
+ "x-stream-offset": self.next_stream_offset}
+
self.queue = kombu.entity.Queue(
name=self.queue_name,
channel=conn.channel,
@@ -451,8 +466,13 @@
)
try:
- LOG.debug('[%s] Queue.declare: %s',
- conn.connection_id, self.queue_name)
+ if self.rabbit_stream_fanout:
+ LOG.info('[%s] Stream Queue.declare: %s after offset %s',
+ conn.connection_id, self.queue_name,
+ self.next_stream_offset)
+ else:
+ LOG.debug('[%s] Queue.declare: %s',
+ conn.connection_id, self.queue_name)
try:
self.queue.declare()
except amqp_ex.PreconditionFailed as err:
@@ -572,6 +592,12 @@
Messages that are processed and ack'ed.
"""
+ offset = message.headers.get("x-stream-offset")
+ if offset is not None:
+ LOG.debug("Stream for %s current offset: %s", self.queue_name,
+ offset)
+ self.next_stream_offset = offset + 1
+
m2p = getattr(self.queue.channel, 'message_to_python', None)
if m2p:
message = m2p(message)
@@ -1039,11 +1065,24 @@
info = {'err_str': exc, 'sleep_time': interval}
info.update(self._get_connection_info(conn_error=True))
+ if 'Basic.cancel' in str(exc):
+ # This branch allows for consumer offset reset
+ # in the unlikely case consumers are cancelled. This may
+ # happen, for example, when we delete the stream queue.
+ # We need to start consuming from "last" because the stream
+ # offset maybe reset.
+ LOG.warn('[%s] Basic.cancel received. '
+ 'Resetting consumers offsets to last.',
+ self.connection_id)
+ for consumer in self._consumers:
+ consumer.reset_stream_offset()
+
if 'Socket closed' in str(exc):
LOG.error('[%(connection_id)s] AMQP server'
' %(hostname)s:%(port)s closed'
' the connection. Check login credentials:'
' %(err_str)s', info)
+
else:
LOG.error('[%(connection_id)s] AMQP server on '
'%(hostname)s:%(port)s is unreachable: '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/oslo_messaging/tests/drivers/test_impl_kafka.py new/oslo.messaging-14.8.0/oslo_messaging/tests/drivers/test_impl_kafka.py
--- old/oslo.messaging-14.7.0/oslo_messaging/tests/drivers/test_impl_kafka.py 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/oslo_messaging/tests/drivers/test_impl_kafka.py 2024-05-23 10:12:37.000000000 +0200
@@ -66,6 +66,16 @@
username='stack',
password='stacksecret',
vhost='my_host'))),
+ ('ipv4', dict(url='kafka://127.0.0.1:1234',
+ expected=dict(hostaddrs=['127.0.0.1:1234'],
+ username=None,
+ password=None,
+ vhost=None))),
+ ('ipv6', dict(url='kafka://[::1]:1234',
+ expected=dict(hostaddrs=['[::1]:1234'],
+ username=None,
+ password=None,
+ vhost=None))),
]
def setUp(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/releasenotes/source/2024.1.rst new/oslo.messaging-14.8.0/releasenotes/source/2024.1.rst
--- old/oslo.messaging-14.7.0/releasenotes/source/2024.1.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.messaging-14.8.0/releasenotes/source/2024.1.rst 2024-05-23 10:12:37.000000000 +0200
@@ -0,0 +1,6 @@
+===========================
+2024.1 Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/2024.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/releasenotes/source/index.rst new/oslo.messaging-14.8.0/releasenotes/source/index.rst
--- old/oslo.messaging-14.7.0/releasenotes/source/index.rst 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/releasenotes/source/index.rst 2024-05-23 10:12:37.000000000 +0200
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ 2024.1
2023.2
2023.1
zed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/releasenotes/source/victoria.rst new/oslo.messaging-14.8.0/releasenotes/source/victoria.rst
--- old/oslo.messaging-14.7.0/releasenotes/source/victoria.rst 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/releasenotes/source/victoria.rst 2024-05-23 10:12:37.000000000 +0200
@@ -3,4 +3,4 @@
=============================
.. release-notes::
- :branch: stable/victoria
+ :branch: unmaintained/victoria
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/releasenotes/source/wallaby.rst new/oslo.messaging-14.8.0/releasenotes/source/wallaby.rst
--- old/oslo.messaging-14.7.0/releasenotes/source/wallaby.rst 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/releasenotes/source/wallaby.rst 2024-05-23 10:12:37.000000000 +0200
@@ -3,4 +3,4 @@
============================
.. release-notes::
- :branch: stable/wallaby
+ :branch: unmaintained/wallaby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/releasenotes/source/xena.rst new/oslo.messaging-14.8.0/releasenotes/source/xena.rst
--- old/oslo.messaging-14.7.0/releasenotes/source/xena.rst 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/releasenotes/source/xena.rst 2024-05-23 10:12:37.000000000 +0200
@@ -3,4 +3,4 @@
=========================
.. release-notes::
- :branch: stable/xena
+ :branch: unmaintained/xena
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/releasenotes/source/zed.rst new/oslo.messaging-14.8.0/releasenotes/source/zed.rst
--- old/oslo.messaging-14.7.0/releasenotes/source/zed.rst 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/releasenotes/source/zed.rst 2024-05-23 10:12:37.000000000 +0200
@@ -3,4 +3,4 @@
========================
.. release-notes::
- :branch: stable/zed
+ :branch: unmaintained/zed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/requirements.txt new/oslo.messaging-14.8.0/requirements.txt
--- old/oslo.messaging-14.7.0/requirements.txt 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/requirements.txt 2024-05-23 10:12:37.000000000 +0200
@@ -1,12 +1,12 @@
-pbr!=2.1.0,>=2.0.0 # Apache-2.0
+pbr>=2.0.0 # Apache-2.0
futurist>=1.2.0 # Apache-2.0
oslo.config>=5.2.0 # Apache-2.0
oslo.context>=5.3.0 # Apache-2.0
oslo.log>=3.36.0 # Apache-2.0
oslo.utils>=3.37.0 # Apache-2.0
-oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
-oslo.service!=1.28.1,>=1.24.0 # Apache-2.0
+oslo.serialization>=2.18.0 # Apache-2.0
+oslo.service>=1.24.0 # Apache-2.0
stevedore>=1.20.0 # Apache-2.0
debtcollector>=1.2.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-14.7.0/test-requirements.txt new/oslo.messaging-14.8.0/test-requirements.txt
--- old/oslo.messaging-14.7.0/test-requirements.txt 2024-02-22 16:37:18.000000000 +0100
+++ new/oslo.messaging-14.8.0/test-requirements.txt 2024-05-23 10:12:37.000000000 +0200
@@ -12,10 +12,7 @@
# for test_impl_kafka
confluent-kafka>=1.3.0 # Apache-2.0
-# when we can require tox>= 1.4, this can go into tox.ini:
-# [testenv:cover]
-# deps = {[testenv]deps} coverage
-coverage!=4.4,>=4.0 # Apache-2.0
+coverage>=4.0 # Apache-2.0
# AMQP 1.0 support depends on the Qpid Proton AMQP 1.0
# development libraries.
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-oslo.log for openSUSE:Factory checked in at 2024-06-05 17:41:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.log (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.log.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.log"
Wed Jun 5 17:41:55 2024 rev:27 rq:1178602 version:6.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.log/python-oslo.log.changes 2024-05-03 19:45:51.555707785 +0200
+++ /work/SRC/openSUSE:Factory/.python-oslo.log.new.24587/python-oslo.log.changes 2024-06-05 17:42:31.266369662 +0200
@@ -1,0 +2,17 @@
+Tue Jun 4 20:02:08 UTC 2024 - cloud-devel(a)suse.de
+
+- update to version 6.0.0
+ - reno: Update master for unmaintained/victoria
+ - Apply eventlet workaround only once
+ - Imported Translations from Zanata
+ - Validate rate_limit_except_level by choices
+ - Remove unused pyinotify
+ - Fix broken reference to rate_limit_except_level
+ - Remove old excludes
+ - Fix eventlet detection
+ - Deprecate watch_log_file
+ - Update master for stable/2024.1
+ - Remove fallback for old oslo.context
+ - Remove implementation for watch_log_file
+
+-------------------------------------------------------------------
Old:
----
oslo.log-5.5.1.tar.gz
New:
----
oslo.log-6.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.log.spec ++++++
--- /var/tmp/diff_new_pack.dUpkxp/_old 2024-06-05 17:42:32.086399526 +0200
+++ /var/tmp/diff_new_pack.dUpkxp/_new 2024-06-05 17:42:32.086399526 +0200
@@ -17,13 +17,13 @@
Name: python-oslo.log
-Version: 5.5.1
+Version: 6.0.0
Release: 0
Summary: OpenStack log library
License: Apache-2.0
Group: Development/Languages/Python
URL: https://docs.openstack.org/oslo.log
-Source0: https://files.pythonhosted.org/packages/source/o/oslo.log/oslo.log-5.5.1.ta…
+Source0: https://files.pythonhosted.org/packages/source/o/oslo.log/oslo.log-6.0.0.ta…
BuildRequires: fdupes
BuildRequires: openstack-macros
BuildRequires: python3-eventlet
@@ -35,7 +35,6 @@
BuildRequires: python3-oslo.utils >= 3.36.0
BuildRequires: python3-oslotest
BuildRequires: python3-pbr >= 3.1.1
-BuildRequires: python3-pyinotify
BuildRequires: python3-python-dateutil >= 2.7.0
BuildRequires: python3-stestr
BuildRequires: python3-testtools
@@ -55,7 +54,6 @@
Requires: python3-oslo.i18n >= 3.20.0
Requires: python3-oslo.serialization >= 2.25.0
Requires: python3-oslo.utils >= 3.36.0
-Requires: python3-pyinotify
Requires: python3-python-dateutil >= 2.7.0
Requires: python3-systemd
%if 0%{?suse_version}
@@ -78,14 +76,14 @@
Documentation for the oslo.log library.
%prep
-%autosetup -p1 -n oslo.log-5.5.1
+%autosetup -p1 -n oslo.log-6.0.0
%py_req_cleanup
%build
%{py3_build}
# generate html docs
-PYTHONPATH=. PBR_VERSION=5.5.1 %sphinx_build -b html doc/source doc/build/html
+PYTHONPATH=. PBR_VERSION=6.0.0 %sphinx_build -b html doc/source doc/build/html
rm -rf doc/build/html/.{doctrees,buildinfo}
%install
++++++ oslo.log-5.5.1.tar.gz -> oslo.log-6.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/ChangeLog new/oslo.log-6.0.0/ChangeLog
--- old/oslo.log-5.5.1/ChangeLog 2024-04-02 09:48:27.000000000 +0200
+++ new/oslo.log-6.0.0/ChangeLog 2024-05-23 10:14:42.000000000 +0200
@@ -1,12 +1,21 @@
CHANGES
=======
-5.5.1
+6.0.0
-----
+* Remove unused pyinotify
+* Remove old excludes
+* Remove implementation for watch\_log\_file
+* Apply eventlet workaround only once
+* Deprecate watch\_log\_file
+* Remove fallback for old oslo.context
+* Fix broken reference to rate\_limit\_except\_level
+* Validate rate\_limit\_except\_level by choices
+* Imported Translations from Zanata
* Fix eventlet detection
-* Update TOX\_CONSTRAINTS\_FILE for stable/2024.1
-* Update .gitreview for stable/2024.1
+* Update master for stable/2024.1
+* reno: Update master for unmaintained/victoria
5.5.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/PKG-INFO new/oslo.log-6.0.0/PKG-INFO
--- old/oslo.log-5.5.1/PKG-INFO 2024-04-02 09:48:27.967316000 +0200
+++ new/oslo.log-6.0.0/PKG-INFO 2024-05-23 10:14:42.467394000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: oslo.log
-Version: 5.5.1
+Version: 6.0.0
Summary: oslo.log library
Home-page: https://docs.openstack.org/oslo.log/latest
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/doc/requirements.txt new/oslo.log-6.0.0/doc/requirements.txt
--- old/oslo.log-5.5.1/doc/requirements.txt 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/doc/requirements.txt 2024-05-23 10:14:12.000000000 +0200
@@ -1,8 +1,4 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
-sphinx>=2.0.0,!=2.1.0 # BSD
+sphinx>=2.0.0 # BSD
openstackdocstheme>=2.2.1 # Apache-2.0
reno>=3.1.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/doc/source/reference/watchers.rst new/oslo.log-6.0.0/doc/source/reference/watchers.rst
--- old/oslo.log-5.5.1/doc/source/reference/watchers.rst 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/doc/source/reference/watchers.rst 1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-==================
- oslo_log.watchers
-==================
-
-.. automodule:: oslo_log.watchers
- :members:
- :undoc-members:
- :show-inheritance:
-
-.. seealso::
-
- :ref:`using`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo.log.egg-info/PKG-INFO new/oslo.log-6.0.0/oslo.log.egg-info/PKG-INFO
--- old/oslo.log-5.5.1/oslo.log.egg-info/PKG-INFO 2024-04-02 09:48:27.000000000 +0200
+++ new/oslo.log-6.0.0/oslo.log.egg-info/PKG-INFO 2024-05-23 10:14:42.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: oslo.log
-Version: 5.5.1
+Version: 6.0.0
Summary: oslo.log library
Home-page: https://docs.openstack.org/oslo.log/latest
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo.log.egg-info/SOURCES.txt new/oslo.log-6.0.0/oslo.log.egg-info/SOURCES.txt
--- old/oslo.log-5.5.1/oslo.log.egg-info/SOURCES.txt 2024-04-02 09:48:27.000000000 +0200
+++ new/oslo.log-6.0.0/oslo.log.egg-info/SOURCES.txt 2024-05-23 10:14:42.000000000 +0200
@@ -33,7 +33,6 @@
doc/source/reference/index.rst
doc/source/reference/log.rst
doc/source/reference/versionutils.rst
-doc/source/reference/watchers.rst
doc/source/user/examples.rst
doc/source/user/guidelines.rst
doc/source/user/history.rst
@@ -64,7 +63,6 @@
oslo_log/rate_limit.py
oslo_log/version.py
oslo_log/versionutils.py
-oslo_log/watchers.py
oslo_log/cmds/__init__.py
oslo_log/cmds/convert_json.py
oslo_log/fixture/__init__.py
@@ -93,6 +91,7 @@
releasenotes/notes/add-reno-e4fedb11ece56f1e.yaml
releasenotes/notes/add-system_scope-to-logging_user_identity_format-0581ce5070740375.yaml
releasenotes/notes/always-add-error-text-715022964364ffa0.yaml
+releasenotes/notes/deprecate-watch-log-file-ba9524ae872e7c01.yaml
releasenotes/notes/deprecate-windows-support-75e6ac72310d5e72.yaml
releasenotes/notes/drop-python27-support-0fe4909a5468feb3.yaml
releasenotes/notes/info-logging-7b7be9fc7a95aebc.yaml
@@ -113,6 +112,7 @@
releasenotes/notes/windows-eventlog-2beb0a6010e342eb.yaml
releasenotes/source/2023.1.rst
releasenotes/source/2023.2.rst
+releasenotes/source/2024.1.rst
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/liberty.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo.log.egg-info/pbr.json new/oslo.log-6.0.0/oslo.log.egg-info/pbr.json
--- old/oslo.log-5.5.1/oslo.log.egg-info/pbr.json 2024-04-02 09:48:27.000000000 +0200
+++ new/oslo.log-6.0.0/oslo.log.egg-info/pbr.json 2024-05-23 10:14:42.000000000 +0200
@@ -1 +1 @@
-{"git_version": "a6c4f8a", "is_release": true}
\ No newline at end of file
+{"git_version": "f05a852", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo.log.egg-info/requires.txt new/oslo.log-6.0.0/oslo.log.egg-info/requires.txt
--- old/oslo.log-5.5.1/oslo.log.egg-info/requires.txt 2024-04-02 09:48:27.000000000 +0200
+++ new/oslo.log-6.0.0/oslo.log.egg-info/requires.txt 2024-05-23 10:14:42.000000000 +0200
@@ -1,4 +1,3 @@
-debtcollector>=1.19.0
oslo.config>=5.2.0
oslo.context>=2.21.0
oslo.i18n>=3.20.0
@@ -7,9 +6,6 @@
pbr>=3.1.1
python-dateutil>=2.7.0
-[:(sys_platform!='win32' and sys_platform!='darwin' and sys_platform!='sunos5')]
-pyinotify>=0.9.6
-
[fixtures]
fixtures>=3.0.0
@@ -18,7 +14,7 @@
[test]
coverage>=4.5.1
-eventlet!=0.32.0,>=0.30.1
+eventlet>=0.30.1
fixtures>=3.0.0
oslotest>=3.3.0
stestr>=2.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo_log/_options.py new/oslo.log-6.0.0/oslo_log/_options.py
--- old/oslo.log-5.5.1/oslo_log/_options.py 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/oslo_log/_options.py 2024-05-23 10:14:12.000000000 +0200
@@ -74,6 +74,10 @@
+ _IGNORE_MESSAGE),
cfg.BoolOpt('watch-log-file',
default=False,
+ deprecated_for_removal=True,
+ deprecated_reason=('This function is known to have bene '
+ 'broken for long time, and depends on '
+ 'the unmaintained library'),
help='Uses logging handler designed to watch file '
'system. When log file is moved or removed this handler '
'will open a new log file with specified path '
@@ -203,8 +207,8 @@
'rate_limit_interval.'),
cfg.StrOpt('rate_limit_except_level',
default='CRITICAL',
- help='Log level name used by rate limiting: CRITICAL, ERROR, '
- 'INFO, WARNING, DEBUG or empty string. Logs with level '
+ choices=['CRITICAL', 'ERROR', 'INFO', 'WARNING', 'DEBUG', ''],
+ help='Log level name used by rate limiting. Logs with level '
'greater or equal to rate_limit_except_level are not '
'filtered. An empty string means that all levels are '
'filtered.'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo_log/formatters.py new/oslo.log-6.0.0/oslo_log/formatters.py
--- old/oslo.log-5.5.1/oslo_log/formatters.py 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/oslo_log/formatters.py 2024-05-23 10:14:12.000000000 +0200
@@ -11,7 +11,6 @@
# under the License.
import datetime
-import debtcollector
import functools
import io
import itertools
@@ -33,13 +32,6 @@
def _dictify_context(context):
if getattr(context, 'get_logging_values', None):
return context.get_logging_values()
- elif getattr(context, 'to_dict', None):
- debtcollector.deprecate(
- 'The RequestContext.get_logging_values() '
- 'method should be defined for logging context specific '
- 'information. The to_dict() method is deprecated '
- 'for oslo.log use.', version='3.8.0', removal_version='5.0.0')
- return context.to_dict()
# This dict only style logging format will become deprecated
# when projects using a dictionary object for context are updated
elif isinstance(context, dict):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo_log/log.py new/oslo.log-6.0.0/oslo_log/log.py
--- old/oslo.log-5.5.1/oslo_log/log.py 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/oslo_log/log.py 2024-05-23 10:14:12.000000000 +0200
@@ -70,6 +70,8 @@
'midnight': 'midnight'
}
+_EVENTLET_FIX_APPLIED = False
+
def _get_log_file_path(conf, binary=None):
logfile = conf.log_file
@@ -272,13 +274,16 @@
Workaround for: https://github.com/eventlet/eventlet/issues/432
"""
+ global _EVENTLET_FIX_APPLIED
+
# If eventlet was not loaded before call to setup assume it's not used.
- if eventletutils.is_monkey_patched('thread'):
+ if eventletutils.is_monkey_patched('thread') and not _EVENTLET_FIX_APPLIED:
import eventlet.green.threading
from oslo_log import pipe_mutex
logging.threading = eventlet.green.threading
logging._lock = logging.threading.RLock()
logging.Handler.createLock = pipe_mutex.pipe_createLock
+ _EVENTLET_FIX_APPLIED = True
def setup(conf, product_name, version='unknown', *, fix_eventlet=True):
@@ -372,10 +377,9 @@
logpath = _get_log_file_path(conf)
if logpath:
# On Windows, in-use files cannot be moved or deleted.
- if conf.watch_log_file and platform.system() == 'Linux':
- from oslo_log import watchers
- file_handler = watchers.FastWatchedFileHandler
- filelog = file_handler(logpath)
+ if conf.watch_log_file:
+ raise RuntimeError('watch_log_file feature was removed because '
+ 'it has been broken for multiple releases.')
elif conf.log_rotation_type.lower() == "interval":
file_handler = logging.handlers.TimedRotatingFileHandler
when = conf.log_rotate_interval_type.lower()
@@ -472,7 +476,7 @@
from oslo_log import rate_limit
rate_limit.install_filter(conf.rate_limit_burst,
conf.rate_limit_interval,
- conf.rate_limit_except)
+ conf.rate_limit_except_level)
_loggers = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo_log/tests/unit/test_formatters.py new/oslo.log-6.0.0/oslo_log/tests/unit/test_formatters.py
--- old/oslo.log-5.5.1/oslo_log/tests/unit/test_formatters.py 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/oslo_log/tests/unit/test_formatters.py 2024-05-23 10:14:12.000000000 +0200
@@ -16,7 +16,6 @@
import logging
import sys
-from unittest import mock
from oslo_config import cfg
from oslo_config import fixture as config_fixture
@@ -37,17 +36,6 @@
return ctxt
-class AlternativeRequestContext(object):
-
- def __init__(self, user=None, tenant=None):
- self.user = user
- self.tenant = tenant
-
- def to_dict(self):
- return {'user': self.user,
- 'tenant': self.tenant}
-
-
class FormatterTest(test_base.BaseTestCase):
def setUp(self):
@@ -66,29 +54,14 @@
def test_dictify_context_empty(self):
self.assertEqual({}, formatters._dictify_context(None))
- @mock.patch("debtcollector.deprecate")
- def test_dictify_context_with_dict(self, mock_deprecate):
+ def test_dictify_context_with_dict(self):
d = {"user": "user"}
self.assertEqual(d, formatters._dictify_context(d))
- mock_deprecate.assert_not_called()
- @mock.patch("debtcollector.deprecate")
- def test_dictify_context_with_context(self, mock_deprecate):
+ def test_dictify_context_with_context(self):
ctxt = _fake_context()
self.assertEqual(ctxt.get_logging_values(),
formatters._dictify_context(ctxt))
- mock_deprecate.assert_not_called()
-
- @mock.patch("debtcollector.deprecate")
- def test_dictify_context_without_get_logging_values(self, mock_deprecate):
- ctxt = AlternativeRequestContext(user="user", tenant="tenant")
- d = {"user": "user", "tenant": "tenant"}
- self.assertEqual(d, formatters._dictify_context(ctxt))
- mock_deprecate.assert_called_with(
- 'The RequestContext.get_logging_values() '
- 'method should be defined for logging context specific '
- 'information. The to_dict() method is deprecated '
- 'for oslo.log use.', removal_version='5.0.0', version='3.8.0')
# Test for https://bugs.python.org/issue28603
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo_log/tests/unit/test_log.py new/oslo.log-6.0.0/oslo_log/tests/unit/test_log.py
--- old/oslo.log-5.5.1/oslo_log/tests/unit/test_log.py 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/oslo_log/tests/unit/test_log.py 2024-05-23 10:14:12.000000000 +0200
@@ -22,7 +22,6 @@
import io
import logging
import os
-import platform
import shutil
import sys
try:
@@ -154,24 +153,6 @@
mock_logger = loggers_mock.return_value.logger
mock_logger.addHandler.assert_any_call(handler_mock.return_value)
- @mock.patch('oslo_log.watchers.FastWatchedFileHandler')
- @mock.patch('oslo_log.log._get_log_file_path', return_value='test.conf')
- @mock.patch('platform.system', return_value='Linux')
- def test_watchlog_on_linux(self, platfotm_mock, path_mock, handler_mock):
- self.config(watch_log_file=True)
- log._setup_logging_from_conf(self.CONF, 'test', 'test')
- handler_mock.assert_called_once_with(path_mock.return_value)
- self.assertEqual(self.log_handlers[0], handler_mock.return_value)
-
- @mock.patch('logging.handlers.WatchedFileHandler')
- @mock.patch('oslo_log.log._get_log_file_path', return_value='test.conf')
- @mock.patch('platform.system', return_value='Windows')
- def test_watchlog_on_windows(self, platform_mock, path_mock, handler_mock):
- self.config(watch_log_file=True)
- log._setup_logging_from_conf(self.CONF, 'test', 'test')
- handler_mock.assert_called_once_with(path_mock.return_value)
- self.assertEqual(self.log_handlers[0], handler_mock.return_value)
-
@mock.patch('logging.handlers.TimedRotatingFileHandler')
@mock.patch('oslo_log.log._get_log_file_path', return_value='test.conf')
def test_timed_rotate_log(self, path_mock, handler_mock):
@@ -1363,54 +1344,6 @@
self.assertIsNone(self.conf.log_file)
-(a)testtools.skipIf(platform.system() != 'Linux',
- 'pyinotify library works on Linux platform only.')
-class FastWatchedFileHandlerTestCase(BaseTestCase):
-
- def setUp(self):
- super(FastWatchedFileHandlerTestCase, self).setUp()
-
- def _config(self):
- os_level, log_path = tempfile.mkstemp()
- log_dir_path = os.path.dirname(log_path)
- log_file_path = os.path.basename(log_path)
- self.CONF(['--log-dir', log_dir_path, '--log-file', log_file_path])
- self.config(use_stderr=False)
- self.config(watch_log_file=True)
- log.setup(self.CONF, 'test', 'test')
- return log_path
-
- def test_instantiate(self):
- self._config()
- logger = log._loggers[None].logger
- self.assertEqual(1, len(logger.handlers))
- from oslo_log import watchers
- self.assertIsInstance(logger.handlers[0],
- watchers.FastWatchedFileHandler)
-
- def test_log(self):
- log_path = self._config()
- logger = log._loggers[None].logger
- text = 'Hello World!'
- logger.info(text)
- with open(log_path, 'r') as f:
- file_content = f.read()
- self.assertIn(text, file_content)
-
- def test_move(self):
- log_path = self._config()
- os_level_dst, log_path_dst = tempfile.mkstemp()
- os.rename(log_path, log_path_dst)
- time.sleep(6)
- self.assertTrue(os.path.exists(log_path))
-
- def test_remove(self):
- log_path = self._config()
- os.remove(log_path)
- time.sleep(6)
- self.assertTrue(os.path.exists(log_path))
-
-
class MutateTestCase(BaseTestCase):
def setUp(self):
super(MutateTestCase, self).setUp()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/oslo_log/watchers.py new/oslo.log-6.0.0/oslo_log/watchers.py
--- old/oslo.log-5.5.1/oslo_log/watchers.py 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/oslo_log/watchers.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,111 +0,0 @@
-# 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 errno
-import logging
-import logging.config
-import logging.handlers
-import os
-import pyinotify
-import stat
-import time
-try:
- import syslog
-except ImportError:
- syslog = None
-
-"""Linux specific pyinotify based logging handlers"""
-
-
-class _FileKeeper(pyinotify.ProcessEvent):
- def my_init(self, watched_handler, watched_file):
- self._watched_handler = watched_handler
- self._watched_file = watched_file
-
- def process_default(self, event):
- if event.name == self._watched_file:
- self._watched_handler.reopen_file()
-
-
-class _EventletThreadedNotifier(pyinotify.ThreadedNotifier):
-
- def loop(self):
- """Eventlet friendly ThreadedNotifier
-
- EventletFriendlyThreadedNotifier contains additional time.sleep()
- call insude loop to allow switching to other thread when eventlet
- is used.
- It can be used with eventlet and native threads as well.
- """
-
- while not self._stop_event.is_set():
- self.process_events()
- time.sleep(0)
- ref_time = time.time()
- if self.check_events():
- self._sleep(ref_time)
- self.read_events()
-
-
-class FastWatchedFileHandler(logging.handlers.WatchedFileHandler, object):
- """Frequency of reading events.
-
- Watching thread sleeps max(0, READ_FREQ - (TIMEOUT / 1000)) seconds.
- """
- READ_FREQ = 5
-
- """Poll timeout in milliseconds.
-
- See https://docs.python.org/2/library/select.html#select.poll.poll"""
- TIMEOUT = 5
-
- def __init__(self, logpath, *args, **kwargs):
- self._log_file = os.path.basename(logpath)
- self._log_dir = os.path.dirname(logpath)
- super(FastWatchedFileHandler, self).__init__(logpath, *args, **kwargs)
- self._watch_file()
-
- def _watch_file(self):
- mask = pyinotify.IN_MOVED_FROM | pyinotify.IN_DELETE
- watch_manager = pyinotify.WatchManager()
- handler = _FileKeeper(watched_handler=self,
- watched_file=self._log_file)
- notifier = _EventletThreadedNotifier(
- watch_manager,
- default_proc_fun=handler,
- read_freq=FastWatchedFileHandler.READ_FREQ,
- timeout=FastWatchedFileHandler.TIMEOUT)
- notifier.daemon = True
- watch_manager.add_watch(self._log_dir, mask)
- notifier.start()
-
- def reopen_file(self):
- try:
- # stat the file by path, checking for existence
- sres = os.stat(self.baseFilename)
- except OSError as err:
- if err.errno == errno.ENOENT:
- sres = None
- else:
- raise
- # compare file system stat with that of our stream file handle
- if (not sres or
- sres[stat.ST_DEV] != self.dev or
- sres[stat.ST_INO] != self.ino):
- if self.stream is not None:
- # we have an open file handle, clean it up
- self.stream.flush()
- self.stream.close()
- self.stream = None
- # open a new file handle and get new stat info from that fd
- self.stream = self._open()
- self._statstream()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/releasenotes/notes/deprecate-watch-log-file-ba9524ae872e7c01.yaml new/oslo.log-6.0.0/releasenotes/notes/deprecate-watch-log-file-ba9524ae872e7c01.yaml
--- old/oslo.log-5.5.1/releasenotes/notes/deprecate-watch-log-file-ba9524ae872e7c01.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.log-6.0.0/releasenotes/notes/deprecate-watch-log-file-ba9524ae872e7c01.yaml 2024-05-23 10:14:12.000000000 +0200
@@ -0,0 +1,11 @@
+---
+deprecations:
+ - |
+ The ``watch_log_file`` option has been deprecated and will be removed in
+ a future release.
+
+upgrade:
+ - |
+ Setting ``[DEFAULT] watch_log_file = True`` now raises RuntimeError while
+ configuring logger. The feature has been broken for multiple cycles and
+ depends on pyinotify library which is not maintained now.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/releasenotes/source/2024.1.rst new/oslo.log-6.0.0/releasenotes/source/2024.1.rst
--- old/oslo.log-5.5.1/releasenotes/source/2024.1.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.log-6.0.0/releasenotes/source/2024.1.rst 2024-05-23 10:14:12.000000000 +0200
@@ -0,0 +1,6 @@
+===========================
+2024.1 Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/2024.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/releasenotes/source/index.rst new/oslo.log-6.0.0/releasenotes/source/index.rst
--- old/oslo.log-5.5.1/releasenotes/source/index.rst 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/releasenotes/source/index.rst 2024-05-23 10:14:12.000000000 +0200
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ 2024.1
2023.2
2023.1
victoria
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po new/oslo.log-6.0.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
--- old/oslo.log-5.5.1/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po 2024-05-23 10:14:12.000000000 +0200
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: oslo.log\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-05-05 13:36+0000\n"
+"POT-Creation-Date: 2024-03-26 18:32+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -88,6 +88,9 @@
msgid "5.0.0"
msgstr "5.0.0"
+msgid "5.0.1"
+msgstr "5.0.1"
+
msgid "5.2.0"
msgstr "5.2.0"
@@ -312,5 +315,12 @@
"When removing the \"verbose\" option, the default logging level was set to "
"\"WARNING\" by mistake. Fixed it back to \"INFO\"."
+msgid ""
+"`Bug #1983863 <https://bugs.launchpad.net/oslo.log/+bug/1983863>`_: Fixed "
+"logging in eventlet native threads."
+msgstr ""
+"`Bug #1983863 <https://bugs.launchpad.net/oslo.log/+bug/1983863>`_: Fixed "
+"logging in eventlet native threads."
+
msgid "oslo.log Release Notes"
msgstr "oslo.log Release Notes"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/releasenotes/source/victoria.rst new/oslo.log-6.0.0/releasenotes/source/victoria.rst
--- old/oslo.log-5.5.1/releasenotes/source/victoria.rst 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/releasenotes/source/victoria.rst 2024-05-23 10:14:12.000000000 +0200
@@ -3,4 +3,4 @@
=============================
.. release-notes::
- :branch: stable/victoria
+ :branch: unmaintained/victoria
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/requirements.txt new/oslo.log-6.0.0/requirements.txt
--- old/oslo.log-5.5.1/requirements.txt 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/requirements.txt 2024-05-23 10:14:12.000000000 +0200
@@ -4,6 +4,4 @@
oslo.i18n>=3.20.0 # Apache-2.0
oslo.utils>=3.36.0 # Apache-2.0
oslo.serialization>=2.25.0 # Apache-2.0
-debtcollector>=1.19.0 # Apache-2.0
-pyinotify>=0.9.6;sys_platform!='win32' and sys_platform!='darwin' and sys_platform!='sunos5' # MIT
python-dateutil>=2.7.0 # BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/test-requirements.txt new/oslo.log-6.0.0/test-requirements.txt
--- old/oslo.log-5.5.1/test-requirements.txt 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/test-requirements.txt 2024-05-23 10:14:12.000000000 +0200
@@ -6,4 +6,4 @@
fixtures>=3.0.0 # Apache-2.0/BSD
-eventlet>=0.30.1,!=0.32.0 # MIT
+eventlet>=0.30.1 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.log-5.5.1/tox.ini new/oslo.log-6.0.0/tox.ini
--- old/oslo.log-5.5.1/tox.ini 2024-04-02 09:48:05.000000000 +0200
+++ new/oslo.log-6.0.0/tox.ini 2024-05-23 10:14:12.000000000 +0200
@@ -8,7 +8,7 @@
allowlist_externals =
find
deps =
- -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2024.1}
+ -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/test-requirements.txt
commands =
find . -type f -name "*.pyc" -delete
@@ -27,7 +27,7 @@
[testenv:docs]
allowlist_externals = rm
deps =
- -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2024.1}
+ -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
commands =
rm -fr doc/build
@@ -36,7 +36,7 @@
[testenv:releasenotes]
allowlist_externals = rm
deps =
- -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2024.1}
+ -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
commands =
rm -rf releasenotes/build
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-castellan for openSUSE:Factory checked in at 2024-06-05 17:41:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-castellan (Old)
and /work/SRC/openSUSE:Factory/.python-castellan.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-castellan"
Wed Jun 5 17:41:54 2024 rev:18 rq:1178601 version:5.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-castellan/python-castellan.changes 2024-01-05 21:43:09.090093425 +0100
+++ /work/SRC/openSUSE:Factory/.python-castellan.new.24587/python-castellan.changes 2024-06-05 17:42:29.078289978 +0200
@@ -1,0 +2,12 @@
+Tue Jun 4 20:01:04 UTC 2024 - cloud-devel(a)suse.de
+
+- update to version 5.0.0
+ - reno: Update master for unmaintained/yoga
+ - Update python classifier in setup.cfg
+ - Bump hacking
+ - Update master for stable/2023.2
+ - tox: Drop envdir
+ - Add release note about new consumer interfaces
+ - Raise ManagedObjectNotFoundError in MockKeyManager
+
+-------------------------------------------------------------------
Old:
----
castellan-4.3.0.tar.gz
New:
----
castellan-5.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-castellan.spec ++++++
--- /var/tmp/diff_new_pack.MtaQhe/_old 2024-06-05 17:42:29.794316054 +0200
+++ /var/tmp/diff_new_pack.MtaQhe/_new 2024-06-05 17:42:29.798316200 +0200
@@ -17,13 +17,13 @@
Name: python-castellan
-Version: 4.3.0
+Version: 5.0.0
Release: 0
Summary: Generic Key Manager interface for OpenStack
License: Apache-2.0
Group: Development/Languages/Python
URL: https://docs.openstack.org/castellan
-Source0: https://files.pythonhosted.org/packages/source/c/castellan/castellan-4.3.0.…
+Source0: https://files.pythonhosted.org/packages/source/c/castellan/castellan-5.0.0.…
BuildRequires: openstack-macros
BuildRequires: python3-barbicanclient >= 5.5.0
BuildRequires: python3-cryptography >= 2.7
@@ -74,7 +74,7 @@
This package contains the documentation
%prep
-%autosetup -p1 -n castellan-4.3.0
+%autosetup -p1 -n castellan-5.0.0
%py_req_cleanup
%build
++++++ castellan-4.3.0.tar.gz -> castellan-5.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/.pre-commit-config.yaml new/castellan-5.0.0/.pre-commit-config.yaml
--- old/castellan-4.3.0/.pre-commit-config.yaml 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/.pre-commit-config.yaml 2024-03-05 10:56:45.000000000 +0100
@@ -32,7 +32,7 @@
- id: flake8
name: flake8
additional_dependencies:
- - hacking>=3.0.1,<3.1.0
+ - hacking>=6.1.0,<6.2.0
language: python
entry: flake8
files: '^.*\.py$'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/AUTHORS new/castellan-5.0.0/AUTHORS
--- old/castellan-4.3.0/AUTHORS 2023-09-22 16:47:32.000000000 +0200
+++ new/castellan-5.0.0/AUTHORS 2024-03-05 10:57:16.000000000 +0100
@@ -17,7 +17,6 @@
Doug Hellmann <doug(a)doughellmann.com>
Douglas Mendizábal <dmendiza(a)redhat.com>
Douglas Mendizábal <mail(a)doug.gt>
-Dr. Jens Harbott <harbott(a)osism.tech>
Dung Ha <dunght(a)vn.fujitsu.com>
Ellen Batbouta <ellen.batbouta(a)oracle.com>
Elod Illes <elod.illes(a)est.tech>
@@ -64,6 +63,7 @@
Steve Martinelli <s.martinelli(a)gmail.com>
Sungjin Yook <sungyook(a)us.ibm.com>
Swapnil Kulkarni (coolsvap) <me(a)coolsvap.net>
+Takashi Kajinami <kajinamit(a)oss.nttdata.com>
Takashi Kajinami <tkajinam(a)redhat.com>
Tim Kelsey <tim.kelsey(a)hp.com>
Tom Cocozzello <tjcocozz(a)us.ibm.com>
@@ -81,6 +81,7 @@
kuangcx <kuangcx(a)inspur.com>
lioplhp <hpliu5898(a)fiberhome.com>
liujiong <liujiong(a)gohighsec.com>
+melanie witt <melwittt(a)gmail.com>
melissaml <ma.lei(a)99cloud.net>
rajat29 <rajat.sharma(a)nectechnologies.in>
ramboman <lijie(a)unitedstack.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/ChangeLog new/castellan-5.0.0/ChangeLog
--- old/castellan-4.3.0/ChangeLog 2023-09-22 16:47:32.000000000 +0200
+++ new/castellan-5.0.0/ChangeLog 2024-03-05 10:57:16.000000000 +0100
@@ -1,16 +1,20 @@
CHANGES
=======
-4.3.0
+5.0.0
-----
-* Revert "Add secret consumers"
-* Revert "Implement force parameter"
-* Revert "Add secret consumers functional tests"
-* Revert "Add force parameter functional tests"
-* Revert "Add secret consumers documentation and release note"
-* Update TOX\_CONSTRAINTS\_FILE for stable/2023.2
-* Update .gitreview for stable/2023.2
+* Add release note about new consumer interfaces
+
+4.4.0
+-----
+
+* Raise ManagedObjectNotFoundError in MockKeyManager
+* reno: Update master for unmaintained/yoga
+* tox: Drop envdir
+* Bump hacking
+* Update python classifier in setup.cfg
+* Update master for stable/2023.2
4.2.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/PKG-INFO new/castellan-5.0.0/PKG-INFO
--- old/castellan-4.3.0/PKG-INFO 2023-09-22 16:47:32.592500000 +0200
+++ new/castellan-5.0.0/PKG-INFO 2024-03-05 10:57:16.653267600 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: castellan
-Version: 4.3.0
+Version: 5.0.0
Summary: Generic Key Manager interface for OpenStack
Home-page: https://docs.openstack.org/castellan/latest/
Author: OpenStack
@@ -37,6 +37,7 @@
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Python: >=3.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/_config_driver.py new/castellan-5.0.0/castellan/_config_driver.py
--- old/castellan-4.3.0/castellan/_config_driver.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/_config_driver.py 2024-03-05 10:56:45.000000000 +0100
@@ -95,7 +95,7 @@
class CastellanConfigurationSource(sources.ConfigurationSource):
- """A configuration source for configuration values served through castellan.
+ """A configuration source for configuration values served through castellan. # noqa
:param config_file: The path to a castellan configuration file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/common/objects/managed_object.py new/castellan-5.0.0/castellan/common/objects/managed_object.py
--- old/castellan-4.3.0/castellan/common/objects/managed_object.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/common/objects/managed_object.py 2024-03-05 10:56:45.000000000 +0100
@@ -40,7 +40,7 @@
self._name = name
# If None or POSIX times
- if not created or type(created) == int:
+ if not created or isinstance(created, int):
self._created = created
else:
raise ValueError('created must be of long type, actual type %s' %
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/key_manager/barbican_key_manager.py new/castellan-5.0.0/castellan/key_manager/barbican_key_manager.py
--- old/castellan-4.3.0/castellan/key_manager/barbican_key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/key_manager/barbican_key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -37,7 +37,6 @@
from castellan.i18n import _
from castellan.key_manager import key_manager
-
from barbicanclient import client as barbican_client_import
from barbicanclient import exceptions as barbican_exceptions
from oslo_utils import timeutils
@@ -160,7 +159,6 @@
self._base_url = self._create_base_url(auth,
sess,
self._barbican_endpoint)
-
return self._barbican_client
def _get_keystone_auth(self, context):
@@ -552,17 +550,20 @@
created = calendar.timegm(time_stamp)
if issubclass(secret_type, key_base_class.Key):
- return secret_type(secret.algorithm,
- secret.bit_length,
- secret_data,
- secret.name,
- created,
- object_id)
+ return secret_type(algorithm=secret.algorithm,
+ bit_length=secret.bit_length,
+ key=secret_data,
+ name=secret.name,
+ created=created,
+ id=object_id,
+ consumers=secret.consumers)
else:
+ # Opaque Data or Passphrase
return secret_type(secret_data,
- secret.name,
- created,
- object_id)
+ name=secret.name,
+ created=created,
+ id=object_id,
+ consumers=secret.consumers)
def _get_secret(self, context, object_id):
"""Returns the metadata of the secret.
@@ -618,20 +619,23 @@
else:
raise exception.KeyManagerError(reason=e)
- def delete(self, context, managed_object_id):
+ def delete(self, context, managed_object_id, force=False):
"""Deletes the specified managed object.
:param context: contains information of the user and the environment
for the request (castellan/context.py)
:param managed_object_id: the UUID of the object to delete
+ :param force: specifies if the secret must be deleted even when they
+ have consumers.
+ :raises ValueError: if the secret has consumers but no force parameter
+ is provided or if force equals False.
:raises KeyManagerError: if object deletion fails
:raises ManagedObjectNotFoundError: if the object could not be found
"""
barbican_client = self._get_barbican_client(context)
-
try:
secret_ref = self._create_secret_ref(managed_object_id)
- barbican_client.secrets.delete(secret_ref)
+ barbican_client.secrets.delete(secret_ref, force)
except (barbican_exceptions.HTTPAuthError,
barbican_exceptions.HTTPClientError,
barbican_exceptions.HTTPServerError) as e:
@@ -639,6 +643,50 @@
if self._is_secret_not_found_error(e):
raise exception.ManagedObjectNotFoundError(
uuid=managed_object_id)
+ else:
+ raise exception.KeyManagerError(reason=e)
+
+ def add_consumer(self, context, managed_object_id, consumer_data):
+ """Add a consumer to the specified managed object
+
+ :param context: contains information of the user and the environment
+ for the request (castellan/context.py)
+ :param managed_object_id: the UUID of the object to update
+ :param consumer_data: dict containing consumer data
+ :raises KeyManagerError: if object deletion fails
+ :raises ManagedObjectNotFoundError: if the object could not be found
+ """
+
+ barbican_client = self._get_barbican_client(context)
+ try:
+ secret_ref = self._create_secret_ref(managed_object_id)
+ barbican_client.secrets.register_consumer(
+ secret_ref, **consumer_data)
+
+ except (barbican_exceptions.HTTPAuthError,
+ barbican_exceptions.HTTPClientError,
+ barbican_exceptions.HTTPServerError) as e:
+ LOG.error("Error adding consumer: %s", e)
+ if self._is_secret_not_found_error(e):
+ raise exception.ManagedObjectNotFoundError(
+ uuid=managed_object_id)
+ else:
+ raise exception.KeyManagerError(reason=e)
+
+ def remove_consumer(self, context, managed_object_id, consumer_data):
+
+ barbican_client = self._get_barbican_client(context)
+ try:
+ secret_ref = self._create_secret_ref(managed_object_id)
+ barbican_client.secrets.remove_consumer(
+ secret_ref, **consumer_data)
+ except (barbican_exceptions.HTTPAuthError,
+ barbican_exceptions.HTTPClientError,
+ barbican_exceptions.HTTPServerError) as e:
+ LOG.error("Error removing consumer: %s", e)
+ if self._is_secret_not_found_error(e):
+ raise exception.ManagedObjectNotFoundError(
+ uuid=managed_object_id)
else:
raise exception.KeyManagerError(reason=e)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/key_manager/key_manager.py new/castellan-5.0.0/castellan/key_manager/key_manager.py
--- old/castellan-4.3.0/castellan/key_manager/key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/key_manager/key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -106,7 +106,7 @@
pass
@abc.abstractmethod
- def delete(self, context, managed_object_id):
+ def delete(self, context, managed_object_id, force=False):
"""Deletes the specified managed object.
Implementations should verify that the caller has permission to delete
@@ -116,6 +116,44 @@
If the specified object does not exist, then a KeyError should be
raised. Implementations should preclude users from discerning the
+ UUIDs of objects that belong to other users by repeatedly calling this
+ method. That is, objects that belong to other users should be
+ considered "non-existent" and completely invisible.
+
+ Implementations that block the deletion of secrets with consumers
+ without making the "force" parameter equals True should raise
+ an exception.
+ """
+ pass
+
+ @abc.abstractmethod
+ def add_consumer(self, context, managed_object_id, consumer_data):
+ """Add a consumer to a managed object.
+
+ Implementations should verify that the caller has permission to
+ add a consumer to the managed object by checking the context object
+ (context). A NotAuthorized exception should be raised if the caller
+ lacks permission.
+
+ If the specified object does not exist, then a KeyError should be
+ raised. Implementations should preclude users from discerning the
+ UUIDs of objects that belong to other users by repeatedly calling this
+ method. That is, objects that belong to other users should be
+ considered "non-existent" and completely invisible.
+ """
+ pass
+
+ @abc.abstractmethod
+ def remove_consumer(self, context, managed_object_id, consumer_data):
+ """Remove a consumer from a managed object.
+
+ Implementations should verify that the caller has permission to
+ remove a consumer to the managed object by checking the context object
+ (context). A NotAuthorized exception should be raised if the caller
+ lacks permission.
+
+ If the specified object does not exist, then a KeyError should be
+ raised. Implementations should preclude users from discerning the
UUIDs of objects that belong to other users by repeatedly calling this
method. That is, objects that belong to other users should be
considered "non-existent" and completely invisible.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/key_manager/not_implemented_key_manager.py new/castellan-5.0.0/castellan/key_manager/not_implemented_key_manager.py
--- old/castellan-4.3.0/castellan/key_manager/not_implemented_key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/key_manager/not_implemented_key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -48,5 +48,11 @@
def list(self, context, object_type=None):
raise NotImplementedError()
- def delete(self, context, managed_object_id, **kwargs):
+ def delete(self, context, managed_object_id, force=False):
+ raise NotImplementedError()
+
+ def add_consumer(self, context, managed_object_id, consumer_data):
+ raise NotImplementedError()
+
+ def remove_consumer(self, context, managed_object_id, consumer_data):
raise NotImplementedError()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/key_manager/vault_key_manager.py new/castellan-5.0.0/castellan/key_manager/vault_key_manager.py
--- old/castellan-4.3.0/castellan/key_manager/vault_key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/key_manager/vault_key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -347,8 +347,12 @@
record['created'],
key_id)
- def delete(self, context, key_id):
- """Represents deleting the key."""
+ def delete(self, context, key_id, force=False):
+ """Represents deleting the key.
+
+ The 'force' parameter is not used whatsoever and only kept to allow
+ consistency with the Barbican implementation.
+ """
if not key_id:
raise exception.KeyManagerError('key identifier not provided')
@@ -359,6 +363,16 @@
if resp.status_code == requests.codes['not_found']:
raise exception.ManagedObjectNotFoundError(uuid=key_id)
+ def add_consumer(self, context, managed_object_id, consumer_data):
+ raise NotImplementedError(
+ "VaultKeyManager does not implement adding consumers"
+ )
+
+ def remove_consumer(self, context, managed_object_id, consumer_data):
+ raise NotImplementedError(
+ "VaultKeyManager does not implement deleting consumers"
+ )
+
def list(self, context, object_type=None, metadata_only=False):
"""Lists the managed objects given the criteria."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/tests/functional/key_manager/test_barbican_key_manager.py new/castellan-5.0.0/castellan/tests/functional/key_manager/test_barbican_key_manager.py
--- old/castellan-4.3.0/castellan/tests/functional/key_manager/test_barbican_key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/tests/functional/key_manager/test_barbican_key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -34,11 +34,13 @@
from castellan.key_manager import barbican_key_manager
from castellan.tests.functional import config
from castellan.tests.functional.key_manager import test_key_manager
+from castellan.tests import utils
CONF = config.get_config()
+(a)utils.parameterized_test_case
class BarbicanKeyManagerTestCase(test_key_manager.KeyManagerTestCase):
def _create_key_manager(self):
@@ -108,6 +110,291 @@
self.assertRaises(exception.Forbidden,
self.key_mgr.store, None, key)
+ def test_secret_create_check_empty_consumers_list(self):
+ """Check that the consumers entity is a list and is empty."""
+
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ resp = self.key_mgr.get(self.ctxt, stored_id)
+ consumers = resp.consumers
+ self.assertIsInstance(consumers, list)
+ self.assertEqual(len(consumers), 0)
+
+ def test_secret_create_check_consumers_list_consistency(self):
+ """Consumers List Consistency
+
+ Check that the consumers list contains a single element,
+ and that it corresponds to the consumer created.
+ """
+
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ resource_id = uuidutils.generate_uuid()
+ consumer_data = {
+ 'service': 'dummy_service',
+ 'resource_type': 'dummy_resource_type',
+ 'resource_id': resource_id
+ }
+ self.key_mgr.add_consumer(self.ctxt, stored_id, consumer_data)
+ stored_secret = self.key_mgr.get(self.ctxt, stored_id)
+ self.assertIsNotNone(stored_secret)
+ self.assertIsInstance(stored_secret.consumers, list)
+ self.assertEqual(len(stored_secret.consumers), 1)
+ self.assertEqual(stored_secret.consumers[0]['service'],
+ consumer_data['service'])
+ self.assertEqual(stored_secret.consumers[0]['resource_type'],
+ consumer_data['resource_type'])
+ self.assertEqual(stored_secret.consumers[0]['resource_id'],
+ consumer_data['resource_id'])
+
+ def test_secret_create_remove_nonexistent_consumer(self):
+ """Removing a nonexistent consumer should raise an exception."""
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ resource_id = uuidutils.generate_uuid()
+ consumer_data = {
+ 'service': 'dummy_service',
+ 'resource_type': 'dummy_resource_type',
+ 'resource_id': resource_id
+ }
+ self.assertRaises(exception.ManagedObjectNotFoundError,
+ self.key_mgr.remove_consumer, self.ctxt,
+ stored_id, consumer_data)
+
+ @utils.parameterized_dataset({
+ 'remove_one': [[{'service': 'service_test1',
+ 'resource_type': 'type_test1',
+ 'resource_id': 'id_test1'},
+ {'service': 'service_test2',
+ 'resource_type': 'type_test2',
+ 'resource_id': 'id_test2'}],
+ [{'service': 'service_test1',
+ 'resource_type': 'type_test1',
+ 'resource_id': 'id_test1'}]],
+ 'remove_all': [[{'service': 'service_test1',
+ 'resource_type': 'type_test1',
+ 'resource_id': 'id_test1'},
+ {'service': 'service_test2',
+ 'resource_type': 'type_test2',
+ 'resource_id': 'id_test2'}],
+ [{'service': 'service_test1',
+ 'resource_type': 'type_test1',
+ 'resource_id': 'id_test1'},
+ {'service': 'service_test2',
+ 'resource_type': 'type_test2',
+ 'resource_id': 'id_test2'}]]
+ })
+ def test_secret_create_and_adding_removing_consumers(
+ self,
+ add_consumers,
+ remove_consumers):
+ """The following activities are carried:
+
+ Create a secret, then register each consumer
+ in the register_consumers list, then remove each consumer
+ in the remove_consumers list.
+ """
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ for consumer in add_consumers:
+ self.key_mgr.add_consumer(self.ctxt, stored_id, consumer)
+ stored_secret = self.key_mgr.get(self.ctxt, stored_id)
+ self.assertCountEqual(add_consumers, stored_secret.consumers)
+
+ for consumer in remove_consumers:
+ self.key_mgr.remove_consumer(self.ctxt, stored_id, consumer)
+ stored_secret = self.key_mgr.get(self.ctxt, stored_id)
+
+ removed_ids = set([v['resource_id'] for v in remove_consumers])
+ remaining_consumers = [v for v in add_consumers
+ if v['resource_id'] not in removed_ids]
+ self.assertCountEqual(remaining_consumers, stored_secret.consumers)
+
+ @utils.parameterized_dataset({
+ 'no_args': [[{}]],
+ 'one_arg_1': [[{'service': 'service1'}]],
+ 'one_arg_2': [[{'resource_type': 'type1'}]],
+ 'one_arg_3': [[{'resource_id': 'id1'}]],
+ 'two_args_1': [[{'service': 'service1',
+ 'resource_type': 'type1'}]],
+ 'two_args_2': [[{'service': 'service1',
+ 'resource_id': 'id1'}]],
+ 'two_args_3': [[{'resource_type': 'type1',
+ 'resource_id': 'id'}]]
+ })
+ def test_consumer_add_missing_positional_arguments(self, consumers):
+ """Missing Positional Arguments - Addition
+
+ Tries to add a secret consumer without providing all of the required
+ positional arguments (service, resource_type, resource_id).
+ """
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ for consumer in consumers:
+ e = self.assertRaises(
+ TypeError,
+ self.key_mgr.add_consumer,
+ self.ctxt, stored_id, consumer)
+ self.assertIn('register_consumer() missing', str(e))
+
+ @utils.parameterized_dataset({
+ 'no_args': [[{}]],
+ 'one_arg_1': [[{'service': 'service1'}]],
+ 'one_arg_2': [[{'resource_type': 'type1'}]],
+ 'one_arg_3': [[{'resource_id': 'id1'}]],
+ 'two_args_1': [[{'service': 'service1',
+ 'resource_type': 'type1'}]],
+ 'two_args_2': [[{'service': 'service1',
+ 'resource_id': 'id1'}]],
+ 'two_args_3': [[{'resource_type': 'type1',
+ 'resource_id': 'id'}]]
+ })
+ def test_consumer_remove_missing_positional_arguments(self, consumers):
+ """Missing Positional Arguments - Removal
+
+ Tries to remove a secret consumer without providing all of the required
+ positional arguments (service, resource_type, resource_id).
+ """
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ consumer_data = {
+ 'service': 'service1',
+ 'resource_type': 'type1',
+ 'resource_id': 'id1'
+ }
+ self.key_mgr.add_consumer(self.ctxt, stored_id, consumer_data)
+ for consumer in consumers:
+ e = self.assertRaises(
+ TypeError,
+ self.key_mgr.remove_consumer,
+ self.ctxt, stored_id, consumer)
+ self.assertIn('remove_consumer() missing', str(e))
+
+ def test_consumer_add_two_remove_one_check_consumers_list(self):
+ """Consumers addition and removal - check of list consistency
+
+ Adds two consumers, removes one and verifies if the consumers
+ list's length is consistent (equals to 1).
+ """
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ consumers = [
+ {'service': 'service1',
+ 'resource_type': 'type1',
+ 'resource_id': 'id1'},
+ {'service': 'service2',
+ 'resource_type': 'type2',
+ 'resource_id': 'id2'}
+ ]
+ for consumer in consumers:
+ self.key_mgr.add_consumer(self.ctxt, stored_id, consumer)
+ stored_secret = self.key_mgr.get(self.ctxt, stored_id)
+ self.assertCountEqual(consumers, stored_secret.consumers)
+
+ self.key_mgr.remove_consumer(self.ctxt, stored_id, consumers[0])
+ stored_secret = self.key_mgr.get(self.ctxt, stored_id)
+ self.assertCountEqual(consumers[1:], stored_secret.consumers)
+
+ def test_consumer_add_secret_delete_force_parameter_nonexisting(self):
+ """Consumer addition, secret deletion with no 'force' parameter
+
+ Creates a secret, adds a consumer to it and tries to delete the secret
+ without specifying the 'force' parameter.
+ """
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ consumer = {'service': 'service1',
+ 'resource_type': 'type1',
+ 'resource_id': 'id1'}
+ self.key_mgr.add_consumer(self.ctxt, stored_id, consumer)
+
+ e = self.assertRaises(ValueError, self.key_mgr.delete,
+ self.ctxt, stored_id)
+ self.assertIn("Secret has consumers! Remove them first or use the "
+ "force parameter to delete it.", str(e))
+
+ def test_consumer_add_secret_delete_force_parameter_false(self):
+ """Consumer addition, secret deletion, 'force' parameter equals False
+
+ Creates a secret, adds a consumer to it and tries to delete the secret
+ specifying the 'force' parameter as False.
+ """
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.addCleanup(self.key_mgr.delete, self.ctxt, stored_id, True)
+ self.assertIsNotNone(stored_id)
+
+ consumer = {'service': 'service1',
+ 'resource_type': 'type1',
+ 'resource_id': 'id1'}
+ self.key_mgr.add_consumer(self.ctxt, stored_id, consumer)
+
+ e = self.assertRaises(ValueError, self.key_mgr.delete,
+ self.ctxt, stored_id, False)
+ self.assertIn("Secret has consumers! Remove them first or use the "
+ "force parameter to delete it.", str(e))
+
+ def test_consumer_add_secret_delete_force_parameter_true(self):
+ """Consumer addition, secret deletion, 'force' parameter equals True
+
+ Creates a secret, adds a consumer to it and deletes the secret,
+ specifying the 'force' parameter as True.
+ """
+ key = test_key_manager._get_test_passphrase()
+ self.assertIsNotNone(key)
+
+ stored_id = self.key_mgr.store(self.ctxt, key)
+ self.assertIsNotNone(stored_id)
+
+ consumer = {'service': 'service1',
+ 'resource_type': 'type1',
+ 'resource_id': 'id1'}
+ self.key_mgr.add_consumer(self.ctxt, stored_id, consumer)
+
+ self.key_mgr.delete(self.ctxt, stored_id, True)
+
class BarbicanKeyManagerOSLOContextTestCase(BarbicanKeyManagerTestCase,
base.BaseTestCase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/tests/functional/key_manager/test_key_manager.py new/castellan-5.0.0/castellan/tests/functional/key_manager/test_key_manager.py
--- old/castellan-4.3.0/castellan/tests/functional/key_manager/test_key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/tests/functional/key_manager/test_key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -194,7 +194,7 @@
# created if older objects were not cleaned up, so we will simply
# check if the object we created is in the list
retrieved_objects = self.key_mgr.list(self.ctxt)
- self.assertTrue(managed_object in retrieved_objects)
+ self.assertIn(managed_object, retrieved_objects)
for retrieved_object in retrieved_objects:
self.assertFalse(retrieved_object.is_metadata_only())
self.assertIsNotNone(retrieved_object.id)
@@ -217,7 +217,7 @@
# created if older objects were not cleaned up, so we will simply
# check if the object we created is in the list
retrieved_objects = self.key_mgr.list(self.ctxt, metadata_only=True)
- self.assertTrue(expected_obj in retrieved_objects)
+ self.assertIn(expected_obj, retrieved_objects)
for retrieved_object in retrieved_objects:
self.assertTrue(retrieved_object.is_metadata_only())
self.assertIsNotNone(retrieved_object.id)
@@ -242,4 +242,4 @@
for retrieved_object in retrieved_objects:
self.assertEqual(type(object_1), type(retrieved_object))
self.assertIsNotNone(retrieved_object.id)
- self.assertTrue(object_1 in retrieved_objects)
+ self.assertIn(object_1, retrieved_objects)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/tests/unit/key_manager/mock_key_manager.py new/castellan-5.0.0/castellan/tests/unit/key_manager/mock_key_manager.py
--- old/castellan-4.3.0/castellan/tests/unit/key_manager/mock_key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/tests/unit/key_manager/mock_key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -178,7 +178,11 @@
if context is None:
raise exception.Forbidden()
- obj = copy.deepcopy(self.keys[managed_object_id])
+ try:
+ obj = copy.deepcopy(self.keys[managed_object_id])
+ except KeyError:
+ raise exception.ManagedObjectNotFoundError()
+
if metadata_only:
if hasattr(obj, "_key"):
obj._key = None
@@ -197,7 +201,26 @@
if context is None:
raise exception.Forbidden()
- del self.keys[managed_object_id]
+ try:
+ del self.keys[managed_object_id]
+ except KeyError:
+ raise exception.ManagedObjectNotFoundError()
+
+ def add_consumer(self, context, managed_object_id, consumer_data):
+ if context is None:
+ raise exception.Forbidden()
+ if managed_object_id not in self.keys:
+ raise exception.ManagedObjectNotFoundError()
+ self.keys[managed_object_id].consumers.append(consumer_data)
+
+ def remove_consumer(self, context, managed_object_id, consumer_data):
+ if context is None:
+ raise exception.Forbidden()
+ if managed_object_id not in self.keys:
+ raise exception.ManagedObjectNotFoundError()
+ self.keys[managed_object_id].consumers = [
+ c for c in self.keys[managed_object_id].consumers
+ if c != consumer_data]
def _generate_password(self, length, symbolgroups):
"""Generate a random password from the supplied symbol groups.
@@ -240,6 +263,6 @@
objects = []
for obj_id in self.keys:
obj = self.get(context, obj_id, metadata_only=metadata_only)
- if type(obj) == object_type or object_type is None:
+ if object_type is None or isinstance(obj, object_type):
objects.append(obj)
return objects
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/tests/unit/key_manager/test_barbican_key_manager.py new/castellan-5.0.0/castellan/tests/unit/key_manager/test_barbican_key_manager.py
--- old/castellan-4.3.0/castellan/tests/unit/key_manager/test_barbican_key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/tests/unit/key_manager/test_barbican_key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -24,6 +24,7 @@
from keystoneauth1 import service_token
from oslo_context import context
from oslo_utils import timeutils
+from oslo_utils import uuidutils
from castellan.common import exception
from castellan.common.objects import symmetric_key as sym_key
@@ -78,8 +79,13 @@
self.create = self.mock_barbican.secrets.create
self.list = self.mock_barbican.secrets.list
+ self.add_consumer = self.mock_barbican.secrets.add_consumer
+ self.remove_consumer = self.mock_barbican.secrets.remove_consumer
+ self.list_versions = self.mock_barbican.versions.list_versions
+
self.key_mgr._barbican_client = self.mock_barbican
self.key_mgr._current_context = self.ctxt
+ self.key_mgr._version_client = self.mock_barbican
def test_barbican_endpoint(self):
endpoint_data = mock.Mock()
@@ -377,7 +383,30 @@
def test_delete_key(self):
self.key_mgr.delete(self.ctxt, self.key_id)
- self.delete.assert_called_once_with(self.secret_ref)
+ self.delete.assert_called_once_with(self.secret_ref, False)
+
+ def test_delete_secret_with_consumers_no_force_parameter(self):
+ self.mock_barbican.secrets.delete = mock.Mock(
+ side_effect=exception.KeyManagerError(
+ "Secret has consumers! Use the 'force' parameter."))
+ self.assertRaises(exception.KeyManagerError,
+ self.key_mgr.delete, self.ctxt, self.key_id)
+ self.mock_barbican.secrets.delete.assert_called_once_with(
+ self.secret_ref, False)
+
+ def test_delete_secret_with_consumers_force_parameter_false(self):
+ self.mock_barbican.secrets.delete = mock.Mock(
+ side_effect=barbican_exceptions.HTTPClientError(
+ "Secret has consumers! Use the 'force' parameter."))
+ self.assertRaises(exception.KeyManagerError,
+ self.key_mgr.delete, self.ctxt, self.key_id,
+ force=False)
+ self.mock_barbican.secrets.delete.assert_called_once_with(
+ self.secret_ref, False)
+
+ def test_delete_secret_with_consumers_force_parameter_true(self):
+ self.key_mgr.delete(self.ctxt, self.key_id, force=True)
+ self.delete.assert_called_once_with(self.secret_ref, True)
def test_delete_unknown_key(self):
self.assertRaises(exception.KeyManagerError,
@@ -634,3 +663,245 @@
self.assertIn('cafile', barbican_service_user_opts)
# From auth common opts.
self.assertIn('auth_section', barbican_service_user_opts)
+
+ def _test_consumer_expects_error(
+ self, Error, method, ctxt, obj_ref, service="storage",
+ resource_type='volume', resource_id=uuidutils.generate_uuid()):
+ consumer_data = self._get_custom_consumer_data(
+ service=service, resource_type=resource_type,
+ resource_id=resource_id)
+ self.assertRaises(
+ Error, method, ctxt, obj_ref, consumer_data)
+
+ def _mock_list_versions_and_test_consumer_expects_error(
+ self, Error, method, ctxt, obj_ref, service="storage",
+ resource_type='volume', resource_id=uuidutils.generate_uuid()):
+ self._mock_list_versions()
+ self._test_consumer_expects_error(
+ Error, method, ctxt, obj_ref, service=service,
+ resource_type=resource_type, resource_id=resource_id)
+
+ def _mock_list_versions_and_test_add_consumer_expects_error(
+ self, Error, ctxt, obj_ref, side_effect=None, service="storage",
+ resource_type='volume', resource_id=uuidutils.generate_uuid()):
+ self.mock_barbican.secrets.register_consumer = mock.Mock(
+ side_effect=side_effect)
+ self._mock_list_versions_and_test_consumer_expects_error(
+ Error, self.key_mgr.add_consumer, ctxt,
+ obj_ref, service=service, resource_type=resource_type,
+ resource_id=resource_id)
+
+ def _mock_list_versions_and_test_remove_consumer_expects_error(
+ self, Error, ctxt, obj_ref, side_effect=None, service="storage",
+ resource_type='volume', resource_id=uuidutils.generate_uuid()):
+ self.mock_barbican.secrets.remove_consumer = mock.Mock(
+ side_effect=side_effect)
+ self._mock_list_versions_and_test_consumer_expects_error(
+ Error, self.key_mgr.remove_consumer, ctxt,
+ obj_ref, service=service, resource_type=resource_type,
+ resource_id=resource_id)
+
+ def _mock_list_versions(self):
+ list_versions = [{
+ 'id': 'v1', 'status': 'CURRENT', 'min_version': '1.0',
+ 'max_version': '1.1', 'links': []}
+ ]
+ self.list_versions.return_value = list_versions
+
+ def _get_custom_consumer_data(
+ self, service="storage", resource_type='volume',
+ resource_id=uuidutils.generate_uuid()):
+ return {
+ 'service': service, 'resource_type': resource_type,
+ 'resource_id': resource_id}
+
+ def test_add_consumer_without_context_fails(self):
+ self.key_mgr._barbican_client = None
+ self._test_consumer_expects_error(
+ exception.Forbidden, self.key_mgr.add_consumer, None,
+ self.secret_ref)
+
+ def test_add_consumer_with_different_project_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Forbidden: SecretConsumer creation attempt not allowed - "
+ "please review your user/project privileges")
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect)
+
+ def test_add_consumer_with_null_managed_object_id_fails(self):
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, None)
+
+ def test_add_consumer_with_empty_managed_object_id_fails(self):
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, "")
+
+ def test_add_consumer_with_invalid_managed_object_id_fails(self):
+ side_effect = ValueError("Secret incorrectly specified.")
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ ValueError, self.ctxt, uuidutils.generate_uuid()[:-1],
+ side_effect=side_effect)
+
+ def test_add_consumer_with_inexistent_managed_object_id_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Not Found: Secret not found.", status_code=404)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.ManagedObjectNotFoundError, self.ctxt, self.secret_ref,
+ side_effect=side_effect)
+
+ def test_add_consumer_with_null_service_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': None is not of type 'string'. Invalid "
+ "property: 'service'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, service=None)
+
+ def test_add_consumer_with_empty_service_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': '' is too short. Invalid property: 'service'",
+ status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, service="")
+
+ def test_add_consumer_with_null_resource_type_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': None is not of type 'string'. "
+ "Invalid property: 'resource_type'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, resource_type=None)
+
+ def test_add_consumer_with_empty_resource_type_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': '' is too short. Invalid property: "
+ "'resource_type'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, resource_type="")
+
+ def test_add_consumer_with_null_resource_id_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': None is not of type 'string'. "
+ "Invalid property: 'resource_id'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, resource_id=None)
+
+ def test_add_consumer_with_empty_resource_id_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': '' is too short. Invalid property: "
+ "'resource_id'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, resource_id="")
+
+ def test_add_consumer_with_valid_parameters_doesnt_fail(self):
+ self._mock_list_versions()
+ self.key_mgr.add_consumer(
+ self.ctxt, self.secret_ref, self._get_custom_consumer_data())
+
+ def test_remove_consumer_without_context_fails(self):
+ self.key_mgr._barbican_client = None
+ self._test_consumer_expects_error(
+ exception.Forbidden, self.key_mgr.remove_consumer, None,
+ self.secret_ref)
+
+ def test_remove_consumer_with_different_project_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Forbidden: SecretConsumer creation attempt not allowed - "
+ "please review your user/project privileges")
+ self._mock_list_versions_and_test_remove_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect)
+
+ def test_remove_consumer_with_null_managed_object_id_fails(self):
+ side_effect = ValueError("secret incorrectly specified.")
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, None,
+ side_effect=side_effect)
+
+ def test_remove_consumer_with_empty_managed_object_id_fails(self):
+ side_effect = ValueError("secret incorrectly specified.")
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, "", side_effect=side_effect)
+
+ def test_remove_consumer_with_invalid_managed_object_id_fails(self):
+ side_effect = ValueError("Secret incorrectly specified.")
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ ValueError, self.ctxt, uuidutils.generate_uuid()[:-1],
+ side_effect=side_effect)
+
+ def test_remove_consumer_without_registered_managed_object_id_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Not Found: Secret not found.", status_code=404)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.ManagedObjectNotFoundError, self.ctxt, self.secret_ref,
+ side_effect=side_effect)
+
+ def test_remove_consumer_with_null_service_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': None is not of type 'string'. Invalid "
+ "property: 'service'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, service=None)
+
+ def test_remove_consumer_with_empty_service_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': '' is too short. Invalid property: 'service'",
+ status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, service="")
+
+ def test_remove_consumer_with_null_resource_type_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': None is not of type 'string'. "
+ "Invalid property: 'resource_type'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, resource_type=None)
+
+ def test_remove_consumer_with_empty_resource_type_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': '' is too short. Invalid property: "
+ "'resource_type'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, resource_type="")
+
+ def test_remove_consumer_with_null_resource_id_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': None is not of type 'string'. "
+ "Invalid property: 'resource_id'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, resource_id=None)
+
+ def test_remove_consumer_with_empty_resource_id_fails(self):
+ side_effect = barbican_exceptions.HTTPClientError(
+ "Bad Request: Provided object does not match schema "
+ "'Secret Consumer': '' is too short. Invalid property: "
+ "'resource_id'", status_code=400)
+ self._mock_list_versions_and_test_add_consumer_expects_error(
+ exception.KeyManagerError, self.ctxt, self.secret_ref,
+ side_effect=side_effect, resource_id="")
+
+ def test_remove_consumer_with_valid_parameters_doesnt_fail(self):
+ self._mock_list_versions()
+ self.key_mgr.remove_consumer(
+ self.ctxt, self.secret_ref, self._get_custom_consumer_data())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan/tests/unit/key_manager/test_mock_key_manager.py new/castellan-5.0.0/castellan/tests/unit/key_manager/test_mock_key_manager.py
--- old/castellan-4.3.0/castellan/tests/unit/key_manager/test_mock_key_manager.py 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/castellan/tests/unit/key_manager/test_mock_key_manager.py 2024-03-05 10:56:45.000000000 +0100
@@ -201,22 +201,26 @@
self.key_mgr.get, None, None)
def test_get_unknown_key(self):
- self.assertRaises(KeyError, self.key_mgr.get, self.context, None)
+ self.assertRaises(
+ exception.ManagedObjectNotFoundError, self.key_mgr.get,
+ self.context, None)
def test_delete_key(self):
key_id = self.key_mgr.create_key(self.context)
self.key_mgr.delete(self.context, key_id)
- self.assertRaises(KeyError, self.key_mgr.get, self.context,
- key_id)
+ self.assertRaises(
+ exception.ManagedObjectNotFoundError, self.key_mgr.get,
+ self.context, key_id)
def test_delete_null_context(self):
self.assertRaises(exception.Forbidden,
self.key_mgr.delete, None, None)
def test_delete_unknown_key(self):
- self.assertRaises(KeyError, self.key_mgr.delete, self.context,
- None)
+ self.assertRaises(
+ exception.ManagedObjectNotFoundError, self.key_mgr.delete,
+ self.context, None)
def test_list_null_context(self):
self.assertRaises(exception.Forbidden, self.key_mgr.list, None)
@@ -229,8 +233,8 @@
keys = self.key_mgr.list(self.context)
self.assertEqual(2, len(keys))
- self.assertTrue(key1 in keys)
- self.assertTrue(key2 in keys)
+ self.assertIn(key1, keys)
+ self.assertIn(key2, keys)
for key in keys:
self.assertIsNotNone(key.id)
@@ -246,7 +250,7 @@
bit_length_list = [key1.bit_length, key2.bit_length]
for key in keys:
self.assertTrue(key.is_metadata_only())
- self.assertTrue(key.bit_length in bit_length_list)
+ self.assertIn(key.bit_length, bit_length_list)
for key in keys:
self.assertIsNotNone(key.id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan.egg-info/PKG-INFO new/castellan-5.0.0/castellan.egg-info/PKG-INFO
--- old/castellan-4.3.0/castellan.egg-info/PKG-INFO 2023-09-22 16:47:32.000000000 +0200
+++ new/castellan-5.0.0/castellan.egg-info/PKG-INFO 2024-03-05 10:57:16.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: castellan
-Version: 4.3.0
+Version: 5.0.0
Summary: Generic Key Manager interface for OpenStack
Home-page: https://docs.openstack.org/castellan/latest/
Author: OpenStack
@@ -37,6 +37,7 @@
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Python: >=3.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan.egg-info/SOURCES.txt new/castellan-5.0.0/castellan.egg-info/SOURCES.txt
--- old/castellan-4.3.0/castellan.egg-info/SOURCES.txt 2023-09-22 16:47:32.000000000 +0200
+++ new/castellan-5.0.0/castellan.egg-info/SOURCES.txt 2024-03-05 10:57:16.000000000 +0100
@@ -111,6 +111,8 @@
releasenotes/notes/fix-vault-create-key-b4340a3067cbd93c.yaml
releasenotes/notes/fix-vault-flaky-kv-api-version-b0cd9d62a39d2907.yaml
releasenotes/notes/implements-keymanager-option-discovery-13a46c1dfc036a3f.yaml
+releasenotes/notes/secret-consumers-0253330a65b6638b.yaml
+releasenotes/notes/secret-consumers-e047d1c6f1a20e47.yaml
releasenotes/notes/support-legacy-fixed-key-id-9fa897b547111610.yaml
releasenotes/notes/use-barbican-endpoint-type-config-option-e583d30930cc22ba.yaml
releasenotes/notes/use-barbican-region-name-config-option-31bec809292302b8.yaml
@@ -118,6 +120,7 @@
releasenotes/notes/vault-kv-mountpoint-919eb547764a0c74.yaml
releasenotes/notes/vault-namespaces-7d334e7407396df9.yaml
releasenotes/source/2023.1.rst
+releasenotes/source/2023.2.rst
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/pike.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan.egg-info/pbr.json new/castellan-5.0.0/castellan.egg-info/pbr.json
--- old/castellan-4.3.0/castellan.egg-info/pbr.json 2023-09-22 16:47:32.000000000 +0200
+++ new/castellan-5.0.0/castellan.egg-info/pbr.json 2024-03-05 10:57:16.000000000 +0100
@@ -1 +1 @@
-{"git_version": "7033db5", "is_release": true}
\ No newline at end of file
+{"git_version": "d578cbc", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/castellan.egg-info/requires.txt new/castellan-5.0.0/castellan.egg-info/requires.txt
--- old/castellan-4.3.0/castellan.egg-info/requires.txt 2023-09-22 16:47:32.000000000 +0200
+++ new/castellan-5.0.0/castellan.egg-info/requires.txt 2024-03-05 10:57:16.000000000 +0100
@@ -6,6 +6,6 @@
oslo.log>=3.36.0
oslo.utils>=3.33.0
pbr!=2.1.0,>=2.0.0
-python-barbicanclient>=4.5.2
+python-barbicanclient>=5.5.0
requests!=2.20.0,>=2.18.0
stevedore>=1.20.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/doc/source/user/index.rst new/castellan-5.0.0/doc/source/user/index.rst
--- old/castellan-4.3.0/doc/source/user/index.rst 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/doc/source/user/index.rst 2024-03-05 10:56:45.000000000 +0100
@@ -173,6 +173,47 @@
will not return anything but may raise exceptions if there are communication,
identification, or authorization issues.
+**Example. Secret consumers.**
+
+.. code:: python
+
+ import myapp
+ from castellan import key_manager
+
+ manager = key_manager.API()
+
+ # Listing consumers:
+ stored_secret = self.key_mgr.get(myapp.context(), stored_id)
+ consumer_list = stored_secret.consumers # consumers is a list of dicts
+
+ # Adding consumers:
+ consumer = {'service': 'glance',
+ 'resource_type': 'image',
+ 'resource_id': 'image_id'}
+ try:
+ manager.add_consumer(myapp.context(), stored_id, consumer)
+ except NotImplementedError:
+ pass # backends like Vault don't support adding/removing consumers
+
+ # Remove the consumer before calling secret delete without the force flag:
+ try:
+ manager.remove_consumer(myapp.context(), stored_id, consumer)
+ except NotImplementedError:
+ pass
+ manager.delete(myapp.context(), stored_key_id)
+
+ # Alternatively, force delete a secret
+ manager.delete(myapp.context(), stored_key_id, force=True)
+
+After creating a secret, we can add consumers to it. Secrets with consumers
+cannot be deleted without using the force flag.
+
+.. note::
+
+ Secret consumers are currently only avaliable for the Barbican backend.
+ https://docs.openstack.org/barbican/latest/api/reference/secret_consumers.h…
+
+
Configuring castellan
~~~~~~~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/releasenotes/notes/secret-consumers-0253330a65b6638b.yaml new/castellan-5.0.0/releasenotes/notes/secret-consumers-0253330a65b6638b.yaml
--- old/castellan-4.3.0/releasenotes/notes/secret-consumers-0253330a65b6638b.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/castellan-5.0.0/releasenotes/notes/secret-consumers-0253330a65b6638b.yaml 2024-03-05 10:56:45.000000000 +0100
@@ -0,0 +1,10 @@
+---
+features: >
+ The Barbican API has been extended to allow secrets to have one or
+ more consumers. This extension has been documented here:
+ https://docs.openstack.org/barbican/latest/api/reference/secret_consumers.h…
+
+ This functionality has now been exposed in the castellan client.
+ Users may add, remove or delete consumers by calling new mechods on the
+ SecretManager. Note that this functionality is only available for
+ the Barbican backend.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/releasenotes/notes/secret-consumers-e047d1c6f1a20e47.yaml new/castellan-5.0.0/releasenotes/notes/secret-consumers-e047d1c6f1a20e47.yaml
--- old/castellan-4.3.0/releasenotes/notes/secret-consumers-e047d1c6f1a20e47.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/castellan-5.0.0/releasenotes/notes/secret-consumers-e047d1c6f1a20e47.yaml 2024-03-05 10:56:45.000000000 +0100
@@ -0,0 +1,6 @@
+---
+upgrade:
+ - |
+ The KeyManager class now has two new abstract methods, ``add_consumer`` and
+ ``remove_consumer``. Any implementations inheriting the base KeyManager
+ class should override these two interfaces.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/releasenotes/source/2023.2.rst new/castellan-5.0.0/releasenotes/source/2023.2.rst
--- old/castellan-4.3.0/releasenotes/source/2023.2.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/castellan-5.0.0/releasenotes/source/2023.2.rst 2024-03-05 10:56:45.000000000 +0100
@@ -0,0 +1,6 @@
+===========================
+2023.2 Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/2023.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/releasenotes/source/index.rst new/castellan-5.0.0/releasenotes/source/index.rst
--- old/castellan-4.3.0/releasenotes/source/index.rst 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/releasenotes/source/index.rst 2024-03-05 10:56:45.000000000 +0100
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ 2023.2
2023.1
zed
yoga
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/releasenotes/source/yoga.rst new/castellan-5.0.0/releasenotes/source/yoga.rst
--- old/castellan-4.3.0/releasenotes/source/yoga.rst 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/releasenotes/source/yoga.rst 2024-03-05 10:56:45.000000000 +0100
@@ -3,4 +3,4 @@
=========================
.. release-notes::
- :branch: stable/yoga
+ :branch: unmaintained/yoga
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/requirements.txt new/castellan-5.0.0/requirements.txt
--- old/castellan-4.3.0/requirements.txt 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/requirements.txt 2024-03-05 10:56:45.000000000 +0100
@@ -1,10 +1,6 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
pbr!=2.1.0,>=2.0.0 # Apache-2.0
cryptography>=2.7 # BSD/Apache-2.0
-python-barbicanclient>=4.5.2 # Apache-2.0
+python-barbicanclient>=5.5.0 # Apache-2.0
oslo.config>=6.4.0 # Apache-2.0
oslo.context>=2.19.2 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/setup.cfg new/castellan-5.0.0/setup.cfg
--- old/castellan-4.3.0/setup.cfg 2023-09-22 16:47:32.592500000 +0200
+++ new/castellan-5.0.0/setup.cfg 2024-03-05 10:57:16.653267600 +0100
@@ -18,6 +18,7 @@
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
+ Programming Language :: Python :: 3.11
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: Implementation :: CPython
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/test-requirements.txt new/castellan-5.0.0/test-requirements.txt
--- old/castellan-4.3.0/test-requirements.txt 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/test-requirements.txt 2024-03-05 10:56:45.000000000 +0100
@@ -1,11 +1,4 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-hacking>=3.0.1,<3.1.0 # Apache-2.0
-# remove this pyflakes from here once you bump the
-# hacking to 3.2.0 or above. hacking 3.2.0 takes
-# care of pyflakes version compatibilty.
-pyflakes>=2.1.1
+hacking>=6.1.0,<6.2.0 # Apache-2.0
coverage!=4.4,>=4.0 # Apache-2.0
python-barbicanclient>=4.5.2 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/castellan-4.3.0/tox.ini new/castellan-5.0.0/tox.ini
--- old/castellan-4.3.0/tox.ini 2023-09-22 16:47:08.000000000 +0200
+++ new/castellan-5.0.0/tox.ini 2024-03-05 10:56:45.000000000 +0100
@@ -10,7 +10,7 @@
VIRTUAL_ENV={envdir}
OS_TEST_PATH=./castellan/tests/unit
deps =
- -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2023.2}
+ -c{env:TOX_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands = stestr run --slowest --concurrency=1 {posargs}
@@ -61,7 +61,6 @@
[testenv:pdf-docs]
deps = {[testenv:docs]deps}
-envdir = {toxworkdir}/docs
allowlist_externals =
rm
make
@@ -72,7 +71,6 @@
[testenv:releasenotes]
deps = {[testenv:docs]deps}
-envdir = {toxworkdir}/docs
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:functional]
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ugrep for openSUSE:Factory checked in at 2024-06-05 17:41:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ugrep (Old)
and /work/SRC/openSUSE:Factory/.ugrep.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ugrep"
Wed Jun 5 17:41:49 2024 rev:69 rq:1178577 version:6.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ugrep/ugrep.changes 2024-05-08 11:42:32.446915514 +0200
+++ /work/SRC/openSUSE:Factory/.ugrep.new.24587/ugrep.changes 2024-06-05 17:42:21.662019966 +0200
@@ -1,0 +2,12 @@
+Tue Jun 4 16:40:11 UTC 2024 - Andreas Stieger <andreas.stieger(a)gmx.de>
+
+- update to 6.1.0:
+ * improve option -w to support Unicode
+ * make [[:alpha:]] and other [::] character classes also match
+ Unicode by default, like \p{Class} already does, unless option
+ -U (--ascii or --binary) is used
+ * Unicode word boundaries \<, \>, \b, \B unless option -U
+ (--ascii or --binary) is used
+ * improve bash and zsh auto-completion usability
+
+-------------------------------------------------------------------
Old:
----
ugrep-6.0.0.tar.gz
New:
----
ugrep-6.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ugrep.spec ++++++
--- /var/tmp/diff_new_pack.Qm9XrA/_old 2024-06-05 17:42:23.430084329 +0200
+++ /var/tmp/diff_new_pack.Qm9XrA/_new 2024-06-05 17:42:23.446084911 +0200
@@ -18,7 +18,7 @@
Name: ugrep
-Version: 6.0.0
+Version: 6.1.0
Release: 0
Summary: Universal grep: a feature-rich grep implementation with focus on speed
License: BSD-3-Clause
++++++ ugrep-6.0.0.tar.gz -> ugrep-6.1.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/ugrep/ugrep-6.0.0.tar.gz /work/SRC/openSUSE:Factory/.ugrep.new.24587/ugrep-6.1.0.tar.gz differ: char 13, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xpra-html5 for openSUSE:Factory checked in at 2024-06-05 17:41:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xpra-html5 (Old)
and /work/SRC/openSUSE:Factory/.xpra-html5.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xpra-html5"
Wed Jun 5 17:41:46 2024 rev:19 rq:1178578 version:13.0+git20240528.6209443
Changes:
--------
--- /work/SRC/openSUSE:Factory/xpra-html5/xpra-html5.changes 2024-04-26 23:27:07.668634162 +0200
+++ /work/SRC/openSUSE:Factory/.xpra-html5.new.24587/xpra-html5.changes 2024-06-05 17:42:18.457903326 +0200
@@ -1,0 +2,39 @@
+Tue May 28 16:07:49 UTC 2024 - scott.bradnick(a)suse.com
+
+- Update to version 13.0+git20240528.6209443:
+ * #308 don't save 'password' (input element), save 'passwords' values
+ * undo some awful formatting, remvoe IE hasOwn workaround
+ * silence some chrome developer warnings
+ * also trigger the links with the keyboard
+ * shwo keyboard focus on the password prompt dialog
+ * can't use argument for default value
+ * cosmetic: logging and easier to read code
+ * update the release notes
+ * undo more dumb formatting changes
+ * #283 let users choose the prefered clipboard format
+ * #301 ssl makes no difference to Firefox?
+ * #301 need to make top bar bigger
+ * undo some infuriatingly awful automated formatting
+ * #301 add clipboard sync to server button
+ * #301 keep clipboard, disable polling
+ * cosmetic: undo some pointless line wrapping
+ * doh: arrays can't be added in JS
+ * do show the text we got
+ * #226 Safari clipboard should work with ssl enabled
+ * more tools
+ * #273 #298 add clipboard test page
+ * update packaging files
+ * update the release notes
+ * also use dashes in URLs, and replace ALL of them
+ * property names can use dash in connection files
+ * include the display (if specified) in connection files
+ * skip values set to their default
+ * boolean options not saved correctly in connection file
+ * outdated and misplaced docstring
+ * show some server information
+ * simplify: has_session_storage does not change
+ * better client URIs
+ * make the button label match the current action selected
+ * #304 'open-url' wasn't moved to file caps
+
+-------------------------------------------------------------------
Old:
----
xpra-html5-13.0+git20240408.085e0df.tar.gz
New:
----
xpra-html5-13.0+git20240528.6209443.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xpra-html5.spec ++++++
--- /var/tmp/diff_new_pack.rkiqT4/_old 2024-06-05 17:42:19.445939294 +0200
+++ /var/tmp/diff_new_pack.rkiqT4/_new 2024-06-05 17:42:19.449939439 +0200
@@ -22,7 +22,7 @@
Name: xpra-html5
Release: 0
-Version: 13.0+git20240408.085e0df
+Version: 13.0+git20240528.6209443
Summary: HTML5 client for Xpra
License: GPL-2.0+ AND BSD-3-Clause AND LGPL-3.0+ AND MIT
URL: https://xpra.org/
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.rkiqT4/_old 2024-06-05 17:42:19.501941332 +0200
+++ /var/tmp/diff_new_pack.rkiqT4/_new 2024-06-05 17:42:19.505941478 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/Xpra-org/xpra-html5</param>
- <param name="changesrevision">085e0df8fde96ca96611932d33ee93577221e6a8</param></service></servicedata>
+ <param name="changesrevision">6209443c3a99fc29709ea98eb4646aa834794d95</param></service></servicedata>
(No newline at EOF)
++++++ xpra-html5-13.0+git20240408.085e0df.tar.gz -> xpra-html5-13.0+git20240528.6209443.tar.gz ++++++
/work/SRC/openSUSE:Factory/xpra-html5/xpra-html5-13.0+git20240408.085e0df.tar.gz /work/SRC/openSUSE:Factory/.xpra-html5.new.24587/xpra-html5-13.0+git20240528.6209443.tar.gz differ: char 13, line 1
++++++ xpra-html5.obsinfo ++++++
--- /var/tmp/diff_new_pack.rkiqT4/_old 2024-06-05 17:42:19.553943225 +0200
+++ /var/tmp/diff_new_pack.rkiqT4/_new 2024-06-05 17:42:19.557943371 +0200
@@ -1,5 +1,5 @@
name: xpra-html5
-version: 13.0+git20240408.085e0df
-mtime: 1712551921
-commit: 085e0df8fde96ca96611932d33ee93577221e6a8
+version: 13.0+git20240528.6209443
+mtime: 1716909196
+commit: 6209443c3a99fc29709ea98eb4646aa834794d95
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package wt for openSUSE:Factory checked in at 2024-06-05 17:39:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wt (Old)
and /work/SRC/openSUSE:Factory/.wt.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wt"
Wed Jun 5 17:39:57 2024 rev:46 rq:1178503 version:4.10.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/wt/wt.changes 2023-01-10 15:00:13.449344990 +0100
+++ /work/SRC/openSUSE:Factory/.wt.new.24587/wt.changes 2024-06-05 17:40:22.549683912 +0200
@@ -1,0 +2,10 @@
+Tue Jun 4 09:10:52 UTC 2024 - Adam Majer <adam.majer(a)suse.de>
+
+- Update to 4.10.4
+ For changes, see
+ https://www.webtoolkit.eu/wt/doc/reference/html/Releasenotes.html
+
+- boost_fixes.patch: compilation fixes with latest Boost
+- missing_libs.patch: add missing libX11 linking
+
+-------------------------------------------------------------------
Old:
----
wt-4.8.1.tar.gz
New:
----
boost_fixes.patch
missing_libs.patch
wt-4.10.4.tar.gz
BETA DEBUG BEGIN:
New:
- boost_fixes.patch: compilation fixes with latest Boost
- missing_libs.patch: add missing libX11 linking
New:- boost_fixes.patch: compilation fixes with latest Boost
- missing_libs.patch: add missing libX11 linking
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ wt.spec ++++++
--- /var/tmp/diff_new_pack.6L7hUo/_old 2024-06-05 17:40:23.653724102 +0200
+++ /var/tmp/diff_new_pack.6L7hUo/_new 2024-06-05 17:40:23.653724102 +0200
@@ -1,7 +1,7 @@
#
# spec file for package wt
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,15 +18,17 @@
%define WTSRVDIR /srv/wt
%define WTRUNDIR %{WTSRVDIR}/run
-%define so_version 4_8_1
+%define so_version 4_10_4
Name: wt
-Version: 4.8.1
+Version: 4.10.4
Release: 0
Summary: Web Toolkit
License: GPL-2.0-only
Group: Development/Libraries/C and C++
URL: https://www.webtoolkit.eu/wt/
Source0: https://github.com/emweb/wt/archive/refs/tags/%{version}.tar.gz#/%{name}-%{…
+Patch1: boost_fixes.patch
+Patch2: missing_libs.patch
BuildRequires: FastCGI-devel
BuildRequires: GraphicsMagick-devel
BuildRequires: Mesa-devel
@@ -45,7 +47,7 @@
BuildRequires: pkgconfig
BuildRequires: postgresql-devel
BuildRequires: zlib-devel
-BuildRequires: cmake(Qt5Core)
+BuildRequires: cmake(Qt6Core)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(sqlite3)
Requires: FastCGI
@@ -53,15 +55,11 @@
Recommends: %{name}-dbo = %{version}
Suggests: %{name}-dbo-mysql = %{version}
Suggests: %{name}-dbo-postgres = %{version}
-%if 0%{?suse_version} > 1315
BuildRequires: libboost_atomic-devel
BuildRequires: libboost_filesystem-devel
BuildRequires: libboost_program_options-devel
BuildRequires: libboost_system-devel
BuildRequires: libboost_thread-devel
-%else
-BuildRequires: boost-devel >= 1.50.0
-%endif
%description
Wt is a C++ library and application server for developing and
@@ -129,6 +127,8 @@
%cmake \
-DENABLE_FIREBIRD=OFF \
-DENABLE_QT4=OFF \
+ -DENABLE_QT5=OFF \
+ -DENABLE_QT6=ON \
-DSHARED_LIBS=ON \
-DMULTI_THREADED=ON \
-DUSE_SYSTEM_SQLITE3=ON \
++++++ boost_fixes.patch ++++++
Index: wt-4.10.4/src/web/FileUtils.C
===================================================================
--- wt-4.10.4.orig/src/web/FileUtils.C
+++ wt-4.10.4/src/web/FileUtils.C
@@ -7,6 +7,7 @@
#include "web/FileUtils.h"
#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/directory.hpp>
#include "web/WebUtils.h"
#include "Wt/WException.h"
Index: wt-4.10.4/src/http/Server.C
===================================================================
--- wt-4.10.4.orig/src/http/Server.C
+++ wt-4.10.4/src/http/Server.C
@@ -331,8 +331,8 @@ std::vector<asio::ip::address> Server::r
LOG_DEBUG_S(&wt_, "Failed to resolve hostname \"" << address << "\" as IPv4: " <<
Wt::AsioWrapper::system_error(errc).what());
// Resolve IPv6
- query = Wt::AsioWrapper::asio::ip::tcp::resolver::query(Wt::AsioWrapper::asio::ip::tcp::v6(), address, "http");
- for (Wt::AsioWrapper::asio::ip::tcp::resolver::iterator it = resolver.resolve(query, errc);
+ asio::ip::tcp::resolver::query query6(asio::ip::tcp::v6(), address, "http");
+ for (Wt::AsioWrapper::asio::ip::tcp::resolver::iterator it = resolver.resolve(query6, errc);
!errc && it != end; ++it) {
result.push_back(it->endpoint().address());
}
++++++ missing_libs.patch ++++++
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans21.ltrans.o: in function `Wt::WGLWidget::render(Wt::WFlags<Wt::RenderFlag>)':
[ 51s] /home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:120:(.text+0x8608): undefined reference to `XOpenDisplay'
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans21.ltrans.o:/home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:168:(.text+0x86eb): undefined reference to `XFree'
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans21.ltrans.o:/home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:187:(.text+0x872f): undefined reference to `XSync'
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans21.ltrans.o:/home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:201:(.text+0x8771): undefined reference to `XSync'
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans21.ltrans.o:/home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:213:(.text+0x8992): undefined reference to `XCloseDisplay'
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans21.ltrans.o:/home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:205:(.text+0x89b3): undefined reference to `XCloseDisplay'
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans21.ltrans.o:/home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:189:(.text+0x89bd): undefined reference to `XCloseDisplay'
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans21.ltrans.o:/home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:161:(.text+0x89ca): undefined reference to `XCloseDisplay'
[ 51s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /tmp/cc2L3fxe.ltrans99.ltrans.o: in function `Wt::WServerGLWidget::~WServerGLWidget()':
[ 51s] /home/abuild/rpmbuild/BUILD/wt-4.10.4/src/Wt/WServerGLWidget.C:225:(.text+0x45e7): undefined reference to `XCloseDisplay'
[ 51s] collect2: error: ld returned 1 exit status
Index: wt-4.10.4/src/CMakeLists.txt
===================================================================
--- wt-4.10.4.orig/src/CMakeLists.txt
+++ wt-4.10.4/src/CMakeLists.txt
@@ -647,7 +647,7 @@ ELSE("${WT_WRASTERIMAGE_IMPLEMENTATION}"
ENDIF("${WT_WRASTERIMAGE_IMPLEMENTATION}" STREQUAL "GraphicsMagick")
if(WT_USE_OPENGL)
- target_link_libraries(wt PRIVATE OpenGL::GL GLEW::GLEW)
+ target_link_libraries(wt PRIVATE OpenGL::GL GLEW::GLEW X11)
else()
MESSAGE("** Disabling server-side opengl rendering for WGLWidget: requires gl, glew and WRasterImage (GraphicsMagick or Direct2D).")
endif()
++++++ wt-4.8.1.tar.gz -> wt-4.10.4.tar.gz ++++++
/work/SRC/openSUSE:Factory/wt/wt-4.8.1.tar.gz /work/SRC/openSUSE:Factory/.wt.new.24587/wt-4.10.4.tar.gz differ: char 16, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package mkosi for openSUSE:Factory checked in at 2024-06-05 17:39:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mkosi (Old)
and /work/SRC/openSUSE:Factory/.mkosi.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mkosi"
Wed Jun 5 17:39:52 2024 rev:16 rq:1178506 version:22
Changes:
--------
--- /work/SRC/openSUSE:Factory/mkosi/mkosi.changes 2024-06-03 17:41:47.727334292 +0200
+++ /work/SRC/openSUSE:Factory/.mkosi.new.24587/mkosi.changes 2024-06-05 17:40:14.661396754 +0200
@@ -1,0 +2,10 @@
+Tue Jun 4 13:59:06 UTC 2024 - Franck Bui <fbui(a)suse.com>
+
+- Drop requirement on systemd-experimental.
+
+ It's no longer necessary as systemd-repart is no more considered as an
+ experimental tool and is now shipped by udev. Also the hard requirement was a
+ bit too strong since systemd-repart is only required when building disk
+ images.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mkosi.spec ++++++
--- /var/tmp/diff_new_pack.0fD27P/_old 2024-06-05 17:40:15.481426605 +0200
+++ /var/tmp/diff_new_pack.0fD27P/_new 2024-06-05 17:40:15.481426605 +0200
@@ -37,7 +37,6 @@
BuildRequires: python-rpm-macros
Requires: bubblewrap
Requires: python3 >= 3.9
-Requires: systemd-experimental
Requires: zypper
Recommends: btrfsprogs
Recommends: dnf >= 4.8.0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package apache2-mod_security2 for openSUSE:Factory checked in at 2024-06-05 17:39:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/apache2-mod_security2 (Old)
and /work/SRC/openSUSE:Factory/.apache2-mod_security2.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apache2-mod_security2"
Wed Jun 5 17:39:46 2024 rev:31 rq:1178493 version:2.9.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/apache2-mod_security2/apache2-mod_security2.changes 2024-05-13 17:59:02.584001246 +0200
+++ /work/SRC/openSUSE:Factory/.apache2-mod_security2.new.24587/apache2-mod_security2.changes 2024-06-05 17:40:08.449170610 +0200
@@ -1,0 +2,13 @@
+Tue Jun 4 12:14:51 UTC 2024 - pgajdos(a)suse.com
+
+- %autopatch instead of %patchN
+- modified patches
+ % apache2-mod_security2-no_rpath.diff (refreshed)
+
+-------------------------------------------------------------------
+Tue Jun 4 11:03:29 UTC 2024 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- Fix patch application syntax: Use %patch -P N instead of
+ deprecated %patchN.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ apache2-mod_security2.spec ++++++
--- /var/tmp/diff_new_pack.Po4AqZ/_old 2024-06-05 17:40:09.313202063 +0200
+++ /var/tmp/diff_new_pack.Po4AqZ/_new 2024-06-05 17:40:09.313202063 +0200
@@ -66,11 +66,7 @@
%setup -q -n %{tarballname}
%setup -q -D -T -a 1 -n %{tarballname}
mv -v SpiderLabs* rules
-%patch -P 0
-%patch -P 1 -p1
-%patch -P 2 -p1
-%patch -P 3 -p1
-%patch4 -p1
+%autopatch -p1
%build
aclocal
++++++ apache2-mod_security2-no_rpath.diff ++++++
--- /var/tmp/diff_new_pack.Po4AqZ/_old 2024-06-05 17:40:09.373204248 +0200
+++ /var/tmp/diff_new_pack.Po4AqZ/_new 2024-06-05 17:40:09.377204393 +0200
@@ -1,7 +1,7 @@
Index: apache2/Makefile.am
===================================================================
---- apache2/Makefile.am.orig
-+++ apache2/Makefile.am
+--- a/apache2/Makefile.am.orig
++++ b/apache2/Makefile.am
@@ -118,7 +118,7 @@ mod_security2_la_LDFLAGS = -module -avoi
endif
@@ -13,8 +13,8 @@
@APXS_LDFLAGS@ \
Index: apache2/Makefile.in
===================================================================
---- apache2/Makefile.in.orig
-+++ apache2/Makefile.in
+--- a/apache2/Makefile.in.orig
++++ b/apache2/Makefile.in
@@ -691,7 +691,7 @@ libinjection/mod_security2_la-libinjecti
libinjection/$(DEPDIR)/$(am__dirstamp)
@@ -26,8 +26,8 @@
-rm -f *.$(OBJEXT)
Index: build/libtool.m4
===================================================================
---- build/libtool.m4.orig
-+++ build/libtool.m4
+--- a/build/libtool.m4.orig
++++ b/build/libtool.m4
@@ -5053,7 +5053,7 @@ dnl Note also adjust exclude_expsyms for
# are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary.
1
0