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 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: