[nova][ironic] need help understanding 'cpu_arch' in nova ironic driver
Recently I'm trying to figure out how to fulfill a use case in the nova
ironic driver around treating an ironic node's 'cpu_arch' as optional.
This is coming up as a result of a downstream issue  and recent
change on the ironic side  to make cpu_arch optional for iscsi
deployments. The change makes it so that ironic will _not_ include a
'cpu_arch' attribute as part of a node's properties if iscsi.
On the nova side, we have a filter scheduler ImagePropertiesFilter which
will only match a node if the architecture, hypervisor_type, and vm_mode
in the glance image properties match the cpu_arch of the node. We have
always pulled the cpu_arch of the from the ironic node properties since
the original ironic driver code was added to nova.
Now, the use case I'm trying to solve today  is where an iscsi ironic
deployment has no cpu_arch specified on the ironic side and the deployer
wants to use glance images with architecture specified in their image
properties. Today (and historically always) the request to create an
instance in this situation will fail with NoValidHost because the nova
ironic driver could not determine a cpu_arch from the ironic node.
My questions are:
* Is this a valid thing to want to do?
* If if is valid, what is the correct way that we should handle missing
cpu_arch in the nova ironic driver? Should we guess at a default
cpu_arch? If so, how? Or should we add a new config option where a
default cpu_arch can be specified? Or, other?
Thanks in advance for any input you can offer.