Move gnocchi wsgi configuration to step 3
authorAlex Schultz <aschultz@redhat.com>
Wed, 12 Apr 2017 16:34:07 +0000 (10:34 -0600)
committerAlex Schultz <aschultz@redhat.com>
Mon, 17 Apr 2017 14:57:59 +0000 (14:57 +0000)
We configure apache in step3 so we need to configure the gnocchi api in
step 3 as well to prevent unnecessary service restarts during updates.

Change-Id: I30010c9cf0b0c23fde5d00b67472979d519a15be
Related-Bug: #1664418
(cherry picked from commit 9de4c92571fdbe342a20a68e4ee44feb55464007)

manifests/profile/base/gnocchi/api.pp
spec/classes/tripleo_profile_base_gnocchi_api_spec.rb [new file with mode: 0644]
spec/fixtures/hieradata/default.yaml

index e79f800..6304a51 100644 (file)
@@ -96,13 +96,15 @@ class tripleo::profile::base::gnocchi::api (
     include ::gnocchi::db::sync
   }
 
-  if $step >= 4 {
+  if $step >= 3 {
     include ::gnocchi::api
     class { '::gnocchi::wsgi::apache':
       ssl_cert => $tls_certfile,
       ssl_key  => $tls_keyfile,
     }
+  }
 
+  if $step >= 4 {
     class { '::gnocchi::storage':
       coordination_url => join(['redis://:', hiera('gnocchi_redis_password'), '@', normalize_ip_for_uri(hiera('redis_vip')), ':6379/']),
     }
diff --git a/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb b/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
new file mode 100644 (file)
index 0000000..805a28e
--- /dev/null
@@ -0,0 +1,101 @@
+#
+# Copyright (C) 2017 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+require 'spec_helper'
+
+describe 'tripleo::profile::base::gnocchi::api' do
+  shared_examples_for 'tripleo::profile::base::gnocchi::api' do
+    let(:pre_condition) do
+      "class { '::tripleo::profile::base::gnocchi': step => #{params[:step]}, }"
+    end
+
+    context 'with step less than 3' do
+      let(:params) { { :step => 2 } }
+
+      it {
+        is_expected.to contain_class('tripleo::profile::base::gnocchi::api')
+        is_expected.to_not contain_class('gnocchi::api')
+        is_expected.to_not contain_class('gnocchi::wsgi::apache')
+      }
+    end
+
+    context 'with step 3 on bootstrap' do
+      let(:params) { {
+        :step => 3,
+        :bootstrap_node => 'node.example.com',
+      } }
+
+      it {
+        is_expected.to contain_class('gnocchi::db::sync')
+        is_expected.to contain_class('gnocchi::api')
+        is_expected.to contain_class('gnocchi::wsgi::apache')
+      }
+    end
+
+    context 'with step 3' do
+      let(:params) { {
+        :step => 3,
+      } }
+
+      it {
+        is_expected.to_not contain_class('gnocchi::db::sync')
+        is_expected.to contain_class('gnocchi::api')
+        is_expected.to contain_class('gnocchi::wsgi::apache')
+      }
+    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
+  end
+
+
+  on_supported_os.each do |os, facts|
+    context "on #{os}" do
+      let(:facts) do
+        facts.merge({ :hostname => 'node.example.com' })
+      end
+
+      it_behaves_like 'tripleo::profile::base::gnocchi::api'
+    end
+  end
+end
index 592c308..94d2b28 100644 (file)
@@ -24,6 +24,8 @@ ceph::profile::params::rgw_keystone_admin_password: 'keystone_admin_password'
 # cinder related items
 cinder::rabbit_password: 'password'
 cinder::keystone::authtoken::password: 'password'
+# gnocchi related items
+gnocchi::keystone::authtoken::password: 'password'
 # nova related items
 nova::rabbit_password: 'password'
 nova::keystone::authtoken::password: 'password'