Cover gnocchi api step 4 and 5
authorAlex Schultz <aschultz@redhat.com>
Wed, 12 Apr 2017 19:53:44 +0000 (13:53 -0600)
committerPradeep Kilambi <pkilambi@redhat.com>
Thu, 15 Jun 2017 22:14:20 +0000 (22:14 +0000)
Update the gnocchi api to expose the redis information as a class
parameter so it can be tested correctly.

Change-Id: I075b4af5e7bb35f90f7b82f8fb1b6d6ad6363b71
(cherry picked from commit 4450afd495794a8ac0fc5b8c51d696416e5deb9d)

manifests/profile/base/gnocchi/api.pp
spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
spec/fixtures/hieradata/default.yaml

index 029eb99..21b8325 100644 (file)
 #   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 }
index 805a28e..6c04e9d 100644 (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
 
 
index 7e6c177..c8f9ac9 100644 (file)
@@ -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'