CHANGES
=======

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
