Hello community,

here is the log from the commit of package python-oslo.log for openSUSE:Factory 
checked in at 2018-01-17 21:56:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.log (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.log.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.log"

Wed Jan 17 21:56:37 2018 rev:10 rq:565769 version:3.36.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.log/python-oslo.log.changes  
2017-08-28 15:29:46.426399753 +0200
+++ /work/SRC/openSUSE:Factory/.python-oslo.log.new/python-oslo.log.changes     
2018-01-17 21:56:39.155877258 +0100
@@ -1,0 +2,21 @@
+Mon Jan 15 11:55:42 UTC 2018 - [email protected]
+
+- update to version 3.36.0
+  - Update the documentation link for doc migration
+  - Add release note for use_json option
+  - Truncate error_summary if exc_info not explicitly passed
+  - Update reno for stable/pike
+  - Remove checks for auth_token in JSON-based formatter tests
+  - JSONFormatter convert unserializable with repr()
+  - Remove setting of version/release from releasenotes
+  - Add option to use JSON formatter
+  - Imported Translations from Zanata
+  - Cleanup test-requirements
+  - Allow logging of unhashable exceptions in Python 3
+  - Migrate to Zuul v3
+  - Zuul: add file extension to playbook path
+  - Update the documentation link
+  - Updated from global requirements
+  - Capture context in its own key for JSON-based formatters
+
+-------------------------------------------------------------------

Old:
----
  oslo.log-3.30.0.tar.gz

New:
----
  oslo.log-3.36.0.tar.gz

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

Other differences:
------------------
++++++ python-oslo.log.spec ++++++
--- /var/tmp/diff_new_pack.FcF4vJ/_old  2018-01-17 21:56:40.223827303 +0100
+++ /var/tmp/diff_new_pack.FcF4vJ/_new  2018-01-17 21:56:40.251825994 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-oslo.log
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,85 +16,119 @@
 #
 
 
-%global sname oslo.log
 Name:           python-oslo.log
-Version:        3.30.0
+Version:        3.36.0
 Release:        0
 Summary:        OpenStack log library
 License:        Apache-2.0
 Group:          Development/Languages/Python
-Url:            https://launchpad.net/%{sname}
-Source0:        
https://pypi.io/packages/source/o/%{sname}/%{sname}-%{version}.tar.gz
+Url:            https://launchpad.net/oslo.log
+Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.log/oslo.log-3.36.0.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python-devel
-BuildRequires:  python-mock >= 2.0
-BuildRequires:  python-monotonic >= 0.6
-BuildRequires:  python-oslo.config >= 4.0.0
-BuildRequires:  python-oslo.context >= 2.14.0
-BuildRequires:  python-oslo.i18n >= 2.1.0
-BuildRequires:  python-oslo.serialization >= 1.10.0
-BuildRequires:  python-oslo.utils >= 3.20.0
-BuildRequires:  python-oslotest >= 1.10.0
-BuildRequires:  python-pbr >= 2.0.0
-BuildRequires:  python-pyinotify >= 0.9.6
-BuildRequires:  python-python-dateutil >= 2.4.2
-BuildRequires:  python-python-subunit >= 0.0.18
-BuildRequires:  python-six >= 1.9.0
-BuildRequires:  python-testrepository >= 0.0.18
-BuildRequires:  python-testscenarios >= 0.4
-BuildRequires:  python-testtools >= 1.4.0
+BuildRequires:  python2-mock >= 2.0.0
+BuildRequires:  python2-monotonic >= 0.6
+BuildRequires:  python2-oslo.config >= 4.6.0
+BuildRequires:  python2-oslo.context >= 2.19.2
+BuildRequires:  python2-oslo.i18n >= 3.15.3
+BuildRequires:  python2-oslo.serialization >= 2.18.0
+BuildRequires:  python2-oslo.utils >= 3.31.0
+BuildRequires:  python2-oslotest >= 1.10.0
+BuildRequires:  python2-pbr >= 2.0.0
+BuildRequires:  python2-pyinotify >= 0.9.6
+BuildRequires:  python2-python-dateutil >= 2.4.2
+BuildRequires:  python2-python-subunit >= 1.0.0
+BuildRequires:  python2-six >= 1.10.0
+BuildRequires:  python2-testrepository >= 0.0.18
+BuildRequires:  python2-testscenarios >= 0.4
+BuildRequires:  python2-testtools >= 2.2.0
+BuildRequires:  python3-devel
+BuildRequires:  python3-mock >= 2.0.0
+BuildRequires:  python3-monotonic >= 0.6
+BuildRequires:  python3-oslo.config >= 4.6.0
+BuildRequires:  python3-oslo.context >= 2.19.2
+BuildRequires:  python3-oslo.i18n >= 3.15.3
+BuildRequires:  python3-oslo.serialization >= 2.18.0
+BuildRequires:  python3-oslo.utils >= 3.31.0
+BuildRequires:  python3-oslotest >= 1.10.0
+BuildRequires:  python3-pbr >= 2.0.0
+BuildRequires:  python3-pyinotify >= 0.9.6
+BuildRequires:  python3-python-dateutil >= 2.4.2
+BuildRequires:  python3-python-subunit >= 1.0.0
+BuildRequires:  python3-six >= 1.10.0
+BuildRequires:  python3-testrepository >= 0.0.18
+BuildRequires:  python3-testscenarios >= 0.4
+BuildRequires:  python3-testtools >= 2.2.0
 Requires:       python-debtcollector >= 1.2.0
 Requires:       python-monotonic >= 0.6
-Requires:       python-oslo.config >= 4.0.0
-Requires:       python-oslo.context >= 2.14.0
-Requires:       python-oslo.i18n >= 2.1.0
-Requires:       python-oslo.serialization >= 1.10.0
-Requires:       python-oslo.utils >= 3.20.0
+Requires:       python-oslo.config >= 4.6.0
+Requires:       python-oslo.context >= 2.19.2
+Requires:       python-oslo.i18n >= 3.15.3
+Requires:       python-oslo.serialization >= 2.18.0
+Requires:       python-oslo.utils >= 3.31.0
 Requires:       python-pyinotify >= 0.9.6
 Requires:       python-python-dateutil >= 2.4.2
-Requires:       python-six >= 1.9.0
+Requires:       python-six >= 1.10.0
 BuildArch:      noarch
+%if 0%{?suse_version}
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
+%else
+# on RDO, update-alternatives is in chkconfig
+Requires(post): chkconfig
+Requires(postun): chkconfig
+%endif
+%python_subpackages
 
 %description
 OpenStack logging configuration library provides standardized configuration
 for all openstack projects.It also provides custom formatters, handlers and
 support for context specific logging (like resource id's etc).
 
-%package doc
+%package -n python-oslo.log-doc
 Summary:        Documentation for OpenStack log library
 Group:          Development/Languages/Python
 BuildRequires:  python-Sphinx
-BuildRequires:  python-openstackdocstheme >= 1.11.0
+BuildRequires:  python-openstackdocstheme >= 1.17.0
 
-%description doc
+%description -n python-oslo.log-doc
 Documentation for the oslo.log library.
 
 %prep
-%autosetup -n %{sname}-%{version} -p1
+%autosetup -p1 -n oslo.log-3.36.0
 %py_req_cleanup
 sed -i 's/^warning-is-error.*/warning-is-error = 0/g' setup.cfg
 
 %build
-%{py2_build}
+%{python_build}
 
 # generate html docs
 %{__python2} setup.py build_sphinx
 rm -rf doc/build/html/.{doctrees,buildinfo}
 
 %install
-%{py2_install}
+%{python_install}
+%python_clone -a %{buildroot}%{_bindir}/convert-json
+
+%post
+%python_install_alternative convert-json
+
+%postun
+%python_uninstall_alternative convert-json
 
 %check
-testr init && testr run --parallel
+%{python_expand rm -rf .testrepository
+$python setup.py testr
+}
 
-%files
+%files %{python_files}
 %license LICENSE
 %doc ChangeLog README.rst
-%{python2_sitelib}/oslo_log
-%{python2_sitelib}/*.egg-info
-%{_bindir}/convert-json
+%{python_sitelib}/oslo_log
+%{python_sitelib}/*.egg-info
+%python_alternative %{_bindir}/convert-json
 
-%files doc
+%files -n python-oslo.log-doc
 %license LICENSE
 %doc doc/build/html
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.FcF4vJ/_old  2018-01-17 21:56:40.339821878 +0100
+++ /var/tmp/diff_new_pack.FcF4vJ/_new  2018-01-17 21:56:40.339821878 +0100
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/pike/openstack/oslo.log/oslo.log.spec.j2</param>
+    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/master/openstack/oslo.log/oslo.log.spec.j2</param>
     <param name="output-name">python-oslo.log.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/pike/global-requirements.txt</param>
+    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/master/requirements.txt</param>
     <param name="changelog-email">[email protected]</param>
     <param name="changelog-provider">gh,openstack,oslo.log</param>
   </service>

++++++ oslo.log-3.30.0.tar.gz -> oslo.log-3.36.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/.zuul.yaml 
new/oslo.log-3.36.0/.zuul.yaml
--- old/oslo.log-3.30.0/.zuul.yaml      1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.log-3.36.0/.zuul.yaml      2018-01-08 15:13:47.000000000 +0100
@@ -0,0 +1,21 @@
+- job:
+    name: oslo.log-src-grenade-devstack
+    parent: legacy-dsvm-base
+    voting: false
+    irrelevant-files:
+      - ^(test-|)requirements.txt$
+      - ^setup.cfg$
+    post-run: playbooks/legacy/oslo.log-src-grenade-devstack/post.yaml
+    required-projects:
+      - openstack-dev/grenade
+      - openstack-infra/devstack-gate
+      - openstack/oslo.log
+    run: playbooks/legacy/oslo.log-src-grenade-devstack/run.yaml
+    timeout: 10800
+
+- project:
+    name: openstack/oslo.log
+    check:
+      jobs:
+        - oslo.log-src-grenade-devstack
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/AUTHORS new/oslo.log-3.36.0/AUTHORS
--- old/oslo.log-3.30.0/AUTHORS 2017-07-18 15:10:17.000000000 +0200
+++ new/oslo.log-3.36.0/AUTHORS 2018-01-08 15:15:56.000000000 +0100
@@ -55,6 +55,7 @@
 Ian Cordasco <[email protected]>
 Ihar Hrachyshka <[email protected]>
 James Carey <[email protected]>
+James E. Blair <[email protected]>
 Jamie Lennox <[email protected]>
 Jason Kölker <[email protected]>
 Javeme <[email protected]>
@@ -71,6 +72,7 @@
 Joshua Harlow <[email protected]>
 Joshua Harlow <[email protected]>
 Joshua Harlow <[email protected]>
+Juan Antonio Osorio Robles <[email protected]>
 Julien Danjou <[email protected]>
 Kevin Benton <[email protected]>
 Kevin Rasmussen <[email protected]>
@@ -95,6 +97,7 @@
 Min Pae <[email protected]>
 Monty Taylor <[email protected]>
 Morgan Fainberg <[email protected]>
+Nam Nguyen Hoai <[email protected]>
 Nataliia Uvarova <[email protected]>
 OpenStack Release Bot <[email protected]>
 Pádraig Brady <[email protected]>
@@ -128,17 +131,21 @@
 Vishvananda Ishaya <[email protected]>
 Yaguang Tang <[email protected]>
 YangLei <[email protected]>
+Zane Bitter <[email protected]>
 ZhiQiang Fan <[email protected]>
 Zhiteng Huang <[email protected]>
 ZhongShengping <[email protected]>
 Zhongyue Luo <[email protected]>
+Zuul <[email protected]>
 abhishekkekane <[email protected]>
 avnish <[email protected]>
 gecong1973 <[email protected]>
 gengchc2 <[email protected]>
 gtt116 <[email protected]>
 liangjingtao <[email protected]>
+lingyongxu <[email protected]>
 loooosy <[email protected]>
+malei <[email protected]>
 melanie witt <[email protected]>
 ricolin <[email protected]>
 sonu.kumar <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/ChangeLog 
new/oslo.log-3.36.0/ChangeLog
--- old/oslo.log-3.30.0/ChangeLog       2017-07-18 15:10:17.000000000 +0200
+++ new/oslo.log-3.36.0/ChangeLog       2018-01-08 15:15:56.000000000 +0100
@@ -1,6 +1,56 @@
 CHANGES
 =======
 
+3.36.0
+------
+
+* Truncate error\_summary if exc\_info not explicitly passed
+* Cleanup test-requirements
+* Updated from global requirements
+* Imported Translations from Zanata
+
+3.35.0
+------
+
+* Updated from global requirements
+
+3.34.0
+------
+
+* Remove setting of version/release from releasenotes
+* Updated from global requirements
+* Capture context in its own key for JSON-based formatters
+
+3.33.0
+------
+
+* Updated from global requirements
+* Remove checks for auth\_token in JSON-based formatter tests
+* Add release note for use\_json option
+* Add option to use JSON formatter
+* Updated from global requirements
+* Zuul: add file extension to playbook path
+* JSONFormatter convert unserializable with repr()
+
+3.32.0
+------
+
+* Allow logging of unhashable exceptions in Python 3
+* Updated from global requirements
+* Migrate to Zuul v3
+* Imported Translations from Zanata
+* Updated from global requirements
+
+3.31.0
+------
+
+* Updated from global requirements
+* Update the documentation link for doc migration
+* Update the documentation link
+* Updated from global requirements
+* Update reno for stable/pike
+* Updated from global requirements
+
 3.30.0
 ------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/PKG-INFO new/oslo.log-3.36.0/PKG-INFO
--- old/oslo.log-3.30.0/PKG-INFO        2017-07-18 15:10:18.000000000 +0200
+++ new/oslo.log-3.36.0/PKG-INFO        2018-01-08 15:15:56.000000000 +0100
@@ -1,11 +1,12 @@
 Metadata-Version: 1.1
 Name: oslo.log
-Version: 3.30.0
+Version: 3.36.0
 Summary: oslo.log library
 Home-page: https://docs.openstack.org/oslo.log/latest
 Author: OpenStack
 Author-email: [email protected]
 License: UNKNOWN
+Description-Content-Type: UNKNOWN
 Description: ========================
         Team and repository tags
         ========================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/doc/source/user/examples/_i18n.py 
new/oslo.log-3.36.0/doc/source/user/examples/_i18n.py
--- old/oslo.log-3.30.0/doc/source/user/examples/_i18n.py       2017-07-18 
15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/doc/source/user/examples/_i18n.py       2018-01-08 
15:13:47.000000000 +0100
@@ -16,7 +16,7 @@
 """A demonstration of oslo.i18n integration module that is used
    in projects wanting to implement Oslo i18n translation.
 
-   See  http://docs.openstack.org/developer/oslo.i18n/usage.html
+   See  https://docs.openstack.org/oslo.i18n/latest/user/index.html
 """
 
 import oslo_i18n
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/doc/source/user/examples/usage.py 
new/oslo.log-3.36.0/doc/source/user/examples/usage.py
--- old/oslo.log-3.30.0/doc/source/user/examples/usage.py       2017-07-18 
15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/doc/source/user/examples/usage.py       2018-01-08 
15:13:47.000000000 +0100
@@ -23,7 +23,7 @@
 
 More information about Oslo Logging can be found at:
 
-  http://docs.openstack.org/developer/oslo.log/usage.html
+  https://docs.openstack.org/oslo.log/latest/user/index.html
 """
 
 from oslo_config import cfg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/doc/source/user/examples/usage_context.py 
new/oslo.log-3.36.0/doc/source/user/examples/usage_context.py
--- old/oslo.log-3.30.0/doc/source/user/examples/usage_context.py       
2017-07-18 15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/doc/source/user/examples/usage_context.py       
2018-01-08 15:13:47.000000000 +0100
@@ -23,8 +23,8 @@
 
 More information about Oslo Logging can be found at:
 
-  http://docs.openstack.org/developer/oslo.log/usage.html
-  http://docs.openstack.org/developer/oslo.context/usage.html
+  https://docs.openstack.org/oslo.log/latest/user/index.html
+  https://docs.openstack.org/oslo.context/latest/user/index.html
 """
 
 from oslo_config import cfg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/doc/source/user/examples/usage_helper.py 
new/oslo.log-3.36.0/doc/source/user/examples/usage_helper.py
--- old/oslo.log-3.30.0/doc/source/user/examples/usage_helper.py        
2017-07-18 15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/doc/source/user/examples/usage_helper.py        
2018-01-08 15:13:47.000000000 +0100
@@ -23,7 +23,7 @@
 
 More information about Oslo Logging can be found at:
 
-  http://docs.openstack.org/developer/oslo.log/usage.html
+  https://docs.openstack.org/oslo.log/latest/user/index.html
 """
 
 # Use default Python logging to display running output
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/doc/source/user/examples/usage_i18n.py 
new/oslo.log-3.36.0/doc/source/user/examples/usage_i18n.py
--- old/oslo.log-3.30.0/doc/source/user/examples/usage_i18n.py  2017-07-18 
15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/doc/source/user/examples/usage_i18n.py  2018-01-08 
15:13:47.000000000 +0100
@@ -22,8 +22,8 @@
 
 More information about Oslo Logging can be found at:
 
-  http://docs.openstack.org/developer/oslo.log/usage.html
-  http://docs.openstack.org/developer/oslo.i18n/usage.html
+  https://docs.openstack.org/oslo.log/latest/user/index.html
+  https://docs.openstack.org/oslo.i18n/latest/user/index.html  
 """
 
 from oslo_config import cfg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/doc/source/user/usage.rst 
new/oslo.log-3.36.0/doc/source/user/usage.rst
--- old/oslo.log-3.30.0/doc/source/user/usage.rst       2017-07-18 
15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/doc/source/user/usage.rst       2018-01-08 
15:13:47.000000000 +0100
@@ -88,7 +88,7 @@
 Logging within an application should use `Oslo International Utilities 
(i18n)`_ marker
 functions to provide language translation capabilities.
 
-.. _Oslo International Utilities (i18n): 
http://docs.openstack.org/developer/oslo.i18n/
+.. _Oslo International Utilities (i18n): 
http://docs.openstack.org/oslo.i18n/latest
 
 .. literalinclude:: examples/usage_i18n.py
    :linenos:
@@ -100,7 +100,7 @@
 With the use of `Oslo Context`_, log records can also contain
 additional contextual information applicable for your application.
 
-.. _Oslo Context: http://docs.openstack.org/developer/oslo.context/
+.. _Oslo Context: http://docs.openstack.org/oslo.context/latest
 
 .. literalinclude:: examples/usage_context.py
    :linenos:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo.log.egg-info/PKG-INFO 
new/oslo.log-3.36.0/oslo.log.egg-info/PKG-INFO
--- old/oslo.log-3.30.0/oslo.log.egg-info/PKG-INFO      2017-07-18 
15:10:17.000000000 +0200
+++ new/oslo.log-3.36.0/oslo.log.egg-info/PKG-INFO      2018-01-08 
15:15:56.000000000 +0100
@@ -1,11 +1,12 @@
 Metadata-Version: 1.1
 Name: oslo.log
-Version: 3.30.0
+Version: 3.36.0
 Summary: oslo.log library
 Home-page: https://docs.openstack.org/oslo.log/latest
 Author: OpenStack
 Author-email: [email protected]
 License: UNKNOWN
+Description-Content-Type: UNKNOWN
 Description: ========================
         Team and repository tags
         ========================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo.log.egg-info/SOURCES.txt 
new/oslo.log-3.36.0/oslo.log.egg-info/SOURCES.txt
--- old/oslo.log-3.30.0/oslo.log.egg-info/SOURCES.txt   2017-07-18 
15:10:18.000000000 +0200
+++ new/oslo.log-3.36.0/oslo.log.egg-info/SOURCES.txt   2018-01-08 
15:15:56.000000000 +0100
@@ -1,6 +1,7 @@
 .coveragerc
 .mailmap
 .testr.conf
+.zuul.yaml
 AUTHORS
 CONTRIBUTING.rst
 ChangeLog
@@ -83,16 +84,21 @@
 oslo_log/tests/unit/fixture/__init__.py
 oslo_log/tests/unit/fixture/test_logging_error.py
 oslo_log/tests/unit/fixture/test_setlevel.py
+playbooks/legacy/oslo.log-src-grenade-devstack/post.yaml
+playbooks/legacy/oslo.log-src-grenade-devstack/run.yaml
 releasenotes/notes/.placeholder
+releasenotes/notes/add-context-section-0b2f411ec64f42f6.yaml
 releasenotes/notes/add-reno-e4fedb11ece56f1e.yaml
 releasenotes/notes/always-add-error-text-715022964364ffa0.yaml
 releasenotes/notes/info-logging-7b7be9fc7a95aebc.yaml
 releasenotes/notes/is_debug_enabled-d7afee4c811a46df.yaml
+releasenotes/notes/jsonformatter-repr-fd616eb6fa6caeb3.yaml
 releasenotes/notes/reload_log_config-743817192b1172b6.yaml
 releasenotes/notes/remove-log-format-b4b949701cee3315.yaml
 releasenotes/notes/remove-syslog-rfc-format-7a06772c0bb48e9b.yaml
 releasenotes/notes/remove-verbose-option-d0d1381e182d1be1.yaml
 releasenotes/notes/systemd-journal-support-fcbc34b3c5ce93ec.yaml
+releasenotes/notes/use-json-option-96f71da54a3b9a18.yaml
 releasenotes/notes/use_stderr_default_false-50d846b88cf2be90.yaml
 releasenotes/source/conf.py
 releasenotes/source/index.rst
@@ -100,6 +106,7 @@
 releasenotes/source/mitaka.rst
 releasenotes/source/newton.rst
 releasenotes/source/ocata.rst
+releasenotes/source/pike.rst
 releasenotes/source/unreleased.rst
 releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo.log.egg-info/pbr.json 
new/oslo.log-3.36.0/oslo.log.egg-info/pbr.json
--- old/oslo.log-3.30.0/oslo.log.egg-info/pbr.json      2017-07-18 
15:10:17.000000000 +0200
+++ new/oslo.log-3.36.0/oslo.log.egg-info/pbr.json      2018-01-08 
15:15:56.000000000 +0100
@@ -1 +1 @@
-{"git_version": "8bb44cd", "is_release": true}
\ No newline at end of file
+{"git_version": "e29dc73", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo.log.egg-info/requires.txt 
new/oslo.log-3.36.0/oslo.log.egg-info/requires.txt
--- old/oslo.log-3.30.0/oslo.log.egg-info/requires.txt  2017-07-18 
15:10:17.000000000 +0200
+++ new/oslo.log-3.36.0/oslo.log.egg-info/requires.txt  2018-01-08 
15:15:56.000000000 +0100
@@ -1,10 +1,10 @@
 pbr!=2.1.0,>=2.0.0
-six>=1.9.0
-oslo.config!=4.3.0,!=4.4.0,>=4.0.0
-oslo.context>=2.14.0
-oslo.i18n!=3.15.2,>=2.1.0
-oslo.utils>=3.20.0
-oslo.serialization!=2.19.1,>=1.10.0
+six>=1.10.0
+oslo.config>=5.1.0
+oslo.context>=2.19.2
+oslo.i18n>=3.15.3
+oslo.utils>=3.33.0
+oslo.serialization!=2.19.1,>=2.18.0
 debtcollector>=1.2.0
 pyinotify>=0.9.6
 python-dateutil>=2.4.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo_log/_i18n.py 
new/oslo.log-3.36.0/oslo_log/_i18n.py
--- old/oslo.log-3.30.0/oslo_log/_i18n.py       2017-07-18 15:08:02.000000000 
+0200
+++ new/oslo.log-3.36.0/oslo_log/_i18n.py       2018-01-08 15:13:47.000000000 
+0100
@@ -14,7 +14,7 @@
 
 """oslo.i18n integration module.
 
-See http://docs.openstack.org/developer/oslo.i18n/usage.html .
+See https://docs.openstack.org/oslo.i18n/latest/user/index.html .
 
 """
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo_log/_options.py 
new/oslo.log-3.36.0/oslo_log/_options.py
--- old/oslo.log-3.30.0/oslo_log/_options.py    2017-07-18 15:08:02.000000000 
+0200
+++ new/oslo.log-3.36.0/oslo_log/_options.py    2018-01-08 15:13:47.000000000 
+0100
@@ -97,6 +97,10 @@
                default='LOG_USER',
                help='Syslog facility to receive log lines. '
                     + _IGNORE_MESSAGE),
+    cfg.BoolOpt('use-json',
+                default=False,
+                help='Use JSON formatting for logging. '
+                     + _IGNORE_MESSAGE),
 ]
 
 generic_log_opts = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo_log/formatters.py 
new/oslo.log-3.36.0/oslo_log/formatters.py
--- old/oslo.log-3.30.0/oslo_log/formatters.py  2017-07-18 15:08:02.000000000 
+0200
+++ new/oslo.log-3.36.0/oslo_log/formatters.py  2018-01-08 15:13:56.000000000 
+0100
@@ -12,6 +12,7 @@
 
 import datetime
 import debtcollector
+import functools
 import itertools
 import logging
 import logging.config
@@ -32,6 +33,15 @@
     from functools import reduce
 
 
+try:
+    # Test if to_primitive() has the fallback parameter added
+    # in oslo.serialization 2.21.1
+    jsonutils.to_primitive(1, fallback=repr)
+    _HAVE_JSONUTILS_FALLBACK = True
+except TypeError:
+    _HAVE_JSONUTILS_FALLBACK = False
+
+
 def _dictify_context(context):
     if getattr(context, 'get_logging_values', None):
         return context.get_logging_values()
@@ -138,17 +148,29 @@
     # If we have an exception, format it to be included in the
     # output.
     if exc_info:
-        # Build the exception summary in the line with the
-        # primary log message, to serve as a mnemonic for error
-        # and warning cases.
-        error_summary = traceback.format_exception_only(
-            exc_info[0],
-            exc_info[1],
-        )[0].rstrip()
-        # Remove the local reference to the exception and
-        # traceback to avoid a memory leak through the frame
-        # references.
-        del exc_info
+        try:
+            # Build the exception summary in the line with the
+            # primary log message, to serve as a mnemonic for error
+            # and warning cases.
+            error_summary = traceback.format_exception_only(
+                exc_info[0],
+                exc_info[1],
+            )[0].rstrip()
+            # If the exc_info wasn't explicitly passed to us, take only the
+            # first line of it. _Remote exceptions from oslo.messaging append
+            # the full traceback to the exception message, so we want to avoid
+            # outputting the traceback unless we've been passed exc_info
+            # directly (via LOG.exception(), for example).
+            if not record.exc_info:
+                error_summary = error_summary.split('\n', 1)[0]
+        except TypeError as type_err:
+            # Work around https://bugs.python.org/issue28603
+            error_summary = "<exception with %s>" % six.text_type(type_err)
+        finally:
+            # Remove the local reference to the exception and
+            # traceback to avoid a memory leak through the frame
+            # references.
+            del exc_info
 
     return error_summary
 
@@ -169,7 +191,12 @@
             self.hostname = None
 
     def formatException(self, ei, strip_newlines=True):
-        lines = traceback.format_exception(*ei)
+        try:
+            lines = traceback.format_exception(*ei)
+        except TypeError as type_error:
+            # Work around https://bugs.python.org/issue28603
+            msg = six.text_type(type_error)
+            lines = ['<Unprintable exception due to %s>\n' % msg]
         if strip_newlines:
             lines = [moves.filter(
                 lambda x: x,
@@ -211,18 +238,33 @@
         for key in getattr(record, 'extra_keys', []):
             if key not in extra:
                 extra[key] = getattr(record, key)
-        # If we saved a context object, explode it into the extra
-        # dictionary because the values are more useful than the
+        # The context object might have been given from the logging call. if
+        # that was the case, it'll come in the 'extra' entry already. If not,
+        # lets use the context we fetched above. In either case, we explode it
+        # into the 'context' entry because the values are more useful than the
         # object reference.
-        if 'context' in extra:
-            extra.update(_dictify_context(context))
-            del extra['context']
+        if 'context' in extra and extra['context']:
+            message['context'] = _dictify_context(extra['context'])
+        elif context:
+            message['context'] = _dictify_context(context)
+        else:
+            message['context'] = {}
+        extra.pop('context', None)
         message['extra'] = extra
 
         if record.exc_info:
             message['traceback'] = self.formatException(record.exc_info)
 
-        return jsonutils.dumps(message)
+        if _HAVE_JSONUTILS_FALLBACK:
+            # Bug #1593641: If an object cannot be serialized to JSON, convert
+            # it using repr() to prevent serialization errors. Using repr() is
+            # not ideal, but serialization errors are unexpected on logs,
+            # especially when the code using logs is not aware that the
+            # JSONFormatter will be used.
+            convert = functools.partial(jsonutils.to_primitive, fallback=repr)
+            return jsonutils.dumps(message, default=convert)
+        else:
+            return jsonutils.dumps(message)
 
 
 class FluentFormatter(logging.Formatter):
@@ -245,7 +287,12 @@
             self.hostname = None
 
     def formatException(self, exc_info, strip_newlines=True):
-        lines = traceback.format_exception(*exc_info)
+        try:
+            lines = traceback.format_exception(*exc_info)
+        except TypeError as type_error:
+            # Work around https://bugs.python.org/issue28603
+            msg = six.text_type(type_error)
+            lines = ['<Unprintable exception due to %s>\n' % msg]
         if strip_newlines:
             lines = reduce(lambda a, line: a + line.rstrip().splitlines(),
                            lines, [])
@@ -275,12 +322,18 @@
         for key in getattr(record, 'extra_keys', []):
             if key not in extra:
                 extra[key] = getattr(record, key)
-        # If we saved a context object, explode it into the extra
-        # dictionary because the values are more useful than the
+        # The context object might have been given from the logging call. if
+        # that was the case, it'll come in the 'extra' entry already. If not,
+        # lets use the context we fetched above. In either case, we explode it
+        # into the extra dictionary because the values are more useful than the
         # object reference.
-        if 'context' in extra:
-            extra.update(_dictify_context(context))
-            del extra['context']
+        if 'context' in extra and extra['context']:
+            message['context'] = _dictify_context(extra['context'])
+        elif context:
+            message['context'] = _dictify_context(context)
+        else:
+            message['context'] = {}
+        extra.pop('context', None)
         message['extra'] = extra
 
         if record.exc_info:
@@ -450,11 +503,22 @@
     def formatException(self, exc_info, record=None):
         """Format exception output with CONF.logging_exception_prefix."""
         if not record:
-            return logging.Formatter.formatException(self, exc_info)
+            try:
+                return logging.Formatter.formatException(self, exc_info)
+            except TypeError as type_error:
+                # Work around https://bugs.python.org/issue28603
+                msg = six.text_type(type_error)
+                return '<Unprintable exception due to %s>\n' % msg
 
         stringbuffer = moves.StringIO()
-        traceback.print_exception(exc_info[0], exc_info[1], exc_info[2],
-                                  None, stringbuffer)
+        try:
+            traceback.print_exception(exc_info[0], exc_info[1], exc_info[2],
+                                      None, stringbuffer)
+        except TypeError as type_error:
+            # Work around https://bugs.python.org/issue28603
+            msg = six.text_type(type_error)
+            stringbuffer.write('<Unprintable exception due to %s>\n' % msg)
+
         lines = stringbuffer.getvalue().split('\n')
         stringbuffer.close()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo_log/log.py 
new/oslo.log-3.36.0/oslo_log/log.py
--- old/oslo.log-3.30.0/oslo_log/log.py 2017-07-18 15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/oslo_log/log.py 2018-01-08 15:13:47.000000000 +0100
@@ -383,11 +383,15 @@
         log_root.addHandler(syslog_handler)
 
     datefmt = conf.log_date_format
-    for handler in log_root.handlers:
-        handler.setFormatter(formatters.ContextFormatter(project=project,
-                                                         version=version,
-                                                         datefmt=datefmt,
-                                                         config=conf))
+    if not conf.use_json:
+        for handler in log_root.handlers:
+            handler.setFormatter(formatters.ContextFormatter(project=project,
+                                                             version=version,
+                                                             datefmt=datefmt,
+                                                             config=conf))
+    else:
+        for handler in log_root.handlers:
+            handler.setFormatter(formatters.JSONFormatter(datefmt=datefmt))
     _refresh_root_level(conf.debug)
 
     for pair in conf.default_log_levels:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/oslo_log/tests/unit/test_formatters.py 
new/oslo.log-3.36.0/oslo_log/tests/unit/test_formatters.py
--- old/oslo.log-3.30.0/oslo_log/tests/unit/test_formatters.py  2017-07-18 
15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/oslo_log/tests/unit/test_formatters.py  2018-01-08 
15:13:47.000000000 +0100
@@ -16,8 +16,14 @@
 
 import mock
 
+import logging
+import sys
+
+from oslo_config import cfg
+from oslo_config import fixture as config_fixture
 from oslo_context import context
 from oslo_log import formatters
+from oslo_log import log
 from oslotest import base as test_base
 
 
@@ -83,3 +89,55 @@
             '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
+class FormatUnhashableExceptionTest(test_base.BaseTestCase):
+    def setUp(self):
+        super(FormatUnhashableExceptionTest, self).setUp()
+        self.config_fixture = self.useFixture(
+            config_fixture.Config(cfg.ConfigOpts()))
+        self.conf = self.config_fixture.conf
+        log.register_options(self.conf)
+
+    def _unhashable_exception_info(self):
+        class UnhashableException(Exception):
+            __hash__ = None
+
+        try:
+            raise UnhashableException()
+        except UnhashableException:
+            return sys.exc_info()
+
+    def test_error_summary(self):
+        exc_info = self._unhashable_exception_info()
+        record = logging.LogRecord('test', logging.ERROR, 'test', 0,
+                                   'test message', [], exc_info)
+        err_summary = formatters._get_error_summary(record)
+        self.assertTrue(err_summary)
+
+    def test_json_format_exception(self):
+        exc_info = self._unhashable_exception_info()
+        formatter = formatters.JSONFormatter()
+        tb = ''.join(formatter.formatException(exc_info))
+        self.assertTrue(tb)
+
+    def test_fluent_format_exception(self):
+        exc_info = self._unhashable_exception_info()
+        formatter = formatters.FluentFormatter()
+        tb = formatter.formatException(exc_info)
+        self.assertTrue(tb)
+
+    def test_context_format_exception_norecord(self):
+        exc_info = self._unhashable_exception_info()
+        formatter = formatters.ContextFormatter(config=self.conf)
+        tb = formatter.formatException(exc_info)
+        self.assertTrue(tb)
+
+    def test_context_format_exception(self):
+        exc_info = self._unhashable_exception_info()
+        formatter = formatters.ContextFormatter(config=self.conf)
+        record = logging.LogRecord('test', logging.ERROR, 'test', 0,
+                                   'test message', [], exc_info)
+        tb = formatter.format(record)
+        self.assertTrue(tb)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/oslo_log/tests/unit/test_log.py 
new/oslo.log-3.36.0/oslo_log/tests/unit/test_log.py
--- old/oslo.log-3.30.0/oslo_log/tests/unit/test_log.py 2017-07-18 
15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/oslo_log/tests/unit/test_log.py 2018-01-08 
15:13:56.000000000 +0100
@@ -415,19 +415,38 @@
                                        formatter=formatters.JSONFormatter)
         self._set_log_level_with_cleanup(self.log, logging.DEBUG)
 
-    def test_json(self):
+    def test_json_w_context_in_extras(self):
         test_msg = 'This is a %(test)s line'
         test_data = {'test': 'log'}
         local_context = _fake_context()
         self.log.debug(test_msg, test_data, key='value', context=local_context)
+        self._validate_json_data('test_json_w_context_in_extras', test_msg,
+                                 test_data, local_context)
 
+    def test_json_w_fetched_global_context(self):
+        test_msg = 'This is a %(test)s line'
+        test_data = {'test': 'log'}
+        local_context = _fake_context()
+        # NOTE we're not passing the context explicitly here. But it'll add the
+        # context to the extras anyway since the call to fake_context adds the
+        # context to the thread. The context will be fetched with the
+        # _update_record_with_context call that's done in the formatter.
+        self.log.debug(test_msg, test_data, key='value')
+        self._validate_json_data('test_json_w_fetched_global_context',
+                                 test_msg, test_data, local_context)
+
+    def _validate_json_data(self, testname, test_msg, test_data, ctx):
         data = jsonutils.loads(self.stream.getvalue())
         self.assertTrue(data)
         self.assertIn('extra', data)
+        self.assertIn('context', data)
         extra = data['extra']
+        context = data['context']
+        self.assertNotIn('context', extra)
         self.assertEqual('value', extra['key'])
-        self.assertEqual(local_context.auth_token, extra['auth_token'])
-        self.assertEqual(local_context.user, extra['user'])
+        self.assertEqual(ctx.user, context['user'])
+        self.assertEqual(ctx.user_name, context['user_name'])
+        self.assertEqual(ctx.project_name, context['project_name'])
         self.assertEqual('test-json', data['name'])
 
         self.assertEqual(test_msg % test_data, data['message'])
@@ -435,7 +454,7 @@
         self.assertEqual(test_data, data['args'])
 
         self.assertEqual('test_log.py', data['filename'])
-        self.assertEqual('test_json', data['funcname'])
+        self.assertEqual(testname, data['funcname'])
 
         self.assertEqual('DEBUG', data['levelname'])
         self.assertEqual(logging.DEBUG, data['levelno'])
@@ -522,6 +541,52 @@
         self.assertIn('error_summary', data)
         self.assertEqual('', data['error_summary'])
 
+    def test_exception_without_exc_info_passed(self):
+        ctxt = _fake_context()
+        ctxt.request_id = six.text_type('99')
+        try:
+            raise RuntimeError('test_exception\ntraceback\nfrom\nremote error')
+        except RuntimeError:
+            self.log.warning('testing', context=ctxt)
+        data = jsonutils.loads(self.stream.getvalue())
+        self.assertIn('error_summary', data)
+        self.assertEqual('RuntimeError: test_exception', data['error_summary'])
+
+    def test_exception_with_exc_info_passed(self):
+        ctxt = _fake_context()
+        ctxt.request_id = six.text_type('99')
+        try:
+            raise RuntimeError('test_exception\ntraceback\nfrom\nremote error')
+        except RuntimeError:
+            self.log.exception('testing', context=ctxt)
+        data = jsonutils.loads(self.stream.getvalue())
+        self.assertIn('error_summary', data)
+        self.assertEqual('RuntimeError: test_exception'
+                         '\ntraceback\nfrom\nremote error',
+                         data['error_summary'])
+
+    def test_fallback(self):
+        if not formatters._HAVE_JSONUTILS_FALLBACK:
+            self.skipTest("need the fallback parameter of "
+                          "jsonutils.to_primitive() added in "
+                          "oslo_serialization 2.21.1")
+
+        class MyObject(object):
+            def __str__(self):
+                return 'str'
+
+            def __repr__(self):
+                return 'repr'
+
+        obj = MyObject()
+        self.log.debug('obj=%s', obj)
+
+        data = jsonutils.loads(self.stream.getvalue())
+        self.assertEqual('obj=str', data['message'])
+        # Bug #1593641: If an object of record.args cannot be serialized,
+        # convert it using repr() to prevent serialization error on logging.
+        self.assertEqual(['repr'], data['args'])
+
 
 def get_fake_datetime(retval):
     class FakeDateTime(datetime.datetime):
@@ -564,9 +629,9 @@
         self.assertIn('lineno', data)
         self.assertIn('extra', data)
         extra = data['extra']
+        context = data['context']
         self.assertEqual('value', extra['key'])
-        self.assertEqual(local_context.auth_token, extra['auth_token'])
-        self.assertEqual(local_context.user, extra['user'])
+        self.assertEqual(local_context.user, context['user'])
         self.assertEqual('test-fluent', data['name'])
 
         self.assertEqual(test_msg % test_data, data['message'])
@@ -1496,6 +1561,7 @@
                          self.CONF.log_date_format)
 
         self.assertEqual(False, self.CONF.use_syslog)
+        self.assertEqual(False, self.CONF.use_json)
 
     def test_log_file(self):
         log_file = '/some/path/foo-bar.log'
@@ -1553,6 +1619,15 @@
             self.assertIsInstance(formatter,
                                   formatters.ContextFormatter)
 
+    def test_json_formatter(self):
+        self.CONF(['--use-json'])
+        log._setup_logging_from_conf(self.CONF, 'test', 'test')
+        logger = log._loggers[None].logger
+        for handler in logger.handlers:
+            formatter = handler.formatter
+            self.assertIsInstance(formatter,
+                                  formatters.JSONFormatter)
+
     def test_handlers_cleanup(self):
         """Test that all old handlers get removed from log_root."""
         old_handlers = [log.handlers.ColorHandler(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/playbooks/legacy/oslo.log-src-grenade-devstack/post.yaml 
new/oslo.log-3.36.0/playbooks/legacy/oslo.log-src-grenade-devstack/post.yaml
--- 
old/oslo.log-3.30.0/playbooks/legacy/oslo.log-src-grenade-devstack/post.yaml    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.log-3.36.0/playbooks/legacy/oslo.log-src-grenade-devstack/post.yaml    
    2018-01-08 15:13:47.000000000 +0100
@@ -0,0 +1,15 @@
+- hosts: primary
+  tasks:
+
+    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
+      synchronize:
+        src: '{{ ansible_user_dir }}/workspace/'
+        dest: '{{ zuul.executor.log_root }}'
+        mode: pull
+        copy_links: true
+        verify_host: true
+        rsync_opts:
+          - --include=/logs/**
+          - --include=*/
+          - --exclude=*
+          - --prune-empty-dirs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/playbooks/legacy/oslo.log-src-grenade-devstack/run.yaml 
new/oslo.log-3.36.0/playbooks/legacy/oslo.log-src-grenade-devstack/run.yaml
--- old/oslo.log-3.30.0/playbooks/legacy/oslo.log-src-grenade-devstack/run.yaml 
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.log-3.36.0/playbooks/legacy/oslo.log-src-grenade-devstack/run.yaml 
2018-01-08 15:13:47.000000000 +0100
@@ -0,0 +1,50 @@
+- hosts: all
+  name: Autoconverted job legacy-oslo.log-src-grenade-dsvm from old job 
gate-oslo.log-src-grenade-dsvm-ubuntu-xenial-nv
+  tasks:
+
+    - name: Ensure legacy workspace directory
+      file:
+        path: '{{ ansible_user_dir }}/workspace'
+        state: directory
+
+    - shell:
+        cmd: |
+          set -e
+          set -x
+          cat > clonemap.yaml << EOF
+          clonemap:
+            - name: openstack-infra/devstack-gate
+              dest: devstack-gate
+          EOF
+          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
+              git://git.openstack.org \
+              openstack-infra/devstack-gate
+        executable: /bin/bash
+        chdir: '{{ ansible_user_dir }}/workspace'
+      environment: '{{ zuul | zuul_legacy_vars }}'
+
+    - shell:
+        cmd: |
+          set -e
+          set -x
+          export PROJECTS="openstack-dev/grenade $PROJECTS"
+          export PYTHONUNBUFFERED=true
+          export DEVSTACK_GATE_TEMPEST=1
+          export DEVSTACK_GATE_GRENADE=pullup
+          export BRANCH_OVERRIDE=default
+          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
+              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
+          fi
+          export DEVSTACK_PROJECT_FROM_GIT=$ZUUL_SHORT_PROJECT_NAME
+
+          # Even if the branch is overridden, make sure we use
+          # the correct branch using the OVERRIDE_*_PROJECT_BRANCH
+          # variable.
+          uc_project=`echo $DEVSTACK_PROJECT_FROM_GIT | tr [:lower:] [:upper:] 
| tr '-' '_' | sed 's/[^A-Z_]//'`
+          export "OVERRIDE_"$uc_project"_PROJECT_BRANCH"=$ZUUL_BRANCH
+
+          cp devstack-gate/devstack-vm-gate-wrap.sh 
./safe-devstack-vm-gate-wrap.sh
+          ./safe-devstack-vm-gate-wrap.sh
+        executable: /bin/bash
+        chdir: '{{ ansible_user_dir }}/workspace'
+      environment: '{{ zuul | zuul_legacy_vars }}'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/releasenotes/notes/add-context-section-0b2f411ec64f42f6.yaml
 
new/oslo.log-3.36.0/releasenotes/notes/add-context-section-0b2f411ec64f42f6.yaml
--- 
old/oslo.log-3.30.0/releasenotes/notes/add-context-section-0b2f411ec64f42f6.yaml
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.log-3.36.0/releasenotes/notes/add-context-section-0b2f411ec64f42f6.yaml
    2018-01-08 15:13:47.000000000 +0100
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    The JSON based formatters (namely JSONFormatter and FluentFormatter) now
+    output an extra section called 'context' that contains the context-related
+    keys and values, e.g. user, project and domain.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/releasenotes/notes/jsonformatter-repr-fd616eb6fa6caeb3.yaml 
new/oslo.log-3.36.0/releasenotes/notes/jsonformatter-repr-fd616eb6fa6caeb3.yaml
--- 
old/oslo.log-3.30.0/releasenotes/notes/jsonformatter-repr-fd616eb6fa6caeb3.yaml 
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.log-3.36.0/releasenotes/notes/jsonformatter-repr-fd616eb6fa6caeb3.yaml 
    2018-01-08 15:13:47.000000000 +0100
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    The JSONFormatter formatter now converts unserializable objects with
+    repr() to prevent JSON serialization errors on logging. The fix requires
+    oslo.serialization 2.21.1 or newer. (Bug #1593641)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/releasenotes/notes/use-json-option-96f71da54a3b9a18.yaml 
new/oslo.log-3.36.0/releasenotes/notes/use-json-option-96f71da54a3b9a18.yaml
--- 
old/oslo.log-3.30.0/releasenotes/notes/use-json-option-96f71da54a3b9a18.yaml    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.log-3.36.0/releasenotes/notes/use-json-option-96f71da54a3b9a18.yaml    
    2018-01-08 15:13:47.000000000 +0100
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    The use_json configuration option was added. It enables JSON formatting in
+    the logs when set to True. The option is also available through the command
+    line via the ``--use-json`` flag.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/releasenotes/source/conf.py 
new/oslo.log-3.36.0/releasenotes/source/conf.py
--- old/oslo.log-3.30.0/releasenotes/source/conf.py     2017-07-18 
15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/releasenotes/source/conf.py     2018-01-08 
15:13:47.000000000 +0100
@@ -59,16 +59,12 @@
 project = u'oslo.log Release Notes'
 copyright = u'2016, oslo.log Developers'
 
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-from oslo_log.version import version_info as oslo_log_version
+# Release notes do not need a version in the title, they span
+# multiple versions.
 # The full version, including alpha/beta/rc tags.
-release = oslo_log_version.version_string_with_vcs()
+release = ''
 # The short X.Y version.
-version = oslo_log_version.canonical_version_string()
+version = ''
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/releasenotes/source/index.rst 
new/oslo.log-3.36.0/releasenotes/source/index.rst
--- old/oslo.log-3.30.0/releasenotes/source/index.rst   2017-07-18 
15:08:02.000000000 +0200
+++ new/oslo.log-3.36.0/releasenotes/source/index.rst   2018-01-08 
15:13:47.000000000 +0100
@@ -6,6 +6,7 @@
     :maxdepth: 1
 
     unreleased
+    pike
     ocata
     newton
     mitaka
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
 
new/oslo.log-3.36.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
--- 
old/oslo.log-3.30.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
    2017-07-18 15:08:02.000000000 +0200
+++ 
new/oslo.log-3.36.0/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
    2018-01-08 15:13:47.000000000 +0100
@@ -1,43 +1,135 @@
 # Andi Chandler <[email protected]>, 2016. #zanata
+# Andi Chandler <[email protected]>, 2017. #zanata
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.log Release Notes 3.11.1\n"
+"Project-Id-Version: oslo.log Release Notes\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-01 03:32+0000\n"
+"POT-Creation-Date: 2017-11-30 11:20+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"PO-Revision-Date: 2016-06-28 05:55+0000\n"
+"PO-Revision-Date: 2017-12-05 10:30+0000\n"
 "Last-Translator: Andi Chandler <[email protected]>\n"
 "Language-Team: English (United Kingdom)\n"
 "Language: en-GB\n"
-"X-Generator: Zanata 3.7.3\n"
+"X-Generator: Zanata 3.9.6\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
 msgid "3.1.0"
 msgstr "3.1.0"
 
+msgid "3.12.0"
+msgstr "3.12.0"
+
+msgid "3.17.0"
+msgstr "3.17.0"
+
 msgid "3.2.0"
 msgstr "3.2.0"
 
+msgid "3.21.0"
+msgstr "3.21.0"
+
+msgid "3.24.0"
+msgstr "3.24.0"
+
+msgid "3.27.0"
+msgstr "3.27.0"
+
+msgid "3.33.0"
+msgstr "3.33.0"
+
+msgid "3.34.0"
+msgstr "3.34.0"
+
+msgid "3.34.0-2"
+msgstr "3.34.0-2"
+
 msgid "3.8.0"
 msgstr "3.8.0"
 
+msgid ""
+"A new ``oslo_log.log.is_debug_enabled`` helper function is added that allows "
+"to determine whether debug mode is enabled for logging."
+msgstr ""
+"A new ``oslo_log.log.is_debug_enabled`` helper function is added that allows "
+"to determine whether debug mode is enabled for logging."
+
 msgid "Bug Fixes"
 msgstr "Bug Fixes"
 
+msgid ""
+"Configuration option `use_stderr`'s default value is False now, this will "
+"avoid same logs on service log and specific log file by option --log-file."
+msgstr ""
+"Configuration option `use_stderr`'s default value is False now, this will "
+"avoid same logs on service log and specific log file by option --log-file."
+
+msgid ""
+"If the log format string includes ``%(error_summary)s``, it will be replaced "
+"with a summary of the current error when there is one and with \"``-``\" "
+"when there is no error.  If the log format string does not include ``"
+"%(error_summary)s`` the error summary will be appended to the end of the "
+"line automatically, only if there is an error."
+msgstr ""
+"If the log format string includes ``%(error_summary)s``, it will be replaced "
+"with a summary of the current error when there is one and with \"``-``\" "
+"when there is no error.  If the log format string does not include ``"
+"%(error_summary)s`` the error summary will be appended to the end of the "
+"line automatically, only if there is an error."
+
 msgid "Liberty Series Release Notes"
 msgstr "Liberty Series Release Notes"
 
 msgid "Mitaka Series Release Notes"
 msgstr "Mitaka Series Release Notes"
 
+msgid "New Features"
+msgstr "New Features"
+
+msgid "Newton Series Release Notes"
+msgstr "Newton Series Release Notes"
+
+msgid "Ocata Series Release Notes"
+msgstr "Ocata Series Release Notes"
+
 msgid "Other Notes"
 msgstr "Other Notes"
 
+msgid "Pike Series Release Notes"
+msgstr "Pike Series Release Notes"
+
 msgid "Switch to reno for managing release notes."
 msgstr "Switch to reno for managing release notes."
 
+msgid ""
+"Systemd native journal support is added. You can enable this in services "
+"with the ``use_journal`` flag."
+msgstr ""
+"Systemd native journal support is added. You can enable this in services "
+"with the ``use_journal`` flag."
+
+msgid ""
+"The JSON based formatters (namely JSONFormatter and FluentFormatter) now "
+"output an extra section called 'context' that contains the context-related "
+"keys and values, e.g. user, project and domain."
+msgstr ""
+"The JSON based formatters (namely JSONFormatter and FluentFormatter) now "
+"output an extra section called 'context' that contains the context-related "
+"keys and values, e.g. user, project and domain."
+
+msgid ""
+"The JSONFormatter formatter now converts unserializable objects with repr() "
+"to prevent JSON serialization errors on logging. The fix requires oslo."
+"serialization 2.21.1 or newer. (Bug #1593641)"
+msgstr ""
+"The JSONFormatter formatter now converts unserialisable objects with repr() "
+"to prevent JSON serialization errors on logging. The fix requires oslo."
+"serialisation 2.21.1 or newer. (Bug #1593641)"
+
+msgid "The deprecated 'verbose' option has been removed."
+msgstr "The deprecated 'verbose' option has been removed."
+
 msgid "The deprecated log_format configuration option has been removed."
 msgstr "The deprecated log_format configuration option has been removed."
 
@@ -46,6 +138,24 @@
 msgstr ""
 "The deprecated use_syslog_rfc_format configuration option has been removed."
 
+msgid ""
+"The log_config_append configuration option is now mutable and the logging "
+"settings it controls are reconfigured when the configuration file is reread. "
+"This can be used to, for example, change logger or handler levels."
+msgstr ""
+"The log_config_append configuration option is now mutable and the logging "
+"settings it controls are reconfigured when the configuration file is re-"
+"read. This can be used to, for example, change logger or handler levels."
+
+msgid ""
+"The use_json configuration option was added. It enables JSON formatting in "
+"the logs when set to True. The option is also available through the command "
+"line via the ``--use-json`` flag."
+msgstr ""
+"The use_json configuration option was added. It enables JSON formatting in "
+"the logs when set to True. The option is also available through the command "
+"line via the ``--use-json`` flag."
+
 msgid "Unreleased Release Notes"
 msgstr "Unreleased Release Notes"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.30.0/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po 
new/oslo.log-3.36.0/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po
--- 
old/oslo.log-3.30.0/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po   
    2017-07-18 15:08:02.000000000 +0200
+++ 
new/oslo.log-3.36.0/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po   
    2018-01-08 15:13:47.000000000 +0100
@@ -1,9 +1,9 @@
 # Gérald LONLAS <[email protected]>, 2016. #zanata
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.log Release Notes 3.16.1\n"
+"Project-Id-Version: oslo.log Release Notes 3.31.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-10-13 11:46+0000\n"
+"POT-Creation-Date: 2017-09-20 20:50+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -11,7 +11,7 @@
 "Last-Translator: Gérald LONLAS <[email protected]>\n"
 "Language-Team: French\n"
 "Language: fr\n"
-"X-Generator: Zanata 3.7.3\n"
+"X-Generator: Zanata 3.9.6\n"
 "Plural-Forms: nplurals=2; plural=(n > 1)\n"
 
 msgid "3.1.0"
@@ -20,9 +20,6 @@
 msgid "3.12.0"
 msgstr "3.12.0"
 
-msgid "3.16.0-24"
-msgstr "3.16.0-24"
-
 msgid "3.2.0"
 msgstr "3.2.0"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/releasenotes/source/pike.rst 
new/oslo.log-3.36.0/releasenotes/source/pike.rst
--- old/oslo.log-3.30.0/releasenotes/source/pike.rst    1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.log-3.36.0/releasenotes/source/pike.rst    2018-01-08 
15:13:47.000000000 +0100
@@ -0,0 +1,6 @@
+===================================
+ Pike Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/pike
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/requirements.txt 
new/oslo.log-3.36.0/requirements.txt
--- old/oslo.log-3.30.0/requirements.txt        2017-07-18 15:08:02.000000000 
+0200
+++ new/oslo.log-3.36.0/requirements.txt        2018-01-08 15:13:47.000000000 
+0100
@@ -3,12 +3,12 @@
 # process, which may cause wedges in the gate later.
 
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
-six>=1.9.0 # MIT
-oslo.config!=4.3.0,!=4.4.0,>=4.0.0 # Apache-2.0
-oslo.context>=2.14.0 # Apache-2.0
-oslo.i18n!=3.15.2,>=2.1.0 # Apache-2.0
-oslo.utils>=3.20.0 # Apache-2.0
-oslo.serialization!=2.19.1,>=1.10.0 # Apache-2.0
+six>=1.10.0 # MIT
+oslo.config>=5.1.0 # Apache-2.0
+oslo.context>=2.19.2 # Apache-2.0
+oslo.i18n>=3.15.3 # Apache-2.0
+oslo.utils>=3.33.0 # Apache-2.0
+oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
 debtcollector>=1.2.0 # Apache-2.0
 pyinotify>=0.9.6;sys_platform!='win32' and sys_platform!='darwin' and 
sys_platform!='sunos5' # MIT
 python-dateutil>=2.4.2 # BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.30.0/test-requirements.txt 
new/oslo.log-3.36.0/test-requirements.txt
--- old/oslo.log-3.30.0/test-requirements.txt   2017-07-18 15:08:02.000000000 
+0200
+++ new/oslo.log-3.36.0/test-requirements.txt   2018-01-08 15:13:56.000000000 
+0100
@@ -4,10 +4,9 @@
 
 hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
 
-python-subunit>=0.0.18 # Apache-2.0/BSD
 testrepository>=0.0.18 # Apache-2.0/BSD
-testtools>=1.4.0 # MIT
-mock>=2.0 # BSD
+testtools>=2.2.0 # MIT
+mock>=2.0.0 # BSD
 oslotest>=1.10.0 # Apache-2.0
 
 # when we can require tox>= 1.4, this can go into tox.ini:
@@ -17,8 +16,8 @@
 
 # this is required for the docs build jobs
 sphinx>=1.6.2 # BSD
-openstackdocstheme>=1.11.0 # Apache-2.0
-reno!=2.3.1,>=1.8.0 # Apache-2.0
+openstackdocstheme>=1.17.0 # Apache-2.0
+reno>=2.5.0 # Apache-2.0
 
 # Bandit security code scanner
 bandit>=1.1.0 # Apache-2.0


Reply via email to