yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #54254
[Bug 1606496] [NEW] Instance affinity filters do not work in a heterogeneous cloud with Ironic computes
Public bug reported:
Description
===========
In a heterogeneous cloud with both libvirt and ironic compute nodes
instance affinity filters like DifferentHostFilter or SameHostFilter do
not filter hosts out when scheduling a subsequent instance.
Steps to reproduce
==================
Make sure you have at least two libvirt compute nodes and one ironic
node.
Make sure DifferentHostFilter and SameHostFilter are configured as nova-
scheduler filters in nova.conf, filters scheduler is used.
1. Boot a libvirt instance A.
2. Check the host name of the compute node instance A is running on (nova show from an admin user).
3. Boot a libvirt instance B passing a different_host=$A.uuid hint for nova-scheduler.
4. Check the host name of the compute node instance B is running on (nova show from an admin user).
Expected result
===============
Instances A and B are running on two different compute nodes.
Actual result
=============
Instances A and B are running on the same compute node.
nova-scheduler logs shows that DifferentHost filter was run, but did not
filter out one of the hosts: Filter DifferentHostFilter returned 2
host(s) get_filtered_objects
Environment
===========
OpenStack Mitaka
2 libvirt compute nodes
1 ironic compute node
FiltersScheduler is used
DifferentHostFilter and SameHostFilter filters are enabled in nova.conf
Root cause analysis
===================
Debugging shown that IronicHostManager is configured to be used by nova-
scheduler instead of the default host manager, when Ironic compute are
deployed in the same cloud together with libvirt compute nodes.
IronicHostManager overrides the _get_instance_info() method and
unconditionally returns an empty instance dict, even if this method is
called for non-ironic computes of the same cloud. DifferentHostFilter
and similar filters later use this info to find an intersection of a set
of instances running on a libvirt compute node (currently, always {})
and a set of instances uuids passed as a hint for nova-scheduler, thus
compute nodes are never filtered out and the hint is effectively
ignored.
** Affects: nova
Importance: Undecided
Assignee: Roman Podoliaka (rpodolyaka)
Status: New
** Tags: ironic scheduler
** Changed in: nova
Assignee: (unassigned) => Roman Podoliaka (rpodolyaka)
** Description changed:
Description
===========
In a heterogeneous cloud with both libvirt and ironic compute nodes
instance affinity filters like DifferentHostFilter or SameHostFilter do
not filter hosts out when scheduling a subsequent instance.
-
Steps to reproduce
==================
Make sure you have at least two libvirt compute nodes and one ironic
node.
Make sure DifferentHostFilter and SameHostFilter are configured as nova-
scheduler filters in nova.conf, filters scheduler is used.
1. Boot a libvirt instance A.
2. Check the host name of the compute node instance A is running on (nova show from an admin user).
3. Boot a libvirt instance B passing a different_host=$A.uuid hint for nova-scheduler.
4. Check the host name of the compute node instance B is running on (nova show from an admin user).
-
Expected result
===============
Instances A and B are running on two different compute nodes.
-
Actual result
=============
Instances A and B are running on the same compute node.
nova-scheduler logs shows that DifferentHost filter was run, but did not
filter out one of the hosts: Filter DifferentHostFilter returned 2
host(s) get_filtered_objects
-
Environment
===========
OpenStack Mitaka
2 libvirt compute nodes
1 ironic compute node
FiltersScheduler is used
DifferentHostFilter and SameHostFilter filters are enabled in nova.conf
-
Root cause analysis
===================
Debugging shown that IronicHostManager is configured to be used by nova-
scheduler instead of the default host manager, when Ironic compute are
deployed in the same cloud together with libvirt compute nodes.
IronicHostManager overrides the _get_instance_info() method and
unconditionally returns an empty instance dict, even if this method is
called for non-ironic computes of the same cloud. DifferentHostFilter
- and similar filters later use this info to find ab intersection of a set
+ and similar filters later use this info to find an intersection of a set
of instances running on a libvirt compute node (currently, always {})
and a set of instances uuids passed as a hint for nova-scheduler, thus
compute nodes are never filtered out and the hint is effectively
ignored.
** Tags added: ironic
** Tags added: scheduler
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1606496
Title:
Instance affinity filters do not work in a heterogeneous cloud with
Ironic computes
Status in OpenStack Compute (nova):
New
Bug description:
Description
===========
In a heterogeneous cloud with both libvirt and ironic compute nodes
instance affinity filters like DifferentHostFilter or SameHostFilter
do not filter hosts out when scheduling a subsequent instance.
Steps to reproduce
==================
Make sure you have at least two libvirt compute nodes and one ironic
node.
Make sure DifferentHostFilter and SameHostFilter are configured as
nova-scheduler filters in nova.conf, filters scheduler is used.
1. Boot a libvirt instance A.
2. Check the host name of the compute node instance A is running on (nova show from an admin user).
3. Boot a libvirt instance B passing a different_host=$A.uuid hint for nova-scheduler.
4. Check the host name of the compute node instance B is running on (nova show from an admin user).
Expected result
===============
Instances A and B are running on two different compute nodes.
Actual result
=============
Instances A and B are running on the same compute node.
nova-scheduler logs shows that DifferentHost filter was run, but did
not filter out one of the hosts: Filter DifferentHostFilter returned
2 host(s) get_filtered_objects
Environment
===========
OpenStack Mitaka
2 libvirt compute nodes
1 ironic compute node
FiltersScheduler is used
DifferentHostFilter and SameHostFilter filters are enabled in nova.conf
Root cause analysis
===================
Debugging shown that IronicHostManager is configured to be used by
nova-scheduler instead of the default host manager, when Ironic
compute are deployed in the same cloud together with libvirt compute
nodes.
IronicHostManager overrides the _get_instance_info() method and
unconditionally returns an empty instance dict, even if this method is
called for non-ironic computes of the same cloud. DifferentHostFilter
and similar filters later use this info to find an intersection of a
set of instances running on a libvirt compute node (currently, always
{}) and a set of instances uuids passed as a hint for nova-scheduler,
thus compute nodes are never filtered out and the hint is effectively
ignored.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1606496/+subscriptions
Follow ups