diff --git a/nova/scheduler/host_manager.py b/nova/scheduler/host_manager.py index 6fcd979a5fb3..4feffe4530b8 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].add(agg.id) + self.host_aggregates_map[host.lower()].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].remove(aggregate.id) + self.host_aggregates_map[host.lower()].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]] + self.host_aggregates_map[host.lower()]] 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 42a263c3234f..c147780ff12f 100644 --- a/nova/tests/unit/scheduler/test_host_manager.py +++ b/nova/tests/unit/scheduler/test_host_manager.py @@ -173,6 +173,17 @@ 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])