From 39bd25c060ba5a20f5318a2b78662818050e3452 Mon Sep 17 00:00:00 2001 From: Mykyta Karpin Date: Tue, 8 Mar 2016 17:38:18 +0200 Subject: [PATCH] fix name for master of redis cluster value of master name should be the same as in ceilometer redis backend url Co-Authored-By: alexey-mr Change-Id: Ic9f6399950597db399718b4e607c6586db5647e3 Closes-Bug: #1553229 --- deployment_scripts/puppet/manifests/controller.pp | 5 +++++ .../puppet/parser/functions/redis_backend_url.rb | 5 +++-- .../lib/puppet/parser/functions/sentinel_confs.rb | 11 +++++++---- .../puppet/modules/redis/manifests/main.pp | 15 +++++++++++---- .../puppet/modules/redis/manifests/sentinel.pp | 1 + 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/deployment_scripts/puppet/manifests/controller.pp b/deployment_scripts/puppet/manifests/controller.pp index 4b4e2f7..ef95281 100644 --- a/deployment_scripts/puppet/manifests/controller.pp +++ b/deployment_scripts/puppet/manifests/controller.pp @@ -26,9 +26,14 @@ $redis_primary_nodes = get_nodes_hash_by_roles(hiera('network_metadata'), $redis_primary_address_map = get_node_to_ipaddr_map_by_network_role($redis_primary_nodes, 'ceilometer/api') $primary_redis_node = values($redis_primary_address_map) +# TODO: get value from hiera +$master_name = 'ceilometer_redis_master' + + class {'::redis::main': primary_redis_node => $primary_redis_node[0], redis_hosts => $redis_hosts, redis_bind_address => $redis_bind_address, primary_controller => hiera('primary_controller'), + master_name => $master_name, } diff --git a/deployment_scripts/puppet/modules/redis/lib/puppet/parser/functions/redis_backend_url.rb b/deployment_scripts/puppet/modules/redis/lib/puppet/parser/functions/redis_backend_url.rb index 550fd0a..b1e4dea 100644 --- a/deployment_scripts/puppet/modules/redis/lib/puppet/parser/functions/redis_backend_url.rb +++ b/deployment_scripts/puppet/modules/redis/lib/puppet/parser/functions/redis_backend_url.rb @@ -1,13 +1,14 @@ module Puppet::Parser::Functions newfunction(:redis_backend_url, :type => :rvalue) do |args| - if args.length != 3 + if args.length != 4 raise "Wrong number of arguments" end nodes = args[0] port = args[1] timeout = args[2] + master_name = args[3] - backend_url="redis://" + nodes[0] + ":" + port + "?sentinel=" + nodes[0] + backend_url="redis://" + nodes[0] + ":" + port + "?sentinel=" + master_name nodes.each do |value| if value != nodes[0] diff --git a/deployment_scripts/puppet/modules/redis/lib/puppet/parser/functions/sentinel_confs.rb b/deployment_scripts/puppet/modules/redis/lib/puppet/parser/functions/sentinel_confs.rb index d0b151a..e6716de 100644 --- a/deployment_scripts/puppet/modules/redis/lib/puppet/parser/functions/sentinel_confs.rb +++ b/deployment_scripts/puppet/modules/redis/lib/puppet/parser/functions/sentinel_confs.rb @@ -12,10 +12,13 @@ module Puppet::Parser::Functions hash = {} nodes.each do |value| - hash[value] = { 'monitor' => value + ' ' + port + ' ' + quorum, - 'down-after-milliseconds' => down_after_milliseconds, - 'failover-timeout' => failover_timeout, - 'parallel-syncs' => parallel_syncs } + name = value['name'] + addr = value['addr'] + hash[name] = { + 'monitor' => addr + ' ' + port + ' ' + quorum, + 'down-after-milliseconds' => down_after_milliseconds, + 'failover-timeout' => failover_timeout, + 'parallel-syncs' => parallel_syncs } end hash diff --git a/deployment_scripts/puppet/modules/redis/manifests/main.pp b/deployment_scripts/puppet/modules/redis/manifests/main.pp index 11f3106..f481815 100644 --- a/deployment_scripts/puppet/modules/redis/manifests/main.pp +++ b/deployment_scripts/puppet/modules/redis/manifests/main.pp @@ -54,6 +54,7 @@ class redis::main ( $redis_bind_address = '0.0.0.0', $redis_port = '6379', $redis_sentinel_port = '26379', + $master_name = 'mymaster', ) { include ceilometer::params @@ -107,9 +108,14 @@ class redis::main ( } # Use custom function to generate sentinel configuration - $sentinel_confs = sentinel_confs($redis_hosts, $redis_port, $quorum, - $parallel_syncs, $down_after_milliseconds, - $failover_timeout) + $masters_to_monitor = [ + { name => $master_name, + addr => $primary_redis_node + }, + ] + $sentinel_confs = sentinel_confs($masters_to_monitor, $redis_port, $quorum, + $parallel_syncs, $down_after_milliseconds, + $failover_timeout) package {'python-redis': ensure => 'present', @@ -127,10 +133,11 @@ class redis::main ( conf_port => $redis_sentinel_port, sentinel_confs => $sentinel_confs, manage_upstart_scripts => $manage_upstart_scripts, + master_name => $master_name } ceilometer_config { - 'coordination/backend_url' : value => redis_backend_url($redis_hosts, $redis_sentinel_port, $timeout); + 'coordination/backend_url' : value => redis_backend_url($redis_hosts, $redis_sentinel_port, $timeout, $master_name); 'coordination/heartbeat' : value => '1.0'; 'coordination/check_watchers' : value => $timeout; 'notification/workload_partitioning': value => true diff --git a/deployment_scripts/puppet/modules/redis/manifests/sentinel.pp b/deployment_scripts/puppet/modules/redis/manifests/sentinel.pp index ded9a87..6a7a60e 100644 --- a/deployment_scripts/puppet/modules/redis/manifests/sentinel.pp +++ b/deployment_scripts/puppet/modules/redis/manifests/sentinel.pp @@ -47,6 +47,7 @@ class redis::sentinel ( $service_restart = true, $manage_upstart_scripts = true, $package_name = undef, + $master_name = 'mymaster' ) { include redis::sentinel_params