CHANGES
=======

4.3.0
-----

* Fix signal lookup to only include singals
* Add comprehensive backend system documentation

4.2.2
-----

* Revert "Fix keyword-arg-before-vararg warning"
* Don't deprecate the entire oslo\_service.wsgi module
* Fix inconsistent interface of ThreadGroup

4.2.1
-----

* Fix crash during shutdown by using public shutdown() method
* Accept wait\_interval and support multiple launch\_service() calls
* Fix keyword-arg-before-vararg warning
* Fix ServiceBase mapping when using threading backend
* add pyproject.toml to support pip 23.1

4.2.0
-----

* Add threading backend implementation using cotyledon and standard threads
* Replace os.popen
* Drop redundant injection of VIRTUAL\_ENV
* Update master for stable/2025.1

4.1.1
-----

* Fix removed public API

4.1.0
-----

* Migrate Eventlet components to the new backend system
* Introduce configurable backend system in oslo.service

4.0.0
-----

* reno: Update master for unmaintained/2023.1

3.6.0
-----

* Add note about requirements lower bounds
* Run pyupgrade to clean up Python 2 syntaxes
* Remove Python 3.8 support
* Fix outdated tox minversion
* Declare Python 3.12 support
* Remove workaround for eventlet < 0.27.0
* Update master for stable/2024.2

3.5.0
-----

* reno: Update master for unmaintained/zed
* Remove old excludes
* Update sslutils.wrap for newer Pythons
* Remove deprecated ssl options
* Make signal handling order predictable
* Update master for stable/2024.1
* reno: Update master for unmaintained/xena
* reno: Update master for unmaintained/wallaby
* reno: Update master for unmaintained/victoria

3.4.0
-----

* Switch to coverage command
* reno: Update master for unmaintained/yoga
* pre-commit: Integrate doc8 and bandit
* pre-commit: Bump versions
* Bump hacking
* Update python classifier in setup.cfg

3.3.0
-----

* Update master for stable/2023.2

3.2.0
-----

* Imported Translations from Zanata
* Bump bandit
* Revert "Moves supported python runtimes from version 3.8 to 3.10"
* Moves supported python runtimes from version 3.8 to 3.10
* Update master for stable/2023.1

3.1.1
-----

* Fix issues related to tox4

3.1.0
-----

* Fix misuse of assertTrue
* Imported Translations from Zanata
* Add Python3 antelope unit tests
* Update master for stable/zed
* Fix native threads on child process

3.0.0
-----

* Imported Translations from Zanata
* Drop python3.6/3.7 support in testing runtime
* Add Python3 zed unit tests
* Update master for stable/yoga

2.8.0
-----

* Make debug option of wsgi server configurable

2.7.0
-----

* Fix fo() backdoor command for non-class objects
* Fix BackOffLoopingCall error so it is not misleading
* Add Python3 yoga unit tests
* Update master for stable/xena

2.6.0
-----

* setup.cfg: Replace dashes with underscores
* Remove references to 'sys.version\_info'
* Move flake8 as a pre-commit local target
* Add Python3 xena unit tests
* Update master for stable/wallaby
* Remove lower-constraints remnants

2.5.0
-----

* remove unicode from code
* Use TOX\_CONSTRAINTS\_FILE
* Dropping lower constraints testing
* Drop custom implementation of EVENTLET\_HUB
* Use TOX\_CONSTRAINTS\_FILE
* Use py3 as the default runtime for tox
* Use TOX\_CONSTRAINTS\_FILE
* Add Python3 wallaby unit tests
* Update master for stable/victoria
* Adding pre-commit

2.4.0
-----

* [goal] Migrate testing to ubuntu focal
* Bump bandit version

2.3.2
-----

* Do not import "oslo.log" in the main module

2.3.1
-----


2.3.0
-----

* Fix wsgi SSL tests for wsgi module under python 3
* Reactivate wsgi test related to socket option under python 3
* Fix wsgi/SSL/ipv6 tests for wsgi module under python 3
* Fix some SSL tests for wsgi module under python 3
* Raise minimum version of eventlet to 0.25.2
* Fix pygments style
* Stop to use the \_\_future\_\_ module

2.2.0
-----

* Drop six usages
* Fix hacking min version to 3.0.1
* Switch to newer openstackdocstheme and reno versions
* Remove the unused coding style modules
* Remove translation sections from setup.cfg
* Align tests with monkey patch original current\_thread \_active
* Remove monotonic usage
* Align contributing doc with oslo's policy
* Monkey patch original current\_thread \_active
* Bump default tox env from py37 to py38
* Add py38 package metadata
* Use unittest.mock instead of third party mock
* Add release notes links to doc index
* Add Python3 victoria unit tests
* Update master for stable/ussuri
* Cleanup py27 support

2.1.1
-----

* Update hacking for Python3

2.1.0
-----

* Update eventlet
* Update the minversion parameter
* remove outdated header
* reword releasenote for py27 support dropping

2.0.0
-----

* [ussuri][goal] Drop python 2.7 support and testing
* tox: Trivial cleanup

1.41.1
------

* Add 'is\_available' function
* tox: Keeping going with docs
* Switch to official Ussuri jobs
* Extend test cert validity to 2049
* Update the constraints url

1.41.0
------

* Update master for stable/train

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
------

* Update oslo.service to require yappi 1.0 or newer
* add python 3.7 unit test job
* Update hacking version

1.37.0
------

* Bump oslo.utils lower constraint to 3.40.2

1.36.0
------

* Profile Oslo Service processes
* Use eventletutils Event class
* Avoid eventlet\_backdoor listing on same port

1.35.0
------

* Use template for lower-constraints
* Deprecate the ThreadGroup.cancel() API
* Document the threadgroup module
* Actually test child SIGHUP signal
* Restore correct signal handling in Python3
* Add stop\_on\_exception to TG timers
* Add better timer APIs to ThreadGroup
* Update mailinglist from dev to discuss
* Use SleepFixture in looping call test suite

1.33.0
------

* Fixture to mock loopingcall wait()
* Limit monotonic to py2

1.32.1
------

* Fix stop of loopingcall
* Use eventlet Event for loopingcall events
* Clean up .gitignore references to personal tools
* Always build universal wheels

1.32.0
------

* Ensure connection is active in graceful shutdown tests
* Stop asserting on Eventlet internals
* Skips signal handling on Windows
* add lib-forward-testing-python3 test job
* add python 3.6 unit test job
* import zuul job settings from project-config
* Update reno for stable/rocky

1.31.3
------

* Remove unnecessary pyNN testenv
* Convert oslo.service to using stestr
* Add release notes link to README
* Fix oslo.service ProcessLauncher fails to call stop
* fix tox python3 overrides
* Add test dependency on requests
* Remove moxstubout

1.31.2
------

* [ThreadGroup] Don't remove timer when stop timers
* Make lower-constraints job voting
* tox.ini: Use python3.5 in py35 environment
* Python 3: Fix eventlet wakeup after signal
* Python 3: Fix non-deterministic test
* Remove stale pip-missing-reqs tox test
* Trivial: Update pypi url to new url
* add lower-constraints job
* move doc8 test to pep8 job
* set default python to python3

1.31.1
------

* Revert "Revert "Permit aborting loopingcall while sleeping""

1.31.0
------

* Remove eventlet cap
* Fixup certificates and skip failing test

1.30.0
------

* Imported Translations from Zanata
* Imported Translations from Zanata
* Update links in README
* Imported Translations from Zanata
* Updated from global requirements
* Update reno for stable/queens
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements

1.29.0
------

* Maintain shared memory after fork in Python >=3.7
* Updated from global requirements
* Revert "Permit aborting loopingcall while sleeping"

1.28.1
------


1.28.0
------

* Remove -U from pip install
* Avoid tox\_install.sh for constraints support
* Updated from global requirements
* Remove setting of version/release from releasenotes
* Updated from global requirements

1.27.0
------

* Updated from global requirements
* change periodic\_task to catch all exceptions including BaseException
* Fix bandit scan and make it voting
* Imported Translations from Zanata

1.26.0
------

* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Imported Translations from Zanata
* Updated from global requirements
* Updated from global requirements
* Update reno for stable/pike
* Updated from global requirements

1.25.0
------

* Update URLs in documents according to document migration

1.24.1
------

* rearrange existing documentation to fit the new standard layout
* switch from oslosphinx to openstackdocstheme

1.24.0
------

* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Permit aborting loopingcall while sleeping
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements

1.23.0
------

* Add min\_interval to BackOffLoopingCall

1.22.0
------

* Updated from global requirements
* Updated from global requirements

1.21.0
------

* Remove log translations
* Use Sphinx 1.5 warning-is-error
* Fix some reST field lists in docstrings
* Updated from global requirements

1.20.0
------

* Updated from global requirements
* [Fix gate]Update test requirement
* Updated from global requirements
* Updated from global requirements
* Fix race condition with fast threads
* pbr.version.VersionInfo needs package name (oslo.xyz and not oslo\_xyz)
* Remove duplicated register\_opts call
* Update reno for stable/ocata
* Remove references to Python 3.4

1.19.0
------

* Add FixedIntervalWithTimeoutLoopingCall
* Add Constraints support
* Show team and repo badges on README

1.18.0
------

* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Imported Translations from Zanata
* Update .coveragerc after the removal of respective directory
* Delete python bytecode file

1.17.0
------

* Changed the home-page link
* Updated from global requirements
* Replace 'MagicMock' with 'Mock'
* Enable release notes translation
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements

1.16.0
------

* Updated from global requirements
* Stay alive on double SIGHUP

1.15.0
------

* Updated from global requirements

1.14.0
------

* Updated from global requirements
* Fix parameters of assertEqual are misplaced

1.13.0
------

* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Add reno for release notes management
* Updated from global requirements

1.12.0
------

* Imported Translations from Zanata
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements

1.11.0
------

* Trivial: ignore openstack/common in flake8 exclude list

1.10.0
------

* [Trivial] Remove executable privilege of doc/source/conf.py

1.9.0
-----

* Updated from global requirements
* Offer mutate\_config\_files
* Make \_spawn\_service more flexible
* Remove direct dependency on babel
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Fix argument type for \_sd\_notify() on python3
* Use a timeutils.StopWatch for cancel timing
* Add ability to cancel Threads and ThreadGroups
* Exception: message need '\_' function
* Fix Heartbeats stop when time is changed
* Updated from global requirements

1.7.0
-----

* Updated from global requirements
* Correct some help text
* Fix typo in help text
* wsgi: decrease the default number of greenthreads in pool
* Updated from global requirements

1.6.0
-----

* Updated from global requirements
* Allow the backdoor to serve from a local unix domain socket
* Updated from global requirements

1.5.0
-----

* Use requests in TestWSGIServerWithSSL instead of raw socket client

1.4.0
-----

* Updated from global requirements
* Updated from global requirements
* Fix misspelling and rewrite sentence
* Add a more useful/detailed frame dumping function
* Updated from global requirements
* Update translation setup
* Fix race condition on handling signals
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Fix artificial service.wait()

1.3.0
-----

* Graceful shutdown added to ServiceLauncher
* Fix test execution on CentOS 7
* Updated from global requirements
* Fix some inconsistency in docstrings
* Refactoring of tests/eventlet\_service.py
* Updated from global requirements
* Remove argument ServiceLauncher.wait() method
* fix a couple of assert issues
* Run sslutils and wsgi tests for python3
* Updated from global requirements

