Reviewed: https://review.openstack.org/347948 Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=cc64a45d98d7576a78a853cc3da8109c31f4b75d Submitter: Jenkins Branch: master
commit cc64a45d98d7576a78a853cc3da8109c31f4b75d Author: Roman Podoliaka <rpodoly...@mirantis.com> Date: Wed Jul 27 19:46:16 2016 +0300 ironic_host_manager: fix population of instances info on start IronicHostManager currently overrides the _init_instance_info() method of the base class and unconditionally skips population of instances information for all compute nodes, even if they are not Ironic ones. If there are compute nodes with the hypervisor_type different from Ironic in the same cloud. the instances info will be missing in nova-scheduler (if IronicHostManager is configured as a host manager impl in nova.conf), which will effectively break instance affinity filters like DifferentHostFilter or SameHostFilter, that check set intersections of instances running on a particular host and the ones passed as a hint for nova-scheduler in a boot request. IronicHostManager should use the method implementation of the base class for non-ironic compute nodes. Ib1ddb44d71f7b085512c1f3fc0544f7b00c754fe fixed the problem with scheduling, this change is needed to make sure we also populate the instances info on start of nova-scheduler. Closes-Bug: #1606496 Co-Authored-By: Timofei Durakov <tdura...@mirantis.com> Change-Id: I9d8d2dc99773df4097c178d924d182a0d1971bcc ** Changed in: nova Status: In Progress => Fix Released -- 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): Fix Released 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 -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp