Skip to content

Commit a0185b7

Browse files
author
Jonathan Wright
committed
Add support for :reconnect_on_error.
Added properties for both Redis and RabbitMQ types to enable support for the new :reconnect_on_error option in Sensu 1.7.0.
1 parent 800e208 commit a0185b7

File tree

7 files changed

+113
-63
lines changed

7 files changed

+113
-63
lines changed

lib/puppet/provider/sensu_rabbitmq_config/json.rb

+9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def create
2828
self.user = resource[:user]
2929
self.password = resource[:password]
3030
self.vhost = resource[:vhost]
31+
self.reconnect_on_error = resource[:reconnect_on_error] unless resource[:reconnect_on_error].nil?
3132
end
3233

3334
def destroy
@@ -141,4 +142,12 @@ def vhost
141142
def vhost=(value)
142143
conf['rabbitmq']['vhost'] = value
143144
end
145+
146+
def reconnect_on_error
147+
conf['rabbitmq']['reconnect_on_error']
148+
end
149+
150+
def reconnect_on_error=(value)
151+
conf['rabbitmq']['reconnect_on_error'] = (value ? true : false)
152+
end
144153
end

lib/puppet/provider/sensu_redis_config/json.rb

+11-2
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ def flush
2020

2121
def create
2222
conf['redis'] = {}
23-
self.port = resource[:port]
24-
self.host = resource[:host]
23+
self.port = resource[:port]
24+
self.host = resource[:host]
2525
self.password = resource[:password] unless resource[:password].nil?
26+
self.reconnect_on_error = resource[:reconnect_on_error] unless resource[:reconnect_on_error].nil?
2627
end
2728

2829
def config_file
@@ -60,4 +61,12 @@ def password
6061
def password=(value)
6162
conf['redis']['password'] = value
6263
end
64+
65+
def reconnect_on_error
66+
conf['redis']['reconnect_on_error']
67+
end
68+
69+
def reconnect_on_error=(value)
70+
conf['redis']['reconnect_on_error'] = (value ? true : false)
71+
end
6372
end

lib/puppet/type/sensu_rabbitmq_config.rb

+7
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,13 @@ def initialize(*args)
7979
defaultto 'sensu'
8080
end
8181

82+
newproperty(:reconnect_on_error, :boolean => true) do
83+
desc "Attempt to reconnect to RabbitMQ on error"
84+
85+
newvalues(true, false)
86+
defaultto false
87+
end
88+
8289
autorequire(:package) do
8390
['sensu']
8491
end

lib/puppet/type/sensu_redis_config.rb

+7
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ def initialize(*args)
4747
desc "The password used to connect to Redis"
4848
end
4949

50+
newproperty(:reconnect_on_error, :boolean => true) do
51+
desc "Attempt to reconnect to RabbitMQ on error"
52+
53+
newvalues(true, false)
54+
defaultto false
55+
end
56+
5057
autorequire(:package) do
5158
['sensu']
5259
end

manifests/init.pp

