Pre-load default filters during scheduler initialization

To avoid a time penalty for the first caller, make scheduler pre-load
default filters at startup.

Change-Id: Ie982387cc7bb5425e9cb8f4ca328caf6eae35c08
This commit is contained in:
Hans Lindgren
2014-10-30 13:48:06 +01:00
committed by John Garbutt
parent 5cde76ff0a
commit 4ff1de6109
3 changed files with 43 additions and 78 deletions

View File

@@ -286,6 +286,8 @@ class HostManager(object):
self.filter_cls_map = dict(
(cls.__name__, cls) for cls in filter_classes)
self.filter_obj_map = {}
self.default_filters = self._choose_host_filters(
CONF.scheduler_default_filters)
self.weight_handler = weights.HostWeightHandler()
weigher_classes = self.weight_handler.get_matching_classes(
CONF.scheduler_weight_classes)
@@ -297,8 +299,6 @@ class HostManager(object):
function checks the filter names against a predefined set
of acceptable filters.
"""
if filter_cls_names is None:
filter_cls_names = CONF.scheduler_default_filters
if not isinstance(filter_cls_names, (list, tuple)):
filter_cls_names = [filter_cls_names]
@@ -364,7 +364,10 @@ class HostManager(object):
"'force_nodes' value of '%s'")
LOG.audit(msg % forced_nodes_str)
filters = self._choose_host_filters(filter_class_names)
if filter_class_names is None:
filters = self.default_filters
else:
filters = self._choose_host_filters(filter_class_names)
ignore_hosts = filter_properties.get('ignore_hosts', [])
force_hosts = filter_properties.get('force_hosts', [])
force_nodes = filter_properties.get('force_nodes', [])