From 6e2d5de90cef7b5857d653ff6f14171676f6d65a Mon Sep 17 00:00:00 2001 From: Rikimaru Honjo Date: Sun, 11 Jun 2017 11:26:07 +0900 Subject: [PATCH] Add event notification feature to masakari Typical openstack services have event notification feature[1]. This spec adds the such feature for masakari. [1]: https://docs.openstack.org/developer/nova/notifications.html Change-Id: I4fc551d82fa0a0531676cfd7fbc787c493e2839b Implements: bp notifications-in-masakari --- .../approved/notifications-in-masakari.rst | 282 ++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 specs/stein/approved/notifications-in-masakari.rst diff --git a/specs/stein/approved/notifications-in-masakari.rst b/specs/stein/approved/notifications-in-masakari.rst new file mode 100644 index 0000000..e9be693 --- /dev/null +++ b/specs/stein/approved/notifications-in-masakari.rst @@ -0,0 +1,282 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + +======================= +Send Event Notifications +======================= + +https://blueprints.launchpad.net/masakari/+spec/notifications-in-masakari + + +Problem description +=================== + +Currently, Masakari doesn't send any event notifications on hosts, +failover segments and notifications RestFul API operation requests made by an +user. + +It would be useful to receive create, update and delete event notifications on +any of this information changing, and the payload should contain the same +information for create and update as accessible from the API. + +Use Cases +--------- + +Operators will be able to know following things by event notifications: + +* Begin/End of API process + +* Errors in event of failure to process APIs request + +* Payload which will contain the contents of the API request + +Operators can use event notifications for analyzing, monitoring and metering +purposes. + +Proposed change +=============== + +Versioned notifications will be emitted for the following events: + +#. Segments + + Create segment + segment.create.start + + segment.create.end + + segment.create.error + + Update segment + segment.update.start + + segment.update.end + + segment.update.error + + Delete segment + segment.delete.start + + segment.delete.end + + segment.delete.error + +#. Hosts + + Create host + host.create.start + + host.create.end + + host.create.error + + Update host + host.update.start + + host.update.end + + host.update.error + + Delete host + host.delete.start + + host.delete.end + + host.delete.error + +#. Notifications + + Create notification + notification.create.start + + notification.create.end + + notification.create.error + + Process notification + notification.process.start + + notification.process.end + + notification.process.error + +.. note:: + Process notification event is emitted only when masakari-engine starts + processing received notifications by executing recovery workflow. + +Event notification generally contain following information: + +.. code:: + + { + "priority": , + "event_type": , + "timestamp": , + "publisher_id": , + "message_id": , + "payload": + } + + +**Versioned notifications:** + +Similar to the other OpenStack services Masakari will emit event notification +to the message bus with the ``Notifier`` class provided by +`oslo.messaging-doc`_. + +In versioned notification, the payload isn't a free form dictionary but a +serialized oslo versioned object. In other words, the payload should +be the format which is serializable by `oslo-versionedobjects`_ library. + +This is a sample of segment.create.start versioned notification: + +.. code:: + + { + "event_type": "segment.create.start", + "timestamp": "2018-11-22 09:25:12.393979", + "payload": { + "masakari_object.name": "SegmentApiPayload", + "masakari_object.data": { + "service_type": "compute", + "fault": null, + "recovery_method": "auto", + "description": null, + "name": "test" + }, + "masakari_object.version": "1.0", + "masakari_object.namespace": "masakari" + }, + + "publisher_id": "masakari-api:fake-mini", + "message_id": "e44cb15b-dcba-409e-b0e1-9ee103b9a168" + } + + +Alternatives +------------ + +None + +Data model impact +----------------- + +Add osloversioned.objects for hosts, failover segment and notification. +No changes will be made to the database schema. + +REST API impact +--------------- + +None + +Security impact +--------------- + +None + +Notifications impact +-------------------- + +Masakari doesn't support event notification feature. +This spec will add this new feature. + +Other end user impact +--------------------- + +None + +Performance Impact +------------------ + +There will be a slight performance impact due to the overhead of sending event +notifications during processing of each RestFul API request. +Operator can also disable event notifications completely using configuration +options. + +Other deployer impact +--------------------- + +Following config section and option will be added in masakari.conf: + +.. code:: + + [oslo_messaging_notifications] + driver=messaging + + driver + Type: multi-valued + Default:'' + The Drivers(s) to handle sending notifications. Possible values are messaging, messagingv2, routing, log, test, noop + +Deployers should prepare the messaging system (e.g.RabbitMQ) to receive event +notifications if they want to use event notification feature. + +Developer impact +---------------- + +After this feature lands in the code, henceforth, developers will need to +add new event notifications if they decide to add new RestFul APIs. + +Implementation +============== + +Assignee(s) +----------- + +Primary assignee: + +* Rikimaru Honjo +* Kengo Takahara +* Shilpa Devharakar + +Work Items +---------- + +* Add base classes for event notification mechanism +* Add osloversioned.objects to be used to send event notifications +* Add methods to send notifications for each newly added osloversioned.object +* Send event notification for create/update/delete operations +* Add unit tests for code coverage +* Add documentation on how to use this feature + +Dependencies +============ + +None + +Testing +======= + +No need to write tempest tests as unit tests are sufficient to check +whether the event notifications are sent or not for each create, update and +delete operations. + +Documentation Impact +==================== + +Add documentation to explain how to use event notification feature so that +operator can write code to receive these events for their own purpose. + +References +========== + +.. _`oslo.messaging-doc`: https://docs.openstack.org/oslo.messaging/latest/reference/notifier.html +.. _`oslo-versionedobjects`: https://docs.openstack.org/oslo.versionedobjects/latest/user/index.html + +History +======= + +.. list-table:: Revisions + :header-rows: 1 + + * - Release Name + - Description + * - Queens + - Introduced + * - Rocky + - Approved + * - Stein + - Re-proposed