On 09/26/2018 05:48 PM, melanie witt wrote:
On Tue, 25 Sep 2018 12:08:03 -0500, Matt Riedemann wrote:
On 9/25/2018 8:36 AM, John Garbutt wrote:
     Another thing is about existing flavors configured for these
     capabilities-scoped specs. Are you saying during the deprecation we'd      continue to use those even if the filter is disabled? In the review I
     had suggested that we add a pre-upgrade check which inspects the
     flavors
     and if any of these are found, we report a warning meaning those
     flavors
     need to be updated to use traits rather than capabilities. Would
     that be
     reasonable?


I like the idea of a warning, but there are features that have not yet
moved to traits:
https://specs.openstack.org/openstack/ironic-specs/specs/juno-implemented/uefi-boot-for-ironic.html

There is a more general plan that will help, but its not quite ready yet:
https://review.openstack.org/#/c/504952/

As such, I think we can't get pull the plug on flavors including
capabilities and passing them to Ironic, but (after a cycle of
deprecation) I think we can now stop pushing capabilities from Ironic
into Nova and using them for placement.

Forgive my ignorance, but if traits are not on par with capabilities,
why are we deprecating the capabilities filter?

I would like to know the answer to this as well.

In short, traits were never designed to be key/value pairs. They are simple strings indicating boolean capabilities.

Ironic "capabilities" are key/value metadata pairs. *Some* of those Ironic "capabilities" are possible to create as boolean traits.

For example, you can change the boot_mode=uefi and boot_mode=bios Ironic capabilities to be a trait called CUSTOM_BOOT_MODE_UEFI or CUSTOM_BOOT_MODE_BIOS [1].

Other Ironic "capabilities" are not, in fact, capabilities at all. Instead, they are just random key/value pairs that are not boolean in nature nor do they represent a capability of the baremetal hardware.

A great example of this would be the proposed "deploy template" from [2]. This is nothing more than abusing the placement traits API in order to allow passthrough of instance configuration data from the nova flavor extra spec directly into the nodes.instance_info field in the Ironic database. It's a hack that is abusing the entire concept of the placement traits concept, IMHO.

We should have a way *in Nova* of allowing instance configuration key/value information to be passed through to the virt driver's spawn() method, much the same way we provide for user_data that gets exposed after boot to the guest instance via configdrive or the metadata service API. What this deploy template thing is is just a hack to get around the fact that nova doesn't have a basic way of passing through some collated instance configuration key/value information, which is a darn shame and I'm really kind of annoyed with myself for not noticing this sooner. :(

-jay

[1] As I've asked for in the past, it would be great to have Ironic contributors push patches to the os-traits library for standardized baremetal capabilities like boot modes. Please do consider contributing there.

[2] https://review.openstack.org/#/c/504952/16/specs/approved/deploy-templates.rst

_______________________________________________
OpenStack-operators mailing list
OpenStack-operators@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators

Reply via email to