diff -Nru python-ceilometermiddleware-2.0.0/AUTHORS python-ceilometermiddleware-2.1.0/AUTHORS --- python-ceilometermiddleware-2.0.0/AUTHORS 2019-12-13 09:54:30.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/AUTHORS 2020-06-18 16:48:41.000000000 +0000 @@ -18,6 +18,8 @@ Rohit Jaiswal Romain LE DISEZ Romain Soufflet +Romain de Joux +Sean McGinnis Steve Lewis Swapnil Kulkarni (coolsvap) Thomas Bechtold diff -Nru python-ceilometermiddleware-2.0.0/babel.cfg python-ceilometermiddleware-2.1.0/babel.cfg --- python-ceilometermiddleware-2.0.0/babel.cfg 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/babel.cfg 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -[python: **.py] - diff -Nru python-ceilometermiddleware-2.0.0/ceilometermiddleware/swift.py python-ceilometermiddleware-2.1.0/ceilometermiddleware/swift.py --- python-ceilometermiddleware-2.0.0/ceilometermiddleware/swift.py 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/ceilometermiddleware/swift.py 2020-06-18 16:47:51.000000000 +0000 @@ -292,13 +292,14 @@ @_log_and_ignore_error def emit_event(self, env, bytes_received, bytes_sent, outcome='success'): - if ((env.get('HTTP_X_SERVICE_PROJECT_ID') or - env.get('HTTP_X_PROJECT_ID') or - env.get('HTTP_X_TENANT_ID')) in self.ignore_projects or - env.get('swift.source') is not None): + if ( + (env.get('HTTP_X_SERVICE_PROJECT_ID') + or env.get('HTTP_X_PROJECT_ID') + or env.get('HTTP_X_TENANT_ID')) in self.ignore_projects + or env.get('swift.source') is not None): return - path = urlparse.quote(env['PATH_INFO']) + path = urlparse.quote(env.get('swift.backend_path', env['PATH_INFO'])) method = env['REQUEST_METHOD'] headers = {} for header in env: @@ -355,8 +356,8 @@ initiator = cadf_resource.Resource( typeURI='service/security/account/user', id=env.get('HTTP_X_USER_ID')) - initiator.project_id = (env.get('HTTP_X_PROJECT_ID') or - env.get('HTTP_X_TENANT_ID')) + initiator.project_id = (env.get('HTTP_X_PROJECT_ID') + or env.get('HTTP_X_TENANT_ID')) # build notification body event = cadf_event.Event(eventTime=now, outcome=outcome, diff -Nru python-ceilometermiddleware-2.0.0/ceilometermiddleware/tests/test_swift.py python-ceilometermiddleware-2.1.0/ceilometermiddleware/tests/test_swift.py --- python-ceilometermiddleware-2.0.0/ceilometermiddleware/tests/test_swift.py 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/ceilometermiddleware/tests/test_swift.py 2020-06-18 16:47:51.000000000 +0000 @@ -13,8 +13,8 @@ # License for the specific language governing permissions and limitations # under the License. import threading +from unittest import mock -import mock from oslo_config import cfg import six @@ -70,12 +70,15 @@ @staticmethod def start_response(*args): - pass + pass + + def get_request(self, path, environ=None, headers=None): + return FakeRequest(path, environ=environ, headers=headers) def test_get(self): app = swift.Swift(FakeApp(), {}) - req = FakeRequest('/1.0/account/container/obj', - environ={'REQUEST_METHOD': 'GET'}) + req = self.get_request('/1.0/account/container/obj', + environ={'REQUEST_METHOD': 'GET'}) with mock.patch('oslo_messaging.Notifier.info') as notify: resp = app(req.environ, self.start_response) self.assertEqual(["This string is 28 bytes long"], list(resp)) @@ -96,8 +99,8 @@ app = swift.Swift(FakeApp(), {"nonblocking_notify": "True", "send_queue_size": "1"}) - req = FakeRequest('/1.0/account/container/obj', - environ={'REQUEST_METHOD': 'GET'}) + req = self.get_request('/1.0/account/container/obj', + environ={'REQUEST_METHOD': 'GET'}) with mock.patch('oslo_messaging.Notifier.info', side_effect=lambda *args, **kwargs: notified.set() ) as notify: @@ -118,7 +121,7 @@ def test_put(self): app = swift.Swift(FakeApp(body=['']), {}) - req = FakeRequest( + req = self.get_request( '/1.0/account/container/obj', environ={'REQUEST_METHOD': 'PUT', 'wsgi.input': @@ -139,7 +142,7 @@ def test_post(self): app = swift.Swift(FakeApp(body=['']), {}) - req = FakeRequest( + req = self.get_request( '/1.0/account/container/obj', environ={'REQUEST_METHOD': 'POST', 'wsgi.input': six.moves.cStringIO('some other stuff')}) @@ -159,8 +162,8 @@ def test_head(self): app = swift.Swift(FakeApp(body=['']), {}) - req = FakeRequest('/1.0/account/container/obj', - environ={'REQUEST_METHOD': 'HEAD'}) + req = self.get_request('/1.0/account/container/obj', + environ={'REQUEST_METHOD': 'HEAD'}) with mock.patch('oslo_messaging.Notifier.info') as notify: list(app(req.environ, self.start_response)) self.assertEqual(1, len(notify.call_args_list)) @@ -176,8 +179,8 @@ def test_bogus_request(self): """Test even for arbitrary request method, this will still work.""" app = swift.Swift(FakeApp(body=['']), {}) - req = FakeRequest('/1.0/account/container/obj', - environ={'REQUEST_METHOD': 'BOGUS'}) + req = self.get_request('/1.0/account/container/obj', + environ={'REQUEST_METHOD': 'BOGUS'}) with mock.patch('oslo_messaging.Notifier.info') as notify: list(app(req.environ, self.start_response)) self.assertEqual(1, len(notify.call_args_list)) @@ -192,8 +195,8 @@ def test_get_container(self): app = swift.Swift(FakeApp(), {}) - req = FakeRequest('/1.0/account/container', - environ={'REQUEST_METHOD': 'GET'}) + req = self.get_request('/1.0/account/container', + environ={'REQUEST_METHOD': 'GET'}) with mock.patch('oslo_messaging.Notifier.info') as notify: list(app(req.environ, self.start_response)) self.assertEqual(1, len(notify.call_args_list)) @@ -210,8 +213,8 @@ def test_no_metadata_headers(self): app = swift.Swift(FakeApp(), {}) - req = FakeRequest('/1.0/account/container', - environ={'REQUEST_METHOD': 'GET'}) + req = self.get_request('/1.0/account/container', + environ={'REQUEST_METHOD': 'GET'}) with mock.patch('oslo_messaging.Notifier.info') as notify: list(app(req.environ, self.start_response)) self.assertEqual(1, len(notify.call_args_list)) @@ -230,11 +233,11 @@ app = swift.Swift(FakeApp(), { 'metadata_headers': 'X_VAR1, x-var2, x-var3, token' }) - req = FakeRequest('/1.0/account/container', - environ={'REQUEST_METHOD': 'GET'}, - headers={'X_VAR1': 'value1', - 'X_VAR2': 'value2', - 'TOKEN': 'token'}) + req = self.get_request('/1.0/account/container', + environ={'REQUEST_METHOD': 'GET'}, + headers={'X_VAR1': 'value1', + 'X_VAR2': 'value2', + 'TOKEN': 'token'}) with mock.patch('oslo_messaging.Notifier.info') as notify: list(app(req.environ, self.start_response)) self.assertEqual(1, len(notify.call_args_list)) @@ -258,9 +261,9 @@ 'metadata_headers': 'unicode' }) uni = u'\xef\xbd\xa1\xef\xbd\xa5' - req = FakeRequest('/1.0/account/container', - environ={'REQUEST_METHOD': 'GET'}, - headers={'UNICODE': uni}) + req = self.get_request('/1.0/account/container', + environ={'REQUEST_METHOD': 'GET'}, + headers={'UNICODE': uni}) with mock.patch('oslo_messaging.Notifier.info') as notify: list(app(req.environ, self.start_response)) self.assertEqual(1, len(notify.call_args_list)) @@ -281,8 +284,8 @@ app = swift.Swift(FakeApp(), { 'metadata_headers': 'x-var3' }) - req = FakeRequest('/1.0/account/container', - environ={'REQUEST_METHOD': 'GET'}) + req = self.get_request('/1.0/account/container', + environ={'REQUEST_METHOD': 'GET'}) with mock.patch('oslo_messaging.Notifier.info') as notify: list(app(req.environ, self.start_response)) self.assertEqual(1, len(notify.call_args_list)) @@ -316,8 +319,8 @@ def test_emit_event_fail(self, mocked_func): mocked_func.side_effect = Exception("a exception") app = swift.Swift(FakeApp(body=["test"]), {}) - req = FakeRequest('/1.0/account/container', - environ={'REQUEST_METHOD': 'GET'}) + req = self.get_request('/1.0/account/container', + environ={'REQUEST_METHOD': 'GET'}) with mock.patch('oslo_messaging.Notifier.info') as notify: resp = list(app(req.environ, self.start_response)) self.assertEqual(0, len(notify.call_args_list)) @@ -325,8 +328,8 @@ def test_reseller_prefix(self): app = swift.Swift(FakeApp(), {}) - req = FakeRequest('/1.0/AUTH_account/container/obj', - environ={'REQUEST_METHOD': 'GET'}) + req = self.get_request('/1.0/AUTH_account/container/obj', + environ={'REQUEST_METHOD': 'GET'}) with mock.patch('oslo_messaging.Notifier.info') as notify: list(app(req.environ, self.start_response)) self.assertEqual(1, len(notify.call_args_list)) @@ -459,3 +462,14 @@ app.ignore_projects) warning.assert_called_once_with( "fail to find project '%s' in keystone", "gnocchi") + + +class TestSwiftS3Api(TestSwift): + + def get_request(self, path, environ=None, headers=None): + # Add Swift Path in environ, provided by swift s3api middleware + environ['swift.backend_path'] = path + # Emulate S3 api PATH_INFO by removing /v1 and account parts + path = '/' + path.split('/', 3)[-1] + + return FakeRequest(path, environ=environ, headers=headers) diff -Nru python-ceilometermiddleware-2.0.0/ceilometermiddleware.egg-info/pbr.json python-ceilometermiddleware-2.1.0/ceilometermiddleware.egg-info/pbr.json --- python-ceilometermiddleware-2.0.0/ceilometermiddleware.egg-info/pbr.json 2019-12-13 09:54:30.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/ceilometermiddleware.egg-info/pbr.json 2020-06-18 16:48:41.000000000 +0000 @@ -1 +1 @@ -{"git_version": "b50cc03", "is_release": true} \ No newline at end of file +{"git_version": "b3613ff", "is_release": true} \ No newline at end of file diff -Nru python-ceilometermiddleware-2.0.0/ceilometermiddleware.egg-info/PKG-INFO python-ceilometermiddleware-2.1.0/ceilometermiddleware.egg-info/PKG-INFO --- python-ceilometermiddleware-2.0.0/ceilometermiddleware.egg-info/PKG-INFO 2019-12-13 09:54:30.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/ceilometermiddleware.egg-info/PKG-INFO 2020-06-18 16:48:41.000000000 +0000 @@ -1,8 +1,8 @@ -Metadata-Version: 1.1 +Metadata-Version: 1.2 Name: ceilometermiddleware -Version: 2.0.0 +Version: 2.1.0 Summary: OpenStack Telemetry middleware for generating metrics -Home-page: http://docs.openstack.org/developer/ceilometermiddleware +Home-page: https://docs.openstack.org/ceilometermiddleware/latest/ Author: OpenStack Author-email: openstack-discuss@lists.openstack.org License: UNKNOWN @@ -32,6 +32,10 @@ Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: Implementation :: CPython +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 +Requires-Python: >=3.6 diff -Nru python-ceilometermiddleware-2.0.0/ceilometermiddleware.egg-info/requires.txt python-ceilometermiddleware-2.1.0/ceilometermiddleware.egg-info/requires.txt --- python-ceilometermiddleware-2.0.0/ceilometermiddleware.egg-info/requires.txt 2019-12-13 09:54:30.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/ceilometermiddleware.egg-info/requires.txt 2020-06-18 16:48:41.000000000 +0000 @@ -1,8 +1,8 @@ +keystoneauth1>=2.18.0 oslo.config>=3.9.0 oslo.messaging>=5.2.0 oslo.utils pbr>=1.6 pycadf!=2.0.0,>=1.1.0 -six>=1.9.0 -keystoneauth1>=2.18.0 python-keystoneclient>=3.8.0 +six>=1.9.0 diff -Nru python-ceilometermiddleware-2.0.0/ceilometermiddleware.egg-info/SOURCES.txt python-ceilometermiddleware-2.1.0/ceilometermiddleware.egg-info/SOURCES.txt --- python-ceilometermiddleware-2.0.0/ceilometermiddleware.egg-info/SOURCES.txt 2019-12-13 09:54:30.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/ceilometermiddleware.egg-info/SOURCES.txt 2020-06-18 16:48:41.000000000 +0000 @@ -7,7 +7,6 @@ HACKING.rst LICENSE README.rst -babel.cfg requirements.txt setup.cfg setup.py @@ -47,5 +46,6 @@ releasenotes/source/stein.rst releasenotes/source/train.rst releasenotes/source/unreleased.rst +releasenotes/source/ussuri.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder \ No newline at end of file diff -Nru python-ceilometermiddleware-2.0.0/ChangeLog python-ceilometermiddleware-2.1.0/ChangeLog --- python-ceilometermiddleware-2.0.0/ChangeLog 2019-12-13 09:54:30.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/ChangeLog 2020-06-18 16:48:41.000000000 +0000 @@ -1,6 +1,19 @@ CHANGES ======= +2.1.0 +----- + +* Switch to newer openstackdocstheme and reno versions +* Further Cleanup py27 support +* Bump default tox env from py37 to py38 +* Add py38 package metadata +* Use unittest.mock instead of third party mock +* Add Python3 victoria unit tests +* Update master for stable/ussuri +* Use swift.backend\_path from Swift/s3api to extract account/container +* Cleanup py27 support + 2.0.0 ----- diff -Nru python-ceilometermiddleware-2.0.0/debian/changelog python-ceilometermiddleware-2.1.0/debian/changelog --- python-ceilometermiddleware-2.0.0/debian/changelog 2020-01-31 13:03:47.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/debian/changelog 2020-07-24 09:24:54.000000000 +0000 @@ -1,3 +1,11 @@ +python-ceilometermiddleware (2.1.0-0ubuntu1) groovy; urgency=medium + + * New upstream release for OpenStack Victoria. + * d/control: Align (Build-)Depends with upstream. + * d/p/skip-tests.patch: Refreshed. + + -- Chris MacNaughton Fri, 24 Jul 2020 09:24:54 +0000 + python-ceilometermiddleware (2.0.0-0ubuntu1) focal; urgency=low * Merge from Debian unstable. Remaining changes: diff -Nru python-ceilometermiddleware-2.0.0/debian/control python-ceilometermiddleware-2.1.0/debian/control --- python-ceilometermiddleware-2.0.0/debian/control 2020-01-31 13:03:47.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/debian/control 2020-07-24 09:24:54.000000000 +0000 @@ -12,14 +12,14 @@ python3-all, python3-pbr (>= 2.0.0), python3-setuptools, - python3-sphinx (>= 1.6.2), + python3-sphinx (>= 2.0.0), Build-Depends-Indep: python3-betamax (>= 0.7.0), python3-coverage (>= 3.6), python3-keystoneauth1 (>= 2.18.0), python3-keystoneclient (>= 1:3.8.0), python3-mock (>= 1.2), - python3-openstackdocstheme (>= 1.17.0), + python3-openstackdocstheme (>= 2.2.1), python3-oslo.config (>= 1:3.9.0), python3-oslo.messaging (>= 5.2.0), python3-oslo.utils, diff -Nru python-ceilometermiddleware-2.0.0/debian/patches/skip-tests.patch python-ceilometermiddleware-2.1.0/debian/patches/skip-tests.patch --- python-ceilometermiddleware-2.0.0/debian/patches/skip-tests.patch 2020-01-31 13:03:47.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/debian/patches/skip-tests.patch 2020-07-24 09:24:54.000000000 +0000 @@ -4,8 +4,8 @@ --- a/ceilometermiddleware/tests/test_swift.py +++ b/ceilometermiddleware/tests/test_swift.py -@@ -17,6 +17,8 @@ - import mock +@@ -17,6 +17,8 @@ from unittest import mock + from oslo_config import cfg import six +import sys @@ -13,16 +13,16 @@ from ceilometermiddleware import swift from ceilometermiddleware.tests import base as tests_base -@@ -72,6 +74,8 @@ - def start_response(*args): - pass +@@ -75,6 +77,8 @@ class TestSwift(tests_base.TestCase): + def get_request(self, path, environ=None, headers=None): + return FakeRequest(path, environ=environ, headers=headers) + @testtools.skipIf(sys.version_info.major == 3 and sys.version_info.minor == 7, + "bug/1785317: Skipped by Ubuntu, tests fail for Python 3.7") def test_get(self): app = swift.Swift(FakeApp(), {}) - req = FakeRequest('/1.0/account/container/obj', -@@ -91,6 +95,8 @@ + req = self.get_request('/1.0/account/container/obj', +@@ -94,6 +98,8 @@ class TestSwift(tests_base.TestCase): self.assertEqual('obj', metadata['object']) self.assertEqual('get', data[2]['target']['action']) @@ -31,7 +31,7 @@ def test_get_background(self): notified = threading.Event() app = swift.Swift(FakeApp(), -@@ -190,6 +196,8 @@ +@@ -193,6 +199,8 @@ class TestSwift(tests_base.TestCase): self.assertEqual('obj', metadata['object']) self.assertEqual('bogus', data[2]['target']['action']) @@ -39,8 +39,8 @@ + "bug/1785317: Skipped by Ubuntu, tests fail for Python 3.7") def test_get_container(self): app = swift.Swift(FakeApp(), {}) - req = FakeRequest('/1.0/account/container', -@@ -208,6 +216,8 @@ + req = self.get_request('/1.0/account/container', +@@ -211,6 +219,8 @@ class TestSwift(tests_base.TestCase): self.assertIsNone(metadata['object']) self.assertEqual('get', data[2]['target']['action']) @@ -48,8 +48,8 @@ + "bug/1785317: Skipped by Ubuntu, tests fail for Python 3.7") def test_no_metadata_headers(self): app = swift.Swift(FakeApp(), {}) - req = FakeRequest('/1.0/account/container', -@@ -226,6 +236,8 @@ + req = self.get_request('/1.0/account/container', +@@ -229,6 +239,8 @@ class TestSwift(tests_base.TestCase): if k.startswith('http_header_')] self.assertEqual(0, len(http_headers)) @@ -58,7 +58,7 @@ def test_metadata_headers(self): app = swift.Swift(FakeApp(), { 'metadata_headers': 'X_VAR1, x-var2, x-var3, token' -@@ -253,6 +265,8 @@ +@@ -256,6 +268,8 @@ class TestSwift(tests_base.TestCase): self.assertEqual('token', metadata['http_header_token']) self.assertFalse('http_header_x_var3' in metadata) @@ -67,7 +67,7 @@ def test_metadata_headers_unicode(self): app = swift.Swift(FakeApp(), { 'metadata_headers': 'unicode' -@@ -277,6 +291,8 @@ +@@ -280,6 +294,8 @@ class TestSwift(tests_base.TestCase): self.assertEqual(six.text_type(uni), metadata['http_header_unicode']) @@ -76,7 +76,7 @@ def test_metadata_headers_on_not_existing_header(self): app = swift.Swift(FakeApp(), { 'metadata_headers': 'x-var3' -@@ -297,6 +313,8 @@ +@@ -300,6 +316,8 @@ class TestSwift(tests_base.TestCase): if k.startswith('http_header_')] self.assertEqual(0, len(http_headers)) @@ -85,7 +85,7 @@ def test_bogus_path(self): app = swift.Swift(FakeApp(), {}) req = FakeRequest('/5.0//', -@@ -305,6 +323,8 @@ +@@ -308,6 +326,8 @@ class TestSwift(tests_base.TestCase): list(app(req.environ, self.start_response)) self.assertEqual(0, len(notify.call_args_list)) @@ -94,7 +94,7 @@ def test_missing_resource_id(self): app = swift.Swift(FakeApp(), {}) req = FakeRequest('/v1/', environ={'REQUEST_METHOD': 'GET'}) -@@ -312,6 +332,8 @@ +@@ -315,6 +335,8 @@ class TestSwift(tests_base.TestCase): list(app(req.environ, self.start_response)) self.assertEqual(0, len(notify.call_args_list)) @@ -103,7 +103,7 @@ @mock.patch('six.moves.urllib.parse.quote') def test_emit_event_fail(self, mocked_func): mocked_func.side_effect = Exception("a exception") -@@ -323,6 +345,8 @@ +@@ -326,6 +348,8 @@ class TestSwift(tests_base.TestCase): self.assertEqual(0, len(notify.call_args_list)) self.assertEqual(["test"], resp) @@ -111,8 +111,8 @@ + "bug/1785317: Skipped by Ubuntu, tests fail for Python 3.7") def test_reseller_prefix(self): app = swift.Swift(FakeApp(), {}) - req = FakeRequest('/1.0/AUTH_account/container/obj', -@@ -333,6 +357,8 @@ + req = self.get_request('/1.0/AUTH_account/container/obj', +@@ -336,6 +360,8 @@ class TestSwift(tests_base.TestCase): data = notify.call_args_list[0][0] self.assertEqual("account", data[2]['target']['id']) @@ -121,7 +121,7 @@ def test_custom_prefix(self): app = swift.Swift(FakeApp(), {'reseller_prefix': 'CUSTOM_'}) req = FakeRequest('/1.0/CUSTOM_account/container/obj', -@@ -343,6 +369,8 @@ +@@ -346,6 +372,8 @@ class TestSwift(tests_base.TestCase): data = notify.call_args_list[0][0] self.assertEqual("account", data[2]['target']['id']) @@ -130,7 +130,7 @@ def test_incomplete_reseller_prefix(self): # Custom reseller prefix set, but without trailing underscore app = swift.Swift( -@@ -355,6 +383,8 @@ +@@ -358,6 +386,8 @@ class TestSwift(tests_base.TestCase): data = notify.call_args_list[0][0] self.assertEqual("account", data[2]['target']['id']) @@ -139,7 +139,7 @@ def test_invalid_reseller_prefix(self): app = swift.Swift( FakeApp(), {'reseller_prefix': 'AUTH_'}) -@@ -366,6 +396,8 @@ +@@ -369,6 +399,8 @@ class TestSwift(tests_base.TestCase): data = notify.call_args_list[0][0] self.assertEqual("1.0/admin/bucket", data[2]['target']['id']) @@ -148,7 +148,7 @@ def test_ignore_requests_from_project(self): app = swift.Swift(FakeApp(), {'ignore_projects': 'skip_proj'}) -@@ -379,6 +411,8 @@ +@@ -382,6 +414,8 @@ class TestSwift(tests_base.TestCase): list(app(req.environ, self.start_response)) self.assertEqual(calls, len(notify.call_args_list)) @@ -157,7 +157,7 @@ def test_ignore_requests_from_multiple_projects(self): app = swift.Swift(FakeApp(), {'ignore_projects': 'skip_proj, ignore'}) -@@ -393,6 +427,8 @@ +@@ -396,6 +430,8 @@ class TestSwift(tests_base.TestCase): list(app(req.environ, self.start_response)) self.assertEqual(calls, len(notify.call_args_list)) @@ -166,7 +166,7 @@ def test_empty_reseller_prefix(self): app = swift.Swift( FakeApp(), {'reseller_prefix': 'CUSTOM'}) -@@ -419,6 +455,8 @@ +@@ -422,6 +458,8 @@ class TestSwift(tests_base.TestCase): self.assertIsNone(metadata['object']) self.assertEqual('head', data[2]['target']['action']) diff -Nru python-ceilometermiddleware-2.0.0/doc/source/conf.py python-ceilometermiddleware-2.1.0/doc/source/conf.py --- python-ceilometermiddleware-2.0.0/doc/source/conf.py 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/doc/source/conf.py 2020-06-18 16:47:51.000000000 +0000 @@ -48,7 +48,7 @@ add_module_names = True # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = 'native' # -- Options for HTML output -------------------------------------------------- @@ -77,5 +77,6 @@ #intersphinx_mapping = {'http://docs.python.org/': None} # openstackdocstheme options -repository_name = 'openstack/ceilometermiddleware' -bug_project = 'http://bugs.launchpad.net/ceilometermiddleware' +openstackdocs_repo_name = 'openstack/ceilometermiddleware' +openstackdocs_auto_name = False +openstackdocs_use_storyboard = True diff -Nru python-ceilometermiddleware-2.0.0/PKG-INFO python-ceilometermiddleware-2.1.0/PKG-INFO --- python-ceilometermiddleware-2.0.0/PKG-INFO 2019-12-13 09:54:30.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/PKG-INFO 2020-06-18 16:48:41.000000000 +0000 @@ -1,8 +1,8 @@ -Metadata-Version: 1.1 +Metadata-Version: 1.2 Name: ceilometermiddleware -Version: 2.0.0 +Version: 2.1.0 Summary: OpenStack Telemetry middleware for generating metrics -Home-page: http://docs.openstack.org/developer/ceilometermiddleware +Home-page: https://docs.openstack.org/ceilometermiddleware/latest/ Author: OpenStack Author-email: openstack-discuss@lists.openstack.org License: UNKNOWN @@ -32,6 +32,10 @@ Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: Implementation :: CPython +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 +Requires-Python: >=3.6 diff -Nru python-ceilometermiddleware-2.0.0/releasenotes/source/conf.py python-ceilometermiddleware-2.1.0/releasenotes/source/conf.py --- python-ceilometermiddleware-2.0.0/releasenotes/source/conf.py 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/releasenotes/source/conf.py 2020-06-18 16:47:51.000000000 +0000 @@ -68,9 +68,9 @@ version = '' # openstackdocstheme options -repository_name = 'openstack/ceilometermiddleware' -bug_project = 'ceilometermiddleware' -bug_tag = '' +openstackdocs_repo_name = 'openstack/ceilometermiddleware' +openstackdocs_use_storyboard = True +openstackdocs_auto_name = False # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -102,7 +102,7 @@ # show_authors = False # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = 'native' # A list of ignored prefixes for module index sorting. # modindex_common_prefix = [] @@ -151,10 +151,6 @@ # directly to the root of the documentation. # html_extra_path = [] -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -html_last_updated_fmt = '%Y-%m-%d %H:%M' - # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. # html_use_smartypants = True diff -Nru python-ceilometermiddleware-2.0.0/releasenotes/source/index.rst python-ceilometermiddleware-2.1.0/releasenotes/source/index.rst --- python-ceilometermiddleware-2.0.0/releasenotes/source/index.rst 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/releasenotes/source/index.rst 2020-06-18 16:47:51.000000000 +0000 @@ -6,6 +6,7 @@ :maxdepth: 1 unreleased + ussuri train stein queens diff -Nru python-ceilometermiddleware-2.0.0/releasenotes/source/ussuri.rst python-ceilometermiddleware-2.1.0/releasenotes/source/ussuri.rst --- python-ceilometermiddleware-2.0.0/releasenotes/source/ussuri.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/releasenotes/source/ussuri.rst 2020-06-18 16:47:51.000000000 +0000 @@ -0,0 +1,6 @@ +=========================== +Ussuri Series Release Notes +=========================== + +.. release-notes:: + :branch: stable/ussuri diff -Nru python-ceilometermiddleware-2.0.0/setup.cfg python-ceilometermiddleware-2.1.0/setup.cfg --- python-ceilometermiddleware-2.0.0/setup.cfg 2019-12-13 09:54:30.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/setup.cfg 2020-06-18 16:48:41.000000000 +0000 @@ -5,7 +5,8 @@ README.rst author = OpenStack author-email = openstack-discuss@lists.openstack.org -home-page = http://docs.openstack.org/developer/ceilometermiddleware +home-page = https://docs.openstack.org/ceilometermiddleware/latest/ +python-requires = >=3.6 classifier = Environment :: OpenStack Intended Audience :: Information Technology @@ -13,9 +14,12 @@ License :: OSI Approved :: Apache Software License Operating System :: POSIX :: Linux Programming Language :: Python + Programming Language :: Python :: Implementation :: CPython + Programming Language :: Python :: 3 :: Only Programming Language :: Python :: 3 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 [files] packages = @@ -25,28 +29,6 @@ paste.filter_factory = swift = ceilometermiddleware.swift:filter_factory -[build_sphinx] -source-dir = doc/source -build-dir = doc/build -all_files = 1 - -[upload_sphinx] -upload-dir = doc/build/html - -[compile_catalog] -directory = ceilometermiddleware/locale -domain = ceilometermiddleware - -[update_catalog] -domain = ceilometermiddleware -output_dir = ceilometermiddleware/locale -input_file = ceilometermiddleware/locale/ceilometermiddleware.pot - -[extract_messages] -keywords = _ gettext ngettext l_ lazy_gettext -mapping_file = babel.cfg -output_file = ceilometermiddleware/locale/ceilometermiddleware.pot - [egg_info] tag_build = tag_date = 0 diff -Nru python-ceilometermiddleware-2.0.0/setup.py python-ceilometermiddleware-2.1.0/setup.py --- python-ceilometermiddleware-2.0.0/setup.py 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/setup.py 2020-06-18 16:47:51.000000000 +0000 @@ -13,17 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT import setuptools -# In python < 2.7.4, a lazy loading of package `pbr` will break -# setuptools if some other modules registered functions in `atexit`. -# solution from: http://bugs.python.org/issue15881#msg170215 -try: - import multiprocessing # noqa -except ImportError: - pass - setuptools.setup( setup_requires=['pbr>=1.8'], pbr=True) diff -Nru python-ceilometermiddleware-2.0.0/test-requirements.txt python-ceilometermiddleware-2.1.0/test-requirements.txt --- python-ceilometermiddleware-2.0.0/test-requirements.txt 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/test-requirements.txt 2020-06-18 16:47:51.000000000 +0000 @@ -4,11 +4,9 @@ coverage>=3.6 # Apache-2.0 python-subunit>=0.0.18 # Apache-2.0/BSD -sphinx!=1.6.6,!=1.6.7,<2.0.0;python_version=='2.7' # BSD -sphinx!=1.6.6,!=1.6.7,!=2.1.0;python_version>='3.4' # BSD -openstackdocstheme>=1.17.0 # Apache-2.0 +sphinx>=2.0.0,!=2.1.0 # BSD +openstackdocstheme>=2.2.1 # Apache-2.0 oslotest>=1.10.0 # Apache-2.0 stestr>=2.0.0 # Apache-2.0 -mock>=1.2 # BSD -reno>=0.1.1 # Apache-2.0 +reno>=3.1.0 # Apache-2.0 betamax>=0.7.0 # Apache-2.0 diff -Nru python-ceilometermiddleware-2.0.0/tox.ini python-ceilometermiddleware-2.1.0/tox.ini --- python-ceilometermiddleware-2.0.0/tox.ini 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/tox.ini 2020-06-18 16:47:51.000000000 +0000 @@ -1,29 +1,28 @@ [tox] -minversion = 1.8 -envlist = py37,pypy,pep8,releasenotes +minversion = 3.1.1 +envlist = py38,pypy,pep8,releasenotes skipsdist = True +ignore_basepython_conflict = True [testenv] +basepython = python3 usedevelop = True -# NOTE(tonyb): This project has chosen to *NOT* consume upper-constraints.txt -install_command = pip install -U {opts} {packages} setenv = VIRTUAL_ENV={envdir} -deps = -r{toxinidir}/requirements.txt +deps = + -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} + -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt commands = stestr run --slowest {posargs} [testenv:pep8] -basepython = python3 -deps = hacking>=0.12,<0.13 +deps = hacking>=3.0.1,<3.1.0 commands = flake8 [testenv:venv] -basepython = python3 commands = {posargs} [testenv:cover] -basepython = python3 setenv = PYTHON=coverage run --source $project --parallel-mode commands = @@ -33,17 +32,16 @@ coverage xml -o cover/coverage.xml [testenv:docs] -basepython = python3 commands = sphinx-build -W -b html -d doc/build/doctrees doc/source doc/build/html [testenv:debug] -basepython = python3 commands = oslo_debug_helper {posargs} [testenv:releasenotes] -basepython = python3 commands = sphinx-build -a -E -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html [flake8] show-source = True +# W503 line break before binary operator +ignore = W503 exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build diff -Nru python-ceilometermiddleware-2.0.0/.zuul.yaml python-ceilometermiddleware-2.1.0/.zuul.yaml --- python-ceilometermiddleware-2.0.0/.zuul.yaml 2019-12-13 09:53:49.000000000 +0000 +++ python-ceilometermiddleware-2.1.0/.zuul.yaml 2020-06-18 16:47:51.000000000 +0000 @@ -6,7 +6,7 @@ - project: templates: - - openstack-python3-ussuri-jobs + - openstack-python3-victoria-jobs - publish-openstack-docs-pti - release-notes-jobs-python3 check: