aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--manifests/profile/base/gnocchi/api.pp12
-rw-r--r--spec/classes/tripleo_profile_base_gnocchi_api_spec.rb109
-rw-r--r--spec/fixtures/hieradata/default.yaml2
3 files changed, 92 insertions, 31 deletions
diff --git a/manifests/profile/base/gnocchi/api.pp b/manifests/profile/base/gnocchi/api.pp
index 029eb99..21b8325 100644
--- a/manifests/profile/base/gnocchi/api.pp
+++ b/manifests/profile/base/gnocchi/api.pp
@@ -55,6 +55,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.
@@ -67,6 +75,8 @@ class tripleo::profile::base::gnocchi::api (
$generate_service_certificates = hiera('generate_service_certificates', 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) {
@@ -107,7 +117,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 }
diff --git a/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb b/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
index 805a28e..6c04e9d 100644
--- a/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
+++ b/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
@@ -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
diff --git a/spec/fixtures/hieradata/default.yaml b/spec/fixtures/hieradata/default.yaml
index 7e6c177..c8f9ac9 100644
--- a/spec/fixtures/hieradata/default.yaml
+++ b/spec/fixtures/hieradata/default.yaml
@@ -26,6 +26,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'