Creation of nova::db::sync
In order to standardize the way dbsync are run across our modules, we create a new class nova::db::sync. This class will be included if sync_db is enabled. By making this transition the nova::db::sync class can be returned by the ENC. A use case would be in an highly available environment, with 3 galera nodes, include nova::api on every node with sync_db set to false and have the ENC return nova::db::sync just for one node. Change-Id: I795178f83fe5b997a2574fe17263643688efc48c
This commit is contained in:
@@ -346,14 +346,7 @@ class nova::api(
|
|||||||
# Added arg and if statement prevents this from being run
|
# Added arg and if statement prevents this from being run
|
||||||
# where db is not active i.e. the compute
|
# where db is not active i.e. the compute
|
||||||
if $sync_db {
|
if $sync_db {
|
||||||
Package<| title == $::nova::params::api_package_name |> ~> Exec['nova-db-sync']
|
include ::nova::db::sync
|
||||||
Package<| title == $::nova::params::common_package_name |> ~> Exec['nova-db-sync']
|
|
||||||
|
|
||||||
exec { 'nova-db-sync':
|
|
||||||
command => '/usr/bin/nova-manage db sync',
|
|
||||||
refreshonly => true,
|
|
||||||
subscribe => Exec['post-nova_config'],
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Remove auth configuration from api-paste.ini
|
# Remove auth configuration from api-paste.ini
|
||||||
|
22
manifests/db/sync.pp
Normal file
22
manifests/db/sync.pp
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#
|
||||||
|
# Class to execute nova dbsync
|
||||||
|
#
|
||||||
|
class nova::db::sync {
|
||||||
|
|
||||||
|
include ::nova::params
|
||||||
|
|
||||||
|
Package<| tag =='nova-package' |> ~> Exec['nova-db-sync']
|
||||||
|
Exec['nova-db-sync'] ~> Service <| tag == 'nova-service' |>
|
||||||
|
|
||||||
|
Nova_config <||> -> Exec['nova-db-sync']
|
||||||
|
Nova_config <| title == 'database/connection' |> ~> Exec['nova-db-sync']
|
||||||
|
|
||||||
|
Exec<| title == 'post-nova_config' |> ~> Exec['nova-db-sync']
|
||||||
|
|
||||||
|
exec { 'nova-db-sync':
|
||||||
|
command => '/usr/bin/nova-manage db sync',
|
||||||
|
refreshonly => true,
|
||||||
|
logoutput => on_failure,
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
42
spec/classes/nova_db_sync_spec.rb
Normal file
42
spec/classes/nova_db_sync_spec.rb
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'nova::db::sync' do
|
||||||
|
|
||||||
|
shared_examples_for 'nova-dbsync' do
|
||||||
|
|
||||||
|
it 'runs nova-db-sync' do
|
||||||
|
is_expected.to contain_exec('nova-db-sync').with(
|
||||||
|
:command => '/usr/bin/nova-manage db sync',
|
||||||
|
:refreshonly => 'true',
|
||||||
|
:logoutput => 'on_failure'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'on a RedHat osfamily' do
|
||||||
|
let :facts do
|
||||||
|
{
|
||||||
|
:osfamily => 'RedHat',
|
||||||
|
:operatingsystemrelease => '7.0',
|
||||||
|
:concat_basedir => '/var/lib/puppet/concat'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it_configures 'nova-dbsync'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'on a Debian osfamily' do
|
||||||
|
let :facts do
|
||||||
|
{
|
||||||
|
:operatingsystemrelease => '7.8',
|
||||||
|
:operatingsystem => 'Debian',
|
||||||
|
:osfamily => 'Debian',
|
||||||
|
:concat_basedir => '/var/lib/puppet/concat'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it_configures 'nova-dbsync'
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Reference in New Issue
Block a user