Ramdisk Agent Driver

Registered by Josh Gachnang on 2014-03-24

With the new ramdisk officially being part of the Ironic project, Ironic needs a driver to communicate and control it. This driver will serve as a reference implementation for such a driver. The basics of the driver are:

* Hardware boots up the ramdisk PXE image, with the Ironic API url as a param
* The ramdisk hits the nodeless vendor passthru, giving its mac addresses. The driver responds by looking up the ports and the node matching those ports and returns the node object. Support for a node that doesn't exist in Ironic's DB (node auto registration) is not targeted for this blueprint. A heartbeat config-based timeout is passed to the ramdisk agent as well, so it knows how often it is expected to heartbeat.
* The ramdisk agent uses the UUID in the returned node object to start heartbeating to Ironic using the standard driver vendor passthru. The ramdisk will send its IP along with the heartbeat that the driver can use to contact the node.
* The driver sets a periodic task to check for nodes that have failed to heartbeat and sets them in some provision_state to signify they are likely not responding.
* The driver can send commands to the node using the IP that is sent along with the heartbeat.

This driver depends on nodeless vendor passthru to initially link a node to a ramdisk agent, and allows the ramdisk agent to figure out what node (and specially its UUID so it can communicate to the normal vendor passthru). https://blueprints.launchpad.net/ironic/+spec/nodeless-vendor-passthru

Blueprint information

Status:
Complete
Approver:
Devananda van der Veen
Priority:
High
Drafter:
Josh Gachnang
Direction:
Approved
Assignee:
Jim Rollenhagen
Definition:
Approved
Series goal:
Accepted for juno
Implementation:
Implemented
Milestone target:
milestone icon 2014.2
Started by
Devananda van der Veen on 2014-07-31
Completed by
Devananda van der Veen on 2014-07-31

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/agent-driver,n,z

Addressed by: https://review.openstack.org/84795
    Adding a reference driver for the agent

Addressed by: https://review.openstack.org/86402
    Add lookup method to vendor mapping

Addressed by: https://review.openstack.org/86173
    Add version 1 of agent payload

Addressed by: https://review.openstack.org/85228
    Version agent lookup payloads

Addressed by: https://review.openstack.org/86490
    Bring agent deploy driver up to date with virt

Addressed by: https://review.openstack.org/86192
    Add configdrive generation to Nova driver

Gerrit topic: https://review.openstack.org/#q,topic:agent-v2-payload,n,z

Addressed by: https://review.openstack.org/86984
    Support for v2 agent payloads

Addressed by: https://review.openstack.org/90233
    Factoring out PXE and TFTP functions

Addressed by: https://review.openstack.org/91719
    Wait for Neutron port updates when using SSHPower

Addressed by: https://review.openstack.org/93768
    Fixes for yuri to agent driver

Addressed by: https://review.openstack.org/100364
    Add methods to ipmitool driver

Addressed by: https://review.openstack.org/100734
    Factor out TFTPImageCache

Addressed by: https://review.openstack.org/100735
    Factor out deploy info from PXE driver

Addressed by: https://review.openstack.org/101020
    Add ironic-python-agent deploy driver (DO NOT MERGE)

Addressed by: https://review.openstack.org/98506
    Add deploy driver for ironic-python-agent

Addressed by: https://review.openstack.org/81391
    Adding swift temp url support

Gerrit topic: https://review.openstack.org/#q,topic:decom-agent,n,z

Addressed by: https://review.openstack.org/111118
    Improve IPA client library

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.