Merge "Update default scheduler filters"
This commit is contained in:
commit
9a48c32b84
|
@ -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