Yanis Guenane 744f4bbcf5 Create a sync_db boolean for Heat.
Other components offer the option to decide whether or not to run the
db sync command. Heat was missing this feature. This commit add this
feature for Heat.

Change-Id: I06b669123fe08e02c66ee34dab78a943ff5de90c
2015-04-07 11:51:28 +02:00

121 lines
2.8 KiB
Puppet

# == Class: heat::api
#
# Installs & configure the heat API service
#
# === Parameters
# [*enabled*]
# (optional) Should the service be enabled.
# Defaults to 'true'.
#
# [*manage_service*]
# (optional) Whether the service should be managed by Puppet.
# Defaults to 'true'.
#
# [*bind_host*]
# (Optional) Address to bind the server. Useful when
# selecting a particular network interface.
# Defaults to '0.0.0.0'.
#
# [*bind_port*]
# (Optional) The port on which the server will listen.
# Defaults to '8004'.
#
# [*workers*]
# (Optional) The port on which the server will listen.
# Defaults to '0'.
#
# [*use_ssl*]
# (Optional) Whether to use ssl or not.
# Defaults to 'false'.
#
# [*cert_file*]
# (Optional) Location of the SSL certificate file to use for SSL mode.
# Required when $use_ssl is set to 'true'.
# Defaults to 'false'.
#
# [*key_file*]
# (Optional) Location of the SSL key file to use for enabling SSL mode.
# Required when $use_ssl is set to 'true'.
# Defaults to 'false'.
#
# === Deprecated Parameters
#
# No Deprecated Parameters.
#
class heat::api (
$manage_service = true,
$enabled = true,
$bind_host = '0.0.0.0',
$bind_port = '8004',
$workers = '0',
$use_ssl = false,
$cert_file = false,
$key_file = false,
) {
include ::heat
include ::heat::params
include ::heat::policy
Heat_config<||> ~> Service['heat-api']
Class['heat::policy'] -> Service['heat-api']
Package['heat-api'] -> Heat_config<||>
Package['heat-api'] -> Class['heat::policy']
Package['heat-api'] -> Service['heat-api']
if $use_ssl {
if !$cert_file {
fail('The cert_file parameter is required when use_ssl is set to true')
}
if !$key_file {
fail('The key_file parameter is required when use_ssl is set to true')
}
}
package { 'heat-api':
ensure => installed,
name => $::heat::params::api_package_name,
tag => 'openstack',
}
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'heat-api':
ensure => $service_ensure,
name => $::heat::params::api_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
require => [Package['heat-common'],
Package['heat-api']],
subscribe => $::heat::subscribe_sync_db,
}
heat_config {
'heat_api/bind_host' : value => $bind_host;
'heat_api/bind_port' : value => $bind_port;
'heat_api/workers' : value => $workers;
}
# SSL Options
if $use_ssl {
heat_config {
'heat_api/cert_file' : value => $cert_file;
'heat_api/key_file' : value => $key_file;
}
} else {
heat_config {
'heat_api/cert_file' : ensure => absent;
'heat_api/key_file' : ensure => absent;
}
}
}