diff --git a/manifests/compute/ironic.pp b/manifests/compute/ironic.pp index ced522ca0..94f151dac 100644 --- a/manifests/compute/ironic.pp +++ b/manifests/compute/ironic.pp @@ -34,16 +34,21 @@ # [*admin_passwd*] # (optional) DEPRECATED: Use admin_password instead. # +# [*max_concurrent_builds*] +# (optional) Maximum number of instance builds to run concurrently +# Defaults to $::os_service_default. +# class nova::compute::ironic ( - $admin_username = 'admin', - $admin_password = 'ironic', - $admin_url = 'http://127.0.0.1:35357/v2.0', - $admin_tenant_name = 'services', - $api_endpoint = 'http://127.0.0.1:6385/v1', + $admin_username = 'admin', + $admin_password = 'ironic', + $admin_url = 'http://127.0.0.1:35357/v2.0', + $admin_tenant_name = 'services', + $api_endpoint = 'http://127.0.0.1:6385/v1', + $max_concurrent_builds = $::os_service_default, # DEPRECATED PARAMETERS - $admin_user = undef, - $admin_passwd = undef, - $compute_driver = 'ironic.IronicDriver' + $admin_user = undef, + $admin_passwd = undef, + $compute_driver = 'ironic.IronicDriver' ) { include ::nova::deps @@ -66,5 +71,6 @@ class nova::compute::ironic ( 'ironic/admin_tenant_name': value => $admin_tenant_name; 'ironic/api_endpoint': value => $api_endpoint; 'DEFAULT/compute_driver': value => $compute_driver; + 'DEFAULT/max_concurrent_builds': value => $max_concurrent_builds; } } diff --git a/spec/classes/nova_compute_ironic_spec.rb b/spec/classes/nova_compute_ironic_spec.rb index 401839526..37d0a6777 100644 --- a/spec/classes/nova_compute_ironic_spec.rb +++ b/spec/classes/nova_compute_ironic_spec.rb @@ -2,6 +2,8 @@ require 'spec_helper' describe 'nova::compute::ironic' do + shared_examples_for 'nova-compute-ironic' do + context 'with default parameters' do it 'configures ironic in nova.conf' do is_expected.to contain_nova_config('ironic/admin_username').with_value('admin') @@ -10,18 +12,20 @@ describe 'nova::compute::ironic' do is_expected.to contain_nova_config('ironic/admin_tenant_name').with_value('services') is_expected.to contain_nova_config('ironic/api_endpoint').with_value('http://127.0.0.1:6385/v1') is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('ironic.IronicDriver') + is_expected.to contain_nova_config('DEFAULT/max_concurrent_builds').with_value('') end end context 'with overridden parameters' do let :params do { - :admin_username => 'ironic', - :admin_password => 's3cr3t', - :admin_url => 'http://10.0.0.10:35357/v2.0', - :admin_tenant_name => 'services2', - :api_endpoint => 'http://10.0.0.10:6385/v1', - :compute_driver => 'ironic.FoobarDriver' + :admin_username => 'ironic', + :admin_password => 's3cr3t', + :admin_url => 'http://10.0.0.10:35357/v2.0', + :admin_tenant_name => 'services2', + :api_endpoint => 'http://10.0.0.10:6385/v1', + :compute_driver => 'ironic.FoobarDriver', + :max_concurrent_builds => 15, } end @@ -32,6 +36,7 @@ describe 'nova::compute::ironic' do is_expected.to contain_nova_config('ironic/admin_tenant_name').with_value('services2') is_expected.to contain_nova_config('ironic/api_endpoint').with_value('http://10.0.0.10:6385/v1') is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('ironic.FoobarDriver') + is_expected.to contain_nova_config('DEFAULT/max_concurrent_builds').with_value(15) end end @@ -47,4 +52,29 @@ describe 'nova::compute::ironic' do is_expected.to contain_nova_config('ironic/admin_password').with_value('ironic-s3cr3t') end end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts({ + :fqdn => 'some.host.tld', + :processorcount => 2, + :concat_basedir => '/var/lib/puppet/concat' + })) + end + + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + {} + when 'RedHat' + {} + end + end + it_configures 'nova-compute-ironic' + end + end end