1.2.0
-----

* Updated from global requirements
* Fix a race condition in signal handlers
* Enable py3 mock.patch of RuntimeError
* Delete python bytecode before every test run
* Trival: Remove 'MANIFEST.in'

1.1.0
-----

* Avoid warning when time taken is close to zero
* Update the \_i18n.py file and fix the domain value
* Add Bandit to tox for security static analysis
* Code refactoring of ThreadGroup::stop\_timers()

1.0.0
-----

* Updated from global requirements
* Updated from global requirements
* Add functionality for creating Unix domain WSGI servers
* Use reflection.get\_class\_name() from oslo.utils
* Remove Python 2.6 classifier
* Remove openstack-common.conf
* cleanup tox.ini
* Change "started child" messages to DEBUG
* Support for SSL protocol and cipher controls

0.13.0
------

* Default value of graceful\_shutdown\_timeout is set to 60sec
* Updated from global requirements
* Logger name argument was added into wsgi.Server constructor
* Avoid the dual-naming confusion
* Forbid launching services with 0 or negative number of workers

0.12.0
------

* Document graceful\_shutdown\_timeout config option
* Remove py26 env from test list
* Added config option graceful\_shutdown\_timeout
* Updated from global requirements
* Add docstring for LoopingCallBase.\_start()
* Updated from global requirements

0.11.0
------

* Updated from global requirements
* Add doc8 to py27 tox env and fix raised issues
* Document termination of children on SIGHUP
* Updated from global requirements
* Updated from global requirements

0.10.0
------

* RetryDecorator should not log warnings/errors for expected exceptions
* Termination children on SIGHUP added
* Fix coverage configuration and execution
* Add register\_opts function to sslutils
* Move the common thread manipulating routine to a shared routine
* Update log string to correctly denote what it waits on
* Avoid removing entries for timers that didn't stop
* Cleanup thread on thread done callback
* Move 'history' -> release notes section
* Add unit tests for sslutils
* Expand README and clean up intro to sphinx docs
* Add shields.io version/downloads links/badges into README.rst
* add auto-generated docs for config options
* Move backoff looping call from IPA to oslo.service
* Change ignore-errors to ignore\_errors
* Fix the home-page value in setup.cfg
* WSGI module was corrected
* Updated from global requirements
* ThreadGroup's stop didn't recognise the current thread correctly
* doing monkey\_patch for unittest

0.9.0
-----

* Handling corner cases in dynamic looping call
* Change DEBUG log in loopingcall to TRACE level log
* Updated from global requirements

0.8.0
-----

* Added wsgi functionality

0.7.0
-----

* Updated from global requirements
* Update "Signal handling" section of usage docs
* Use oslo\_utils reflection to get 'f' callable name
* Updated from global requirements
* Prefix the 'safe\_wrapper' function to be '\_safe\_wrapper'
* Setup translations
* Check that sighup is supported before accessing signal.SIGHUP
* Use contextlib.closing instead of try ... finally: sock.close
* Avoid using the global lockutils semaphore collection
* Updated from global requirements

0.6.0
-----

* Added newline at end of file
* Added class SignalHandler
* Updated from global requirements
* Activate pep8 check that \_ is imported
* Denote what happens when no exceptions are passed in
* Allow LoopingCall to continue on exception in callee

0.5.0
-----

* Updated from global requirements
* Updated from global requirements
* Updated from global requirements
* Add oslo\_debug\_helper to tox.ini
* Add usage documentation for oslo\_service.service module

0.4.0
-----

* Updated from global requirements
* save docstring, name etc using six.wraps
* Move backdoor-related tests from test\_service
* Add mock to test\_requirements
* Remove usage of mox in test\_eventlet\_backdoor

0.3.0
-----

