local notification driver¶
Exporting oslo notifications via a local Unix socket.
Today, if you have two daemons/agents on the same host and one wants to consume notifications from the other there is no practical driver that can be used which does not require non-local networking, complex setup or misuse of multiple feature to emulate a local notification driver.
As an operator, I would like to be able to locally consume notifications with minimal configuration, overhead, or maintenance.
To address this gap this spec proposes adding a minimal Unix socket driver which will relay all notification to any subscriber to the socket.
To keep resource utilization and complexity to a minimum the Unix-socket driver will not queue notification if there are no clients and will instead drop all notifications
Multiple client can either be supported by using multiple instance of the driver or multiplexing over a single socket.
As with the log driver the Unix socket driver will serialize the message to JSON.
An operator could abuse the notification log driver to emit notification to the Python logging system and then use a Python log handler to redirect the log stream for the notification topic to a Unix socket.
An operator could use AMQP with a local or remote message bus.
Impact on Existing APIs¶
None. Simple filesystem users and groups will provide security for the socket.
None. This is expected to have little overhead similar to the Python log driver.
A new config options to specify the socket URI will be provided by the driver. This will be required if using the driver.
The test surface is expected to be small and simple unit and functional tests will be provided in line with the logging driver. Integration testing via a dedicated DevStack-based job is not planned, although an existing job could perhaps be extended to also enable it if required.
- Primary assignee:
Target Milestone for completion: milestone 2
Release note and docs
Documentation impact will be limited to the config options and release notes
This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode