Fix idempotency for Ceilometer Redis plugin
Change-Id: I4acf9f2fc86a3d00345ce5a0dcde227f77106bfb Closes-Bug: #1528827
This commit is contained in:
parent
5adb4d407b
commit
7aca0c5f1c
|
@ -71,6 +71,23 @@ class redis::main (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$metadata = {
|
||||||
|
'resource-stickiness' => '1',
|
||||||
|
}
|
||||||
|
|
||||||
|
$operations = {
|
||||||
|
'monitor' => {
|
||||||
|
'interval' => '20',
|
||||||
|
'timeout' => '10',
|
||||||
|
},
|
||||||
|
'start' => {
|
||||||
|
'timeout' => '360',
|
||||||
|
},
|
||||||
|
'stop' => {
|
||||||
|
'timeout' => '360',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
firewall {'121 redis_port':
|
firewall {'121 redis_port':
|
||||||
port => $redis_port,
|
port => $redis_port,
|
||||||
proto => 'tcp',
|
proto => 'tcp',
|
||||||
|
@ -91,8 +108,8 @@ class redis::main (
|
||||||
|
|
||||||
# Use custom function to generate sentinel configuration
|
# Use custom function to generate sentinel configuration
|
||||||
$sentinel_confs = sentinel_confs($redis_hosts, $redis_port, $quorum,
|
$sentinel_confs = sentinel_confs($redis_hosts, $redis_port, $quorum,
|
||||||
$parallel_syncs, $down_after_milliseconds,
|
$parallel_syncs, $down_after_milliseconds,
|
||||||
$failover_timeout)
|
$failover_timeout)
|
||||||
|
|
||||||
package {'python-redis':
|
package {'python-redis':
|
||||||
ensure => 'present',
|
ensure => 'present',
|
||||||
|
@ -101,8 +118,8 @@ class redis::main (
|
||||||
class { '::redis':
|
class { '::redis':
|
||||||
conf_bind => $redis_bind_address,
|
conf_bind => $redis_bind_address,
|
||||||
conf_slave_read_only => 'no',
|
conf_slave_read_only => 'no',
|
||||||
service_enable => false,
|
service_enable => true,
|
||||||
service_ensure => 'stopped',
|
service_ensure => 'running',
|
||||||
conf_slaveof => $conf_slaveof,
|
conf_slaveof => $conf_slaveof,
|
||||||
} ->
|
} ->
|
||||||
|
|
||||||
|
@ -119,152 +136,16 @@ class redis::main (
|
||||||
'notification/workload_partitioning': value => true
|
'notification/workload_partitioning': value => true
|
||||||
}
|
}
|
||||||
|
|
||||||
if $primary_controller {
|
|
||||||
exec {'remove_old_resource_central_agent':
|
|
||||||
path => '/usr/sbin:/usr/bin:/sbin:/bin',
|
|
||||||
command => 'pcs resource delete p_ceilometer-agent-central --wait=120',
|
|
||||||
onlyif => 'pcs resource show p_ceilometer-agent-central > /dev/null 2>&1',
|
|
||||||
}
|
|
||||||
|
|
||||||
exec {'remove_old_resource_alarm_evaluator':
|
|
||||||
path => '/usr/sbin:/usr/bin:/sbin:/bin',
|
|
||||||
command => 'pcs resource delete p_ceilometer-alarm-evaluator --wait=120',
|
|
||||||
onlyif => 'pcs resource show p_ceilometer-alarm-evaluator > /dev/null 2>&1',
|
|
||||||
}
|
|
||||||
|
|
||||||
Exec['remove_old_resource_central_agent'] -> Cluster::Corosync::Cs_service["$::ceilometer::params::agent_central_service_name"]
|
|
||||||
Exec['remove_old_resource_alarm_evaluator'] -> Cluster::Corosync::Cs_service["$::ceilometer::params::alarm_evaluator_service_name"]
|
|
||||||
}
|
|
||||||
|
|
||||||
file {'redis_ocf_script':
|
|
||||||
path => '/usr/lib/ocf/resource.d/fuel/redis-server',
|
|
||||||
owner => 'root',
|
|
||||||
group => 'root',
|
|
||||||
mode => '0755',
|
|
||||||
source => 'puppet:///modules/redis/ocf/redis-server'
|
|
||||||
}
|
|
||||||
|
|
||||||
cluster::corosync::cs_service { "$::ceilometer::params::agent_central_service_name":
|
|
||||||
ocf_script => 'ceilometer-agent-central',
|
|
||||||
csr_parameters => {},
|
|
||||||
csr_metadata => undef,
|
|
||||||
csr_complex_type => 'clone',
|
|
||||||
csr_ms_metadata => { 'interleave' => true },
|
|
||||||
csr_mon_intr => '20',
|
|
||||||
csr_mon_timeout => '10',
|
|
||||||
csr_timeout => '60',
|
|
||||||
service_name => $::ceilometer::params::agent_central_service_name,
|
|
||||||
package_name => $::ceilometer::params::agent_central_package_name,
|
|
||||||
service_title => 'ceilometer-agent-central',
|
|
||||||
primary => $primary_controller,
|
|
||||||
hasrestart => false,
|
|
||||||
}
|
|
||||||
|
|
||||||
cluster::corosync::cs_service { "$::ceilometer::params::alarm_evaluator_service_name":
|
|
||||||
ocf_script => 'ceilometer-alarm-evaluator',
|
|
||||||
csr_parameters => {},
|
|
||||||
csr_metadata => undef,
|
|
||||||
csr_complex_type => 'clone',
|
|
||||||
csr_ms_metadata => { 'interleave' => true },
|
|
||||||
csr_mon_intr => '20',
|
|
||||||
csr_mon_timeout => '10',
|
|
||||||
csr_timeout => '60',
|
|
||||||
service_name => $::ceilometer::params::alarm_evaluator_service_name,
|
|
||||||
package_name => $::ceilometer::params::alarm_evaluator_package_name,
|
|
||||||
service_title => 'ceilometer-alarm-evaluator',
|
|
||||||
primary => $primary_controller,
|
|
||||||
hasrestart => false,
|
|
||||||
}
|
|
||||||
|
|
||||||
cluster::corosync::cs_service { 'redis':
|
|
||||||
ocf_script => 'redis-server',
|
|
||||||
csr_parameters => {},
|
|
||||||
csr_metadata => undef,
|
|
||||||
csr_complex_type => 'clone',
|
|
||||||
csr_ms_metadata => { 'interleave' => true },
|
|
||||||
csr_mon_intr => '20',
|
|
||||||
csr_mon_timeout => '10',
|
|
||||||
csr_timeout => '60',
|
|
||||||
service_name => $::redis::params::service,
|
|
||||||
package_name => $::redis::params::package,
|
|
||||||
service_title => 'redis',
|
|
||||||
primary => $primary_controller,
|
|
||||||
hasrestart => false,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
File['redis_ocf_script'] ->
|
|
||||||
Cluster::Corosync::Cs_service['redis'] ->
|
|
||||||
Ceilometer_config <||> ->
|
|
||||||
Cluster::Corosync::Cs_service["$::ceilometer::params::agent_central_service_name"] ->
|
|
||||||
Cluster::Corosync::Cs_service["$::ceilometer::params::alarm_evaluator_service_name"]
|
|
||||||
|
|
||||||
if !$primary_controller {
|
|
||||||
exec {'waiting-for-agent-up-on-primary':
|
|
||||||
tries => 10,
|
|
||||||
try_sleep => 30,
|
|
||||||
command => "pcs resource | grep -A 1 p_${::ceilometer::params::agent_central_service_name} | grep Started > /dev/null 2>&1",
|
|
||||||
path => '/usr/sbin:/usr/bin:/sbin:/bin',
|
|
||||||
}
|
|
||||||
|
|
||||||
exec {'waiting-for-evaluator-up-on-primary':
|
|
||||||
tries => 10,
|
|
||||||
try_sleep => 30,
|
|
||||||
command => "pcs resource | grep -A 1 p_${::ceilometer::params::alarm_evaluator_service_name} | grep Started > /dev/null 2>&1",
|
|
||||||
path => '/usr/sbin:/usr/bin:/sbin:/bin',
|
|
||||||
}
|
|
||||||
|
|
||||||
exec {'waiting-for-redis-up-on-primary':
|
|
||||||
tries => 10,
|
|
||||||
try_sleep => 30,
|
|
||||||
command => "pcs resource | grep -A 1 p_${::redis::params::service} | grep Started > /dev/null 2>&1",
|
|
||||||
path => '/usr/sbin:/usr/bin:/sbin:/bin',
|
|
||||||
}
|
|
||||||
|
|
||||||
service {"p_${::ceilometer::params::agent_central_service_name}":
|
|
||||||
enable => true,
|
|
||||||
ensure => 'running',
|
|
||||||
hasstatus => true,
|
|
||||||
hasrestart => true,
|
|
||||||
provider => 'pacemaker',
|
|
||||||
}
|
|
||||||
|
|
||||||
service {"p_${::ceilometer::params::alarm_evaluator_service_name}":
|
|
||||||
enable => true,
|
|
||||||
ensure => 'running',
|
|
||||||
hasstatus => true,
|
|
||||||
hasrestart => true,
|
|
||||||
provider => 'pacemaker',
|
|
||||||
}
|
|
||||||
|
|
||||||
service {"p_${::redis::params::service}":
|
|
||||||
enable => true,
|
|
||||||
ensure => 'running',
|
|
||||||
hasstatus => true,
|
|
||||||
hasrestart => true,
|
|
||||||
provider => 'pacemaker',
|
|
||||||
}
|
|
||||||
|
|
||||||
Exec['waiting-for-redis-up-on-primary'] ->
|
|
||||||
Service["p_${::redis::params::service}"] ->
|
|
||||||
Cluster::Corosync::Cs_service['redis'] ->
|
|
||||||
Exec['waiting-for-agent-up-on-primary'] ->
|
|
||||||
Ceilometer_config <||> ->
|
|
||||||
Cluster::Corosync::Cs_service["$::ceilometer::params::agent_central_service_name"] ->
|
|
||||||
Exec['waiting-for-evaluator-up-on-primary'] ->
|
|
||||||
Cluster::Corosync::Cs_service["$::ceilometer::params::alarm_evaluator_service_name"]
|
|
||||||
}
|
|
||||||
|
|
||||||
service { 'ceilometer-agent-central':
|
service { 'ceilometer-agent-central':
|
||||||
ensure => 'stopped',
|
ensure => 'running',
|
||||||
name => $::ceilometer::params::agent_central_service_name,
|
name => $::ceilometer::params::agent_central_service_name,
|
||||||
enable => false,
|
enable => true,
|
||||||
}
|
}
|
||||||
|
|
||||||
service { 'ceilometer-alarm-evaluator':
|
service { 'ceilometer-alarm-evaluator':
|
||||||
ensure => 'stopped',
|
ensure => 'running',
|
||||||
name => $::ceilometer::params::alarm_evaluator_service_name,
|
name => $::ceilometer::params::alarm_evaluator_service_name,
|
||||||
enable => false,
|
enable => true,
|
||||||
}
|
}
|
||||||
|
|
||||||
service { 'ceilometer-agent-notification':
|
service { 'ceilometer-agent-notification':
|
||||||
|
@ -275,6 +156,37 @@ class redis::main (
|
||||||
hasrestart => true,
|
hasrestart => true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pacemaker_wrappers::service { $::ceilometer::params::agent_central_service_name :
|
||||||
|
complex_type => 'clone',
|
||||||
|
ms_metadata => { 'interleave' => true },
|
||||||
|
primitive_type => 'ceilometer-agent-central',
|
||||||
|
metadata => $metadata,
|
||||||
|
parameters => { 'user' => 'ceilometer' },
|
||||||
|
operations => $operations,
|
||||||
|
}
|
||||||
|
|
||||||
|
pacemaker_wrappers::service { $::ceilometer::params::alarm_evaluator_service_name :
|
||||||
|
complex_type => 'clone',
|
||||||
|
ms_metadata => { 'interleave' => true },
|
||||||
|
primitive_type => 'ceilometer-alarm-evaluator',
|
||||||
|
metadata => $metadata,
|
||||||
|
parameters => { 'user' => 'ceilometer' },
|
||||||
|
operations => $operations,
|
||||||
|
}
|
||||||
|
|
||||||
|
pacemaker_wrappers::service { 'redis-server' :
|
||||||
|
ocf_script_file => 'redis/ocf/redis-server',
|
||||||
|
complex_type => 'clone',
|
||||||
|
ms_metadata => { 'interleave' => true },
|
||||||
|
primitive_type => 'redis-server',
|
||||||
|
operations => $operations,
|
||||||
|
}
|
||||||
|
|
||||||
|
Pacemaker_wrappers::Service['redis-server'] ->
|
||||||
|
Ceilometer_config <||> ->
|
||||||
|
Pacemaker_wrappers::Service["$::ceilometer::params::agent_central_service_name"] ->
|
||||||
|
Pacemaker_wrappers::Service["$::ceilometer::params::alarm_evaluator_service_name"]
|
||||||
|
|
||||||
Ceilometer_config <||> ~> Service['ceilometer-agent-notification']
|
Ceilometer_config <||> ~> Service['ceilometer-agent-notification']
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue