Hello community,

here is the log from the commit of package python-oslo.service for 
openSUSE:Factory checked in at 2020-02-18 10:41:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.service (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.service.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.service"

Tue Feb 18 10:41:45 2020 rev:15 rq:774922 version:1.40.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.service/python-oslo.service.changes  
2019-05-03 22:42:46.939286405 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-oslo.service.new.26092/python-oslo.service.changes
       2020-02-18 10:41:54.537128569 +0100
@@ -1,0 +2,18 @@
+Wed Oct  9 12:29:46 UTC 2019 - [email protected]
+
+- update to version 1.40.2
+  - Make PID availabe as formatstring in backdoor path
+  - Polish usage.rst
+  - Reno for SIGHUP fix
+  - OpenDev Migration Patch
+  - Dropping the py35 testing
+  - Move doc related modules to doc/requirements.txt
+  - Add workers' type check before launching the services
+  - Add Python 3 Train unit tests
+  - Cap Bandit below 1.6.0 and update Sphinx requirement
+  - Replace git.openstack.org URLs with opendev.org URLs
+  - Update master for stable/stein
+  - restart: don't stop process on sighup when mutating
+  - Stop using pbr to build docs
+
+-------------------------------------------------------------------

Old:
----
  oslo.service-1.38.0.tar.gz

New:
----
  oslo.service-1.40.2.tar.gz

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

Other differences:
------------------
++++++ python-oslo.service.spec ++++++
--- /var/tmp/diff_new_pack.DknK0F/_old  2020-02-18 10:41:55.269130062 +0100
+++ /var/tmp/diff_new_pack.DknK0F/_new  2020-02-18 10:41:55.273130071 +0100
@@ -20,16 +20,15 @@
 %global rdo 1
 %endif
 Name:           python-oslo.service
-Version:        1.38.0
+Version:        1.40.2
 Release:        0
 Summary:        OpenStack oslo.service library
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://launchpad.net/oslo.service
-Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.service/oslo.service-1.38.0.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.service/oslo.service-1.40.2.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  procps
-BuildRequires:  python-devel
 BuildRequires:  python2-Paste >= 2.0.2
 BuildRequires:  python2-PasteDeploy >= 1.5.0
 BuildRequires:  python2-Routes >= 2.3.1
@@ -53,7 +52,6 @@
 BuildRequires:  python3-PasteDeploy >= 1.5.0
 BuildRequires:  python3-Routes >= 2.3.1
 BuildRequires:  python3-WebOb >= 1.7.1
-BuildRequires:  python3-devel
 BuildRequires:  python3-eventlet >= 0.18.2
 BuildRequires:  python3-fixtures >= 3.0.0
 BuildRequires:  python3-greenlet >= 0.4.10
@@ -96,8 +94,8 @@
 %package -n python-oslo.service-doc
 Summary:        Documentation for OpenStack service library
 Group:          Development/Languages/Python
-BuildRequires:  python-Sphinx
-BuildRequires:  python-openstackdocstheme
+BuildRequires:  python3-Sphinx
+BuildRequires:  python3-openstackdocstheme
 
 %description -n python-oslo.service-doc
 oslo.service provides a framework for defining new long-running services using
@@ -107,14 +105,14 @@
 This package contains the documentation.
 
 %prep
-%autosetup -p1 -n oslo.service-1.38.0
+%autosetup -p1 -n oslo.service-1.40.2
 %py_req_cleanup
 
 %build
 %{python_build}
 
 # generate html docs
-%{__python2} setup.py build_sphinx
+PYTHONPATH=. PBR_VERSION=%{version} %sphinx_build -b html doc/source 
doc/build/html
 # remove the sphinx-build leftovers
 rm -rf doc/build/html/.{doctrees,buildinfo}
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.DknK0F/_old  2020-02-18 10:41:55.325130177 +0100
+++ /var/tmp/diff_new_pack.DknK0F/_new  2020-02-18 10:41:55.325130177 +0100
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/stein/openstack/oslo.service/oslo.service.spec.j2</param>
+    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/train/openstack/oslo.service/oslo.service.spec.j2</param>
     <param name="output-name">python-oslo.service.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/oslo.service/stable/stein/requirements.txt</param>
+    <param 
name="requirements">https://raw.githubusercontent.com/openstack/oslo.service/stable/train/requirements.txt</param>
     <param name="changelog-email">[email protected]</param>
     <param name="changelog-provider">gh,openstack,oslo.service</param>
   </service>

++++++ oslo.service-1.38.0.tar.gz -> oslo.service-1.40.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/.zuul.yaml 
new/oslo.service-1.40.2/.zuul.yaml
--- old/oslo.service-1.38.0/.zuul.yaml  2019-02-26 01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/.zuul.yaml  2019-09-12 18:37:18.000000000 +0200
@@ -5,9 +5,7 @@
       - lib-forward-testing-python3
       - openstack-lower-constraints-jobs
       - openstack-python-jobs
-      - openstack-python35-jobs
-      - openstack-python36-jobs
-      - openstack-python37-jobs
+      - openstack-python3-train-jobs
       - periodic-stable-jobs
       - publish-openstack-docs-pti
       - release-notes-jobs-python3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/AUTHORS 
new/oslo.service-1.40.2/AUTHORS
--- old/oslo.service-1.38.0/AUTHORS     2019-02-26 01:09:41.000000000 +0100
+++ new/oslo.service-1.40.2/AUTHORS     2019-09-12 18:37:54.000000000 +0200
@@ -45,11 +45,13 @@
 Eoghan Glynn <[email protected]>
 Eric Brown <[email protected]>
 Eric Fried <[email protected]>
+Eric Fried <[email protected]>
 Eric Guo <[email protected]>
 Eric Windisch <[email protected]>
 Fengqian.Gao <[email protected]>
 Flavio Percoco <[email protected]>
 Gary Kotton <[email protected]>
+Ghanshyam Mann <[email protected]>
 Hengqing Hu <[email protected]>
 HervĂ© Beraud <[email protected]>
 Ian Wienand <[email protected]>
@@ -84,6 +86,7 @@
 Michael Johnson <[email protected]>
 Michael Still <[email protected]>
 Mitsuru Kanabuchi <[email protected]>
+Mohammed Naser <[email protected]>
 Monty Taylor <[email protected]>
 OpenStack Release Bot <[email protected]>
 Pavlo Shchelokovskyy <[email protected]>
@@ -95,6 +98,7 @@
 Russell Bryant <[email protected]>
 Sean Dague <[email protected]>
 Sean McGinnis <[email protected]>
+Sebastian Lohff <[email protected]>
 Sergey Kraynev <[email protected]>
 Sergey Lukjanov <[email protected]>
 Sergey Vilgelm <[email protected]>
@@ -120,9 +124,12 @@
 ZhongShengping <[email protected]>
 Zhongyue Luo <[email protected]>
 apporc <[email protected]>
+caoyuan <[email protected]>
+chenke <[email protected]>
 fujioka yuuichi <[email protected]>
 gecong1973 <[email protected]>
 gongysh <[email protected]>
+jacky06 <[email protected]>
 jun923.gu <[email protected]>
 lei zhang <[email protected]>
 lin-hua-cheng <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/ChangeLog 
new/oslo.service-1.40.2/ChangeLog
--- old/oslo.service-1.38.0/ChangeLog   2019-02-26 01:09:41.000000000 +0100
+++ new/oslo.service-1.40.2/ChangeLog   2019-09-12 18:37:53.000000000 +0200
@@ -1,6 +1,35 @@
 CHANGES
 =======
 
+1.40.2
+------
+
+* Reno for SIGHUP fix
+
+1.40.1
+------
+
+* Polish usage.rst
+* restart: don't stop process on sighup when mutating
+* Move doc related modules to doc/requirements.txt
+* Add Python 3 Train unit tests
+
+1.40.0
+------
+
+* Stop using pbr to build docs
+* Make PID availabe as formatstring in backdoor path
+
+1.39.0
+------
+
+* Cap Bandit below 1.6.0 and update Sphinx requirement
+* Add workers' type check before launching the services
+* Replace git.openstack.org URLs with opendev.org URLs
+* OpenDev Migration Patch
+* Dropping the py35 testing
+* Update master for stable/stein
+
 1.38.0
 ------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/PKG-INFO 
new/oslo.service-1.40.2/PKG-INFO
--- old/oslo.service-1.38.0/PKG-INFO    2019-02-26 01:09:41.000000000 +0100
+++ new/oslo.service-1.40.2/PKG-INFO    2019-09-12 18:37:54.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: oslo.service
-Version: 1.38.0
+Version: 1.40.2
 Summary: oslo.service library
 Home-page: https://docs.openstack.org/oslo.service/latest/
 Author: OpenStack
@@ -35,7 +35,7 @@
         
         * Free software: Apache license
         * Documentation: https://docs.openstack.org/oslo.service/latest/
-        * Source: https://git.openstack.org/cgit/openstack/oslo.service
+        * Source: https://opendev.org/openstack/oslo.service
         * Bugs: https://bugs.launchpad.net/oslo.service
         * Release notes: https://docs.openstack.org/releasenotes/oslo.service/
         
@@ -50,4 +50,5 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/README.rst 
new/oslo.service-1.40.2/README.rst
--- old/oslo.service-1.38.0/README.rst  2019-02-26 01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/README.rst  2019-09-12 18:37:18.000000000 +0200
@@ -27,6 +27,6 @@
 
 * Free software: Apache license
 * Documentation: https://docs.openstack.org/oslo.service/latest/
-* Source: https://git.openstack.org/cgit/openstack/oslo.service
+* Source: https://opendev.org/openstack/oslo.service
 * Bugs: https://bugs.launchpad.net/oslo.service
 * Release notes: https://docs.openstack.org/releasenotes/oslo.service/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/doc/requirements.txt 
new/oslo.service-1.40.2/doc/requirements.txt
--- old/oslo.service-1.38.0/doc/requirements.txt        1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.service-1.40.2/doc/requirements.txt        2019-09-12 
18:37:18.000000000 +0200
@@ -0,0 +1,8 @@
+# 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>=1.18.1 # Apache-2.0
+sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7' # BSD
+sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4' # BSD
+reno>=2.5.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.service-1.38.0/doc/source/configuration/index.rst 
new/oslo.service-1.40.2/doc/source/configuration/index.rst
--- old/oslo.service-1.38.0/doc/source/configuration/index.rst  2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/doc/source/configuration/index.rst  2019-09-12 
18:37:18.000000000 +0200
@@ -1,6 +1,6 @@
-=======================
- Configuration Options
-=======================
+=====================
+Configuration Options
+=====================
 
 oslo.service uses oslo.config to define and manage configuration options
 to allow the deployer to control how an application uses this library.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/doc/source/install/index.rst 
new/oslo.service-1.40.2/doc/source/install/index.rst
--- old/oslo.service-1.38.0/doc/source/install/index.rst        2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/doc/source/install/index.rst        2019-09-12 
18:37:18.000000000 +0200
@@ -1,6 +1,6 @@
-==============
- Installation
-==============
+============
+Installation
+============
 
 At the command line::
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.service-1.38.0/doc/source/reference/eventlet_backdoor.rst 
new/oslo.service-1.40.2/doc/source/reference/eventlet_backdoor.rst
--- old/oslo.service-1.38.0/doc/source/reference/eventlet_backdoor.rst  
2019-02-26 01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/doc/source/reference/eventlet_backdoor.rst  
2019-09-12 18:37:18.000000000 +0200
@@ -1,6 +1,6 @@
-==================
- eventlet_backdoor
-==================
+=================
+eventlet_backdoor
+=================
 
 .. automodule:: oslo_service.eventlet_backdoor
    :members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/doc/source/user/usage.rst 
new/oslo.service-1.40.2/doc/source/user/usage.rst
--- old/oslo.service-1.38.0/doc/source/user/usage.rst   2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/doc/source/user/usage.rst   2019-09-12 
18:37:18.000000000 +0200
@@ -45,21 +45,32 @@
 Using oslo.service with oslo-config-generator
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-The ``oslo.service`` provides several entry points to generate a configuration
+The ``oslo.service`` provides several entry points to generate configuration
 files.
 
 * :func:`oslo.service.service <oslo_service.service.list_opts>`
-    The options from the service and eventlet_backdoor modules for
-    the [DEFAULT] section.
+    The options from the :mod:`~oslo_service.service` and
+    :mod:`~oslo_service.eventlet_backdoor` modules for the ``[DEFAULT]``
+    section.
 
 * :func:`oslo.service.periodic_task <oslo_service.periodic_task.list_opts>`
-    The options from the periodic_task module for the [DEFAULT] section.
+    The options from the :mod:`~oslo_service.periodic_task` module for the
+    ``[DEFAULT]`` section.
 
 * :func:`oslo.service.sslutils <oslo_service.sslutils.list_opts>`
-    The options from the sslutils module for the [ssl] section.
+    The options from the :mod:`~oslo_service.sslutils` module for the
+    :oslo.config:group:`ssl` section.
 
 * :func:`oslo.service.wsgi <oslo_service.wsgi.list_opts>`
-    The options from the wsgi module for the [DEFAULT] section.
+    The options from the :mod:`~oslo_service.wsgi` module for the ``[DEFAULT]``
+    section.
+
+.. todo:: The ref page for oslo_service.wsgi doesn't seem to be rendering, so
+          the above doesn't link.
+
+.. todo:: Attempting to use :oslo.config:group:`DEFAULT` above only links to
+          the first DEFAULT section in the configuration/index doc because the
+          #DEFAULT anchor is duplicated for each of the show-options sections.
 
 **ATTENTION:** The library doesn't provide an oslo.service entry point.
 
@@ -72,7 +83,7 @@
 Launching and controlling services
 ==================================
 
-oslo_service.service module provides tools for launching OpenStack
+The :mod:`oslo_service.service` module provides tools for launching OpenStack
 services and controlling their lifecycles.
 
 A service is an instance of any class that
@@ -85,7 +96,8 @@
 Launchers
 ~~~~~~~~~
 
-oslo_service.service module provides two launchers for running services:
+The :mod:`oslo_service.service` module provides two launchers for running
+services:
 
 * :py:class:`oslo_service.service.ServiceLauncher` - used for
   running one or more service in a parent process.
@@ -111,8 +123,9 @@
 
 Or one can simply call :func:`oslo_service.service.launch` which will
 automatically pick an appropriate launcher based on a number of workers that
-are passed to it (ServiceLauncher in case workers=1 or None and
-ProcessLauncher in other case).
+are passed to it (:py:class:`~oslo_service.service.ServiceLauncher` if
+``workers=1`` or ``None`` and :py:class:`~oslo_service.service.ProcessLauncher`
+in other case).
 
 .. code-block:: python
 
@@ -123,36 +136,43 @@
 
     launcher = service.launch(CONF, service.Service(), workers=3)
 
-*NOTE:* Please be informed that it is highly recommended to use no
-more than one instance of ServiceLauncher and ProcessLauncher classes
-per process.
+.. note:: It is highly recommended to use no more than one instance of the
+          :py:class:`~oslo_service.service.ServiceLauncher` or
+          :py:class:`~oslo_service.service.ProcessLauncher` class per process.
 
 Signal handling
 ~~~~~~~~~~~~~~~
 
-oslo_service.service provides handlers for such signals as SIGTERM, SIGINT
-and SIGHUP.
+:mod:`oslo_service.service` provides handlers for such signals as ``SIGTERM``,
+``SIGINT``, and ``SIGHUP``.
 
-SIGTERM is used for graceful termination of services. This can allow a
+``SIGTERM`` is used for graceful termination of services. This can allow a
 server to wait for all clients to close connections while rejecting new
-incoming requests. Config option graceful_shutdown_timeout specifies how
-many seconds after receiving a SIGTERM signal, a server should continue
-to run, handling the existing connections. Setting graceful_shutdown_timeout
-to zero means that the server will wait indefinitely until all remaining
-requests have been fully served.
-
-To force instantaneous termination SIGINT signal must be sent.
-
-On receiving SIGHUP configuration files are reloaded and a service
-is being reset and started again. Then all child workers are gracefully
-stopped using SIGTERM and workers with new configuration are
-spawned. Thus, SIGHUP can be used for changing config options on the go.
+incoming requests. Config option
+:oslo.config:option:`graceful_shutdown_timeout` specifies how many seconds
+after receiving a ``SIGTERM`` signal a server should continue to run, handling
+the existing connections. Setting
+:oslo.config:option:`graceful_shutdown_timeout` to zero means that the server
+will wait indefinitely until all remaining requests have been fully served.
+
+To force instantaneous termination the ``SIGINT`` signal must be sent.
+
+The behavior on receiving ``SIGHUP`` varies based on how the service is
+configured. If the launcher uses ``restart_method='reload'`` (the default),
+then the service will reload its configuration and any threads will be
+completely restarted. If ``restart_method='mutate'`` is used, then only the
+configuration options marked as mutable will be reloaded and the service
+threads will not be restarted.
+
+See :py:class:`oslo_service.service.Launcher` for more details on the
+``restart_method`` parameter.
+
+.. note:: ``SIGHUP`` is not supported on Windows.
+.. note:: Config option :oslo.config:option:`graceful_shutdown_timeout` is not
+          supported on Windows.
 
-*NOTE:* SIGHUP is not supported on Windows.
-*NOTE:* Config option graceful_shutdown_timeout is not supported on Windows.
-
-Below is the example of a service with a reset method that allows reloading
-logging options by sending a SIGHUP.
+Below is an example of a service with a reset method that allows reloading
+logging options by sending a ``SIGHUP``.
 
 .. code-block:: python
 
@@ -182,22 +202,23 @@
 Profiling
 ~~~~~~~~~
 
-Processes spawned through oslo_service.service can be profiled (function
-calltrace) through eventlet_backdoor module. Service has to configure
-backdoor_port option to enable it's workers to listen on TCP ports.
-Then user can send "prof()" command to capture worker processes function
-calltrace.
-
-1) To start profiling send "prof()" command on processes listening port
-
-2) To stop profiling and capture "pstat" calltrace to a file, send prof
-   command with filename as argument i.e "prof(filename)"
-   on worker processes listening port. Stats file (in pstat format) with
-   user provided filename by adding .prof as suffix will be generated
-   in temp directory.
+Processes spawned through :mod:`oslo_service.service` can be profiled (function
+calltrace) through the :mod:`~oslo_service.eventlet_backdoor` module. The
+service must be configured with the :oslo.config:option:`backdoor_port` option
+to enable its workers to listen on TCP ports. The user can then send the
+``prof()`` command to capture the worker process's function calltrace.
+
+1) To start profiling send the ``prof()`` command on the process's listening
+   port
+
+2) To stop profiling and capture pstat calltrace to a file, send the
+   ``prof()`` command with a file basename as an argument (``prof(basename)``)
+   to the worker process's listening port. A stats file (in pstat format) will
+   be generated in the temp directory with the user-provided basename with a
+   ``.prof`` suffix .
 
-For example, to profile neutron server process (which is listening on
-port 8002 configured through backdoor_port option),
+For example, to profile a neutron server process (which is listening on
+port 8002 configured through the :oslo.config:option:`backdoor_port` option):
 
 .. code-block:: bash
 
@@ -206,9 +227,8 @@
     $ neutron port-delete p1; neutron port-delete p1
     $ echo "prof('neutron')" | nc localhost 8002
 
-
-This will generate "/tmp/neutron.prof" as stats file. Later user can print
-the stats from the trace file like below
+This will generate a stats file in ``/tmp/neutron.prof``. Stats can be printed
+from the trace file as follows:
 
 .. code-block:: python
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/oslo.service.egg-info/PKG-INFO 
new/oslo.service-1.40.2/oslo.service.egg-info/PKG-INFO
--- old/oslo.service-1.38.0/oslo.service.egg-info/PKG-INFO      2019-02-26 
01:09:41.000000000 +0100
+++ new/oslo.service-1.40.2/oslo.service.egg-info/PKG-INFO      2019-09-12 
18:37:54.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: oslo.service
-Version: 1.38.0
+Version: 1.40.2
 Summary: oslo.service library
 Home-page: https://docs.openstack.org/oslo.service/latest/
 Author: OpenStack
@@ -35,7 +35,7 @@
         
         * Free software: Apache license
         * Documentation: https://docs.openstack.org/oslo.service/latest/
