lita-pagerduty 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lita/handlers/pagerduty_utility.rb +27 -1
- data/lib/pagerduty_helper/utility.rb +14 -0
- data/lita-pagerduty.gemspec +2 -2
- data/locales/en.yml +7 -0
- data/spec/lita/handlers/pagerduty_utility_spec.rb +1 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c9ba4c8271e94b9c23d22f707845a00386f969e
|
4
|
+
data.tar.gz: ecd72110e2cf05de53a053d0fd37d966021a2cf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f33eaa15bb597dc5ec5ccfebd0e0f8bcb8d4df069651790ee873c5e6b9e0fbdf93917b2380dc7611f09c4967b08e69fc25b204dd256062d7d310e6460e9dae2
|
7
|
+
data.tar.gz: 76f1d1a750a73c00002f61255be2c5e3ac313cc11f5bda026e2cd838dc2a423aac6d2ba3c8f49a027624554d7b87733175f1fcf7de0ae57c0b81e1c883df2609
|
@@ -51,6 +51,13 @@ module Lita
|
|
51
51
|
}
|
52
52
|
)
|
53
53
|
|
54
|
+
route(
|
55
|
+
/^pager\s+me\s+(.+?)\s+(\d+)m?$/,
|
56
|
+
:pager_me,
|
57
|
+
command: true,
|
58
|
+
help: { t('help.pager_me.syntax') => t('help.pager_me.desc') }
|
59
|
+
)
|
60
|
+
|
54
61
|
def on_call_list(response)
|
55
62
|
schedules = pd_client.get_schedules.schedules
|
56
63
|
if schedules.any?
|
@@ -78,6 +85,25 @@ module Lita
|
|
78
85
|
end
|
79
86
|
# rubocop:enable Metrics/AbcSize
|
80
87
|
|
88
|
+
# rubocop:disable Metrics/AbcSize
|
89
|
+
def pager_me(response)
|
90
|
+
schedule_name = response.match_data[1].strip
|
91
|
+
schedule = pd_client.get_schedules.schedules.find { |s| s.name.casecmp(schedule_name) == 0 }
|
92
|
+
return response.reply(t('on_call_lookup.no_matching_schedule', schedule_name: schedule_name)) unless schedule
|
93
|
+
|
94
|
+
email = fetch_user(response.user)
|
95
|
+
return response.reply(t('identify.missing')) unless email
|
96
|
+
|
97
|
+
users = pd_client.get_users(query: email)
|
98
|
+
return response.reply(t('identify.unrecognised')) unless users.total == 1
|
99
|
+
|
100
|
+
override = take_pager(schedule.id, users.users.first.id, response.match_data[2].strip.to_i)
|
101
|
+
return response.reply(t('pager_me.failure')) unless override
|
102
|
+
|
103
|
+
response.reply(t('pager_me.success', name: override.user.name, email: override.user.email, finish: override.end))
|
104
|
+
end
|
105
|
+
# rubocop:enable Metrics/AbcSize
|
106
|
+
|
81
107
|
def identify(response)
|
82
108
|
email = response.match_data['email']
|
83
109
|
stored_email = fetch_user(response.user)
|
@@ -96,7 +122,7 @@ module Lita
|
|
96
122
|
private
|
97
123
|
|
98
124
|
def lookup_on_call_user(schedule_id)
|
99
|
-
now = Time.now.utc
|
125
|
+
now = ::Time.now.utc
|
100
126
|
pd_client.get_schedule_users(
|
101
127
|
id: schedule_id,
|
102
128
|
since: now.iso8601,
|
@@ -25,5 +25,19 @@ module PagerdutyHelper
|
|
25
25
|
def format_user(user)
|
26
26
|
"email_#{user.id}"
|
27
27
|
end
|
28
|
+
|
29
|
+
def take_pager(schedule_id, user_id, duration_mins)
|
30
|
+
from = ::Time.now.utc + 10
|
31
|
+
to = from + (60 * duration_mins)
|
32
|
+
|
33
|
+
pd_client.create_schedule_override(
|
34
|
+
id: schedule_id,
|
35
|
+
override: {
|
36
|
+
user_id: user_id,
|
37
|
+
start: from.iso8601,
|
38
|
+
end: to.iso8601
|
39
|
+
}
|
40
|
+
)
|
41
|
+
end
|
28
42
|
end
|
29
43
|
end
|
data/lita-pagerduty.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = 'lita-pagerduty'
|
3
|
-
spec.version = '0.
|
3
|
+
spec.version = '0.2.0'
|
4
4
|
spec.authors = ['Eric Sigler']
|
5
5
|
spec.email = ['eric@pagerduty.com']
|
6
6
|
spec.description = 'A Lita handler to interact with PagerDuty'
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.require_paths = ['lib']
|
16
16
|
|
17
17
|
spec.add_runtime_dependency 'lita', '>= 4.0'
|
18
|
-
spec.add_runtime_dependency 'pagerduty-sdk'
|
18
|
+
spec.add_runtime_dependency 'pagerduty-sdk', '>= 1.0.9'
|
19
19
|
|
20
20
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
21
21
|
spec.add_development_dependency 'coveralls'
|
data/locales/en.yml
CHANGED
@@ -53,10 +53,14 @@ en:
|
|
53
53
|
whos_on_call:
|
54
54
|
syntax: who's on call?
|
55
55
|
desc: Show everyone currently on call (not implemented yet)
|
56
|
+
pager_me:
|
57
|
+
syntax: pager me <schedule> <minutes>
|
58
|
+
desc: Take the pager for the given schedule for the specified number of minutes
|
56
59
|
identify:
|
57
60
|
already: You have already been identified!
|
58
61
|
complete: You have now been identified.
|
59
62
|
missing: You have not identified yourself (use the help command for more info)
|
63
|
+
unrecognised: You have identified yourself with an email address unknown to PagerDuty
|
60
64
|
incident:
|
61
65
|
acknowledged: "%{id}: Incident acknowledged"
|
62
66
|
already_set: "%{id}: Incident already %{status}"
|
@@ -82,3 +86,6 @@ en:
|
|
82
86
|
response: "%{name} (%{email}) is currently on call for %{schedule_name}"
|
83
87
|
no_matching_schedule: "No matching schedules found for '%{schedule_name}'"
|
84
88
|
no_one_on_call: "No one is currently on call for %{schedule_name}"
|
89
|
+
pager_me:
|
90
|
+
success: "%{name} (%{email}) is now on call until %{finish}"
|
91
|
+
failure: "failed to take the pager"
|
@@ -8,6 +8,7 @@ describe Lita::Handlers::PagerdutyUtility, lita_handler: true do
|
|
8
8
|
is_expected.to route_command('pager oncall ops').to(:on_call_lookup)
|
9
9
|
is_expected.to route_command('pager identify foobar@example.com').to(:identify)
|
10
10
|
is_expected.to route_command('pager forget').to(:forget)
|
11
|
+
is_expected.to route_command('pager me ops 12m').to(:pager_me)
|
11
12
|
end
|
12
13
|
|
13
14
|
before do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-pagerduty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Sigler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.0.9
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.0.9
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|