Add extra Ironic instance_info metadata
Ironic currently only sets instance_
(We would like this to be a specless blueprint).
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- John Garbutt
- Direction:
- Approved
- Assignee:
- John Garbutt
- Definition:
- Approved
- Series goal:
- Accepted for 2024.2
- Implementation:
- Implemented
- Milestone target:
- None
- Started by
- Sylvain Bauza
- Completed by
- Sylvain Bauza
Related branches
Related bugs
Sprints
Whiteboard
This blueprint seeks to unify the guest metadata sent to Ironic with that sent to libvirt.
Implementation (Nova):
Currently, _get_guest_
When implemented in the Ironic driver, this would lead to the following metadata being added to the payload sent to an Ironic node's instance_info API on provisioning:
- instance display name
- instance creation time
- user id and name
- project id and name
- flavor uuid (as a bonus: maybe start doing this for libvirt, too?)
- IP addresses and types
(At implementation time we may choose to send fewer fields)
Essentially, everything exposed in https:/
Be sure when implementing this to check for any situation that could change this metadata, and update appropriately -- the only such known case in Ironic at this writing is a rebuild.
Implementation (Ironic):
Once Nova's implementation is complete, Ironic will enhance support for https:/
Migration (Ironic):
This script will be developed in and merged to the Ironic repository after the completion of both Ironic and Nova implementation steps.
Operators who want this metadata immediately, along with Ironic lessees set, will have a script given to them which will:
- Fetch metadata for existing instances, where possible
- Set metadata for those instances in instance_info, only being additive -- this script should not modify any existing fields in node.instance_info
- If opted-into by operator (either by Ironic config or by CLI option), also set node.lessee on the nodes according to Ironic's internal logic.
This migration script will only make reads and updates using Ironic's API. It will not perform any direct to database updates or make anything but read requests to nova's API.
[20231219 bauzas] Approved as a specless blueprint during today's nova meeting
Gerrit topic: https:/
Addressed by: https:/
[WIP] factor out driver instance metadata
[20240514 bauzas] Reapproved as specless for Dalmatian during today's meeting
Addressed by: https:/
WIP: [ironic] Send additional metadata for ironic
Addressed by: https:/
[ironic] Factor out metadata and send to ironic
Addressed by: https:/
[ironic] Factor out metadata and send to ironic
Work Items
Work items:
NOVA Factor out common parts of _get_guest_
NOVA Implement calls to ComputeDriver.
NOVA If needed, implement ability to update instance_info metadata on rebuild: TODO
IRONIC Implement support for [conductor]
IRONIC Implement metadata/lessee backfill script: TODO