-        * Source: https://git.openstack.org/cgit/openstack/oslo.service
+        * Source: https://opendev.org/openstack/oslo.service
         * Bugs: https://bugs.launchpad.net/oslo.service
         * Release notes: https://docs.openstack.org/releasenotes/oslo.service/
         
@@ -50,4 +50,5 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.service-1.38.0/oslo.service.egg-info/SOURCES.txt 
new/oslo.service-1.40.2/oslo.service.egg-info/SOURCES.txt
--- old/oslo.service-1.38.0/oslo.service.egg-info/SOURCES.txt   2019-02-26 
01:09:41.000000000 +0100
+++ new/oslo.service-1.40.2/oslo.service.egg-info/SOURCES.txt   2019-09-12 
18:37:54.000000000 +0200
@@ -15,6 +15,7 @@
 setup.py
 test-requirements.txt
 tox.ini
+doc/requirements.txt
 doc/source/conf.py
 doc/source/index.rst
 doc/source/configuration/index.rst
@@ -73,6 +74,8 @@
 releasenotes/notes/add-timeout-looping-call-5cc396b75597c3c2.yaml
 releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
 releasenotes/notes/profile-worker-5d3fd0f0251d62b8.yaml
+releasenotes/notes/service-children-SIGHUP-15d0cf6d2a1bdbf9.yaml
+releasenotes/notes/support-pid-in-eventlet-backdoor-socket-path-1863eaad1dd08556.yaml
 releasenotes/notes/threadgroup-cancel-bd89d72f383a3d9b.yaml
 releasenotes/notes/timer-args-f578c8f9d08b217d.yaml
 releasenotes/notes/timer-stop_on_exception-9f21d7c4d6d1b0d9.yaml
@@ -82,6 +85,7 @@
 releasenotes/source/pike.rst
 releasenotes/source/queens.rst
 releasenotes/source/rocky.rst
+releasenotes/source/stein.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.service-1.38.0/oslo.service.egg-info/pbr.json 
new/oslo.service-1.40.2/oslo.service.egg-info/pbr.json
--- old/oslo.service-1.38.0/oslo.service.egg-info/pbr.json      2019-02-26 
01:09:41.000000000 +0100
+++ new/oslo.service-1.40.2/oslo.service.egg-info/pbr.json      2019-09-12 
18:37:54.000000000 +0200
@@ -1 +1 @@
-{"git_version": "ca6f839", "is_release": true}
\ No newline at end of file
+{"git_version": "a7621c8", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/oslo_service/_options.py 
new/oslo.service-1.40.2/oslo_service/_options.py
--- old/oslo.service-1.38.0/oslo_service/_options.py    2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/oslo_service/_options.py    2019-09-12 
18:37:18.000000000 +0200
@@ -31,7 +31,8 @@
                     " option is mutually exclusive with 'backdoor_port' in"
                     " that only one should be provided. If both are provided"
                     " then the existence of this option overrides the usage of"
-                    " that option.")
+                    " that option. Inside the path {pid} will be replaced with"
+                    " the PID of the current process.")
 ]
 
 periodic_opts = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.service-1.38.0/oslo_service/eventlet_backdoor.py 
new/oslo.service-1.40.2/oslo_service/eventlet_backdoor.py
--- old/oslo.service-1.38.0/oslo_service/eventlet_backdoor.py   2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/oslo_service/eventlet_backdoor.py   2019-09-12 
18:37:18.000000000 +0200
@@ -214,8 +214,16 @@
         # listen().  In any case, pull the port number out here.
         where_running = sock.getsockname()[1]
     else:
-        sock = _try_open_unix_domain_socket(conf.backdoor_socket)
-        where_running = conf.backdoor_socket
+        try:
+            backdoor_socket_path = conf.backdoor_socket.format(pid=os.getpid())
+        except (KeyError, IndexError, ValueError) as e:
+            backdoor_socket_path = conf.backdoor_socket
+            LOG.warning("Could not apply format string to eventlet "
+                        "backdoor socket path ({}) - continuing with "
+                        "unformatted path"
+                        "".format(e))
+        sock = _try_open_unix_domain_socket(backdoor_socket_path)
+        where_running = backdoor_socket_path
 
     # NOTE(johannes): The standard sys.displayhook will print the value of
     # the last expression and set it to __builtin__._, which overwrites
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/oslo_service/service.py 
new/oslo.service-1.40.2/oslo_service/service.py
--- old/oslo.service-1.38.0/oslo_service/service.py     2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/oslo_service/service.py     2019-09-12 
18:37:18.000000000 +0200
@@ -261,12 +261,10 @@
         """
         self.conf = conf
         conf.register_opts(_options.service_opts)
-        self.services = Services()
+        self.services = Services(restart_method=restart_method)
         self.backdoor_port = (
             eventlet_backdoor.initialize_if_enabled(self.conf))
         self.restart_method = restart_method
-        if restart_method not in _LAUNCHER_RESTART_METHODS:
-            raise ValueError(_("Invalid restart_method: %s") % restart_method)
 
     def launch_service(self, service, workers=1):
         """Load and start the given service.
