<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Good day Ironicers.<br>
<br>
I do not want to discuss questions like "Is feature X good for
release Y?" or "Is feature Z in Ironic scope or not?".<br>
I want to get an answer for this: Is Ironic a flexible, easy
extendable and user-oriented solution for deployment?<br>
Yes, it is I think. IPA is the great software, but Fuel Agent
proposes a different and alternative way for deploying.<br>
Devananda wrote about <span
id="docs-internal-guid-e3c1fc46-2bfa-867a-b880-883e2f04ef5f"><span
style="vertical-align: baseline; white-space: pre-wrap;">"pets"
and "cattle"</span></span>, and maybe some want <span
id="docs-internal-guid-e3c1fc46-2bfa-867a-b880-883e2f04ef5f"><span
style="vertical-align: baseline; white-space: pre-wrap;">to
manage "pets" rather than "cattle"? Let<br>
users do a choice.<br>
</span></span>We do not plan to change any Ironic API for the
driver, internal or external (as opposed to IPA, this was done for
it).<br>
If there will be no one for Fuel Agent's driver support I think
this driver should be removed from Ironic tree (I heard<br>
this practice is used in Linux kernel).<br>
<br>
On 12/09/2014 12:23 AM, Devananda van der Veen wrote:<br>
</div>
<blockquote
cite="mid:CAExZKEpWchn8FSA9vN0OhbqhLrSzbgqM1JG5=ef+9k_59-fxVQ@mail.gmail.com"
type="cite"><span
id="docs-internal-guid-e3c1fc46-2bfa-867a-b880-883e2f04ef5f">
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">I'd
like to raise this topic for a wider discussion outside of
the hallway track and code reviews, where it has thus far
mostly remained.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">In
previous discussions, my understanding has been that the
Fuel team sought to use Ironic to manage "pets" rather than
"cattle" - and doing so required extending the API and the
project's functionality in ways that no one else on the core
team agreed with. Perhaps that understanding was wrong (or
perhaps not), but in any case, there is now a proposal to
add a FuelAgent driver to Ironic. The proposal claims this
would meet that teams' needs without requiring changes to
the core of Ironic.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><a
moz-do-not-send="true"
href="https://review.openstack.org/#/c/138115/"
style="text-decoration:none"><span
style="font-family:Arial;color:rgb(63,81,181);text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://review.openstack.org/#/c/138115/</span></a></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">The
Problem Description section calls out four things, which
have all been discussed previously (some are here [0]). I
would like to address each one, invite discussion on whether
or not these are, in fact, problems facing Ironic (not
whether they are problems for someone, somewhere), and then
ask why these necessitate a new driver be added to the
project. </span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br>
</span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">They
are, for reference:</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">1.
limited partition support</span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">2.
no software RAID support</span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">3.
no LVM support</span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">4.
no support for hardware that lacks a BMC</span></p>
<div><span><br>
</span></div>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">#1.</span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">When
deploying a partition image (eg, QCOW format), Ironic's PXE
deploy driver performs only the minimal partitioning
necessary to fulfill its mission as an OpenStack service:
respect the user's request for root, swap, and ephemeral
partition sizes. When deploying a whole-disk image, Ironic
does not perform any partitioning -- such is left up to the
operator who created the disk image.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Support
for arbitrarily complex partition layouts is not required
by, nor does it facilitate, the goal of provisioning
physical servers via a common cloud API. Additionally, as
with #3 below, nothing prevents a user from creating more
partitions in unallocated disk space once they have access
to their instance. Therefor, I don't see how Ironic's
minimal support for partitioning is a problem for the
project.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">#2.</span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">There
is no support for defining a RAID in Ironic today, at all,
whether software or hardware. Several proposals were floated
last cycle; one is under review right now for DRAC support
[1], and there are multiple call outs for RAID building in
the state machine mega-spec [2]. Any such support for
hardware RAID will necessarily be abstract enough to support
multiple hardware vendor's driver implementations and both
in-band creation (via IPA) and out-of-band creation (via
vendor tools).</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Given
the above, it may become possible to add software RAID
support to IPA in the future, under the same abstraction.
This would closely tie the deploy agent to the images it
deploys (the latter image's kernel would be dependent upon a
software RAID built by the former), but this would
necessarily be true for the proposed FuelAgent as well.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">I
don't see this as a compelling reason to add a new driver to
the project. Instead, we should (plan to) add support for
software RAID to the deploy agent which is already part of
the project.</span></p>
<div><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br>
</span></div>
<div><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">
<p dir="ltr" style="font-family:'Helvetica
Neue',Helvetica,Arial,sans-serif;white-space:normal;line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">#3.</span></p>
<p dir="ltr" style="font-family:'Helvetica
Neue',Helvetica,Arial,sans-serif;white-space:normal;line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">LVM
volumes can easily be added by a user (after
provisioning) within unallocated disk space for non-root
partitions. I have not yet seen a compelling argument
for doing this within the provisioning phase.</span></p>
<div><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br>
</span></div>
</span></div>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">#4.</span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">There
are already in-tree drivers [3] [4] [5] which do not require
a BMC. One of these uses SSH to connect and run
pre-determined commands. Like the spec proposal, which
states at line 122, "Control via SSH access feature intended
only for experiments in non-production environment," the
current SSHPowerDriver is only meant for testing
environments. We could probably extend this driver to do
what the FuelAgent spec proposes, as far as remote power
control for cheap always-on hardware in testing environments
with a pre-shared key.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">(And
if anyone wonders about a use case for Ironic without
external power control ... I can only think of one situation
where I would rationally ever want to have a control-plane
agent running inside a user-instance: I am both the operator
and the only user of the cloud.)</span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><br>
</p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">----------------</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">In
summary, as far as I can tell, all of the problem statements
upon which the FuelAgent proposal are based are solvable
through incremental changes in existing drivers, or out of
scope for the project entirely. As another software-based
deploy agent, FuelAgent would duplicate the majority of the
functionality which ironic-python-agent has today.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Ironic's
driver ecosystem benefits from a diversity of
hardware-enablement drivers. Today, we have two divergent
software deployment drivers which approach image deployment
differently: "agent" drivers use a local agent to prepare a
system and download the image; "pxe" drivers use a remote
agent and copy the image over iSCSI. I don't understand how
a second driver which duplicates the functionality we
already have, and shares the same goals as the drivers we
already have, is beneficial to the project.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Doing
the same thing twice just increases the burden on the team;
we're all working on the same problems, so let's do it
together.</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">-Devananda</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">
</span></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">[0]
</span><a moz-do-not-send="true"
href="https://blueprints.launchpad.net/ironic/+spec/ironic-python-agent-partition"
style="text-decoration:none"><span
style="font-family:Arial;color:rgb(63,81,181);text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://blueprints.launchpad.net/ironic/+spec/ironic-python-agent-partition</span></a></p>
<div><span><br>
</span></div>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">[1]
</span><a moz-do-not-send="true"
href="https://review.openstack.org/#/c/107981/"
style="text-decoration:none"><span
style="font-family:Arial;color:rgb(63,81,181);text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://review.openstack.org/#/c/107981/</span></a></p>
<br>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">[2]
</span><span
style="text-decoration:underline;font-family:Arial;color:rgb(63,81,181);vertical-align:baseline;white-space:pre-wrap"><a
moz-do-not-send="true"
href="https://review.openstack.org/#/c/133828/11/specs/kilo/new-ironic-state-machine.rst"
style="text-decoration:none">https://review.openstack.org/#/c/133828/11/specs/kilo/new-ironic-state-machine.rst</a></span></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><br>
</p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">[3]
</span><a moz-do-not-send="true"
href="http://git.openstack.org/cgit/openstack/ironic/tree/ironic/drivers/modules/snmp.py"
style="text-decoration:none"><span
style="font-family:Arial;color:rgb(63,81,181);text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">http://git.openstack.org/cgit/openstack/ironic/tree/ironic/drivers/modules/snmp.py</span></a></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">[4]
</span><a moz-do-not-send="true"
href="http://git.openstack.org/cgit/openstack/ironic/tree/ironic/drivers/modules/iboot.py"
style="text-decoration:none"><span
style="font-family:Arial;color:rgb(63,81,181);text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">http://git.openstack.org/cgit/openstack/ironic/tree/ironic/drivers/modules/iboot.py</span></a></p>
<p dir="ltr"
style="line-height:1.5;margin-top:0pt;margin-bottom:0pt"><span
style="font-family:Arial;vertical-align:baseline;white-space:pre-wrap">[5]
</span><a moz-do-not-send="true"
href="http://git.openstack.org/cgit/openstack/ironic/tree/ironic/drivers/modules/ssh.py"
style="text-decoration:none"><span
style="font-family:Arial;color:rgb(63,81,181);text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">http://git.openstack.org/cgit/openstack/ironic/tree/ironic/drivers/modules/ssh.py</span></a></p>
<br>
<br>
<br>
<br>
</span>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
OpenStack-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a>
<a class="moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>