sensu-plugins-twilio 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ee7231e45dfaa4546b323f3cb474f04dbb8013b5
4
- data.tar.gz: b1c1deedf4547bf0a86859eec7e5aa320fc142d4
2
+ SHA256:
3
+ metadata.gz: a18c7edf5b1fd69af670e932d8e452c837dab00d78ea3857bc04fa59af0f326b
4
+ data.tar.gz: '0911b3c675af9ba10293b70f6fb8cc5e15ae0c2096461644e84ef7610f488585'
5
5
  SHA512:
6
- metadata.gz: 00e3ccc70e3aab73ec2fa6ddfebd48f4f76ff396f2091dad6022a95b7d25a1b640df833c8ff5ef868fa766878aacdc6eafd739f48e4582c82597118e29e3595d
7
- data.tar.gz: a28f3f3390ec4a574de4bd0ba6fd6721c3fe877d69aac413c880eb69ff4c7f071fd3eda29b5796fed3ae062bc9b18bb5fc349f449664d4c50234d0caf091c144
6
+ metadata.gz: 9e98d7c3891530b4af6d7aa3e680a82f28e6e189bbc5f9376d1c31c2a6dd5bf5bf6aa47db7da3b93ab860dc17fd51bde8416f0875681f02203b4486415998631
7
+ data.tar.gz: 7a9c1d27fc43bdf45e3809e11f5560ef57f57b1be0de1ee9d0fb2d49f2edf61e90b59a3a98948544b5d49084d5cb013c62ae74782d88b585dc34506bfd7a5225
@@ -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/1.0.0...HEAD
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" ], // subscribers
26
- "sensu_checks":[], // checks
27
- "sensu_level": 1 // 1 for warnging, 2 for critical alerts
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)
@@ -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
- next unless (candidate['sensu_roles'].include?('all') ||
42
- (@event['check']['name'].eql?('keepalive') && candidate['sensu_roles'].include?('keepalive')) ||
43
- (@event['check']['subscribers'] &&
44
- (candidate['sensu_roles'] & @event['check']['subscribers']).size > 0) || # rubocop:disable Style/ZeroLengthPredicate
45
- candidate['sensu_checks'].include?(@event['check']['name'])) &&
46
- (candidate['sensu_level'] >= @event['check']['status'])
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}: #{@event['check']['output']}"
106
+ "Sensu #{action_to_string}: #{output}"
52
107
  else
53
- "Sensu #{action_to_string}: #{short_name} (#{@event['client']['address']}) #{@event['check']['output']}"
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
- begin
61
- twilio.account.messages.create(
62
- from: from_number,
63
- to: recipient,
64
- body: message
65
- )
66
- puts "Notified #{recipient} for #{action_to_string}"
67
- rescue => e
68
- puts "Failure detected while using Twilio to notify on event: #{e.message}"
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
@@ -1,6 +1,6 @@
1
1
  module SensuPluginsTwilio
2
2
  module Version
3
- MAJOR = 1
3
+ MAJOR = 2
4
4
  MINOR = 0
5
5
  PATCH = 0
6
6
 
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: 1.0.0
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: 2016-05-25 00:00:00.000000000 Z
11
+ date: 2018-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sensu-plugin
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: 4.11.1
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: 4.11.1
26
+ version: 2.6.0
41
27
  - !ruby/object:Gem::Dependency
42
- name: rest-client
28
+ name: sensu-plugin
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - '='
31
+ - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: 1.8.0
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: 1.8.0
40
+ version: '3.0'
55
41
  - !ruby/object:Gem::Dependency
56
- name: nori
42
+ name: twilio-ruby
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - '='
60
46
  - !ruby/object:Gem::Version
61
- version: 2.6.0
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: 2.6.0
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.4'
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.4'
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: '1.3'
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: '1.3'
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: '10.5'
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: '10.5'
124
+ version: '12.3'
139
125
  - !ruby/object:Gem::Dependency
140
- name: redcarpet
126
+ name: rdoc
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
129
  - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: '3.2'
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: '3.2'
138
+ version: '6.0'
153
139
  - !ruby/object:Gem::Dependency
154
- name: rubocop
140
+ name: redcarpet
155
141
  requirement: !ruby/object:Gem::Requirement
156
142
  requirements:
157
143
  - - "~>"
158
144
  - !ruby/object:Gem::Version
159
- version: 0.40.0
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: 0.40.0
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: '0.8'
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: '0.8'
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.0.0
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
- rubyforge_project:
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: