<div dir="ltr"><div> As the stacks we are trying to stand up get more and more complicated, the demands on developers' hardware is increasing. Currently if you need N VMs for your devtest run, you will create N which are identically sized (<a href="https://github.com/openstack/tripleo-incubator/blob/master/scripts/devtest_testenv.sh#L245">https://github.com/openstack/tripleo-incubator/blob/master/scripts/devtest_testenv.sh#L245</a>) So, you are forced to make every node the size of the largest one you need. Of course this size isn't actually necessary for most nodes, and a way of having differently-sized nodes would save hardware resources (so we can create even more VMs!)<br>
<br></div><div> Devananda and I worked up a patch for Ironic (<a href="https://review.openstack.org/#/c/105802/">https://review.openstack.org/#/c/105802/</a>) which will allow arbitrary "capabilities" (ie k/v pairs) to be added to ironic nodes. These nodes can then be targeted by Nova using flavor-keys. Within devtest, we could think of these as "roles" for nodes. I think that is what lifeless is hinting at here: <a href="https://github.com/openstack/tripleo-incubator/blob/master/scripts/setup-baremetal#L101">https://github.com/openstack/tripleo-incubator/blob/master/scripts/setup-baremetal#L101</a><br>
<br> In my head, a rough plan is: allow a user to provide a file detailing the specs of the VMs they want. (If it's not supplied we can fallback to the current behaviour). Nodes are created and given "roles" according to the contents of that file, and flavors are created to match. When the UC and OC VMs are booted, the flavor appropriate to the "role" is used. As you can imagine, most parts of devtest would need some changes - I guess around a half-dozen individual patchsets might do it, maybe more.<br>
<br></div><div> So, I put this email out to see what people's reactions are. If they are generally positive I think it would be worth a tripleo-spec to put a bit more detail together. What do you think?<br><br></div>
<div> Matthew<br></div></div>