Merge "Don't check thin provisioning when manage volumes"

This commit is contained in:
Jenkins 2017-05-22 17:31:57 +00:00 committed by Gerrit Code Review
commit a14dfe4274
2 changed files with 23 additions and 0 deletions

View File

@ -61,6 +61,10 @@ class CapacityFilter(filters.BaseBackendFilter):
'grouping_name': backend_state.backend_id, 'id': volid,
'size': requested_size})
# requested_size is 0 means that it's a manage request.
if requested_size == 0:
return True
if backend_state.free_capacity_gb is None:
# Fail Safe
LOG.error("Free capacity not set: "
@ -95,6 +99,7 @@ class CapacityFilter(filters.BaseBackendFilter):
"grouping": grouping,
"grouping_name": backend_state.backend_id})
return False
# Calculate how much free space is left after taking into account
# the reserved space.
free = free_space - math.floor(total * reserved)

View File

@ -123,6 +123,24 @@ class CapacityFilterTestCase(BackendFiltersTestCase):
'service': service})
self.assertFalse(filt_cls.backend_passes(host, filter_properties))
def test_filter_with_size_0(self, _mock_serv_is_up):
_mock_serv_is_up.return_value = True
filt_cls = self.class_map['CapacityFilter']()
filter_properties = {'size': 0,
'request_spec': {'volume_id': fake.VOLUME_ID}}
service = {'disabled': False}
host = fakes.FakeBackendState('host1',
{'total_capacity_gb': 500,
'free_capacity_gb': 200,
'provisioned_capacity_gb': 1500,
'max_over_subscription_ratio': 2.0,
'reserved_percentage': 5,
'thin_provisioning_support': True,
'thick_provisioning_support': False,
'updated_at': None,
'service': service})
self.assertTrue(filt_cls.backend_passes(host, filter_properties))
def test_filter_passes_infinite(self, _mock_serv_is_up):
_mock_serv_is_up.return_value = True
filt_cls = self.class_map['CapacityFilter']()