+64-48
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
# rabbitmq_ssl_cert_chain are set, then this is enabled automatically. Set rabbitmq_ssl => true
100100
# without specifying a private key or cert chain to use SSL transport, but not cert auth.
101101
# Defaul: false
102+
# Valid values: true, false
102103
#
103104
# [*rabbitmq_ssl_private_key*]
104105
# String. Private key to be used by sensu to connect to rabbitmq
@@ -110,6 +111,12 @@
110111
# If the value starts with 'puppet://' the file will be copied and used. Absolute paths will just be used
111112
# Default: undef
112113
#
114+
# [*rabbitmq_reconnect_on_error*]
115+
# Boolean. In the event the connection or channel is closed by RabbitMQ, attempt to automatically
116+
# reconnect when possible. Default set to fault its not guaranteed to successfully reconnect.
117+
# Default: false
118+
# Valid values: true, false
119+
#
113120
# [*redis_host*]
114121
# String. Hostname of redis to be used by sensu
115122
# Default: localhost
@@ -122,9 +129,16 @@
122129
# String. Password to be used to connect to Redis
123130
# Default: undef
124131
#
132+
# [*reddis_reconnect_on_error*]
133+
# Boolean. In the event the connection or channel is closed by Reddis, attempt to automatically
134+
# reconnect when possible. Default set to fault its not guaranteed to successfully reconnect.
135+
# Default: false
136+
# Valid values: true, false
137+
#
125138
# [*api_bind*]
126139
# String. IP to bind api service
127140
# Default: 0.0.0.0
141+
#
128142
# [*api_host*]
129143
# String. Hostname of the sensu api service
130144
# Default: localhost
@@ -198,56 +212,58 @@
198212
# Valid values: debug, info, warn, error, fatal
199213
#
200214
class sensu (
201-
$version = 'latest',
202-
$sensu_plugin_name = 'sensu-plugin',
203-
$sensu_plugin_provider = undef,
204-
$sensu_plugin_version = 'absent',
205-
$install_repo = true,
206-
$repo = 'main',
207-
$repo_source = undef,
208-
$repo_key_id = '7580C77F',
209-
$repo_key_source = 'http://repos.sensuapp.org/apt/pubkey.gpg',
210-
$client = true,
211-
$server = false,
212-
$api = false,
213-
$manage_services = true,
214-
$manage_user = true,
215-
$manage_plugins_dir = true,
216-
$rabbitmq_port = 5672,
217-
$rabbitmq_host = 'localhost',
218-
$rabbitmq_user = 'sensu',
219-
$rabbitmq_password = '',
220-
$rabbitmq_vhost = 'sensu',
221-
$rabbitmq_ssl = false,
222-
$rabbitmq_ssl_private_key = undef,
223-
$rabbitmq_ssl_cert_chain = undef,
224-
$redis_host = 'localhost',
225-
$redis_port = 6379,
226-
$redis_password = undef,
227-
$api_bind = '0.0.0.0',
228-
$api_host = 'localhost',
229-
$api_port = 4567,
230-
$api_user = undef,
231-
$api_password = undef,
232-
$subscriptions = [],
233-
$client_bind = '127.0.0.1',
234-
$client_address = $::ipaddress,
235-
$client_name = $::fqdn,
236-
$client_custom = {},
237-
$client_keepalive = {},
238-
$safe_mode = false,
239-
$plugins = [],
240-
$plugins_dir = undef,
241-
$purge_config = false,
242-
$purge_plugins_dir = false,
243-
$use_embedded_ruby = false,
244-
$rubyopt = '',
245-
$gem_path = '',
246-
$log_level = 'info',
247-
$dashboard = false,
215+
$version = 'latest',
216+
$sensu_plugin_name = 'sensu-plugin',
217+
$sensu_plugin_provider = undef,
218+
$sensu_plugin_version = 'absent',
219+
$install_repo = true,
220+
$repo = 'main',
221+
$repo_source = undef,
222+
$repo_key_id = '7580C77F',
223+
$repo_key_source = 'http://repos.sensuapp.org/apt/pubkey.gpg',
224+
$client = true,
225+
$server = false,
226+
$api = false,
227+
$manage_services = true,
228+
$manage_user = true,
229+
$manage_plugins_dir = true,
230+
$rabbitmq_port = 5672,
231+
$rabbitmq_host = 'localhost',
232+
$rabbitmq_user = 'sensu',
233+
$rabbitmq_password = '',
234+
$rabbitmq_vhost = 'sensu',
235+
$rabbitmq_ssl = false,
236+
$rabbitmq_ssl_private_key = undef,
237+
$rabbitmq_ssl_cert_chain = undef,
238+
$rabbitmq_reconnect_on_error = false,
239+
$redis_host = 'localhost',
240+
$redis_port = 6379,
241+
$redis_password = undef,
242+
$redis_reconnect_on_error = false,
243+
$api_bind = '0.0.0.0',
244+
$api_host = 'localhost',
245+
$api_port = 4567,
246+
$api_user = undef,
247+
$api_password = undef,
248+
$subscriptions = [],
249+
$client_bind = '127.0.0.1',
250+
$client_address = $::ipaddress,
251+
$client_name = $::fqdn,
252+
$client_custom = {},
253+
$client_keepalive = {},
254+
$safe_mode = false,
255+
$plugins = [],
256+
$plugins_dir = undef,
257+
$purge_config = false,
258+
$purge_plugins_dir = false,
259+
$use_embedded_ruby = false,
260+
$rubyopt = '',
261+
$gem_path = '',
262+
$log_level = 'info',
263+
$dashboard = false,
248264
){
249265

250-
validate_bool($client, $server, $api, $install_repo, $purge_config, $safe_mode, $manage_services)
266+
validate_bool($client, $server, $api, $install_repo, $purge_config, $safe_mode, $manage_services, $rabbitmq_reconnect_on_error, $redis_reconnect_on_error)
251267

252268
validate_re($repo, ['^main$', '^unstable$'], "Repo must be 'main' or 'unstable'. Found: ${repo}")
253269
validate_re($version, ['^absent$', '^installed$', '^latest$', '^present$', '^[\d\.\-]+$'], "Invalid package version: ${version}")

manifests/rabbitmq/config.pp

+10-9
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,16 @@
7070
}
7171

7272
sensu_rabbitmq_config { $::fqdn:
73-
ensure => $ensure,
74-
port => $sensu::rabbitmq_port,
75-
host => $sensu::rabbitmq_host,
76-
user => $sensu::rabbitmq_user,
77-
password => $sensu::rabbitmq_password,
78-
vhost => $sensu::rabbitmq_vhost,
79-
ssl_transport => $enable_ssl,
80-
ssl_cert_chain => $ssl_cert_chain,
81-
ssl_private_key => $ssl_private_key,
73+
ensure => $ensure,
74+
port => $sensu::rabbitmq_port,
75+
host => $sensu::rabbitmq_host,
76+
user => $sensu::rabbitmq_user,
77+
password => $sensu::rabbitmq_password,
78+
vhost => $sensu::rabbitmq_vhost,
79+
ssl_transport => $enable_ssl,
80+
ssl_cert_chain => $ssl_cert_chain,
81+
ssl_private_key => $ssl_private_key,
82+
reconnect_on_error => $sensu::rabbitmq_reconnect_on_error,
8283
}
8384

8485
}

manifests/redis/config.pp

+5-4
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@
2222
}
2323

2424
sensu_redis_config { $::fqdn:
25-
ensure => $ensure,
26-
host => $sensu::redis_host,
27-
port => $sensu::redis_port,
28-
password => $sensu::redis_password,
25+
ensure => $ensure,
26+
host => $sensu::redis_host,
27+
port => $sensu::redis_port,
28+
password => $sensu::redis_password,
29+
reconnect_on_error => $sensu::redis_reconnect_on_error,
2930
}
3031

3132
}

0 commit comments

Comments
 (0)