PCS is a configuration tool for High-availability clusters with a client-server architecture written (mostly) in Python. It is required to add a feature of asynchronous execution of tasks. To do so, mechanism for executing and managing synchronous tasks in asynchronous manner is required. Also, this mechanism should be possible to integrate to an existing HTTP server (which is using tornado, asynchronous programming).
- Familiarize yourself with Python and its libraries for asynchronous processing (e.g.: asyncio, multiprocessing, tornado).
- Familiarize yourself with the PCS project and requirements for the tasks that it facilitates in the cluster.
- Design an interface for creating and managing tasks in asynchronous environment. This interface should enable running more PCS commands at the same time and provide information about their status and results.
- Implement the proposed interface in a form of a REST API (tornado library can be used)
- Create a set of unit and integration tests for the implemented interface.
- Demonstrate on two simultaneously running PCS commands that the asynchronous processing works.