From 329780eb9282b05959e9c6159869ef1b4538030d Mon Sep 17 00:00:00 2001 From: Matt Riedemann Date: Tue, 25 Sep 2018 19:10:48 -0400 Subject: [PATCH] Revert "Make host_aggregate_map dictionary case-insensitive" This reverts commit 2caf8f65e414732fb1ef1ac32a5884a48af6655d. The original change caused our host state processing to be inconsistent with our own hypervisors API. Automation tooling that used our API to add hosts to aggregates would fail silently. We are reverting this and will propose a check on the aggregate host add action which will confirm the case-sensitive mapping of the host being added, which is what we should have done in the first place. NOTE(mriedem): Since this is a revert of a backport to queens, we don't cherry pick the revert from rocky, but this is using the same change ID as the revert in rocky. Change-Id: Ibd44ba9de5680958f55f0ae6325cfc33dabadc4c Closes-Bug: #1793747 --- nova/scheduler/host_manager.py | 6 +++--- nova/tests/unit/scheduler/test_host_manager.py | 11 ----------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/nova/scheduler/host_manager.py b/nova/scheduler/host_manager.py index 64cdece734ea..5a419a18b2f5 100644 --- a/nova/scheduler/host_manager.py +++ b/nova/scheduler/host_manager.py @@ -376,7 +376,7 @@ class HostManager(object): for agg in aggs: self.aggs_by_id[agg.id] = agg for host in agg.hosts: - self.host_aggregates_map[host.lower()].add(agg.id) + self.host_aggregates_map[host].add(agg.id) def update_aggregates(self, aggregates): """Updates internal HostManager information about aggregates.""" @@ -395,7 +395,7 @@ class HostManager(object): for host in self.host_aggregates_map: if (aggregate.id in self.host_aggregates_map[host] and host not in aggregate.hosts): - self.host_aggregates_map[host.lower()].remove(aggregate.id) + self.host_aggregates_map[host].remove(aggregate.id) def delete_aggregate(self, aggregate): """Deletes internal HostManager information about a specific aggregate. @@ -714,7 +714,7 @@ class HostManager(object): def _get_aggregates_info(self, host): return [self.aggs_by_id[agg_id] for agg_id in - self.host_aggregates_map[host.lower()]] + self.host_aggregates_map[host]] def _get_instances_by_host(self, context, host_name): try: diff --git a/nova/tests/unit/scheduler/test_host_manager.py b/nova/tests/unit/scheduler/test_host_manager.py index 7d4fde61d2d2..9b1dfaa9466b 100644 --- a/nova/tests/unit/scheduler/test_host_manager.py +++ b/nova/tests/unit/scheduler/test_host_manager.py @@ -173,17 +173,6 @@ class HostManagerTestCase(test.NoDBTestCase): self.assertEqual({'fake-host': set([1])}, self.host_manager.host_aggregates_map) - @mock.patch.object(host_manager.HostManager, '_init_instance_info') - @mock.patch.object(objects.AggregateList, 'get_all') - def test_init_aggregates_one_agg_with_hosts_upper_case(self, agg_get_all, - mock_init_info): - fake_agg = objects.Aggregate(id=1, hosts=['FAKE-host']) - agg_get_all.return_value = [fake_agg] - self.host_manager = host_manager.HostManager() - self.assertEqual({1: fake_agg}, self.host_manager.aggs_by_id) - self.assertEqual({'fake-host': set([1])}, - self.host_manager.host_aggregates_map) - def test_update_aggregates(self): fake_agg = objects.Aggregate(id=1, hosts=['fake-host']) self.host_manager.update_aggregates([fake_agg])