<div dir="ltr">I was responding based on "<span style="font-family:arial,sans-serif;font-size:13px">Treat similar hardware configuration as equal". </span>When there is a very minor difference in hardware (eg, 1TB vs 1.1TB disks), enrolling them with the same spec (1TB disk) is sufficient to solve all these issues and mask the need for multiple flavors, and the hardware wouldn't need to be re-enrolled. My suggestion does not address the desire to support significant variation in hardware specs, such as 8GB RAM vs 64GB RAM, in which case, there is no situation in which I think those differences should be glossed over, even as a short-term hack in Icehouse. <div>

<br></div><div>"<span style="font-family:arial,sans-serif;font-size:13px">if our baremetal flavour said 16GB ram and 1TB disk, it would also match a node with 24GB ram or 1.5TB disk."</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br>

</span></div><div>I think this will lead to a lot of confusion, and difficulty with inventory / resource management. I don't think it's suitable even as a first-approximation.</div><div><br></div><div>Put another way, I dislike the prospect of removing currently-available functionality (an exact-match scheduler and support for multiple flavors) to enable ease-of-use in a UI. Not that I dislike UIs or anything... it just feels like two steps backwards. If the UI is limited to homogeneous hardware, accept that; don't take away heterogeneous hardware support from the rest of the stack.</div>

<div><div><br></div><div><br></div><div>Anyway, it sounds like Robert has a solution in mind, so this is all moot :)</div><div><br></div><div>Cheers,</div><div>Devananda</div><div><br></div></div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">On Thu, Jan 30, 2014 at 1:30 PM, Jay Dobies <span dir="ltr"><<a href="mailto:jason.dobies@redhat.com" target="_blank">jason.dobies@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Wouldn't lying about the hardware specs when registering nodes be<br>
problematic for upgrades?  Users would have<br>
to re-register their nodes.<br>
</blockquote>
<br></div>
This was my first impression too, the line "basically lie about the hardware specs when enrolling them". It feels more wrong to have the user provide false data than it does to ignore that data for Icehouse. I'd rather have the data correct now and ignore it than tell users when they upgrade to Juno they have to re-enter all of their node data.<br>


<br>
It's not heterogenous v. homogeneous support. It's whether or not we use the data. We can capture it now and not provide the user the ability to differentiate what something is deployed on. That's a heterogeneous enrivonment, but just a lack of fine-grained control over where the instances fall.<br>


<br>
And all of this is simply for the time constraints of Icehouse's first pass. A known, temporary limitation.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
<br>
One reason why a custom filter feels attractive is that it provides us<br>
with a clear upgrade path:<br>
<br>
Icehouse<br>
   * nodes are registered with correct attributes<br>
   * create a custom scheduler filter that allows any node to match<br>
   * users are informed that for this release, Tuskar will not<br>
differentiate between heterogeneous hardware<br>
<br>
J-Release<br>
   * implement the proper use of flavors within Tuskar, allowing Tuskar<br>
to work with heterogeneous hardware<br>
   * work with nova regarding scheduler filters (if needed)<br>
   * remove the custom scheduler filter<br>
<br>
<br>
Mainn<br>
<br></div>
------------------------------<u></u>------------------------------<u></u>------------<div><div class="h5"><br>
<br>
    As far as nova-scheduler and Ironic go, I believe this is a solved<br>
    problem. Steps are:<br>
    - enroll hardware with proper specs (CPU, RAM, disk, etc)<br>
    - create flavors based on hardware specs<br>
    - scheduler filter matches requests exactly<br>
<br>
    There are, I suspect, three areas where this would fall short today:<br>
    - exposing to the user when certain flavors shouldn't be picked,<br>
    because there is no more hardware available which could match it<br>
    - ensuring that hardware is enrolled with the proper specs //<br>
    trouble-shooting when it is not<br>
    - a UI that does these well<br>
<br>
    If I understand your proposal correctly, you're suggesting that we<br>
    introduce non-deterministic behavior. If the scheduler filter falls<br>
    back to >$flavor when $flavor is not available, even if the search<br>
    is in ascending order and upper-bounded by some percentage, the user<br>
    is still likely to get something other than what they requested.<br>
     From a utilization and inventory-management standpoint, this would<br>
    be a headache, and from a user standpoint, it would be awkward.<br>
    Also, your proposal is only addressing the case where hardware<br>
    variance is small; it doesn't include a solution for deployments<br>
    with substantially different hardware.<br>
<br>
    I don't think introducing a non-deterministic hack when the<br>
    underlying services already work, just to provide a temporary UI<br>
    solution, is appropriate. But that's just my opinion.<br>
<br>
    Here's an alternate proposal to support same-arch but different<br>
    cpu/ram/disk hardware environments:<br>
    - keep the scheduler filter doing an exact match<br>
    - have the UI only allow the user to define one flavor, and have<br>
    that be the lowest common denominator of available hardware<br>
    - assign that flavor's properties to all nodes -- basically lie<br>
    about the hardware specs when enrolling them<br>
    - inform the user that, if they have heterogeneous hardware, they<br>
    will get randomly chosen nodes from their pool, and that scheduling<br>
    on heterogeneous hardware will be added in a future UI release<br>
