summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--manifests/haproxy.pp8
-rw-r--r--manifests/keepalived.pp21
-rw-r--r--manifests/profile/base/ceilometer/api.pp2
-rw-r--r--manifests/profile/base/cinder/volume/dellsc.pp1
-rw-r--r--manifests/profile/base/gnocchi/api.pp4
-rw-r--r--releasenotes/notes/heat_api_timeout-cbb01242534cec79.yaml5
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_api_spec.rb8
-rw-r--r--spec/classes/tripleo_profile_base_gnocchi_api_spec.rb101
-rw-r--r--spec/fixtures/hieradata/default.yaml2
9 files changed, 137 insertions, 15 deletions
diff --git a/manifests/haproxy.pp b/manifests/haproxy.pp
index a32c8d9..a6bd1eb 100644
--- a/manifests/haproxy.pp
+++ b/manifests/haproxy.pp
@@ -1185,13 +1185,17 @@ class tripleo::haproxy (
$heat_api_vip = hiera('heat_api_vip', $controller_virtual_ip)
$heat_ip_addresses = hiera('heat_api_node_ips', $controller_hosts_real)
+ $heat_timeout_options = {
+ 'timeout client' => '10m',
+ 'timeout server' => '10m',
+ }
if $service_certificate {
$heat_ssl_options = {
'rsprep' => "^Location:\\ http://${public_virtual_ip}(.*) Location:\\ https://${public_virtual_ip}\\1",
}
- $heat_options = merge($default_listen_options, $heat_ssl_options)
+ $heat_options = merge($default_listen_options, $heat_ssl_options, $heat_timeout_options)
} else {
- $heat_options = $default_listen_options
+ $heat_options = merge($default_listen_options, $heat_timeout_options)
}
if $heat_api {
diff --git a/manifests/keepalived.pp b/manifests/keepalived.pp
index aa0e5d6..35b0821 100644
--- a/manifests/keepalived.pp
+++ b/manifests/keepalived.pp
@@ -64,6 +64,11 @@
# A string.
# Defaults to false
#
+# [*virtual_router_id_base*]
+# Base for range used for virtual router IDs.
+# An integer.
+# Defaults to 50
+#
class tripleo::keepalived (
$controller_virtual_ip,
@@ -75,6 +80,7 @@ class tripleo::keepalived (
$storage_mgmt_virtual_ip = false,
$redis_virtual_ip = false,
$ovndbs_virtual_ip = false,
+ $virtual_router_id_base = 50,
) {
case $::osfamily {
@@ -100,7 +106,7 @@ class tripleo::keepalived (
}
# KEEPALIVE INSTANCE CONTROL
- keepalived::instance { '51':
+ keepalived::instance { "${$virtual_router_id_base + 1}":
interface => $control_virtual_interface,
virtual_ips => [join([$controller_virtual_ip, ' dev ', $control_virtual_interface])],
state => 'MASTER',
@@ -109,7 +115,7 @@ class tripleo::keepalived (
}
# KEEPALIVE INSTANCE PUBLIC
- keepalived::instance { '52':
+ keepalived::instance { "${$virtual_router_id_base + 2}":
interface => $public_virtual_interface,
virtual_ips => [join([$public_virtual_ip, ' dev ', $public_virtual_interface])],
state => 'MASTER',
@@ -126,7 +132,7 @@ class tripleo::keepalived (
$internal_api_virtual_netmask = '32'
}
# KEEPALIVE INTERNAL API NETWORK
- keepalived::instance { '53':
+ keepalived::instance { "${$virtual_router_id_base + 3}":
interface => $internal_api_virtual_interface,
virtual_ips => [join(["${internal_api_virtual_ip}/${internal_api_virtual_netmask}", ' dev ', $internal_api_virtual_interface])],
state => 'MASTER',
@@ -143,7 +149,7 @@ class tripleo::keepalived (
$storage_virtual_netmask = '32'
}
# KEEPALIVE STORAGE NETWORK
- keepalived::instance { '54':
+ keepalived::instance { "${$virtual_router_id_base + 4}":
interface => $storage_virtual_interface,
virtual_ips => [join(["${storage_virtual_ip}/${storage_virtual_netmask}", ' dev ', $storage_virtual_interface])],
state => 'MASTER',
@@ -160,7 +166,7 @@ class tripleo::keepalived (
$storage_mgmt_virtual_netmask = '32'
}
# KEEPALIVE STORAGE MANAGEMENT NETWORK
- keepalived::instance { '55':
+ keepalived::instance { "${$virtual_router_id_base + 5}":
interface => $storage_mgmt_virtual_interface,
virtual_ips => [join(["${storage_mgmt_virtual_ip}/${storage_mgmt_virtual_netmask}", ' dev ', $storage_mgmt_virtual_interface])],
state => 'MASTER',
@@ -177,7 +183,7 @@ class tripleo::keepalived (
$redis_virtual_netmask = '32'
}
# KEEPALIVE STORAGE MANAGEMENT NETWORK
- keepalived::instance { '56':
+ keepalived::instance { "${$virtual_router_id_base + 6}":
interface => $redis_virtual_interface,
virtual_ips => [join(["${redis_virtual_ip}/${redis_virtual_netmask}", ' dev ', $redis_virtual_interface])],
state => 'MASTER',
@@ -185,10 +191,11 @@ class tripleo::keepalived (
priority => 101,
}
}
+
if $ovndbs_virtual_ip and $ovndbs_virtual_ip != $controller_virtual_ip {
$ovndbs_virtual_interface = interface_for_ip($ovndbs_virtual_ip)
# KEEPALIVE OVNDBS MANAGEMENT NETWORK
- keepalived::instance { '57':
+ keepalived::instance { "${$virtual_router_id_base + 7}":
interface => $ovndbs_virtual_interface,
virtual_ips => [join([$ovndbs_virtual_ip, ' dev ', $ovndbs_virtual_interface])],
state => 'MASTER',
diff --git a/manifests/profile/base/ceilometer/api.pp b/manifests/profile/base/ceilometer/api.pp
index 28504c5..1080355 100644
--- a/manifests/profile/base/ceilometer/api.pp
+++ b/manifests/profile/base/ceilometer/api.pp
@@ -63,7 +63,7 @@ class tripleo::profile::base::ceilometer::api (
$tls_keyfile = undef
}
- if $step >= 4 {
+ if $step >= 3 {
include ::ceilometer::api
class { '::ceilometer::wsgi::apache':
ssl_cert => $tls_certfile,
diff --git a/manifests/profile/base/cinder/volume/dellsc.pp b/manifests/profile/base/cinder/volume/dellsc.pp
index 534bcb7..ab6bbeb 100644
--- a/manifests/profile/base/cinder/volume/dellsc.pp
+++ b/manifests/profile/base/cinder/volume/dellsc.pp
@@ -44,6 +44,7 @@ class tripleo::profile::base::cinder::volume::dellsc (
dell_sc_api_port => hiera('cinder::backend::dellsc_iscsi::dell_sc_api_port', undef),
dell_sc_server_folder => hiera('cinder::backend::dellsc_iscsi::dell_sc_server_folder', undef),
dell_sc_volume_folder => hiera('cinder::backend::dellsc_iscsi::dell_sc_volume_folder', undef),
+ excluded_domain_ip => hiera('cinder::backend::dellsc_iscsi::excluded_domain_ip', undef),
}
}
diff --git a/manifests/profile/base/gnocchi/api.pp b/manifests/profile/base/gnocchi/api.pp
index 79ee265..ce04abf 100644
--- a/manifests/profile/base/gnocchi/api.pp
+++ b/manifests/profile/base/gnocchi/api.pp
@@ -83,13 +83,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/releasenotes/notes/heat_api_timeout-cbb01242534cec79.yaml b/releasenotes/notes/heat_api_timeout-cbb01242534cec79.yaml
new file mode 100644
index 0000000..a3b7d91
--- /dev/null
+++ b/releasenotes/notes/heat_api_timeout-cbb01242534cec79.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - For Heat API, increase the HAproxy timeout from 2 minutes to 10 minutes so
+ we give a chance to Heat to use the rpc_response_timeout value which is set
+ to 600 by default in TripleO.
diff --git a/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
index 936df4f..cec2b54 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
@@ -22,8 +22,8 @@ describe 'tripleo::profile::base::ceilometer::api' do
"class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, oslomsg_rpc_hosts => ['localhost.localdomain'] }"
end
- context 'with step less than 4' do
- let(:params) { { :step => 3 } }
+ context 'with step less than 2' do
+ let(:params) { { :step => 2 } }
it 'should do nothing' do
is_expected.to contain_class('tripleo::profile::base::ceilometer::api')
@@ -32,9 +32,9 @@ describe 'tripleo::profile::base::ceilometer::api' do
end
end
- context 'with step 4' do
+ context 'with step 3' do
let(:params) { {
- :step => 4,
+ :step => 3,
} }
it 'should trigger complete configuration' do
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
index 0000000..805a28e
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
@@ -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
diff --git a/spec/fixtures/hieradata/default.yaml b/spec/fixtures/hieradata/default.yaml
index 9634e5d..16f39a5 100644
--- a/spec/fixtures/hieradata/default.yaml
+++ b/spec/fixtures/hieradata/default.yaml
@@ -28,6 +28,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'