sensu-plugins-twilio 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +31 -1
- data/README.md +20 -3
- data/bin/handler-twiliosms.rb +78 -19
- data/lib/sensu-plugins-twilio/version.rb +1 -1
- metadata +44 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a18c7edf5b1fd69af670e932d8e452c837dab00d78ea3857bc04fa59af0f326b
|
4
|
+
data.tar.gz: '0911b3c675af9ba10293b70f6fb8cc5e15ae0c2096461644e84ef7610f488585'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e98d7c3891530b4af6d7aa3e680a82f28e6e189bbc5f9376d1c31c2a6dd5bf5bf6aa47db7da3b93ab860dc17fd51bde8416f0875681f02203b4486415998631
|
7
|
+
data.tar.gz: 7a9c1d27fc43bdf45e3809e11f5560ef57f57b1be0de1ee9d0fb2d49f2edf61e90b59a3a98948544b5d49084d5cb013c62ae74782d88b585dc34506bfd7a5225
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,35 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [2.0.0] - 2018-12-28
|
9
|
+
### Added
|
10
|
+
- Bump sensu-plugin runtime dep to 3.0 with Sensu Go to Sensu Core 1.x migration option (@jspaleta)
|
11
|
+
- Ruby 2.4.1 testing
|
12
|
+
- Ruby 2.5.1 testing (@jspaleta)
|
13
|
+
- Added --verbose cmdline switch to aid in local testing
|
14
|
+
- Added --disable_send cmdline switch to aid in local testing
|
15
|
+
|
16
|
+
### Breaking Changes
|
17
|
+
- Dropped 2.0 ruby testing (@jspaleta)
|
18
|
+
- Dropped 2.1 ruby testing (@jspaleta)
|
19
|
+
- Dropped 2.2 ruby testing (@jspaleta)
|
20
|
+
- Dropped rest-client runtime dep, no longer needed (@jspaleta)
|
21
|
+
- Set required_ruby_version in gemspec to >= 2.3.0 (@jspaleta)
|
22
|
+
|
23
|
+
### Changed
|
24
|
+
- Bump twilio runtime dep to 5.18.0 (@jspaleta)
|
25
|
+
- Bump codeclimate development dep to 1.0 (@jspaleta)
|
26
|
+
- Bump rake development dep to 12.3 (@jspaleta)
|
27
|
+
- Bump rubocop development dep to 0.61.1 (@jspaleta)
|
28
|
+
- Bump yard development dep to 0.9.11 (@jspaleta)
|
29
|
+
- Added explict rdoc development dep needed for ruby 2.5.1 (@jspaleta)
|
30
|
+
- Updated .rubocop.yml to disable unneeded warning messages (@jspaleta)
|
31
|
+
- Updated Rakefile and introduce quick task (@jspaleta)
|
32
|
+
- Updated .travis.yml to use quick task (@jspaleta)
|
33
|
+
- Clean up robucop warnings (@jspaleta)
|
34
|
+
- Updated README.md with clearer explanation concerning config
|
35
|
+
|
36
|
+
|
8
37
|
## [1.0.0] - 2016-05-24
|
9
38
|
### Added
|
10
39
|
- Ruby 2.3.0 support
|
@@ -38,7 +67,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
38
67
|
### Added
|
39
68
|
- initial release
|
40
69
|
|
41
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/
|
70
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/2.0.0...HEAD
|
71
|
+
[2.0.0]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/1.0.0...2.0.0
|
42
72
|
[1.0.0]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/0.0.4...1.0.0
|
43
73
|
[0.0.4]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/0.0.3...0.0.4
|
44
74
|
[0.0.3]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/0.0.2...0.0.3
|
data/README.md
CHANGED
@@ -22,9 +22,9 @@
|
|
22
22
|
"sid":"AC0ds98gd098gf09d8fg",
|
23
23
|
"recipients":{
|
24
24
|
"+11111111111": {
|
25
|
-
"sensu_roles":[ "web-server" ],
|
26
|
-
"sensu_checks":[],
|
27
|
-
"sensu_level": 1
|
25
|
+
"sensu_roles":[ "web-server" ],
|
26
|
+
"sensu_checks":[],
|
27
|
+
"sensu_level": 1
|
28
28
|
},
|
29
29
|
"+11111222222": {
|
30
30
|
"sensu_roles":[],
|
@@ -35,6 +35,23 @@
|
|
35
35
|
}
|
36
36
|
}
|
37
37
|
```
|
38
|
+
`token`, `sid`, and `number` from twilio account configuration.
|
39
|
+
|
40
|
+
`sensu_checks` -> matching checks
|
41
|
+
|
42
|
+
`sensu_roles` -> matching subscribers or special values:
|
43
|
+
|
44
|
+
* `all` matches all events
|
45
|
+
* `keepalive` matches keepalive events
|
46
|
+
|
47
|
+
`sensu_level` -> minimum matching check return status value
|
48
|
+
|
49
|
+
* `0` -> activate for all check statuses: ok+warning+critical+unknown
|
50
|
+
* `1` -> activate for warning+critical+unknown
|
51
|
+
* `2` -> activate for critical+unknown
|
52
|
+
* `3` -> activate for unknown
|
53
|
+
|
54
|
+
|
38
55
|
## Installation
|
39
56
|
|
40
57
|
[Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
|
data/bin/handler-twiliosms.rb
CHANGED
@@ -15,14 +15,62 @@ require 'rest-client'
|
|
15
15
|
require 'json'
|
16
16
|
|
17
17
|
class TwilioSMS < Sensu::Handler
|
18
|
+
option :verbose,
|
19
|
+
description: 'Verbose output',
|
20
|
+
short: '-v',
|
21
|
+
long: '--verbose',
|
22
|
+
boolean: true,
|
23
|
+
default: false
|
24
|
+
option :disable_send,
|
25
|
+
description: 'Disable send',
|
26
|
+
long: '--disable_send',
|
27
|
+
boolean: true,
|
28
|
+
default: false
|
29
|
+
|
18
30
|
def short_name
|
19
|
-
@event['client']['name'] + '/' + @event['check']['name']
|
31
|
+
(@event['client']['name'] || 'unknown') + '/' + (@event['check']['name'] || 'unknown')
|
32
|
+
end
|
33
|
+
|
34
|
+
def output
|
35
|
+
@event['check']['output'] || 'no check output'
|
36
|
+
end
|
37
|
+
|
38
|
+
def address
|
39
|
+
@event['client']['address'] || 'unknown address'
|
40
|
+
end
|
41
|
+
|
42
|
+
def check_name
|
43
|
+
@event['check']['name'] if @event.include? 'check'
|
44
|
+
end
|
45
|
+
|
46
|
+
def check_status
|
47
|
+
check_status = @event['check']['status'] if @event.include? 'check'
|
48
|
+
check_status || 3
|
20
49
|
end
|
21
50
|
|
22
51
|
def action_to_string
|
23
52
|
@event['action'].eql?('resolve') ? 'RESOLVED' : 'ALERT'
|
24
53
|
end
|
25
54
|
|
55
|
+
def event_match?(candidate)
|
56
|
+
matching = false
|
57
|
+
sensu_role_all = candidate['sensu_roles'].include?('all')
|
58
|
+
puts " sensu_roles includes all: #{sensu_role_all}" if config[:verbose]
|
59
|
+
matching ||= sensu_role_all
|
60
|
+
keepalive_check = @event['check']['name'].eql?('keepalive')
|
61
|
+
sensu_role_keepalive = candidate['sensu_roles'].include?('keepalive')
|
62
|
+
puts " matching keepalive: #{(sensu_role_keepalive && keepalive_check)}" if config[:verbose]
|
63
|
+
matching ||= (sensu_role_keepalive && keepalive_check)
|
64
|
+
matching_subscribers = (@event['check']['subscribers'] &&
|
65
|
+
!(candidate['sensu_roles'] & @event['check']['subscribers']).empty?)
|
66
|
+
matching_subscribers ||= false
|
67
|
+
puts " matching_subscribers: #{matching_subscribers}" if config[:verbose]
|
68
|
+
matching ||= matching_subscribers
|
69
|
+
matching_checkname = candidate['sensu_checks'].include?(check_name)
|
70
|
+
puts " matching_checkname: #{matching_checkname}" if config[:verbose]
|
71
|
+
matching || matching_checkname
|
72
|
+
end
|
73
|
+
|
26
74
|
def handle
|
27
75
|
account_sid = settings['twiliosms']['sid']
|
28
76
|
auth_token = settings['twiliosms']['token']
|
@@ -36,36 +84,47 @@ class TwilioSMS < Sensu::Handler
|
|
36
84
|
raise 'Please define a valid Twilio authentication set to use this handler' unless account_sid && auth_token && from_number
|
37
85
|
raise 'Please define a valid set of SMS recipients to use this handler' if candidates.nil? || candidates.empty?
|
38
86
|
|
87
|
+
puts "Check: #{@event['check']}" if config[:verbose]
|
88
|
+
puts "Check Status: #{check_status}" if config[:verbose]
|
39
89
|
recipients = []
|
40
90
|
candidates.each do |mobile, candidate|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
91
|
+
puts "Mobile: #{mobile} Config:#{candidate}" if config[:verbose]
|
92
|
+
|
93
|
+
##
|
94
|
+
# Match event subsciption and/or check name using event_match? method
|
95
|
+
# and require requested level <= check_status:
|
96
|
+
# sensu_level == 0 Matches all status
|
97
|
+
# sensu_level == 1 Matches warnings+critical+unknown
|
98
|
+
# sensu_level == 2 Matches critical+unknown
|
99
|
+
# sensu_level == 3 Matches unknown
|
100
|
+
next unless event_match?(candidate) && (candidate['sensu_level'] <= check_status)
|
101
|
+
|
102
|
+
puts "Send text to: #{mobile}" if config[:verbose]
|
47
103
|
recipients << mobile
|
48
104
|
end
|
49
|
-
|
50
105
|
message = if short
|
51
|
-
"Sensu #{action_to_string}: #{
|
106
|
+
"Sensu #{action_to_string}: #{output}"
|
52
107
|
else
|
53
|
-
"Sensu #{action_to_string}: #{short_name} (#{
|
108
|
+
"Sensu #{action_to_string}: Status: #{check_status} :: #{short_name} (#{address}) #{output}"
|
54
109
|
end
|
55
110
|
|
56
111
|
message[157..message.length] = '...' if message.length > 160
|
57
112
|
|
58
113
|
twilio = Twilio::REST::Client.new(account_sid, auth_token)
|
59
114
|
recipients.each do |recipient|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
115
|
+
if config[:disable_send]
|
116
|
+
puts "From: #{from_number} To: #{recipient} Body: #{message}"
|
117
|
+
else
|
118
|
+
begin
|
119
|
+
twilio.api.account.messages.create(
|
120
|
+
from: from_number,
|
121
|
+
to: recipient,
|
122
|
+
body: message
|
123
|
+
)
|
124
|
+
puts "Notified #{recipient} for #{action_to_string}"
|
125
|
+
rescue StandardError => e
|
126
|
+
puts "Failure detected while using Twilio to notify on event: #{e.message}"
|
127
|
+
end
|
69
128
|
end
|
70
129
|
end
|
71
130
|
end
|
metadata
CHANGED
@@ -1,71 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-twilio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu-Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.2'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.2'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: twilio-ruby
|
14
|
+
name: nori
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
17
|
- - '='
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
19
|
+
version: 2.6.0
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
24
|
- - '='
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
26
|
+
version: 2.6.0
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
28
|
+
name: sensu-plugin
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- -
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
33
|
+
version: '3.0'
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
40
|
+
version: '3.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
42
|
+
name: twilio-ruby
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - '='
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
47
|
+
version: 5.18.0
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - '='
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
54
|
+
version: 5.18.0
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: bundler
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,28 +72,28 @@ dependencies:
|
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0
|
75
|
+
version: '1.0'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0
|
82
|
+
version: '1.0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: github-markup
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
89
|
+
version: '3.0'
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
96
|
+
version: '3.0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: pry
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,42 +114,42 @@ dependencies:
|
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
117
|
+
version: '12.3'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
124
|
+
version: '12.3'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
126
|
+
name: rdoc
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
129
|
- - "~>"
|
144
130
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
131
|
+
version: '6.0'
|
146
132
|
type: :development
|
147
133
|
prerelease: false
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
136
|
- - "~>"
|
151
137
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
138
|
+
version: '6.0'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
140
|
+
name: redcarpet
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
143
|
- - "~>"
|
158
144
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
145
|
+
version: '3.2'
|
160
146
|
type: :development
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
150
|
- - "~>"
|
165
151
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
152
|
+
version: '3.2'
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
154
|
name: rspec
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,25 +164,39 @@ dependencies:
|
|
178
164
|
- - "~>"
|
179
165
|
- !ruby/object:Gem::Version
|
180
166
|
version: '3.4'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rubocop
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.61.1
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.61.1
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: yard
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
187
|
+
version: 0.9.11
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
194
|
+
version: 0.9.11
|
195
195
|
description: Sensu plugins for twilio
|
196
196
|
email: "<sensu-users@googlegroups.com>"
|
197
197
|
executables:
|
198
|
-
- check-num-recordings.rb
|
199
198
|
- handler-twiliosms.rb
|
199
|
+
- check-num-recordings.rb
|
200
200
|
extensions: []
|
201
201
|
extra_rdoc_files: []
|
202
202
|
files:
|
@@ -225,17 +225,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
225
225
|
requirements:
|
226
226
|
- - ">="
|
227
227
|
- !ruby/object:Gem::Version
|
228
|
-
version: 2.
|
228
|
+
version: 2.3.0
|
229
229
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
230
|
requirements:
|
231
231
|
- - ">="
|
232
232
|
- !ruby/object:Gem::Version
|
233
233
|
version: '0'
|
234
234
|
requirements: []
|
235
|
-
|
236
|
-
rubygems_version: 2.5.1
|
235
|
+
rubygems_version: 3.0.1
|
237
236
|
signing_key:
|
238
237
|
specification_version: 4
|
239
238
|
summary: Sensu plugins for twilio
|
240
239
|
test_files: []
|
241
|
-
has_rdoc:
|