commit 4f993fdd8e226f730378cc7ad25e09a3cb8d9c18 Author: Logan V Date: Thu Apr 4 15:49:29 2019 -0500 Simplify scheduler filter additions Add 'nova_scheduler_extra_filters' to allow operators to enable additional scheduler filters without overriding the entire list of filters as in [0]. This also reduces the burden on ops to maintain the list of overridden default schedulers because of things like [1]. [0] https://github.com/openstack/limestone-ci-cloud/blob/3886dbc40de036e7d1e3bb61917793d7067a89b2/openstack_deploy/user_variables.yml#L51-L69 [1] https://review.openstack.org/#/c/596502/ Change-Id: I9ab6bcbef2b496df7f6ecf11a7d8f5f7891aeeca diff --git a/defaults/main.yml b/defaults/main.yml index 2b23c70..b84429d 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -311,16 +311,18 @@ nova_reserved_host_disk_mb: 2048 nova_scheduler_host_subset_size: 10 nova_scheduler_max_attempts: 5 -nova_scheduler_default_filters: >- - AvailabilityZoneFilter, - ComputeFilter, - AggregateNumInstancesFilter, - AggregateIoOpsFilter, - ComputeCapabilitiesFilter, - ImagePropertiesFilter, - ServerGroupAntiAffinityFilter, - ServerGroupAffinityFilter, - NUMATopologyFilter +nova_scheduler_default_filters: + - AvailabilityZoneFilter + - ComputeFilter + - AggregateNumInstancesFilter + - AggregateIoOpsFilter + - ComputeCapabilitiesFilter + - ImagePropertiesFilter + - ServerGroupAntiAffinityFilter + - ServerGroupAffinityFilter + - NUMATopologyFilter + +nova_scheduler_extra_filters: [] # This should be tuned depending on the number of compute hosts present in the # deployment. Large clouds may wish to disable automatic discovery by setting diff --git a/releasenotes/notes/nova_filters-41739c325c0339e9.yaml b/releasenotes/notes/nova_filters-41739c325c0339e9.yaml new file mode 100644 index 0000000..bfa3e3e --- /dev/null +++ b/releasenotes/notes/nova_filters-41739c325c0339e9.yaml @@ -0,0 +1,11 @@ +--- +features: + - | + Added variable `nova_scheduler_extra_filters` which allows to extend + list of defaulted `nova_scheduler_default_filters` +upgrade: + - | + String value of `nova_scheduler_default_filters` is converted to the list + At the moment there is compatability for overriden values, that are string, + but this support will be removed in the future releases. So deployers are + recommended to replace their string overrides with list ones. diff --git a/templates/nova.conf.j2 b/templates/nova.conf.j2 index 1b4e49f..a0dbec4 100644 --- a/templates/nova.conf.j2 +++ b/templates/nova.conf.j2 @@ -274,7 +274,7 @@ discover_hosts_in_cells_interval = {{ nova_discover_hosts_in_cells_interval }} [filter_scheduler] max_io_ops_per_host = {{ nova_max_io_ops_per_host }} ram_weight_multiplier = {{ nova_ram_weight_multiplier }} -enabled_filters = {{ nova_scheduler_default_filters }} +enabled_filters = {{ _nova_scheduler_filters | join(',') }} host_subset_size = {{ nova_scheduler_host_subset_size }} tracks_instance_changes = {{ nova_scheduler_tracks_instance_changes }} diff --git a/vars/main.yml b/vars/main.yml index fb6d4c6..e0d0aab 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -93,3 +93,12 @@ nova_core_files: owner: "root" group: "{{ nova_system_group_name }}" mode: "0640" + +_nova_scheduler_filters: |- + {% set default_filters = nova_scheduler_default_filters %} + {% if default_filters is not iterable and default_filters is string %} + {% set filters = default_filters.split(',') %} + {% else %} + {% set filters = default_filters %} + {% endif %} + {{ default_filters + nova_scheduler_extra_filters }}