<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none"><!-- p { margin-top: 0px; margin-bottom: 0px; }--></style>
</head>
<body dir="ltr" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p class="p1">Hi all,</p>
<p class="p2"><br>
</p>
<p class="p1">At the recent Ironic mid-cycle meetup, we got the first version of the ironic-python-agent
<span class="s1">(IPA</span>) driver merged. There are a few reviews we need merged (and their dependencies) across a few other projects in order to begin testing<span class="s2"> it</span><span class="s1"> automatically. We would like to eventually gate IPA
 and Ironic with tempest testing similar to what the pxe driver does today.</span></p>
<p class="p2"><br>
</p>
<p class="p1">For IPA to work in devstack (openstack-dev/devstack repo):</p>
<p class="p1"> - <a href="https://review.openstack.org/#/c/112095"><span class="s3">https://review.openstack.org/#/c/112095</span></a> Adds swift temp URL support to Devstack</p>
<p class="p3"><span class="s4"> - <a href="https://review.openstack.org/#/c/108457">
<span class="s5">https://review.openstack.org/#/c/108457</span></a> Adds IPA support to Devstack</span></p>
<p class="p1"> </p>
<p class="p1">Docs on running IPA in devstack (openstack/ironic repo):</p>
<p class="p3"><span class="s4"> - <a href="https://review.openstack.org/#/c/112136/">
<span class="s5">https://review.openstack.org/#/c/112136/</span></a></span></p>
<p class="p1"> </p>
<p class="p1">For IPA to work in the <span class="s2">devstack-gate environment</span> (openstack-infra/config & openstack-infra/devstack-gate repos):</p>
<p class="p3"><span class="s4"> - <a href="https://review.openstack.org/#/c/112143">
<span class="s5">https://review.openstack.org/#/c/112143</span></a> Add IPA support
</span><span class="s6">to</span><span class="s4"> devstack-gate</span></p>
<p class="p3"><span class="s4"> - <a href="https://review.openstack.org/#/c/112134">
<span class="s5">https://review.openstack.org/#/c/112134</span></a> Consolidate and rename Ironic jobs</span></p>
<p class="p3"><span class="s4"> - <a href="https://review.openstack.org/#/c/112693">
<span class="s5">https://review.openstack.org/#/c/112693</span></a> </span><span class="s7">Add check job for IPA + tempest </span></p>
<p class="p2"><br>
</p>
<p class="p1">Once these are all merged, we'll have IPA testing via a nonvoting<span class="s2"> check</span> job, using the IPA-CoreOS deploy ramdisk<span class="s2">, in both the ironic and ironic-python-agent projects</span>. This will be promoted to voting
 once proven stable.</p>
<p class="p2"><br>
</p>
<p class="p1">However, this is only one of many possible IPA deploy ramdisk images.
<span class="s2">We're currently publishing</span> <span class="s8">a</span> CoreOS ramdisk, but we also have an effort to create a ramdisk with diskimage-builder (<a href="https://review.openstack.org/#/c/110487/)"><span class="s3">https://review.openstack.org/#/c/110487/)</span></a>
 , as well as plans for an ISO image (for use with things like iLo). As we gain additional images, we'<span class="s2">d like to run those images through the same suite of tests prior to publishing them, so that images which would break IPA's gate wouldn't
 get published</span>. The final state testing matrix should look something like this<span class="s2">, with check and gate jobs in each project covering the variations unique to that project, and one representative test in consuming project's test pipelines.</span></p>
<p class="p2"><br>
</p>
<p class="p1">IPA:</p>
<p class="p1"> - tempest runs against Ironic+agent_ssh with CoreOS ramdisk</p>
<p class="p1"> - tempest runs against Ironic+agent_ssh with DIB ramdisk<br>
</p>
<p class="p1"> - (other IPA tests)<br>
</p>
<p class="p4"> </p>
<p class="p4">IPA would then, as a post job, generate and publish the images, as we currently do with IPA-CoreOS (
<a href="http://tarballs.openstack.org/ironic-python-agent/coreos/ipa-coreos.tar.gz">
<span class="s3">http://tarballs.openstack.org/ironic-python-agent/coreos/ipa-coreos.tar.gz</span></a> ). Because IPA would gate on tempest tests against each image, we'd avoid ever publishing a bad deploy ramdisk.</p>
<p class="p2"><br>
</p>
<p class="p1">Ironic:</p>
<p class="p1"> - tempest runs against Ironic+agent_ssh with most suitable ramdisk (due to significantly decreased ram requirements, this will likely be an image created by DIB once it exists)</p>
<p class="p1"> - tempest runs against Ironic+pxe_ssh</p>
<p class="p5"> - (what ever else Ironic runs)</p>
<p class="p1"> </p>
<p class="p5">Nova and other integrated projects will continue to run a single job, using Ironic with its default deploy driver (currently pxe_ssh).</p>
<p class="p1"> <br>
</p>
<p class="p1"> </p>
<p class="p5"><span class="s9">Using this testing matrix, we'll ensure that </span>
there is coverage of each cross-project dependency, without bloating each project's test matrix unnecessarily.<span class="s9"> If, for instance,
</span>a change in Nova passes the Ironic pxe_ssh job and lands, but then breaks the agent_ssh job and thus blocks Ironic's gate,<span class="s9"> this would indicate a layering violation</span> between Ironic and its deploy drivers (<span class="s9">from Nova's
 perspective,</span> nothing<span class="s9"> should change between those drivers</span>)<span class="s9">.
</span>Similarly, if IPA tests failed against<span class="s8"> the</span> CoreOS image (due to Ironic OR Nova change), but<span class="s8"> the</span> DIB image passed in both Ironic and Nova tests, then it's almost certainly an *IPA* bug.</p>
<p class="p2"><br>
</p>
<p class="p1">Thanks so much for your time, and for the Openstack Ironic community being welcoming to us as we have worked towards this alternate deploy driver and work towards improving it even further as Kilo opens.</p>
<p class="p2"><br>
</p>
<p class="p1">--<br>
</p>
<p class="p1">Jay Faulkner<br>
</p>
</body>
</html>