<br>
    This will allow folks who are using TripleO at the commandline to<br>
    take advantage of their heterogeneous hardware, instead of crippling<br>
    already-existing functionality, while also allowing users who have<br>
    slightly (or wildly) different hardware specs to still use the UI.<br>
<br>
<br>
    Regards,<br>
    Devananda<br>
<br>
<br>
<br>
    On Thu, Jan 30, 2014 at 7:14 AM, Tomas Sedovic <<a href="mailto:tsedovic@redhat.com" target="_blank">tsedovic@redhat.com</a><br></div></div><div><div class="h5">
    <mailto:<a href="mailto:tsedovic@redhat.com" target="_blank">tsedovic@redhat.com</a>>> wrote:<br>
<br>
        On 30/01/14 15:53, Matt Wagner wrote:<br>
<br>
            On 1/30/14, 5:26 AM, Tomas Sedovic wrote:<br>
<br>
                Hi all,<br>
<br>
                I've seen some confusion regarding the homogenous<br>
                hardware support as<br>
                the first step for the tripleo UI. I think it's time to<br>
                make sure we're<br>
                all on the same page.<br>
<br>
                Here's what I think is not controversial:<br>
<br>
                1. Build the UI and everything underneath to work with<br>
                homogenous<br>
                hardware in the Icehouse timeframe<br>
                2. Figure out how to support heterogenous hardware and<br>
                do that (may or<br>
                may not happen within Icehouse)<br>
<br>
                The first option implies having a single nova flavour<br>
                that will match<br>
                all the boxes we want to work with. It may or may not be<br>
                surfaced in the<br>
                UI (I think that depends on our undercloud installation<br>
                story).<br>
<br>
                Now, someone (I don't honestly know who or when)<br>
                proposed a slight step<br>
                up from point #1 that would allow people to try the UI<br>
                even if their<br>
                hardware varies slightly:<br>
<br>
                1.1 Treat similar hardware configuration as equal<br>
<br>
                The way I understand it is this: we use a scheduler<br>
                filter that wouldn't<br>
                do a strict match on the hardware in Ironic. E.g. if our<br>
                baremetal<br>
                flavour said 16GB ram and 1TB disk, it would also match<br>
                a node with 24GB<br>
                ram or 1.5TB disk.<br>
<br>
                The UI would still assume homogenous hardware and treat<br>
                it as such. It's<br>
                just that we would allow for small differences.<br>
<br>
                This *isn't* proposing we match ARM to x64 or offer a<br>
                box with 24GB RAM<br>
                when the flavour says 32. We would treat the flavour as<br>
                a lowest common<br>
                denominator.<br>
<br>
<br>
            Does Nova already handle this? Or is it built on exact matches?<br>
<br>
<br>
        It's doing an exact match as far as I know. This would likely<br>
        involve writing a custom filter for nova scheduler and updating<br>
        nova.conf accordingly.<br>
<br>
<br>
<br>
            I guess my question is -- what is the benefit of doing this?<br>
            Is it just<br>
            so people can play around with it? Or is there a lasting benefit<br>
            long-term? I can see one -- match to the closest, but be<br>
            willing to give<br>
            me more than I asked for if that's all that's available. Is<br>
            there any<br>
            downside to this being permanent behavior?<br>
<br>
<br>
        Absolutely not a long term thing. This is just to let people<br>
        play around with the MVP until we have the proper support for<br>
        heterogenous hardware in.<br>
<br>
        It's just an idea that would increase the usefulness of the<br>
        first version and should be trivial to implement and take out.<br>
<br>
        If neither is the case or if we will in fact manage to have a<br>
        proper heterogenous hardware support early (in Icehouse), it<br>
        doesn't make any sense to do this.<br>
<br>
<br>
            I think the lowest-common-denominator match will be familiar to<br>
            sysadmins, too. Want to do RAID striping across a 500GB and<br>
            a 750GB<br>
            disk? You'll get a striped 500GB volume.<br>
<br>
<br>
<br>
            ______________________________<u></u>_________________<br>
            OpenStack-dev mailing list<br>
            <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.<u></u>org</a><br></div></div>
            <mailto:<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.<u></u>openstack.org</a>><br>
            <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><div class="im"><br>
            <<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a>><br>
<br>
<br>
<br>
        ______________________________<u></u>_________________<br>
        OpenStack-dev mailing list<br>
        <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.<u></u>org</a><br></div>
        <mailto:<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.<u></u>openstack.org</a>><br>
        <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a> <<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a>><div class="im">

<br>
<br>
<br>
<br>
    ______________________________<u></u>_________________<br>
    OpenStack-dev mailing list<br>
    <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.<u></u>org</a><br>
    <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br>
<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.<u></u>org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br>
<br>
</div></blockquote><div class="HOEnZb"><div class="h5">
<br>
______________________________<u></u>_________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.<u></u>org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br>
</div></div></blockquote></div><br></div>