Allow db sync timeouts to be configurable

As Openstack projects continue to have longer database migration
chains, the Puppet default timeout of 300 seconds for an execution
is becoming too short a duration on some hardware, leading to timeouts.
As projects continue to add more migration scripts without "pruning"
the base, timeouts will continue to become more frequent unless
this time can be expanded.

The proposed change adds a configuration option db_sync_timeout
which maintains the Puppet default of 300 but allows TripleO to
change the timeout to something higher.

Change-Id: I6b30a4d9e3ca25d9a473e4eb614a8769fa4567e7
This commit is contained in:
Mike Bayer 2016-12-23 10:01:09 -05:00
parent d8422f7789
commit 59858c0867
5 changed files with 66 additions and 3 deletions

View File

@ -9,8 +9,13 @@
# the command line between 'nova-manage' and 'db sync'.
# Defaults to undef
#
# [*db_sync_timeout*]
# (optional) Timeout for the execution of the db_sync
# Defaults to 300
#
class nova::db::sync(
$extra_params = undef,
$extra_params = undef,
$db_sync_timeout = 300,
) {
include ::nova::deps
@ -21,6 +26,7 @@ class nova::db::sync(
refreshonly => true,
try_sleep => 5,
tries => 10,
timeout => $db_sync_timeout,
logoutput => on_failure,
subscribe => [
Anchor['nova::install::end'],

View File

@ -14,9 +14,14 @@
# with nova-manage.
# Defaults to true.
#
# [*db_sync_timeout*]
# (optional) Timeout for the execution of the db_sync
# Defaults to 300.
#
class nova::db::sync_api(
$extra_params = undef,
$cellv2_setup = true,
$extra_params = undef,
$db_sync_timeout = 300,
$cellv2_setup = true,
) {
include ::nova::deps
@ -27,6 +32,7 @@ class nova::db::sync_api(
refreshonly => true,
try_sleep => 5,
tries => 10,
timeout => $db_sync_timeout,
logoutput => on_failure,
subscribe => [
Anchor['nova::install::end'],

View File

@ -0,0 +1,3 @@
---
features:
- Adds db_sync_timeout parameter to nova db sync and nova db sync_api

View File

@ -8,6 +8,7 @@ describe 'nova::db::sync_api' do
is_expected.to contain_exec('nova-db-sync-api').with(
:command => '/usr/bin/nova-manage api_db sync',
:refreshonly => 'true',
:timeout => 300,
:logoutput => 'on_failure',
:subscribe => ['Anchor[nova::install::end]',
'Anchor[nova::config::end]',
@ -30,6 +31,7 @@ describe 'nova::db::sync_api' do
is_expected.to contain_exec('nova-db-sync-api').with(
:command => '/usr/bin/nova-manage --config-file /etc/nova/nova.conf api_db sync',
:refreshonly => 'true',
:timeout => 300,
:logoutput => 'on_failure',
:subscribe => ['Anchor[nova::install::end]',
'Anchor[nova::config::end]',
@ -39,6 +41,27 @@ describe 'nova::db::sync_api' do
}
it { is_expected.to_not contain_class('nova::db::sync_cell_v2') }
end
context "overriding db_sync_timeout" do
let :params do
{
:db_sync_timeout => 750
}
end
it {
is_expected.to contain_exec('nova-db-sync-api').with(
:command => '/usr/bin/nova-manage api_db sync',
:refreshonly => 'true',
:timeout => 750,
:logoutput => 'on_failure',
:subscribe => ['Anchor[nova::install::end]',
'Anchor[nova::config::end]',
'Anchor[nova::dbsync_api::begin]'],
:notify => 'Anchor[nova::dbsync_api::end]',
)
}
end
end

View File

@ -10,6 +10,7 @@ describe 'nova::db::sync' do
:refreshonly => 'true',
:try_sleep => 5,
:tries => 10,
:timeout => 300,
:logoutput => 'on_failure',
:subscribe => ['Anchor[nova::install::end]',
'Anchor[nova::config::end]',
@ -31,6 +32,30 @@ describe 'nova::db::sync' do
:refreshonly => 'true',
:try_sleep => 5,
:tries => 10,
:timeout => 300,
:logoutput => 'on_failure',
:subscribe => ['Anchor[nova::install::end]',
'Anchor[nova::config::end]',
'Anchor[nova::dbsync::begin]'],
:notify => 'Anchor[nova::dbsync::end]',
)
}
end
describe "overriding db_sync_timeout" do
let :params do
{
:db_sync_timeout => 750,
}
end
it {
is_expected.to contain_exec('nova-db-sync').with(
:command => '/usr/bin/nova-manage db sync',
:refreshonly => 'true',
:try_sleep => 5,
:tries => 10,
:timeout => 750,
:logoutput => 'on_failure',
:subscribe => ['Anchor[nova::install::end]',
'Anchor[nova::config::end]',