Update default scheduler filters
Make the default set of scheduler filters conditional on the release being deployed; For Pike or later the CoreFilter, RamFilter and DiskFilter are superfluous to requirements as this filters are in effect completed by the Placement API. Add DiskFilter to list of filters for older OpenStack releases. Change-Id: Iddb4f1f068b982dcd9a70b11b89df1be9f8aaf20 Closes-Bug: 1731302 Closes-Bug: 1732164
This commit is contained in:
parent
5add25410d
commit
b99d806cf3
@ -258,10 +258,10 @@ options:
|
||||
all units on config change.
|
||||
scheduler-default-filters:
|
||||
type: string
|
||||
default: "RetryFilter,AvailabilityZoneFilter,CoreFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,DifferentHostFilter,SameHostFilter"
|
||||
default:
|
||||
description: |
|
||||
List of filter class names to use for filtering hosts when not specified in
|
||||
the request.
|
||||
the request. The default filters varies based on OpenStack release.
|
||||
pci-alias:
|
||||
type: string
|
||||
default:
|
||||
|
@ -300,11 +300,56 @@ class IdentityServiceContext(ch_context.IdentityServiceContext):
|
||||
return ctxt
|
||||
|
||||
|
||||
_base_enabled_filters = [
|
||||
"RetryFilter",
|
||||
"AvailabilityZoneFilter",
|
||||
"CoreFilter",
|
||||
"RamFilter",
|
||||
"DiskFilter",
|
||||
"ComputeFilter",
|
||||
"ComputeCapabilitiesFilter",
|
||||
"ImagePropertiesFilter",
|
||||
"ServerGroupAntiAffinityFilter",
|
||||
"ServerGroupAffinityFilter",
|
||||
"DifferentHostFilter",
|
||||
"SameHostFilter",
|
||||
]
|
||||
|
||||
# NOTE: Core,Ram,Disk filters obsolete due
|
||||
# placement API functionality
|
||||
_pike_enabled_filters = [
|
||||
"RetryFilter",
|
||||
"AvailabilityZoneFilter",
|
||||
"ComputeFilter",
|
||||
"ComputeCapabilitiesFilter",
|
||||
"ImagePropertiesFilter",
|
||||
"ServerGroupAntiAffinityFilter",
|
||||
"ServerGroupAffinityFilter",
|
||||
"DifferentHostFilter",
|
||||
"SameHostFilter",
|
||||
]
|
||||
|
||||
|
||||
def default_enabled_filters():
|
||||
"""
|
||||
Determine the list of default filters for scheduler use
|
||||
|
||||
:returns: list of filters to use
|
||||
:rtype: list of str
|
||||
"""
|
||||
os_rel = ch_utils.os_release('nova-common')
|
||||
cmp_os_rel = ch_utils.CompareOpenStackReleases(os_rel)
|
||||
if cmp_os_rel >= 'pike':
|
||||
return _pike_enabled_filters
|
||||
return _base_enabled_filters
|
||||
|
||||
|
||||
class NovaConfigContext(ch_context.WorkerConfigContext):
|
||||
def __call__(self):
|
||||
ctxt = super(NovaConfigContext, self).__call__()
|
||||
ctxt['scheduler_default_filters'] = (
|
||||
hookenv.config('scheduler-default-filters'))
|
||||
hookenv.config('scheduler-default-filters') or
|
||||
','.join(default_enabled_filters()))
|
||||
if hookenv.config('pci-alias'):
|
||||
aliases = json.loads(hookenv.config('pci-alias'))
|
||||
if isinstance(aliases, list):
|
||||
|
@ -45,6 +45,7 @@ class NovaComputeContextTests(CharmTestCase):
|
||||
self.relation_get.side_effect = self.test_relation.get
|
||||
self.config.side_effect = self.test_config.get
|
||||
self.log.side_effect = fake_log
|
||||
self.os_release.return_value = 'icehouse'
|
||||
|
||||
@mock.patch('charmhelpers.contrib.openstack.ip.resolve_address',
|
||||
lambda *args, **kwargs: None)
|
||||
@ -330,6 +331,7 @@ class NovaComputeContextTests(CharmTestCase):
|
||||
mock_config.side_effect = self.test_config.get
|
||||
mock_config_ip.side_effect = self.test_config.get
|
||||
mock_unit_get.return_value = '127.0.0.1'
|
||||
self.test_config.set('scheduler-default-filters', 'TestFilter')
|
||||
ctxt = context.NovaConfigContext()()
|
||||
self.assertEqual(ctxt['scheduler_default_filters'],
|
||||
self.config('scheduler-default-filters'))
|
||||
@ -592,3 +594,18 @@ class NovaComputeContextTests(CharmTestCase):
|
||||
self.related_units.return_value = ['nova-cell-conductor/0']
|
||||
ctxt = context.NovaCellV2Context()()
|
||||
self.assertEqual(ctxt, {})
|
||||
|
||||
def test_default_enabled_filters_icehouse(self):
|
||||
self.os_release.return_value = 'icehouse'
|
||||
self.assertEqual(context.default_enabled_filters(),
|
||||
context._base_enabled_filters)
|
||||
|
||||
def test_default_enabled_filters_pike(self):
|
||||
self.os_release.return_value = 'pike'
|
||||
self.assertEqual(context.default_enabled_filters(),
|
||||
context._pike_enabled_filters)
|
||||
|
||||
def test_default_enabled_filters_rocky(self):
|
||||
self.os_release.return_value = 'rocky'
|
||||
self.assertEqual(context.default_enabled_filters(),
|
||||
context._pike_enabled_filters)
|
||||
|
Loading…
Reference in New Issue
Block a user