events callback API

Registered by Adam Gandelman

The ideas here are largely based off similar work that went Nova last cycle, see BP and spec @ https://blueprints.launchpad.net/nova/+spec/admin-event-callback-api

Ironic currently has no way coordinating with external services to synchronize on completion of external events. This is an issue currently with the PXE driver's use of Neutron, but will likely become more critical as Ironic and new drivers begin to rely more on services provided external services (advanced neutron use cases, cinder volumes, etc).

This blueprint proposes adding an admin 'events' API to Ironic that can be used by external services to callback to the conductor on completion of specific events.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Adam Gandelman
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Current proposed workaround is to simply sleep while we wait for external events to complete (https://review.openstack.org/#/c/91719/). Allowing exteranl services to post back notifications of completed events would solve this issue, and provide a reference for similar use cases in the future. For example:

  1) Instance is spawned, node is deployed with PXE driver
  2) Driver updates Neutron DHCP configuration for node
  3) Driver waits for event callback from Neutron after config has been propagated to agents and daemons have restarted
  4) Driver powers on node

This would require several chunks of work:

  1) Add required 'events' REST API, RPC API
  2) Add support to python-ironicclient for posting events
  3) Add support to conductor for managing new events, waiting on existing events, cleaning complete/expired events
  4) Add support to relevant external services to use new client features to post back on specified events.

Nova's work resulted in a new neutron.notifiers in Neutron, which could probably be extended easily enough for #4. It may be possible to factor some of the backend manager related work from Nova into oslo to address #3.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.