Cover gnocchi api step 4 and 5

Update the gnocchi api to expose the redis information as a class
parameter so it can be tested correctly.

Change-Id: I075b4af5e7bb35f90f7b82f8fb1b6d6ad6363b71
This commit is contained in:
Alex Schultz 2017-04-12 13:53:44 -06:00
parent d547121212
commit 4450afd495
3 changed files with 92 additions and 31 deletions

View File

@ -47,6 +47,14 @@
# This is set by t-h-t.
# Defaults to hiera('gnocchi_api_network', undef)
#
# [*gnocchi_redis_password*]
# (Required) Password for the gnocchi redis user for the coordination url
# Defaults to hiera('gnocchi_redis_password')
#
# [*redis_vip*]
# (Required) Redis ip address for the coordination url
# Defaults to hiera('redis_vip')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
@ -58,6 +66,8 @@ class tripleo::profile::base::gnocchi::api (
$enable_internal_tls = hiera('enable_internal_tls', false),
$gnocchi_backend = downcase(hiera('gnocchi_backend', 'swift')),
$gnocchi_network = hiera('gnocchi_api_network', undef),
$gnocchi_redis_password = hiera('gnocchi_redis_password'),
$redis_vip = hiera('redis_vip'),
$step = hiera('step'),
) {
if $::hostname == downcase($bootstrap_node) {
@ -94,7 +104,7 @@ class tripleo::profile::base::gnocchi::api (
if $step >= 4 {
class { '::gnocchi::storage':
coordination_url => join(['redis://:', hiera('gnocchi_redis_password'), '@', normalize_ip_for_uri(hiera('redis_vip')), ':6379/']),
coordination_url => join(['redis://:', $gnocchi_redis_password, '@', normalize_ip_for_uri($redis_vip), ':6379/']),
}
case $gnocchi_backend {
'swift': { include ::gnocchi::storage::swift }

View File

@ -23,7 +23,11 @@ describe 'tripleo::profile::base::gnocchi::api' do
end
context 'with step less than 3' do
let(:params) { { :step => 2 } }
let(:params) { {
:step => 2,
:gnocchi_redis_password => 'gnocchi',
:redis_vip => '127.0.0.1'
} }
it {
is_expected.to contain_class('tripleo::profile::base::gnocchi::api')
@ -36,6 +40,8 @@ describe 'tripleo::profile::base::gnocchi::api' do
let(:params) { {
:step => 3,
:bootstrap_node => 'node.example.com',
:gnocchi_redis_password => 'gnocchi',
:redis_vip => '127.0.0.1'
} }
it {
@ -48,6 +54,8 @@ describe 'tripleo::profile::base::gnocchi::api' do
context 'with step 3' do
let(:params) { {
:step => 3,
:gnocchi_redis_password => 'gnocchi',
:redis_vip => '127.0.0.1'
} }
it {
@ -57,35 +65,76 @@ describe 'tripleo::profile::base::gnocchi::api' do
}
end
# TODO(aschultz): fix profile class to not include hiera look ups in the
# step 4 so we can properly test it
#context 'with step 4' do
# let(:params) { {
# :step => 4,
# } }
#
# it {
# is_expected.to contain_class('gnocchi::api')
# is_expected.to contain_class('gnocchi::wsgi::apache')
# is_expected.to contain_class('gnocchi::storage')
# }
#end
#
#context 'with step 5 on bootstrap' do
# let(:params) { {
# :step => 5,
# :bootstrap_node => 'node.example.com'
# } }
#
# it {
# is_expected.to contain_class('gnocchi::api')
# is_expected.to contain_class('gnocchi::wsgi::apache')
# is_expected.to contain_exec('run gnocchi upgrade with storage').with(
# :command => 'gnocchi-upgrade --config-file=/etc/gnocchi/gnocchi.conf',
# :path => ['/usr/bin', '/usr/sbin']
# )
# }
#end
context 'with step 4' do
let(:params) { {
:step => 4,
:gnocchi_redis_password => 'gnocchi',
:redis_vip => '127.0.0.1'
} }
it {
is_expected.to contain_class('gnocchi::api')
is_expected.to contain_class('gnocchi::wsgi::apache')
is_expected.to contain_class('gnocchi::storage').with(
:coordination_url => 'redis://:gnocchi@127.0.0.1:6379/'
)
is_expected.to contain_class('gnocchi::storage::swift')
}
end
context 'with step 4 with file backend' do
let(:params) { {
:step => 4,
:gnocchi_backend => 'file',
:gnocchi_redis_password => 'gnocchi',
:redis_vip => '127.0.0.1'
} }
it {
is_expected.to contain_class('gnocchi::api')
is_expected.to contain_class('gnocchi::wsgi::apache')
is_expected.to contain_class('gnocchi::storage').with(
:coordination_url => 'redis://:gnocchi@127.0.0.1:6379/'
)
is_expected.to contain_class('gnocchi::storage::file')
}
end
context 'with step 4 with ceph backend' do
let(:params) { {
:step => 4,
:gnocchi_backend => 'rbd',
:gnocchi_redis_password => 'gnocchi',
:redis_vip => '127.0.0.1'
} }
it {
is_expected.to contain_class('gnocchi::api')
is_expected.to contain_class('gnocchi::wsgi::apache')
is_expected.to contain_class('gnocchi::storage').with(
:coordination_url => 'redis://:gnocchi@127.0.0.1:6379/'
)
is_expected.to contain_class('gnocchi::storage::ceph')
}
end
context 'with step 5 on bootstrap' do
let(:params) { {
:step => 5,
:bootstrap_node => 'node.example.com',
:gnocchi_redis_password => 'gnocchi',
:redis_vip => '127.0.0.1'
} }
it {
is_expected.to contain_class('gnocchi::api')
is_expected.to contain_class('gnocchi::wsgi::apache')
is_expected.to contain_exec('run gnocchi upgrade with storage').with(
:command => 'gnocchi-upgrade --config-file=/etc/gnocchi/gnocchi.conf',
:path => ['/usr/bin', '/usr/sbin']
)
}
end
end

View File

@ -30,6 +30,8 @@ cinder::rabbit_password: 'password'
cinder::keystone::authtoken::password: 'password'
# gnocchi related items
gnocchi::keystone::authtoken::password: 'password'
gnocchi::storage::ceph::ceph_username: 'gnocchi'
gnocchi::storage::ceph::ceph_secret: 'password'
# nova related items
nova::rabbit_password: 'password'
nova::keystone::authtoken::password: 'password'