From a89621b8396d4274f2aa9e8908df7754287191c6 Mon Sep 17 00:00:00 2001 From: Nicolas Hicher Date: Mon, 11 Aug 2014 15:23:50 -0400 Subject: [PATCH 1/3] scheduler_default_filters for cloud::compute::scheduler * allow user to use scheduler_default_filters to specify scheduler * filters in nova.conf --- manifests/compute/scheduler.pp | 13 +++++++++++-- spec/classes/cloud_compute_scheduler_spec.rb | 13 +++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/manifests/compute/scheduler.pp b/manifests/compute/scheduler.pp index a837db8b..390623aa 100644 --- a/manifests/compute/scheduler.pp +++ b/manifests/compute/scheduler.pp @@ -15,8 +15,13 @@ # # Compute Scheduler node # - -class cloud::compute::scheduler { +# [*scheduler_default_filters*] +# (optional) A comma separated list of filters to be used by default +# Defaults to false +# +class cloud::compute::scheduler( + $scheduler_default_filters = false +){ include 'cloud::compute' @@ -24,4 +29,8 @@ class cloud::compute::scheduler { enabled => true, } + class { 'nova::scheduler::filter': + scheduler_default_filters => $scheduler_default_filters, + } + } diff --git a/spec/classes/cloud_compute_scheduler_spec.rb b/spec/classes/cloud_compute_scheduler_spec.rb index c894ba1b..e54f2eda 100644 --- a/spec/classes/cloud_compute_scheduler_spec.rb +++ b/spec/classes/cloud_compute_scheduler_spec.rb @@ -43,6 +43,10 @@ describe 'cloud::compute::scheduler' do log_facility => 'LOG_LOCAL0' }" end + let :params do + { :scheduler_default_filters => ['RamFilter', 'ComputeFilter'] } + end + it 'configure nova common' do should contain_class('nova').with( :verbose => true, @@ -86,6 +90,15 @@ describe 'cloud::compute::scheduler' do should contain_class('nova::scheduler').with(:enabled => true) end + it 'configure nova-scheduler filters' do + should contain_class('nova::scheduler::filter').with( + :scheduler_default_filters => ['RamFilter', 'ComputeFilter'] + ) + should contain_nova_config('DEFAULT/scheduler_default_filters').with( + 'value' => "RamFilter,ComputeFilter" + ) + end + end context 'on Debian platforms' do From 95caf7e19b3330e02141a1b0ffb43bf2b625d8f8 Mon Sep 17 00:00:00 2001 From: Nicolas Hicher Date: Tue, 12 Aug 2014 12:06:06 -0400 Subject: [PATCH 2/3] add tests for default value for nova-scheduler filters --- spec/classes/cloud_compute_scheduler_spec.rb | 42 ++++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/spec/classes/cloud_compute_scheduler_spec.rb b/spec/classes/cloud_compute_scheduler_spec.rb index e54f2eda..3f0be2eb 100644 --- a/spec/classes/cloud_compute_scheduler_spec.rb +++ b/spec/classes/cloud_compute_scheduler_spec.rb @@ -43,10 +43,6 @@ describe 'cloud::compute::scheduler' do log_facility => 'LOG_LOCAL0' }" end - let :params do - { :scheduler_default_filters => ['RamFilter', 'ComputeFilter'] } - end - it 'configure nova common' do should contain_class('nova').with( :verbose => true, @@ -90,6 +86,13 @@ describe 'cloud::compute::scheduler' do should contain_class('nova::scheduler').with(:enabled => true) end + end + + shared_examples_for 'openstack compute scheduler with nova-scheduler filters' do + let :params do + { :scheduler_default_filters => ['RamFilter', 'ComputeFilter'] } + end + it 'configure nova-scheduler filters' do should contain_class('nova::scheduler::filter').with( :scheduler_default_filters => ['RamFilter', 'ComputeFilter'] @@ -98,7 +101,16 @@ describe 'cloud::compute::scheduler' do 'value' => "RamFilter,ComputeFilter" ) end + end + shared_examples_for 'openstack compute scheduler without nova-scheduler filters' do + + it 'not configure nova-scheduler filters' do + should contain_class('nova::scheduler::filter').with( + :scheduler_default_filters => false + ) + should_not contain_nova_config('scheduler_default_filters') + end end context 'on Debian platforms' do @@ -107,6 +119,18 @@ describe 'cloud::compute::scheduler' do end it_configures 'openstack compute scheduler' + it_configures 'openstack compute scheduler without nova-scheduler filters' + + end + + context 'on Debian platforms with nova-scheduler filters' do + let :facts do + { :osfamily => 'Debian' } + end + + it_configures 'openstack compute scheduler' + it_configures 'openstack compute scheduler with nova-scheduler filters' + end context 'on RedHat platforms' do @@ -114,6 +138,16 @@ describe 'cloud::compute::scheduler' do { :osfamily => 'RedHat' } end it_configures 'openstack compute scheduler' + it_configures 'openstack compute scheduler without nova-scheduler filters' + + end + + context 'on RedHat platforms with nova-scheduler filters' do + let :facts do + { :osfamily => 'RedHat' } + end + it_configures 'openstack compute scheduler' + it_configures 'openstack compute scheduler with nova-scheduler filters' end end From e8522141e4aa1f384c7f1f14eaf2ad5d9be9ef5a Mon Sep 17 00:00:00 2001 From: Nicolas Hicher Date: Wed, 10 Sep 2014 09:23:25 -0400 Subject: [PATCH 3/3] add a context for simplify nova-scheduler filters test --- spec/classes/cloud_compute_scheduler_spec.rb | 58 +++++--------------- 1 file changed, 14 insertions(+), 44 deletions(-) diff --git a/spec/classes/cloud_compute_scheduler_spec.rb b/spec/classes/cloud_compute_scheduler_spec.rb index 3f0be2eb..ee49aaa2 100644 --- a/spec/classes/cloud_compute_scheduler_spec.rb +++ b/spec/classes/cloud_compute_scheduler_spec.rb @@ -43,6 +43,12 @@ describe 'cloud::compute::scheduler' do log_facility => 'LOG_LOCAL0' }" end + let :params do + { + :scheduler_default_filters => false + } + end + it 'configure nova common' do should contain_class('nova').with( :verbose => true, @@ -86,31 +92,17 @@ describe 'cloud::compute::scheduler' do should contain_class('nova::scheduler').with(:enabled => true) end - end - - shared_examples_for 'openstack compute scheduler with nova-scheduler filters' do - let :params do - { :scheduler_default_filters => ['RamFilter', 'ComputeFilter'] } - end - - it 'configure nova-scheduler filters' do - should contain_class('nova::scheduler::filter').with( - :scheduler_default_filters => ['RamFilter', 'ComputeFilter'] - ) - should contain_nova_config('DEFAULT/scheduler_default_filters').with( + context 'openstack compute scheduler with nova-scheduler filters' do + before do + params.merge!( + :scheduler_default_filters => ['RamFilter', 'ComputeFilter'] + ) + end + it { should contain_nova_config('DEFAULT/scheduler_default_filters').with( 'value' => "RamFilter,ComputeFilter" - ) + )} end - end - shared_examples_for 'openstack compute scheduler without nova-scheduler filters' do - - it 'not configure nova-scheduler filters' do - should contain_class('nova::scheduler::filter').with( - :scheduler_default_filters => false - ) - should_not contain_nova_config('scheduler_default_filters') - end end context 'on Debian platforms' do @@ -119,18 +111,6 @@ describe 'cloud::compute::scheduler' do end it_configures 'openstack compute scheduler' - it_configures 'openstack compute scheduler without nova-scheduler filters' - - end - - context 'on Debian platforms with nova-scheduler filters' do - let :facts do - { :osfamily => 'Debian' } - end - - it_configures 'openstack compute scheduler' - it_configures 'openstack compute scheduler with nova-scheduler filters' - end context 'on RedHat platforms' do @@ -138,16 +118,6 @@ describe 'cloud::compute::scheduler' do { :osfamily => 'RedHat' } end it_configures 'openstack compute scheduler' - it_configures 'openstack compute scheduler without nova-scheduler filters' - - end - - context 'on RedHat platforms with nova-scheduler filters' do - let :facts do - { :osfamily => 'RedHat' } - end - it_configures 'openstack compute scheduler' - it_configures 'openstack compute scheduler with nova-scheduler filters' end end