Implement notifications for Climate

Registered by Dina Belova

We need to implement notification possibility for Climate users about some lease events (like close ending of lease). That should be probably also event-based mechanism (like lease-events) with different plugins for different notifications types (that's all discussible, let's think about it).

Blueprint information

Status:
Complete
Approver:
Blazar core developers
Priority:
Medium
Drafter:
Dina Belova
Direction:
Approved
Assignee:
Cristian A Sanchez
Definition:
Approved
Series goal:
Accepted for 0.x.0
Implementation:
Implemented
Milestone target:
milestone icon next
Started by
Dina Belova
Completed by
Cristian A Sanchez

Related branches

Sprints

Whiteboard

We would like to leverage climate to manage parts of the VM lifecycle.

When a lease is created send user notification (email)
When a lease is X days/hours from expiring send a notification
When the lease is updated ...

We would like to leverage Climate and integrate projects like Mistral (workflows), Marconi (notifications, queue) to fill out some of our life cycle management needs.

===
Hi Joel, we plan to integrate Climate with Ceilometer for the metrics, and some other POC is currently done for notifications. Feel free to join us on #openstack-climate when you're available for discussing your needs.

==

This should leverage oslo.messaging/rpc notification subsystem and let the rest be handled by external project or worker. Ceilometer will need that, and its alarming subsystem will solve the problem such as getting an email sent.

JoelC: I agree. This BP should focus on delivering integration with oslo.messaging.

==
Cristian:
There are two ways of sending messages with oslo.

1) oslo.messaging.rpc with this use case: "Invoke Method on all of Multiple Servers"
https://wiki.openstack.org/wiki/Oslo/Messaging#Invoke_Method_on_all_of_Multiple_Servers

2) oslo.notify
https://wiki.openstack.org/wiki/Oslo/Messaging#oslo.notify

I think in the case of this bp, the oslo.notify use case is better.

==

scroiset: for sure, we'll use notify to send notifications since rpc are for remote calls

==

I'm ok with 'notify', but I've got one question: as i understand we need here two services to get event from queue - ceilometer (to send user notification) and service that will grab event from queue and start some workflow. I'm not sure how that may look like using 'notify', but for the first sight it looks like that 'invoke method on multiple servers' will work here - if it's not somehow connected with service type. Or it should be two different notifications like notify:email and notify:start_workflow

==

casanch1: is it possible to send a notification with oslo.notify that are ultimately received by more than one server? I guess it should be possible is both services are subscribed to the same topic.

==

Details of the blueprint here: https://etherpad.openstack.org/p/climate-notifications

Gerrit topic: https://review.openstack.org/#q,topic:bp/uses,n,z

Addressed by: https://review.openstack.org/75189
    Sends notifications at lease events

=====

https://review.openstack.org/#/c/75189/

Gerrit topic: https://review.openstack.org/#q,topic:bp/notifications,n,z

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.