Merge "Lowercase ironic driver hash ring and ignore case in cache" into stable/pike
This commit is contained in:
commit
2ed1664b12
|
@ -2752,17 +2752,28 @@ class HashRingTestCase(test.NoDBTestCase):
|
|||
self.assertEqual(SENTINEL, self.driver.hash_ring)
|
||||
self.mock_is_up.assert_has_calls(is_up_calls)
|
||||
|
||||
def test__refresh_hash_ring_same_host_different_case(self):
|
||||
# Test that we treat Host1 and host1 as the same host
|
||||
# CONF.host is set to 'host1' in __test_refresh_hash_ring
|
||||
services = ['Host1']
|
||||
expected_hosts = {'host1'}
|
||||
self.mock_is_up.return_value = True
|
||||
self._test__refresh_hash_ring(services, expected_hosts)
|
||||
|
||||
def test__refresh_hash_ring_one_compute(self):
|
||||
services = ['host1']
|
||||
expected_hosts = {'host1'}
|
||||
self.mock_is_up.return_value = True
|
||||
self._test__refresh_hash_ring(services, expected_hosts)
|
||||
|
||||
def test__refresh_hash_ring_many_computes(self):
|
||||
@mock.patch('nova.virt.ironic.driver.LOG.debug')
|
||||
def test__refresh_hash_ring_many_computes(self, mock_log_debug):
|
||||
services = ['host1', 'host2', 'host3']
|
||||
expected_hosts = {'host1', 'host2', 'host3'}
|
||||
self.mock_is_up.return_value = True
|
||||
self._test__refresh_hash_ring(services, expected_hosts)
|
||||
expected_msg = 'Hash ring members are %s'
|
||||
mock_log_debug.assert_called_once_with(expected_msg, set(services))
|
||||
|
||||
def test__refresh_hash_ring_one_compute_new_compute(self):
|
||||
services = []
|
||||
|
@ -2817,6 +2828,26 @@ class NodeCacheTestCase(test.NoDBTestCase):
|
|||
limit=0)
|
||||
self.assertIsNotNone(self.driver.node_cache_time)
|
||||
|
||||
def test__refresh_cache_same_host_different_case(self):
|
||||
# Test that we treat Host1 and host1 as the same host
|
||||
self.host = 'Host1'
|
||||
self.flags(host=self.host)
|
||||
instances = []
|
||||
nodes = [
|
||||
_get_cached_node(
|
||||
uuid=uuidutils.generate_uuid(), instance_uuid=None),
|
||||
_get_cached_node(
|
||||
uuid=uuidutils.generate_uuid(), instance_uuid=None),
|
||||
_get_cached_node(
|
||||
uuid=uuidutils.generate_uuid(), instance_uuid=None),
|
||||
]
|
||||
hosts = ['host1', 'host1', 'host1']
|
||||
|
||||
self._test__refresh_cache(instances, nodes, hosts)
|
||||
|
||||
expected_cache = {n.uuid: n for n in nodes}
|
||||
self.assertEqual(expected_cache, self.driver.node_cache)
|
||||
|
||||
def test__refresh_cache(self):
|
||||
# normal operation, one compute service
|
||||
instances = []
|
||||
|
|
|
@ -669,14 +669,15 @@ class IronicDriver(virt_driver.ComputeDriver):
|
|||
for svc in service_list:
|
||||
is_up = self.servicegroup_api.service_is_up(svc)
|
||||
if is_up:
|
||||
services.add(svc.host)
|
||||
services.add(svc.host.lower())
|
||||
# NOTE(jroll): always make sure this service is in the list, because
|
||||
# only services that have something registered in the compute_nodes
|
||||
# table will be here so far, and we might be brand new.
|
||||
services.add(CONF.host)
|
||||
services.add(CONF.host.lower())
|
||||
|
||||
self.hash_ring = hash_ring.HashRing(services,
|
||||
partitions=_HASH_RING_PARTITIONS)
|
||||
LOG.debug('Hash ring members are %s', services)
|
||||
|
||||
def _refresh_cache(self):
|
||||
# NOTE(lucasagomes): limit == 0 is an indicator to continue
|
||||
|
@ -698,7 +699,7 @@ class IronicDriver(virt_driver.ComputeDriver):
|
|||
# nova while the service was down, and not yet reaped, will not be
|
||||
# reported until the periodic task cleans it up.
|
||||
elif (node.instance_uuid is None and
|
||||
CONF.host in
|
||||
CONF.host.lower() in
|
||||
self.hash_ring.get_nodes(node.uuid.encode('utf-8'))):
|
||||
node_cache[node.uuid] = node
|
||||
|
||||
|
|
Loading…
Reference in New Issue