@@ -309,7 +307,7 @@
         """
         if self.restart_method == 'reload':
             self.conf.reload_config_files()
-        elif self.restart_method == 'mutate':
+        else:  # self.restart_method == 'mutate'
             self.conf.mutate_config_files()
         self.services.restart()
 
@@ -372,7 +370,7 @@
             super(ServiceLauncher, self).wait()
         except SignalExit as exc:
             signame = self.signal_handler.signals_to_name[exc.signo]
-            LOG.info('Caught %s, exiting', signame)
+            LOG.info('Caught %s, handling', signame)
             status = exc.code
             signo = exc.signo
         except SystemExit as exc:
@@ -518,7 +516,7 @@
             launcher.wait()
         except SignalExit as exc:
             signame = self.signal_handler.signals_to_name[exc.signo]
-            LOG.info('Child caught %s, exiting', signame)
+            LOG.info('Child caught %s, handling', signame)
             status = exc.code
             signo = exc.signo
         except SystemExit as exc:
@@ -668,16 +666,18 @@
                 if not _is_sighup_and_daemon(self.sigcaught):
                     break
 
+                child_signal = signal.SIGTERM
                 if self.restart_method == 'reload':
                     self.conf.reload_config_files()
                 elif self.restart_method == 'mutate':
                     self.conf.mutate_config_files()
+                    child_signal = signal.SIGHUP
                 for service in set(
                         [wrap.service for wrap in self.children.values()]):
                     service.reset()
 
                 for pid in self.children:
-                    os.kill(pid, signal.SIGTERM)
+                    os.kill(pid, child_signal)
 
                 self.running = True
                 self.sigcaught = None
@@ -743,7 +743,10 @@
 
 class Services(object):
 
-    def __init__(self):
+    def __init__(self, restart_method='reload'):
+        if restart_method not in _LAUNCHER_RESTART_METHODS:
+            raise ValueError(_("Invalid restart_method: %s") % restart_method)
+        self.restart_method = restart_method
         self.services = []
         self.tg = threadgroup.ThreadGroup()
         self.done = event.Event()
@@ -776,12 +779,23 @@
         self.tg.wait()
 
     def restart(self):
-        """Reset services and start them in new threads."""
-        self.stop()
-        self.done = event.Event()
+        """Reset services.
+
+        The behavior of this function varies depending on the value of the
+        restart_method member. If the restart_method is `reload`, then it
+        will stop the services, reset them, and start them in new threads.
+        If the restart_method is `mutate`, then it will just reset the
+        services without restarting them.
+        """
+        if self.restart_method == 'reload':
+            self.stop()
+            self.done = event.Event()
         for restart_service in self.services:
             restart_service.reset()
-            self.tg.add_thread(self.run_service, restart_service, self.done)
+            if self.restart_method == 'reload':
+                self.tg.add_thread(self.run_service,
+                                   restart_service,
+                                   self.done)
 
     @staticmethod
     def run_service(service, done):
@@ -807,13 +821,17 @@
     :param conf: an instance of ConfigOpts
     :param service: a service to launch, must be an instance of
            :class:`oslo_service.service.ServiceBase`
-    :param workers: a number of processes in which a service will be running
+    :param workers: a number of processes in which a service will be running,
+        type should be int.
     :param restart_method: Passed to the constructed launcher. If 'reload', the
         launcher will call reload_config_files on SIGHUP. If 'mutate', it will
         call mutate_config_files on SIGHUP. Other values produce a ValueError.
     :returns: instance of a launcher that was used to launch the service
     """
 
+    if workers is not None and not isinstance(workers, six.integer_types):
+        raise TypeError(_("Type of workers should be int!"))
+
     if workers is not None and workers <= 0:
         raise ValueError(_("Number of workers should be positive!"))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.service-1.38.0/oslo_service/tests/test_eventlet_backdoor.py 
new/oslo.service-1.40.2/oslo_service/tests/test_eventlet_backdoor.py
--- old/oslo.service-1.38.0/oslo_service/tests/test_eventlet_backdoor.py        
2019-02-26 01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/oslo_service/tests/test_eventlet_backdoor.py        
2019-09-12 18:37:18.000000000 +0200
@@ -38,6 +38,30 @@
         path = eventlet_backdoor.initialize_if_enabled(self.conf)
         self.assertEqual("/tmp/my_special_socket", path)
 
+    @mock.patch.object(eventlet, 'spawn')
+    @mock.patch.object(eventlet, 'listen')
+    def test_backdoor_path_with_format_string(self, listen_mock, spawn_mock):
+        self.config(backdoor_socket="/tmp/my_special_socket-{pid}")
+        listen_mock.side_effect = mock.Mock()
+        path = eventlet_backdoor.initialize_if_enabled(self.conf)
+        expected_path = "/tmp/my_special_socket-{}".format(os.getpid())
+        self.assertEqual(expected_path, path)
+
+    @mock.patch.object(eventlet, 'spawn')
+    @mock.patch.object(eventlet, 'listen')
+    def test_backdoor_path_with_broken_format_string(self, listen_mock,
+                                                     spawn_mock):
+        broken_socket_paths = [
+            "/tmp/my_special_socket-{}",
+            "/tmp/my_special_socket-{broken",
+            "/tmp/my_special_socket-{broken}",
+        ]
+        for socket_path in broken_socket_paths:
+            self.config(backdoor_socket=socket_path)
+            listen_mock.side_effect = mock.Mock()
+            path = eventlet_backdoor.initialize_if_enabled(self.conf)
+            self.assertEqual(socket_path, path)
+
     @mock.patch.object(os, 'unlink')
     @mock.patch.object(eventlet, 'spawn')
     @mock.patch.object(eventlet, 'listen')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.service-1.38.0/oslo_service/tests/test_service.py 
new/oslo.service-1.40.2/oslo_service/tests/test_service.py
--- old/oslo.service-1.38.0/oslo_service/tests/test_service.py  2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/oslo_service/tests/test_service.py  2019-09-12 
18:37:18.000000000 +0200
@@ -385,6 +385,9 @@
         for num_workers in [0, -1]:
             self.assertRaises(ValueError, service.launch, self.conf,
                               svc, num_workers)
+        for num_workers in ["0", "a", "1"]:
+            self.assertRaises(TypeError, service.launch, self.conf,
+                              svc, num_workers)
 
     @mock.patch('signal.alarm')
     @mock.patch('oslo_service.service.ProcessLauncher.launch_service')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.service-1.38.0/releasenotes/notes/service-children-SIGHUP-15d0cf6d2a1bdbf9.yaml
 
new/oslo.service-1.40.2/releasenotes/notes/service-children-SIGHUP-15d0cf6d2a1bdbf9.yaml
--- 
old/oslo.service-1.38.0/releasenotes/notes/service-children-SIGHUP-15d0cf6d2a1bdbf9.yaml
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.service-1.40.2/releasenotes/notes/service-children-SIGHUP-15d0cf6d2a1bdbf9.yaml
    2019-09-12 18:37:18.000000000 +0200