* Copy RetryDecorator from oslo.vmware
* Increase test coverage of systemd
* Ensure we set the event and wait on the timer in the test
* Make it easier to use the eventlet backdoor locally
* Track created thread and disallow more than one start being active

0.2.0
-----

* Documentation on the use of the oslo-config-generator
* Add greenlet to requirements
* Add tox target to find missing requirements
* Enforce H405 check
* Enforce H301 check
* Return timer after adding it to internal list
* Updated from global requirements
* Have all the looping calls share a common run loop
* Move service abstract base class check to launch\_service methods
* Fix a typo in a comment
* Updated from global requirements
* Use a signal name->sigval and sigval->signal name mapping

0.1.0
-----

* Test for instantaneous shutdown fixed
* Graceful shutdown WSGI/RPC server
* Use monotonic.monotonic and stopwatches instead of time.time
* Updated from global requirements
* Eventlet service fixed
* Add documentation for the service module
* Improve test coverage for loopingcall module
* Add oslo.service documentation
* Remove usage of global CONF
* Make logging option values configurable
* Introduce abstract base class for services
* Add entrypoints for option discovery
* Updated from global requirements
* Move the option definitions into a private file
* Fix unit tests
* Fix pep8
* exported from oslo-incubator by graduate.sh
* Clean up logging to conform to guidelines
* Port service to Python 3
* Test for shutting down eventlet server on signal
* service child process normal SIGTERM exit
* Revert "Revert "Revert "Optimization of waiting subprocesses in ProcessLauncher"""
* Revert "Revert "Optimization of waiting subprocesses in ProcessLauncher""
* Revert "Optimization of waiting subprocesses in ProcessLauncher"
* ProcessLauncher: reload config file in parent process on SIGHUP
* Add check to test\_\_signal\_handlers\_set
* Store ProcessLauncher signal handlers on class level
* Remove unused validate\_ssl\_version
* Update tests for optional sslv3
* Fixed ssl.PROTOCOL\_SSLv3 not supported by Python 2.7.9
* Optimization of waiting subprocesses in ProcessLauncher
* Switch from oslo.config to oslo\_config
* Change oslo.config to oslo\_config
* Remove oslo.log code and clean up versionutils API
* Replace mox by mox3
* Allow overriding name for periodic tasks
* Separate add\_periodic\_task from the metaclass \_\_init\_\_
* Upgrade to hacking 0.10
* Remove unnecessary import of eventlet
* Added graceful argument on Service.stop method
* Remove extra white space in log message
* Prefer delayed %r formatting over explicit repr use
* ServiceRestartTest: make it more resilient
* threadgroup: don't log GreenletExit
* add list\_opts to all modules with configuration options
* Remove code that moved to oslo.i18n
* Remove graduated test and fixtures libraries
* rpc, notifier: remove deprecated modules
* Let oslotest manage the six.move setting for mox
* Remove usage of readlines()
* Allow test\_service to run in isolation
* Changes calcuation of variable delay
* Use timestamp in loopingcall
* Remove unnecessary setUp function
* Log the function name of looping call
* pep8: fixed multiple violations
* Make periodic tasks run on regular spacing interval
* Use moxstubout and mockpatch from oslotest
* Implement stop method in ProcessLauncher
* Fix parenthesis typo misunderstanding in periodic\_task
* Fix docstring indentation in systemd
* Remove redundant default=None for config options
* Make unspecified periodic spaced tasks run on default interval
* Make stop\_timers() method public
* Remove deprecated LoopingCall
* Fixed several typos
* Add graceful stop function to ThreadGroup.stop
* Use oslotest instead of common test module
* Remove duplicated "caught" message
* Move notification point to a better place
* Remove rendundant parentheses of cfg help strings
* Adds test condition in test\_periodic
* Fixed spelling error - occured to occurred
* Add missing \_LI for LOG.info in service module
* notify calling process we are ready to serve
* Reap child processes gracefully if greenlet thread gets killed
* Improve help strings for sslutils module
* Remove unnecessary usage of noqa
* Removes use of timeutils.set\_time\_override
* Update oslo log messages with translation domains
* Refactor unnecessary arithmetic ops in periodic\_task
* Refactor if logic in periodic\_task
* Use timestamp in periodic tasks
* Add basic Python 3 tests
* Clear time override in test\_periodic
* Don't share periodic\_task instance data in a class attr
* Revert "service: replace eventlet event by threading"
* Simplify launch method
* Simple typo correction
* Cleanup unused log related code
* Utilizes assertIsNone and assertIsNotNone
* Fix filter() usage due to python 3 compability
* Use hacking import\_exceptions for gettextutils.\_
* threadgroup: use threading rather than greenthread
* disable SIGHUP restart behavior in foreground
* service: replace eventlet event by threading
* Allow configurable ProcessLauncher liveness check
* Make wait & stop methods work on all threads
* Typos fix in db and periodic\_task module
* Remove vim header
* os.\_exit in \_start\_child may cause unexpected exception
* Adjust import order according to PEP8 imports rule
* Add a link method to Thread
* Use multiprocessing.Event to ensure services have started
* Apply six for metaclass
* Removed calls to locals()
* Move comment in service.py to correct location
* Fixes issue with SUGHUP in services on Windows
* Replace using tests.utils part2
* Bump hacking to 0.7.0
* Replace using tests.utils with openstack.common.test
* Refactors boolean returns
* Add service restart function in oslo-incubator
* Fix stylistic problems with help text
* Enable H302 hacking check
* Convert kombu SSL version string into integer
* Allow launchers to be stopped multiple times
* Ignore any exceptions from rpc.cleanup()
* Add graceful service shutdown support to Launcher
* Improve usability when backdoor\_port is nonzero
* Enable hacking H404 test
* Enable hacking H402 test
* Enable hacking H401 test
* Fixes import order nits
* Add DynamicLoopCall timers to ThreadGroups
* Pass backdoor\_port to services being launched
* Improve python3 compatibility
* Use print\_function \_\_future\_\_ import
* Improve Python 3.x compatibility
* Import nova's looping call
* Copy recent changes in periodic tasks from nova
* Fix IBM copyright strings
* Removes unused imports in the tests module
* update OpenStack, LLC to OpenStack Foundation
* Add function for listing native threads to eventlet backdoor
* Use oslo-config-2013.1b3
* Support for SSL in wsgi.Service
* Replace direct use of testtools BaseTestCase
* Use testtools as test base class
* ThreadGroup remove unused name parameters
* Implement importutils.try\_import
* Fix test cases in tests.unit.test\_service
* Don't rely on os.wait() blocking
* Use Service thread group for WSGI request handling
* Make project pyflakes clean
* Replace try: import with extras.try\_import
* raise\_on\_error parameter shouldn't be passed to task function
* Account for tasks duration in LoopingCall delay
* updating sphinx documentation
* Enable eventlet\_backdoor to return port
* Use the ThreadGroup for the Launcher
* Change RPC cleanup ordering
* threadgroup : greethread.cancel() should be kill()
* Use spawn\_n when not capturing return value
* Make ThreadGroup derived from object to make mocking possible
* Don't log exceptions for GreenletExit and thread\_done
* Log CONF from ProcessLauncher.wait, like ServiceLauncher
* Import order clean-up
* Added a missing \`cfg\` import in service.py
* Log config on startup
* Integrate eventlet backdoor
* Add the rpc service and delete manager
* Use pep8 v1.3.3
* Add threadgroup to manage timers and greenthreads
* Add basic periodic task infrastructure
* Add multiprocess service launcher
* Add signal handling to service launcher
* Basic service launching infrastructure
* Move manager.py and service.py into common
* Copy eventlet\_backdoor into common from nova
* Copy LoopingCall from nova for service.py
* initial commit
* Initial skeleton project
