<div dir="ltr">All,<div><br></div><div>The Ironic team has been discussing the need for a "deploy agent" since well before the last summit -- we even laid out a few blueprints along those lines. That work was deferred and we have been using the same deploy ramdisk that nova-baremetal used, and we will continue to use that ramdisk for the PXE driver in the Icehouse release.</div>
<div><br></div><div>That being the case, at the sprint this week, a team from Rackspace shared work they have been doing to create a more featureful hardware agent and an Ironic driver which utilizes that agent. Early drafts of that work can be found here:</div>
<div><br></div><div><a href="https://github.com/rackerlabs/teeth-agent">https://github.com/rackerlabs/teeth-agent</a><br></div><div><a href="https://github.com/rackerlabs/ironic-teeth-driver">https://github.com/rackerlabs/ironic-teeth-driver</a><br>
</div><div><br></div><div>I've updated the original blueprint and assigned it to Josh. For reference:</div><div><br></div><div><a href="https://blueprints.launchpad.net/ironic/+spec/utility-ramdisk">https://blueprints.launchpad.net/ironic/+spec/utility-ramdisk</a><br>
</div><div><br></div><div>I believe this agent falls within the scope of the baremetal provisioning program, and welcome their contributions and collaboration on this. To that effect, I have suggested that the code be moved to a new OpenStack project named "openstack/ironic-python-agent". This would follow an independent release cycle, and reuse some components of tripleo (os-*-config). To keep the collaborative momentup up, I would like this work to be done now (after all, it's not part of the Ironic repo or release). The new driver which will interface with that agent will need to stay on github -- or in a gerrit feature branch -- until Juno opens, at which point it should be proposed to Ironic.</div>
<div><br></div><div>The agent architecture we discussed is roughly:</div><div>- a pluggable JSON transport layer by which the Ironic driver will pass information to the ramdisk. Their initial implementation is a REST API.</div>
<div>- a collection of hardware-specific utilities (python modules, bash scripts, what ever) which take JSON as input and perform specific actions (whether gathering data about the hardware or applying changes to it).<br>
</div><div>- and an agent which routes the incoming JSON to the appropriate utility, and routes the response back via the transport layer.</div><div><br></div><div><br></div><div>-Devananda<br></div></div>