For compatibility reasons of some older VMs, I've used the following cpu_mode and cpu_models definition in one of the compute nodes nova.conf:
[libvirt]
inject_partition = -2
inject_password = False
inject_key = False
virt_type = kvm
live_migration_with_native_tls = true
live_migration_scheme = tls
live_migration_inbound_addr = 172.29.236.114
hw_disk_discard = ignore
disk_cachemodes =
cpu_mode = custom
cpu_models = IvyBridge
In terms of flavor definition, I've set the following trait:
openstack image set --property traits:HW_CPU_X86_AVX512BW=forbidden flavor.test
I know for sure that HW_CPU_X86_AVX512BW is not supported in IvyBridge so my understanding is that this trait definition should suffice to select the specific compute node. In fact I have verified that placement service does NOT return the specific compute when quering for the specific trait (and instead returns all other nodes).
Yet, when scheduling an instance using this flavor, I get the following error.
Traceback (most recent call last): File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/nova/conductor/manager.py", line 1654, in schedule_and_build_instances host_lists = self._schedule_instances(context, request_specs[0], File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/nova/conductor/manager.py", line 942, in _schedule_instances host_lists = self.query_client.select_destinations( File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/nova/scheduler/client/query.py", line 41, in select_destinations return self.scheduler_rpcapi.select_destinations(context, spec_obj, File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/nova/scheduler/rpcapi.py", line 160, in select_destinations return cctxt.call(ctxt, 'select_destinations', **msg_args) File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/oslo_messaging/rpc/client.py", line 190, in call result = self.transport._send( File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/oslo_messaging/transport.py", line 123, in _send return self._driver.send(target, ctxt, message, File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/oslo_messaging/_drivers/amqpdriver.py", line 689, in send return self._send(target, ctxt, message, wait_for_reply, timeout, File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/oslo_messaging/_drivers/amqpdriver.py", line 681, in _send raise result nova.exception_Remote.NoValidHost_Remote: No valid host was found. Traceback (most recent call last): File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/oslo_messaging/rpc/server.py", line 244, in inner return func(*args, **kwargs) File "/openstack/venvs/nova-28.0.0/lib/python3.10/site-packages/nova/scheduler/manager.py", line 243, in select_destinations raise exception.NoValidHost(reason="") nova.exception.NoValidHost: No valid host was found.
This seems like a bug of the trait selection logic of nova.
For compatibility reasons of some older VMs, I've used the following cpu_mode and cpu_models definition in one of the compute nodes nova.conf: with_native_ tls = true scheme = tls inbound_ addr = 172.29.236.114
[libvirt]
inject_partition = -2
inject_password = False
inject_key = False
virt_type = kvm
live_migration_
live_migration_
live_migration_
hw_disk_discard = ignore
disk_cachemodes =
cpu_mode = custom
cpu_models = IvyBridge
In terms of flavor definition, I've set the following trait: HW_CPU_ X86_AVX512BW= forbidden flavor.test
openstack image set --property traits:
I know for sure that HW_CPU_X86_AVX512BW is not supported in IvyBridge so my understanding is that this trait definition should suffice to select the specific compute node. In fact I have verified that placement service does NOT return the specific compute when quering for the specific trait (and instead returns all other nodes).
Yet, when scheduling an instance using this flavor, I get the following error.
Traceback (most recent call last): File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ nova/conductor/ manager. py", line 1654, in schedule_ and_build_ instances host_lists = self._schedule_ instances( context, request_specs[0], File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ nova/conductor/ manager. py", line 942, in _schedule_instances host_lists = self.query_ client. select_ destinations( File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ nova/scheduler/ client/ query.py" , line 41, in select_destinations return self.scheduler_ rpcapi. select_ destinations( context, spec_obj, File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ nova/scheduler/ rpcapi. py", line 160, in select_destinations return cctxt.call(ctxt, 'select_ destinations' , **msg_args) File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ oslo_messaging/ rpc/client. py", line 190, in call result = self.transport. _send( File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ oslo_messaging/ transport. py", line 123, in _send return self._driver. send(target, ctxt, message, File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ oslo_messaging/ _drivers/ amqpdriver. py", line 689, in send return self._send(target, ctxt, message, wait_for_reply, timeout, File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ oslo_messaging/ _drivers/ amqpdriver. py", line 681, in _send raise result nova.exception_ Remote. NoValidHost_ Remote: No valid host was found. Traceback (most recent call last): File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ oslo_messaging/ rpc/server. py", line 244, in inner return func(*args, **kwargs) File "/openstack/ venvs/nova- 28.0.0/ lib/python3. 10/site- packages/ nova/scheduler/ manager. py", line 243, in select_destinations raise exception. NoValidHost( reason= "") nova.exception. NoValidHost: No valid host was found.
This seems like a bug of the trait selection logic of nova.