Merge "Update default scheduler filters"

This commit is contained in:
Zuul 2019-03-05 09:50:52 +00:00 committed by Gerrit Code Review
commit 9a48c32b84
3 changed files with 65 additions and 3 deletions

View File

@ -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:

View File

@ -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):

View File

@ -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)