The goal of this blueprint is implement a way which will allow OpenStack services to run under Windows.
Currently, oslo_service project has a couple of Linux specific implementations, which makes it impossible to use under Windows. A few examples would be service.ProcessLauncher, which uses:
An alternative option for forking would be spawning subprocesses by using the multiprocessing module, which avoids the GIL problem. 
Multiprocessing module still forks the process on Linux systems, which means that the behaviour will remain consistent with the current implementation.
The proposed change is that service.ProcessLauncher to spawn mutliprocessing.Process objects as service workers instead.
Cygwin can be used under Windows , which is a collection of tools providing similar functionality to a “Linux distribution on Windows”.
The problem is, forking in Cygwin is known to be problematic and inefficient, as it does not map well on top of the WIN32 API. 
None, functionality and performance should not change for Linux.
CI testing will be performed by Jenkins for Linux and Hyper-V CI for Windows.
Testing should be done for both Python 2.7 and 3.4, as the implementation of the multiprocessing module differs greatly. Needed in order not to introduce regressions for a certain Python version.
Target Milestone for completion:
As per Proposed Change.
The current services that use the oslo_services module.
Version might be different for Python 2.7 and 3.4.
This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode