From c9448cbdbf96e7436b13ac5c3a92addfc0f2f5a2 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Mon, 24 Sep 2018 13:28:29 -0700 Subject: [PATCH] Revert "Make host_aggregate_map dictionary case-insensitive" This reverts commit 0dc0db932e3ad5ad911f2072015cb9854f6e4e23. 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. 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 e150c90b69ff..7eda6ee4d20c 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. @@ -742,7 +742,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 09717f559d79..2bf626d677ca 100644 --- a/nova/tests/unit/scheduler/test_host_manager.py +++ b/nova/tests/unit/scheduler/test_host_manager.py @@ -224,17 +224,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])