opsgenie-heartbeat 0.3.0 → 0.4.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 +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +4 -0
- data/lib/opsgenie/heartbeat.rb +32 -11
- data/lib/opsgenie/heartbeat/config.rb +1 -1
- data/lib/opsgenie/heartbeat/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40ad93c29a50145b21401962688273ffb38cd994bfd6d222d82ea43baeafaa5e
|
4
|
+
data.tar.gz: 055e1f4ab36b7d670ef8a85b9989f60a862833cd3085f0865c1997bd0950d6ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b366b335612b50cf981e6be0e16f11be22cde7c6aa36804ab940451f4ddc443d025fd804011935b2ae4230f5e4879323a1f52bfeebe1ef305dd2435fbd5163f
|
7
|
+
data.tar.gz: bd62e408cda81d65e689e28bbc2b6f109f761cab3e29e398a1d5dd1f7df137b3a46a9729777197a284bed2c5e4a18b78c4f2e8540c8830119d7c54e8e022cc6e
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -53,6 +53,10 @@ In yours initializers folder, define new file with:
|
|
53
53
|
#will set the team to Myteam on all new heartbeats
|
54
54
|
#you can override when you create the heartbeat.
|
55
55
|
config.default_team = 'Myteam'
|
56
|
+
|
57
|
+
#retry timedout api calls upto the specified number of times, with a random backoff
|
58
|
+
#default is no retries
|
59
|
+
config.retries = 2
|
56
60
|
end
|
57
61
|
```
|
58
62
|
|
data/lib/opsgenie/heartbeat.rb
CHANGED
@@ -12,13 +12,14 @@ module Opsgenie
|
|
12
12
|
name = configuration.name_transformer.call(name)
|
13
13
|
begin
|
14
14
|
uri = URI.parse("https://api.opsgenie.com/v2/heartbeats/#{Rack::Utils.escape name}/ping")
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
with_timeout_retries do
|
16
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
17
|
+
http.use_ssl = true
|
18
|
+
response = http.get(uri.path, {'Authorization': "GenieKey #{configuration.api_key}"})
|
19
|
+
if !response.is_a?(Net::HTTPSuccess)
|
20
|
+
configuration.logger.info("Error creating or updating heartbeat: #{response}") if configuration.logger
|
21
|
+
end
|
20
22
|
end
|
21
|
-
|
22
23
|
rescue => e
|
23
24
|
resolve_exception e
|
24
25
|
end
|
@@ -30,11 +31,13 @@ module Opsgenie
|
|
30
31
|
name = configuration.name_transformer.call(name)
|
31
32
|
|
32
33
|
uri = URI.parse(url_for_resource(:get, name))
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
with_timeout_retries do
|
35
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
36
|
+
http.use_ssl = true
|
37
|
+
response = http.get(uri.path, {'Authorization': "GenieKey #{configuration.api_key}"})
|
38
|
+
unless response.is_a?(Net::HTTPSuccess)
|
39
|
+
create(name: original_name, description: description, interval: interval, unit: unit, enabled: enabled, team: team)
|
40
|
+
end
|
38
41
|
end
|
39
42
|
end
|
40
43
|
|
@@ -66,6 +69,24 @@ module Opsgenie
|
|
66
69
|
|
67
70
|
private
|
68
71
|
|
72
|
+
def with_timeout_retries
|
73
|
+
attempts = 0
|
74
|
+
begin
|
75
|
+
yield
|
76
|
+
rescue Net::OpenTimeout, Net::ReadTimeout => e
|
77
|
+
if attempts < (configuration.retries || 0)
|
78
|
+
configuration.logger.info("Retrying opsgenie api call after timeout #{e.message}")
|
79
|
+
attempts += 1
|
80
|
+
sleep(rand(2**attempts))
|
81
|
+
retry
|
82
|
+
else
|
83
|
+
raise
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
|
69
90
|
def url_for_resource(verb, name)
|
70
91
|
if verb == :post
|
71
92
|
'https://api.opsgenie.com/v2/heartbeats'
|
@@ -9,7 +9,7 @@ module Opsgenie
|
|
9
9
|
end
|
10
10
|
|
11
11
|
class Config
|
12
|
-
attr_accessor :enabled, :api_key, :name_transformer, :logger, :raise_error, :default_team
|
12
|
+
attr_accessor :enabled, :api_key, :name_transformer, :logger, :raise_error, :default_team, :retries
|
13
13
|
|
14
14
|
def name_transformer
|
15
15
|
@name_transformer || ->(name){name}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opsgenie-heartbeat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dressipi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
96
|
version: '0'
|
97
97
|
requirements: []
|
98
98
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.7.
|
99
|
+
rubygems_version: 2.7.6
|
100
100
|
signing_key:
|
101
101
|
specification_version: 4
|
102
102
|
summary: OpsGenie Heartbeat version 2
|