events callback API
The ideas here are largely based off similar work that went Nova last cycle, see BP and spec @ https:/
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
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Current proposed workaround is to simply sleep while we wait for external events to complete (https:/
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.