Add "scheduler_use_baremetal_filters" option in nova conf for ironic

This attribute decides whether to use baremetal_scheduler_default_filters or not.
Set the ironic default attributes for True case.

Change-Id: I2c58707140a1e54fb8fdd7627d23aa23f1a236ea
Closes-Bug: #1444860
This commit is contained in:
wenchma 2015-05-18 18:28:59 +08:00 committed by Mark Vanderwiel
parent ef40354293
commit 3b6b4a9de0
4 changed files with 65 additions and 2 deletions

View File

@ -281,6 +281,18 @@ Libvirt Configuration Attributes
* `openstack["compute"]["libvirt"]["rbd"]["cinder"]["secret_uuid"]` - A shared secret between cinder and libvirt. It should be the same as the secret_uuid that is defined in block-storage.
* `openstack["compute"]["libvirt"]["rng_dev_path"]` - A path to a device that will be used as source of entropy on the host. Permitted options are: /dev/random or /dev/hwrng (string value)
Bare Metal Configuration Attributes
-----------------------------------
* `openstack['compute']['scheduler']['use_baremetal_filters']` Boolean that decides whether to use baremetal_scheduler_default_filters or not.
If this attribute is set to true, the following attributes will be overwritten:
`openstack['compute']['driver']`
`openstack['compute']['manager']`
`openstack['compute']['scheduler']['scheduler_host_manager']`
`openstack['compute']['config']['ram_allocation_ratio']`
`openstack['compute']['config']['reserved_host_memory_mb']`
* `openstack['compute']['scheduler']['baremetal_default_filters']` A list of filters enabled for baremetal schedulers that support them.
Scheduler Configuration Attributes
----------------------------------

View File

@ -587,6 +587,28 @@ default['openstack']['compute']['vmware']['integration_bridge'] = 'br-int'
default['openstack']['compute']['bare-metal']['admin_username'] = 'ironic'
default['openstack']['compute']['bare-metal']['admin_tenant_name'] = 'service'
# Boolean to decide whether to use baremetal_scheduler_default_filters or not.
default['openstack']['compute']['scheduler']['use_baremetal_filters'] = false
default['openstack']['compute']['scheduler']['baremetal_default_filters'] = %w(
RetryFilter
AvailabilityZoneFilter
ComputeFilter
ComputeCapabilitiesFilter
ImagePropertiesFilter
ExactRamFilter
ExactDiskFilter
ExactCoreFilter)
# For true case, this logic allows the following ironic-related attribtes to be overwritten automatically.
if node['openstack']['compute']['scheduler']['use_baremetal_filters']
default['openstack']['compute']['driver'] = 'nova.virt.ironic.IronicDriver'
default['openstack']['compute']['manager'] = 'ironic.nova.compute.manager.ClusteredComputeManager'
default['openstack']['compute']['scheduler']['scheduler_host_manager'] = 'nova.scheduler.ironic_host_manager.IronicHostManager'
default['openstack']['compute']['config']['ram_allocation_ratio'] = 1.0
default['openstack']['compute']['config']['reserved_host_memory_mb'] = 0
end
# Lock the version of RPC messages and allow live upgrading of the services
# without interruption caused by version mismatch.
# The configuration options allow the specification of RPC version numbers if desired,

View File

@ -725,13 +725,36 @@ describe 'openstack-compute::nova-common' do
end
it 'has scheduler options' do
[/^scheduler_manager=nova.scheduler.manager.SchedulerManager$/,
[/^scheduler_use_baremetal_filters=false$/,
/^baremetal_scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ExactRamFilter,ExactDiskFilter,ExactCoreFilter$/,
/^scheduler_manager=nova.scheduler.manager.SchedulerManager$/,
/^scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler$/,
/^scheduler_host_manager=nova.scheduler.host_manager.HostManager$/,
/^scheduler_available_filters=nova.scheduler.filters.all_filters$/,
/^scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter$/
].each do |line|
expect(chef_run).to render_file(file.name).with_content(line)
expect(chef_run).to render_config_file(file.name).with_section_content('DEFAULT', line)
end
end
it 'sets to use baremetal default attributes' do
node.set['openstack']['compute']['scheduler']['use_baremetal_filters'] = true
expect(chef_run.node['openstack']['compute']['driver']).to eq('nova.virt.ironic.IronicDriver')
expect(chef_run.node['openstack']['compute']['manager']).to eq('ironic.nova.compute.manager.ClusteredComputeManager')
expect(chef_run.node['openstack']['compute']['scheduler']['scheduler_host_manager']).to eq('nova.scheduler.ironic_host_manager.IronicHostManager')
expect(chef_run.node['openstack']['compute']['config']['ram_allocation_ratio']).to eq(1.0)
expect(chef_run.node['openstack']['compute']['config']['reserved_host_memory_mb']).to eq(0)
[
/^scheduler_use_baremetal_filters=true$/,
/^compute_driver=nova.virt.ironic.IronicDriver$/,
/^compute_manager=ironic.nova.compute.manager.ClusteredComputeManager$/,
/^scheduler_host_manager=nova.scheduler.ironic_host_manager.IronicHostManager$/,
/^ram_allocation_ratio=1.0$/,
/^reserved_host_memory_mb=0$/
].each do |line|
expect(chef_run).to render_config_file(file.name).with_section_content('DEFAULT', line)
end
end

View File

@ -38,6 +38,12 @@ rpc_backend=<%= node["openstack"]["compute"]["rpc_backend"] %>
##### SCHEDULER #####
# Flag to decide whether to use baremetal_scheduler_default_filters or not (boolean value).
scheduler_use_baremetal_filters=<%= node["openstack"]["compute"]["scheduler"]["use_baremetal_filters"] %>
# Which filter class names to use for filtering baremetal hosts when not specified in the request.
baremetal_scheduler_default_filters=<%= node["openstack"]["compute"]["scheduler"]["baremetal_default_filters"].join(",") %>
scheduler_manager=<%= node["openstack"]["compute"]["scheduler"]["scheduler_manager"] %>
scheduler_driver=<%= node["openstack"]["compute"]["scheduler"]["scheduler_driver"] %>
scheduler_available_filters=<%= node["openstack"]["compute"]["scheduler"]["available_filters"] %>