diff --git a/manifests/init.pp b/manifests/init.pp index 09ec3e013..7afb0b036 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -292,6 +292,43 @@ # :: # Defaults to 'volumev2:cinderv2:publicURL' # +# [*upgrade_level_cells*] +# (optional) Sets a version cap for messages sent to local cells services +# Defaults to undef +# +# [*upgrade_level_cert*] +# (optional) Sets a version cap for messages sent to cert services +# Defaults to undef +# +# [*upgrade_level_compute*] +# (optional) Sets a version cap for messages sent to compute services +# Defaults to undef +# +# [*upgrade_level_conductor*] +# (optional) Sets a version cap for messages sent to conductor services +# Defaults to undef +# +# [*upgrade_level_console*] +# (optional) Sets a version cap for messages sent to console services +# Defaults to undef +# +# [*upgrade_level_consoleauth*] +# (optional) Sets a version cap for messages sent to consoleauth services +# Defaults to undef +# +# [*upgrade_level_intercell*] +# (optional) Sets a version cap for messages sent between cells services +# Defaults to undef +# +# [*upgrade_level_network*] +# (optional) Sets a version cap for messages sent to network services +# Defaults to undef +# +# [*upgrade_level_scheduler*] +# (optional) Sets a version cap for messages sent to scheduler services +# Defaults to undef +# + class nova( $ensure_package = 'present', $database_connection = undef, @@ -359,7 +396,15 @@ class nova( $notify_on_state_change = undef, $os_region_name = undef, $cinder_catalog_info = 'volumev2:cinderv2:publicURL', - # DEPRECATED PARAMETERS + $upgrade_level_cells = undef, + $upgrade_level_cert = undef, + $upgrade_level_compute = undef, + $upgrade_level_conductor = undef, + $upgrade_level_console = undef, + $upgrade_level_consoleauth = undef, + $upgrade_level_intercell = undef, + $upgrade_level_network = undef, + $upgrade_level_scheduler = undef, ) inherits nova::params { # maintain backward compatibility @@ -645,14 +690,114 @@ class nova( if $os_region_name { nova_config { - 'cinder/os_region_name': value => $os_region_name; + 'cinder/os_region_name': value => $os_region_name; } } else { nova_config { - 'cinder/os_region_name': ensure => absent; + 'cinder/os_region_name': ensure => absent; } } + + if $upgrade_level_cells { + nova_config { + 'upgrade_levels/cells': value => $upgrade_level_cells; + } + } + else { + nova_config { + 'upgrade_levels/cells': ensure => absent; + } + } + + if $upgrade_level_cert { + nova_config { + 'upgrade_levels/cert': value => $upgrade_level_cert; + } + } + else { + nova_config { + 'upgrade_levels/cert': ensure => absent; + } + } + + if $upgrade_level_compute { + nova_config { + 'upgrade_levels/compute': value => $upgrade_level_compute; + } + } + else { + nova_config { + 'upgrade_levels/compute': ensure => absent; + } + } + + if $upgrade_level_conductor { + nova_config { + 'upgrade_levels/conductor': value => $upgrade_level_conductor; + } + } + else { + nova_config { + 'upgrade_levels/conductor': ensure => absent; + } + } + + if $upgrade_level_console { + nova_config { + 'upgrade_levels/console': value => $upgrade_level_console; + } + } + else { + nova_config { + 'upgrade_levels/console': ensure => absent; + } + } + + if $upgrade_level_consoleauth { + nova_config { + 'upgrade_levels/consoleauth': value => $upgrade_level_consoleauth; + } + } + else { + nova_config { + 'upgrade_levels/consoleauth': ensure => absent; + } + } + + if $upgrade_level_intercell { + nova_config { + 'upgrade_levels/intercell': value => $upgrade_level_intercell; + } + } + else { + nova_config { + 'upgrade_levels/intercell': ensure => absent; + } + } + + if $upgrade_level_network { + nova_config { + 'upgrade_levels/network': value => $upgrade_level_network; + } + } + else { + nova_config { + 'upgrade_levels/network': ensure => absent; + } + } + + if $upgrade_level_scheduler { + nova_config { + 'upgrade_levels/scheduler': value => $upgrade_level_scheduler; + } + } + else { + nova_config { + 'upgrade_levels/scheduler': ensure => absent; + } + } + # Deprecated in Juno, removed in Kilo nova_config { 'DEFAULT/os_region_name': ensure => absent; diff --git a/spec/classes/nova_init_spec.rb b/spec/classes/nova_init_spec.rb index f59ee9283..ec8066de8 100644 --- a/spec/classes/nova_init_spec.rb +++ b/spec/classes/nova_init_spec.rb @@ -101,7 +101,16 @@ describe 'nova' do :notification_topics => 'openstack', :notify_api_faults => true, :report_interval => '60', - :os_region_name => 'MyRegion' } + :os_region_name => 'MyRegion', + :upgrade_level_cells => '1.0.0', + :upgrade_level_cert => '1.0.0', + :upgrade_level_compute => '1.0.0', + :upgrade_level_conductor => '1.0.0', + :upgrade_level_console => '1.0.0', + :upgrade_level_consoleauth => '1.0.0', + :upgrade_level_intercell => '1.0.0', + :upgrade_level_network => '1.0.0', + :upgrade_level_scheduler => '1.0.0' } end it 'installs packages' do @@ -134,6 +143,18 @@ describe 'nova' do is_expected.to contain_nova_config('DEFAULT/memcached_servers').with_value('memcached01:11211,memcached02:11211') end + it 'configures upgrade_levels' do + is_expected.to contain_nova_config('upgrade_levels/cells').with_value('1.0.0') + is_expected.to contain_nova_config('upgrade_levels/cert').with_value('1.0.0') + is_expected.to contain_nova_config('upgrade_levels/compute').with_value('1.0.0') + is_expected.to contain_nova_config('upgrade_levels/conductor').with_value('1.0.0') + is_expected.to contain_nova_config('upgrade_levels/console').with_value('1.0.0') + is_expected.to contain_nova_config('upgrade_levels/consoleauth').with_value('1.0.0') + is_expected.to contain_nova_config('upgrade_levels/intercell').with_value('1.0.0') + is_expected.to contain_nova_config('upgrade_levels/network').with_value('1.0.0') + is_expected.to contain_nova_config('upgrade_levels/scheduler').with_value('1.0.0') + end + it 'configures various things' do is_expected.to contain_nova_config('DEFAULT/state_path').with_value('/var/lib/nova2') is_expected.to contain_nova_config('DEFAULT/lock_path').with_value('/var/locky/path')