@@ -0,0 +1,10 @@
+---
+fixes:
+  - |
+    ``SIGHUP`` is now handled properly with ``restart_method='mutate'``, no
+    longer restarting child processes. See `bug 1794708`_ for details. In
+    conjunction with the fix for `bug 1715374`_ in oslo.privsep, the
+    nova-compute service now behaves correctly when  it receives ``SIGHUP``.
+
+    .. _`bug 1794708`: https://bugs.launchpad.net/oslo.service/+bug/1794708
+    .. _`bug 1715374`: https://bugs.launchpad.net/nova/+bug/1715374
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.service-1.38.0/releasenotes/notes/support-pid-in-eventlet-backdoor-socket-path-1863eaad1dd08556.yaml
 
new/oslo.service-1.40.2/releasenotes/notes/support-pid-in-eventlet-backdoor-socket-path-1863eaad1dd08556.yaml
--- 
old/oslo.service-1.38.0/releasenotes/notes/support-pid-in-eventlet-backdoor-socket-path-1863eaad1dd08556.yaml
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.service-1.40.2/releasenotes/notes/support-pid-in-eventlet-backdoor-socket-path-1863eaad1dd08556.yaml
       2019-09-12 18:37:18.000000000 +0200
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    The config option backdoor_socket_path now is a format string that
+    supports {pid}, which will be replaced with the PID of the current
+    process. This makes the eventlet backdoor accessible when spawning
+    multiple processes with the same backdoor_socket_path inside the
+    configuration.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/releasenotes/source/index.rst 
new/oslo.service-1.40.2/releasenotes/source/index.rst
--- old/oslo.service-1.38.0/releasenotes/source/index.rst       2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/releasenotes/source/index.rst       2019-09-12 
18:37:18.000000000 +0200
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   stein
    rocky
    queens
    pike
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/releasenotes/source/stein.rst 
new/oslo.service-1.40.2/releasenotes/source/stein.rst
--- old/oslo.service-1.38.0/releasenotes/source/stein.rst       1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.service-1.40.2/releasenotes/source/stein.rst       2019-09-12 
18:37:18.000000000 +0200
@@ -0,0 +1,6 @@
+===================================
+ Stein Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/stein
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/setup.cfg 
new/oslo.service-1.40.2/setup.cfg
--- old/oslo.service-1.38.0/setup.cfg   2019-02-26 01:09:41.000000000 +0100
+++ new/oslo.service-1.40.2/setup.cfg   2019-09-12 18:37:54.000000000 +0200
@@ -16,7 +16,8 @@
        Programming Language :: Python :: 2
        Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
-       Programming Language :: Python :: 3.5
+       Programming Language :: Python :: 3.6
+       Programming Language :: Python :: 3.7
 
 [files]
 packages = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/test-requirements.txt 
new/oslo.service-1.40.2/test-requirements.txt
--- old/oslo.service-1.38.0/test-requirements.txt       2019-02-26 
01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/test-requirements.txt       2019-09-12 
18:37:18.000000000 +0200
@@ -9,13 +9,9 @@
 requests>=2.14.2 # Apache-2.0
 stestr>=2.0.0 # Apache-2.0
 
-# These are needed for docs generation/testing
-openstackdocstheme>=1.18.1 # Apache-2.0
-sphinx!=1.6.6,>=1.6.2 # BSD
 doc8>=0.6.0 # Apache-2.0
-reno>=2.5.0 # Apache-2.0
 
 coverage!=4.4,>=4.0 # Apache-2.0
 
 # Bandit security code scanner
-bandit>=1.1.0 # Apache-2.0
+bandit>=1.1.0,<1.6.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.service-1.38.0/tox.ini 
new/oslo.service-1.40.2/tox.ini
--- old/oslo.service-1.38.0/tox.ini     2019-02-26 01:07:10.000000000 +0100
+++ new/oslo.service-1.40.2/tox.ini     2019-09-12 18:37:18.000000000 +0200
@@ -1,6 +1,6 @@
 [tox]
 minversion = 2.0
-envlist = py35,py27,pep8,bandit
+envlist = py27,py37,pep8,bandit
 
 [testenv]
 setenv =
@@ -9,7 +9,8 @@
     CLIENT_NAME=oslo.service
 install_command = pip install {opts} {packages}
 deps =
-  
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
+  
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
+  -r{toxinidir}/doc/requirements.txt
   -r{toxinidir}/test-requirements.txt
   -r{toxinidir}/requirements.txt
 whitelist_externals = find
@@ -30,7 +31,11 @@
 
 [testenv:docs]
 basepython = python3
-commands = python setup.py build_sphinx
+whitelist_externals =
+  rm
+commands =
+  rm -rf doc/build
+  sphinx-build -W -b html doc/source doc/build/html {posargs}
 
 [testenv:cover]
 basepython = python3
@@ -54,7 +59,7 @@
 [testenv:bandit]
 basepython = python3
 deps =
-  
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
+  
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
   -r{toxinidir}/test-requirements.txt
   -r{toxinidir}/requirements.txt
 commands = bandit -r oslo_service -n5 -x tests {posargs}


Reply via email to