factor-connector-pagerduty 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/factor/connector/pagerduty.rb +120 -0
  3. metadata +142 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3c0605d31b470bac8b3c4d647063b701f9519968
4
+ data.tar.gz: 378f879823348f57e791d1991c58dda6195d5c79
5
+ SHA512:
6
+ metadata.gz: 7080c64c6cc763c14f8b7ceaac467e5b090fb96db462f21498cd5b5c8e7d0ec30ee0c82c9944460233145630107195d42e690ea07be79039e651249a4593176f
7
+ data.tar.gz: d42c50c50ce90a7c222c13f9f8b37df98c44048813d22148de3db6e5f6e2f91f19e149032eaa62be5f7f94e55120338ef39e21fd4cbe74448762f75e1c81f8e5
@@ -0,0 +1,120 @@
1
+ require 'factor-connector-api'
2
+ require 'pagerduty'
3
+ require 'httparty'
4
+
5
+ Factor::Connector.service 'pagerduty' do
6
+ action 'create' do |params|
7
+
8
+ service_key = params['service_key']
9
+ description = params['description']
10
+ incident_key = params['incident_key']
11
+ client = params['client']
12
+ client_url = params['client_url']
13
+
14
+ fail 'A description is required' unless description
15
+ fail 'A Service Key (service_key) must be provided' unless service_key
16
+
17
+ content = {
18
+ incident_key: incident_key,
19
+ client: client,
20
+ client_url: client_url
21
+ }
22
+
23
+ info 'Generating a new incident'
24
+ begin
25
+ service = Pagerduty.new(service_key)
26
+ incident = service.trigger(description, content)
27
+ rescue
28
+ fail 'Failed to send incident'
29
+ end
30
+ action_callback incident
31
+ end
32
+
33
+ action 'retrieve' do |params|
34
+
35
+ service_key = params['service_key']
36
+ incident_key = params['incident_key']
37
+
38
+ fail 'A Service Key (service_key) must be provided' unless service_key
39
+ fail 'An incident key is required' unless incident_key
40
+
41
+ info 'Retrieving the incident information'
42
+ begin
43
+ service = Pagerduty.new(service_key)
44
+ incident = service.get_incident(incident_key)
45
+ rescue
46
+ fail 'Failed to find the incident'
47
+ end
48
+ action_callback incident
49
+ end
50
+
51
+ action 'acknowledge' do |params|
52
+
53
+ service_key = params['service_key']
54
+ incident_key = params['incident_key']
55
+
56
+ fail 'A Service Key (service_key) must be provided' unless service_key
57
+ fail 'An incident key is required' unless incident_key
58
+
59
+ info 'Acknowleding the incident'
60
+ begin
61
+ service = Pagerduty.new(service_key)
62
+ incident = service.get_incident(incident_key)
63
+ response = incident.acknowledge
64
+ rescue
65
+ fail 'Failed to find the incident'
66
+ end
67
+ action_callback response
68
+ end
69
+
70
+ action 'resolve' do |params|
71
+
72
+ service_key = params['service_key']
73
+ incident_key = params['incident_key']
74
+
75
+ fail 'A Service Key (service_key) must be provided' unless service_key
76
+ fail 'An incident key is required' unless incident_key
77
+
78
+ info 'Resolving the incident'
79
+ begin
80
+ service = Pagerduty.new(service_key)
81
+ incident = service.get_incident(incident_key)
82
+ response = incident.resolve
83
+ rescue
84
+ fail 'Failed to find the incident'
85
+ end
86
+ action_callback response
87
+ end
88
+
89
+ action 'list' do |params|
90
+
91
+ subdomain = params['subdomain']
92
+ access_key = params['access_key']
93
+
94
+ fail 'A subdomain must be provided' unless subdomain
95
+ fail 'An Access Key (access_key) is required' unless access_key
96
+
97
+ info 'Loading incidents'
98
+ begin
99
+ uri = "https://#{subdomain}.pagerduty.com/api/v1/incidents"
100
+ access_string = "Token token=#{access_key}"
101
+ response = HTTParty.get(
102
+ uri,
103
+ headers: {
104
+ 'Content-Type' => 'application/json', 'Authorization' => access_string
105
+ }
106
+ )
107
+ rescue
108
+ fail 'Failed to load incidents'
109
+ end
110
+
111
+ info 'Parsing the response'
112
+ begin
113
+ incident_list = JSON.parse(response.body)
114
+ rescue
115
+ fail 'Failed to parse the response from the PagerDuty API'
116
+ end
117
+
118
+ action_callback incident_list
119
+ end
120
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: factor-connector-pagerduty
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Josie Wright
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: factor-connector-api
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: pagerduty
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: httparty
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.13.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.13.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: codeclimate-test-reporter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.4.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.4.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 3.1.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 3.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 10.3.2
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 10.3.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: wrong
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.7.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.7.1
111
+ description:
112
+ email:
113
+ - jozwright@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - lib/factor/connector/pagerduty.rb
119
+ homepage: https://factor.io
120
+ licenses: []
121
+ metadata: {}
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 2.2.2
139
+ signing_key:
140
+ specification_version: 4
141
+ summary: PagerDuty Factor.io Connector
142
+ test_files: []