Description
===========
In an environment where there are multiple compute nodes with ironic driver,
when a compute node goes down, another compute node cannot take over ironic nodes.
Steps to reproduce
==================
1. Start multiple compute nodes with ironic driver.
2. Register one node to ironic.
2. Stop a compute node which manages the ironic node.
3. Create an instance.
Expected result
===============
The instance creation is failed.
Actual result
=============
The instance is created.
Environment
===========
1. Exact version of OpenStack you are running.
openstack-nova-scheduler-15.0.6-2.el7.noarch
openstack-nova-console-15.0.6-2.el7.noarch
python2-novaclient-7.1.0-1.el7.noarch
openstack-nova-common-15.0.6-2.el7.noarch
openstack-nova-serialproxy-15.0.6-2.el7.noarch
openstack-nova-placement-api-15.0.6-2.el7.noarch
python-nova-15.0.6-2.el7.noarch
openstack-nova-novncproxy-15.0.6-2.el7.noarch
openstack-nova-api-15.0.6-2.el7.noarch
openstack-nova-conductor-15.0.6-2.el7.noarch
2. Which hypervisor did you use?
ironic
Details
=======
When a nova-compute goes down, another nova-compute will take over ironic nodes managed by the failed nova-compute by re-balancing a hash-ring. Then the active nova-compute tries creating a
new resource provider with a new ComputeNode object UUID and the hypervisor name (ironic node name)[1][2][3]. This creation fails with a conflict(409) since there is a resource provider with the same name created by the failed nova-compute.
When a new instance is requested, the scheduler gets only an old resource provider for the ironic node[4]. Then, the ironic node is not selected:
WARNING nova.scheduler.filters.compute_filter [req-a37d68b5-7ab1-4254-8698-502304607a90 7b55e61a07304f9cab1544260dcd3e41 e21242f450d948d7af2650ac9365ee36 - - -] (compute02, 8904aeeb-a35b-4ba3-848a-73269fdde4d3) ram: 4096MB disk: 849920MB io_ops: 0 instances: 0 has not been heard from in a while
Description
===========
In an environment where there are multiple compute nodes with ironic driver,
when a compute node goes down, another compute node cannot take over ironic nodes.
Steps to reproduce
==================
1. Start multiple compute nodes with ironic driver.
2. Register one node to ironic.
2. Stop a compute node which manages the ironic node.
3. Create an instance.
Expected result
===============
The instance creation is failed.
Actual result
=============
The instance is created.
Environment nova-scheduler- 15.0.6- 2.el7.noarch nova-console- 15.0.6- 2.el7.noarch novaclient- 7.1.0-1. el7.noarch nova-common- 15.0.6- 2.el7.noarch nova-serialprox y-15.0. 6-2.el7. noarch nova-placement- api-15. 0.6-2.el7. noarch nova-15. 0.6-2.el7. noarch nova-novncproxy -15.0.6- 2.el7.noarch nova-api- 15.0.6- 2.el7.noarch nova-conductor- 15.0.6- 2.el7.noarch
===========
1. Exact version of OpenStack you are running.
openstack-
openstack-
python2-
openstack-
openstack-
openstack-
python-
openstack-
openstack-
openstack-
2. Which hypervisor did you use?
ironic
Details
=======
When a nova-compute goes down, another nova-compute will take over ironic nodes managed by the failed nova-compute by re-balancing a hash-ring. Then the active nova-compute tries creating a
new resource provider with a new ComputeNode object UUID and the hypervisor name (ironic node name)[1][2][3]. This creation fails with a conflict(409) since there is a resource provider with the same name created by the failed nova-compute.
When a new instance is requested, the scheduler gets only an old resource provider for the ironic node[4]. Then, the ironic node is not selected:
WARNING nova.scheduler. filters. compute_ filter [req-a37d68b5- 7ab1-4254- 8698-502304607a 90 7b55e61a07304f9 cab1544260dcd3e 41 e21242f450d948d 7af2650ac9365ee 36 - - -] (compute02, 8904aeeb- a35b-4ba3- 848a-73269fdde4 d3) ram: 4096MB disk: 849920MB io_ops: 0 instances: 0 has not been heard from in a while
[1] https:/ /github. com/openstack/ nova/blob/ stable/ ocata/nova/ compute/ resource_ tracker. py#L464 /github. com/openstack/ nova/blob/ stable/ ocata/nova/ scheduler/ client/ report. py#L630 /github. com/openstack/ nova/blob/ stable/ ocata/nova/ scheduler/ client/ report. py#L410 /github. com/openstack/ nova/blob/ stable/ ocata/nova/ scheduler/ filter_ scheduler. py#L183
[2] https:/
[3] https:/
[4] https:/