<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>