Fix driver filter to not check share_backend_name
Fixed the bug stating: Driver filter disallows using queries with share_backend_name. The driver filter was checking for hard equality between the share_backend_name specified in the share type and the name reported by the host [1]. This defeats the purpose of the capabilities filter giving the ability to use "<in>" (selection) operator in the extra-spec. Thus this commit fixes it by updating the required files according to openstack/cinder/commit/b32011 as now the driver does not check for shared_backend_name. Closes-Bug: #1815700 Change-Id: If384392d0f140922bb85a1dc50b0c4494c231e2f
This commit is contained in:
parent
d9026c7183
commit
86c1576110
@ -50,23 +50,9 @@ class DriverFilter(base_host.BaseHostFilter):
|
||||
Returns a tuple in the format (filter_passing, filter_invalid).
|
||||
Both values are booleans.
|
||||
"""
|
||||
host_stats = stats['host_stats']
|
||||
extra_specs = stats['extra_specs']
|
||||
|
||||
# Check that the share types match
|
||||
if extra_specs is None or 'share_backend_name' not in extra_specs:
|
||||
LOG.warning("No 'share_backend_name' key in extra_specs. "
|
||||
"Skipping share backend name check.")
|
||||
elif (extra_specs['share_backend_name'] !=
|
||||
host_stats['share_backend_name']):
|
||||
LOG.warning("Share backend names do not match: '%(target)s' "
|
||||
"vs '%(current)s' :: Skipping.",
|
||||
{'target': extra_specs['share_backend_name'],
|
||||
'current': host_stats['share_backend_name']})
|
||||
return False
|
||||
|
||||
if stats['filter_function'] is None:
|
||||
LOG.warning("Filter function not set :: passing host.")
|
||||
LOG.debug("Filter function not set :: passing host.")
|
||||
return True
|
||||
|
||||
try:
|
||||
|
@ -82,24 +82,6 @@ class HostFiltersTestCase(test.TestCase):
|
||||
|
||||
self.assertTrue(self.filter.host_passes(host1, filter_properties))
|
||||
|
||||
def test_extra_specs_wrong_backend(self):
|
||||
host1 = fakes.FakeHostState(
|
||||
'host1', {
|
||||
'capabilities': {
|
||||
'filter_function': '1 == 1',
|
||||
}
|
||||
})
|
||||
|
||||
filter_properties = {
|
||||
'share_type': {
|
||||
'extra_specs': {
|
||||
'share_backend_name': 'foo',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.assertFalse(self.filter.host_passes(host1, filter_properties))
|
||||
|
||||
def test_function_extra_spec_replacement(self):
|
||||
host1 = fakes.FakeHostState(
|
||||
'host1', {
|
||||
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixed the driver filter to not check for hard equality between the
|
||||
share_backend_name and the name reported by the host as it defeats the
|
||||
purpose of the capabilities filter giving the ability to use "<in>"
|
||||
selection operator in the extra-spec. Refer to `Launchpad bug 1815700
|
||||
<https://bugs.launchpad.net/manila/+bug/1815700>`_ for more details.
|
Loading…
Reference in New Issue
Block a user