bender-bot 0.2.3 → 0.2.4
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 +4 -4
- data/VERSION +1 -1
- data/lib/bender/bot.rb +61 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 702cbc0ab493486d62b7c9db41dfc1191a5c9868
|
|
4
|
+
data.tar.gz: 3e6535a990ed42e03aa8d6b93c4a24bd83643791
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 10f0310b8a034da123d18f08da7b22698b57acc31520c66a2e9d9306d64c028f161e3f0a77b123fca96b50ff56ece5e9434a924f0481d2bc34859d971b80225e
|
|
7
|
+
data.tar.gz: c8b49ba2fa7bb1f1b715fbbb04dea79ed361657a2483d7fc4f8a8fbe2a61694a28c6992ad0cffd7edc19e0fc81a6e03b09b1abd6ed8dd08300d91826a2cd63b2
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.2.
|
|
1
|
+
0.2.4
|
data/lib/bender/bot.rb
CHANGED
|
@@ -32,6 +32,10 @@ class BenderBot
|
|
|
32
32
|
|
|
33
33
|
JARO = FuzzyStringMatch::JaroWinkler.create :native
|
|
34
34
|
|
|
35
|
+
RESOLVED_TRANSITIONS = %w[ 51 ]
|
|
36
|
+
|
|
37
|
+
RESOLVED_STATE = /resolve/i
|
|
38
|
+
|
|
35
39
|
CLOSED_TRANSITIONS = %w[ 61 71 ]
|
|
36
40
|
|
|
37
41
|
CLOSED_STATE = /close/i
|
|
@@ -91,9 +95,13 @@ class BenderBot
|
|
|
91
95
|
fmt: 'INCIDENT_NUMBER',
|
|
92
96
|
desc: 'Display incident details'
|
|
93
97
|
},
|
|
98
|
+
resolve: {
|
|
99
|
+
fmt: 'INCIDENT_NUMBER',
|
|
100
|
+
desc: 'Resolve an incident',
|
|
101
|
+
},
|
|
94
102
|
close: {
|
|
95
103
|
fmt: 'INCIDENT_NUMBER',
|
|
96
|
-
desc: '
|
|
104
|
+
desc: 'Close an incident',
|
|
97
105
|
},
|
|
98
106
|
open: {
|
|
99
107
|
fmt: "SEVERITY=#{SEVERITIES.keys.sort_by(&:to_i).join(',')} SUMMARY_TEXT",
|
|
@@ -258,6 +266,15 @@ class BenderBot
|
|
|
258
266
|
]
|
|
259
267
|
end
|
|
260
268
|
|
|
269
|
+
# /inc resolve NUM - Resolve an incident
|
|
270
|
+
when /^\s*\/inc\s+resolve\s+(\d+)\s*$/
|
|
271
|
+
incident = select_incident $1
|
|
272
|
+
if incident
|
|
273
|
+
reply_html *resolve_incident(incident)
|
|
274
|
+
else
|
|
275
|
+
reply_html 'Sorry, no such incident!', :red
|
|
276
|
+
end
|
|
277
|
+
|
|
261
278
|
# /inc close NUM - Close an incident
|
|
262
279
|
when /^\s*\/inc\s+close\s+(\d+)\s*$/
|
|
263
280
|
incident = select_incident $1
|
|
@@ -376,6 +393,49 @@ private
|
|
|
376
393
|
end
|
|
377
394
|
|
|
378
395
|
|
|
396
|
+
|
|
397
|
+
def resolve_incident incident
|
|
398
|
+
status = normalize_value incident['fields']['status']
|
|
399
|
+
if status =~ RESOLVED_STATE
|
|
400
|
+
return [
|
|
401
|
+
"#{incident_link(incident)} is already resolved!",
|
|
402
|
+
:green
|
|
403
|
+
]
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
req_path = '/rest/api/2/issue/%s/transitions?expand=transitions.fields' % [
|
|
407
|
+
incident['key']
|
|
408
|
+
]
|
|
409
|
+
uri = URI(options.jira_site + req_path)
|
|
410
|
+
http = Net::HTTP.new uri.hostname, uri.port
|
|
411
|
+
|
|
412
|
+
req = Net::HTTP::Post.new uri
|
|
413
|
+
req.basic_auth options.jira_user, options.jira_pass
|
|
414
|
+
req['Content-Type'] = 'application/json'
|
|
415
|
+
req['Accept'] = 'application/json'
|
|
416
|
+
|
|
417
|
+
RESOLVED_TRANSITIONS.each do |tid|
|
|
418
|
+
req.body = {
|
|
419
|
+
transition: { id: tid }
|
|
420
|
+
}.to_json
|
|
421
|
+
http.request req
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
incident = select_incident incident['key'].split('-',2).last
|
|
425
|
+
status = normalize_value incident['fields']['status']
|
|
426
|
+
|
|
427
|
+
if status =~ RESOLVED_STATE
|
|
428
|
+
[ 'Resolved ' + incident_link(incident), :green ]
|
|
429
|
+
else
|
|
430
|
+
[
|
|
431
|
+
"Failed to resolve #{incident_link(incident)} automatically, you might try yourself",
|
|
432
|
+
:red
|
|
433
|
+
]
|
|
434
|
+
end
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
379
439
|
def close_incident incident
|
|
380
440
|
status = normalize_value incident['fields']['status']
|
|
381
441
|
if status =~ CLOSED_STATE
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bender-bot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sean Clemmer
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-08-
|
|
11
|
+
date: 2015-08-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
@@ -206,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
206
206
|
version: '0'
|
|
207
207
|
requirements: []
|
|
208
208
|
rubyforge_project:
|
|
209
|
-
rubygems_version: 2.4.5
|
|
209
|
+
rubygems_version: 2.4.5.1
|
|
210
210
|
signing_key:
|
|
211
211
|
specification_version: 4
|
|
212
212
|
summary: Yet another HipChat bot
|