Allow HostState to handle empty capabilities
In some cases, where the capabilities reported from driver is emtpy, scheduler would raise exception thus unable to correctly handle scheduling request even when other backend candidates are able to fulfill the request. This change does some modifications to HostState so that it is able to handle empty capabilities. Change-Id: Icb6522852d427dea3fbd1ec4b4cc94a184d3669d Fixes-bug: #1398875
This commit is contained in:
parent
18a7f13d38
commit
6ac5054ceb
|
@ -300,12 +300,12 @@ class PoolState(HostState):
|
|||
return
|
||||
self.update_backend(capability)
|
||||
|
||||
self.total_capacity_gb = capability['total_capacity_gb']
|
||||
self.free_capacity_gb = capability['free_capacity_gb']
|
||||
self.total_capacity_gb = capability.get('total_capacity_gb', 0)
|
||||
self.free_capacity_gb = capability.get('free_capacity_gb', 0)
|
||||
self.allocated_capacity_gb = capability.get(
|
||||
'allocated_capacity_gb', 0)
|
||||
self.QoS_support = capability.get('QoS_support', False)
|
||||
self.reserved_percentage = capability['reserved_percentage']
|
||||
self.reserved_percentage = capability.get('reserved_percentage', 0)
|
||||
|
||||
def update_pools(self, capability):
|
||||
# Do nothing, since we don't have pools within pool, yet
|
||||
|
|
|
@ -427,6 +427,20 @@ class HostStateTestCase(test.TestCase):
|
|||
self.assertEqual(fake_host.pools['_pool0'].free_capacity_gb,
|
||||
'unknown')
|
||||
|
||||
def test_update_from_empty_volume_capability(self):
|
||||
fake_host = host_manager.HostState('host1')
|
||||
|
||||
vol_cap = {'timestamp': None}
|
||||
|
||||
fake_host.update_from_volume_capability(vol_cap)
|
||||
self.assertEqual(fake_host.total_capacity_gb, 0)
|
||||
self.assertEqual(fake_host.free_capacity_gb, None)
|
||||
# Pool stats has been updated
|
||||
self.assertEqual(fake_host.pools['_pool0'].total_capacity_gb,
|
||||
0)
|
||||
self.assertEqual(fake_host.pools['_pool0'].free_capacity_gb,
|
||||
0)
|
||||
|
||||
|
||||
class PoolStateTestCase(test.TestCase):
|
||||
"""Test case for HostState class."""
|
||||
|
|
Loading…
Reference in New Issue