puppet-monasca/manifests/alarmdefs.pp

138 lines
4.0 KiB
Puppet

# == Class: monasca::alarmdefs
#
# Class for bootstrapping monasca alarm definitions
#
# === Parameters:
#
# [*alarm_definition_config_source*]
# location of alarm definitions template to bootstrap in mysql database
#
# [*notification_config_source*]
# location of notification methods template to bootstrap in mysql database
#
# [*notification_assignments_source*]
# location of notification assignments template to bootstrap in mysql database
#
# [*admin_username*]
# name of the monasca admin user
#
# [*admin_password*]
# password of the monasca admin user
#
# [*api_server_url*]
# monasca api server endpoint
#
# [*auth_url*]
# keystone endpoint
#
# [*project_name*]
# keystone project name to bootstrap alarm definitions for
#
# [*virtual_env*]
# location of python virtual environment to install to
#
# [*install_python_deps*]
# flag for whether or not to install python dependencies
#
# [*python_dep_ensure*]
# flag for whether or not to ensure/update python dependencies
#
class monasca::alarmdefs(
$alarm_definition_config_source = 'monasca/alarm_definition_config.json.erb',
$notification_config_source = 'monasca/notification_config.json.erb',
$notification_assignments_source = 'monasca/notification_assignments.json.erb',
$admin_username = 'monasca-admin',
$admin_password = undef,
$api_server_url = undef,
$auth_url = undef,
$project_name = undef,
$virtual_env = '/var/www/monasca-alarmdefs',
$install_python_deps = true,
$python_dep_ensure = 'present',
)
{
include ::monasca::params
$alarm_definition_config = '/tmp/alarm_definition_config.json'
$notification_config = '/tmp/notification_config.json'
$notification_assignments = '/tmp/notification_assignments.json'
$script_name = 'bootstrap-alarm-definitions.py'
$script = "${virtual_env}/bin/${script_name}"
$cleanup_script = "${virtual_env}/bin/vm_alarm_cleanup.py"
$sql_host = $::monasca::params::sql_host
$sql_user = $::monasca::params::sql_user
$sql_password = $::monasca::params::sql_password
$sql_port = $::monasca::params::sql_port
if $install_python_deps {
package { ['python-virtualenv', 'python-dev']:
ensure => $python_dep_ensure,
before => Python::Virtualenv[$virtual_env],
}
}
python::virtualenv { $virtual_env :
owner => 'root',
group => 'root',
before => [Exec[$script], File[$script]],
require => [Package['python-virtualenv'],Package['python-dev']],
}
file { $script:
ensure => file,
content => template("monasca/${script_name}.erb"),
mode => '0755',
owner => 'root',
group => 'root',
}
file { $alarm_definition_config:
ensure => file,
content => template($alarm_definition_config_source),
mode => '0755',
owner => 'root',
group => 'root',
}
file { $notification_config:
ensure => file,
content => template($notification_config_source),
mode => '0755',
owner => 'root',
group => 'root',
}
file { $notification_assignments:
ensure => file,
content => template($notification_assignments_source),
mode => '0755',
owner => 'root',
group => 'root',
}
exec { $script:
subscribe => [File[$script], File[$alarm_definition_config], File[$notification_config], File[$notification_assignments]],
path => '/bin:/sbin:/usr/bin:/usr/sbin:/tmp',
cwd => "${virtual_env}/bin",
user => 'root',
group => 'root',
environment => ["OS_AUTH_URL=${auth_url}",
"OS_USERNAME=${admin_username}",
"OS_PASSWORD=${admin_password}",
"OS_PROJECT_NAME=${project_name}",
"MONASCA_API_URL=${api_server_url}"],
refreshonly => true,
require => Service['monasca-api'],
}
file { $cleanup_script:
ensure => file,
content => template('monasca/vm_alarm_cleanup.py.erb'),
mode => '0755',
owner => 'root',
group => 'root',
require => Python::Virtualenv[$virtual_env],
}
}