chef-handler-datadog 0.7.0 → 0.8.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/.env.example +2 -0
- data/CHANGELOG.md +15 -0
- data/Rakefile +7 -0
- data/lib/chef/handler/datadog.rb +1 -0
- data/lib/chef/handler/datadog_chef_metrics.rb +10 -1
- data/lib/chef/handler/datadog_chef_tags.rb +30 -9
- data/lib/chef_handler_datadog.rb +1 -1
- data/spec/datadog_spec.rb +74 -4
- data/spec/support/cassettes/Chef_Handler_Datadog/failed_Chef_run/sets_alert_handles_when_specified.yml +258 -122
- data/spec/support/cassettes/Chef_Handler_Datadog/failed_Chef_run/sets_event_title_correctly.yml +129 -61
- data/spec/support/cassettes/Chef_Handler_Datadog/failed_Chef_run/sets_priority_correctly.yml +129 -61
- data/spec/support/cassettes/Chef_Handler_Datadog/hostname/uses_the_node_name_when_no_config_specified.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/hostname/uses_the_specified_hostname_when_provided.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/reports_correct_hostname_on_an_ec2_node/does_not_use_the_instance_id_when_config_specified_to_false.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/reports_correct_hostname_on_an_ec2_node/uses_the_instance_id_when_config_is_specified.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/reports_correct_hostname_on_an_ec2_node/uses_the_instance_id_when_no_config_specified.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/reports_metrics_event_and_sets_tags/emits_events/posts_an_event.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/reports_metrics_event_and_sets_tags/emits_events/sets_priority_correctly.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/reports_metrics_event_and_sets_tags/emits_metrics/reports_metrics.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/reports_metrics_event_and_sets_tags/sets_tags/puts_the_tags_for_the_current_node.yml +124 -53
- data/spec/support/cassettes/Chef_Handler_Datadog/resources/failure_during_compile_phase/only_emits_a_failure_metric.yml +134 -0
- data/spec/support/cassettes/Chef_Handler_Datadog/resources/failure_during_compile_phase/posts_an_event.yml +77 -25
- data/spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/sets_the_role_and_env_and_tags.yml +89 -43
- data/spec/support/cassettes/Chef_Handler_Datadog/tags/when_unspecified/sets_role_env_and_nothing_else.yml +89 -42
- data/spec/support/cassettes/Chef_Handler_Datadog/tags_submission_retries/when_not_specified/does_not_retry_after_a_failed_submission.yml +241 -0
- data/spec/support/cassettes/Chef_Handler_Datadog/tags_submission_retries/when_specified_as_2_retries/retries_no_more_than_twice.yml +331 -0
- data/spec/support/cassettes/Chef_Handler_Datadog/tags_submission_retries/when_specified_as_2_retries/stops_retrying_once_submission_is_successful.yml +287 -0
- data/spec/support/cassettes/Chef_Handler_Datadog/updated_resources/posts_an_event.yml +126 -58
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c54065be2df326d6779153aaecf8bfaa3e078d6
|
4
|
+
data.tar.gz: 92eb9edaf6c4d5bcf82d0e4ee0f5bafcf9ffcf2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d76b01f151c3d3e4e20784ab2713f952621b83f5097ea1298dfe4f69e8ba318315298c090bc300915570b56afad4f13981bfc193b37133977e8d97ce2379e62b
|
7
|
+
data.tar.gz: e915c78a1b3689edb2691267b01288ee032494cce9d69143d7518c1aca8626ba8cced4ca7f954133e733e2ada8ede3326a85e7f9edf8dffb3fb408a06218be50
|
data/.env.example
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
Changes
|
2
2
|
=======
|
3
3
|
|
4
|
+
# 0.8.0 / 2016-03-01
|
5
|
+
|
6
|
+
* [FEATURE] Add success/failure metric [#75][] [@jhulten][]
|
7
|
+
* [FEATURE] Retry tags submission when host is not yet present on DD [#80][] [@olivielpeau][]
|
8
|
+
* [OPTIMIZE] Ensure tags always returns an array [#78][] [@rlaveycal][]
|
9
|
+
* [OPTIMIZE] More robust failed chef run checking [#69][] [@bigbam505][]
|
10
|
+
|
4
11
|
# 0.7.0 / 2015-10-22
|
5
12
|
|
6
13
|
* [FEATURE] Support passing `DATADOG_PROXY` env var to control `dogapi` behavior, [#65][] [@datwiz][]
|
@@ -73,9 +80,17 @@ And all other versions were prior to this. See git history for more.
|
|
73
80
|
[#60]: https://github.com/DataDog/chef-handler-datadog/issues/60
|
74
81
|
[#65]: https://github.com/DataDog/chef-handler-datadog/issues/65
|
75
82
|
[#66]: https://github.com/DataDog/chef-handler-datadog/issues/66
|
83
|
+
[#69]: https://github.com/DataDog/chef-handler-datadog/issues/69
|
84
|
+
[#75]: https://github.com/DataDog/chef-handler-datadog/issues/75
|
85
|
+
[#78]: https://github.com/DataDog/chef-handler-datadog/issues/78
|
86
|
+
[#80]: https://github.com/DataDog/chef-handler-datadog/issues/80
|
76
87
|
[@alq]: https://github.com/alq
|
88
|
+
[@bigbam505]: https://github.com/bigbam505
|
77
89
|
[@datwiz]: https://github.com/datwiz
|
78
90
|
[@dwradcliffe]: https://github.com/dwradcliffe
|
91
|
+
[@jhulten]: https://github.com/jhulten
|
79
92
|
[@miketheman]: https://github.com/miketheman
|
93
|
+
[@olivielpeau]: https://github.com/olivielpeau
|
80
94
|
[@owen]: https://github.com/owen
|
81
95
|
[@remh]: https://github.com/remh
|
96
|
+
[@rlaveycal]: https://github.com/rlaveycal
|
data/Rakefile
CHANGED
data/lib/chef/handler/datadog.rb
CHANGED
@@ -38,10 +38,13 @@ class DatadogChefMetrics
|
|
38
38
|
|
39
39
|
# Emit Chef metrics to Datadog
|
40
40
|
def emit_to_datadog
|
41
|
+
# Send base success/failure metric
|
42
|
+
@dog.emit_point(@run_status.success? ? 'chef.run.success' : 'chef.run.failure', 1, host: @hostname, type: 'counter')
|
43
|
+
|
41
44
|
# If there is a failure during compile phase, a large portion of
|
42
45
|
# run_status may be unavailable. Bail out here
|
43
46
|
warn_msg = 'Error during compile phase, no Datadog metrics available.'
|
44
|
-
return Chef::Log.warn(warn_msg) if
|
47
|
+
return Chef::Log.warn(warn_msg) if compile_error?
|
45
48
|
|
46
49
|
@dog.emit_point('chef.resources.total', @run_status.all_resources.length, host: @hostname)
|
47
50
|
@dog.emit_point('chef.resources.updated', @run_status.updated_resources.length, host: @hostname)
|
@@ -50,4 +53,10 @@ class DatadogChefMetrics
|
|
50
53
|
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
|
51
54
|
Chef::Log.error("Could not send metrics to Datadog. Connection error:\n" + e)
|
52
55
|
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def compile_error?
|
60
|
+
@run_status.all_resources.nil? || @run_status.elapsed_time.nil? || @run_status.updated_resources.nil?
|
61
|
+
end
|
53
62
|
end # end class DatadogChefMetrics
|
@@ -10,6 +10,7 @@ class DatadogChefTags
|
|
10
10
|
@node = nil
|
11
11
|
@run_status = nil
|
12
12
|
@application_key = nil
|
13
|
+
@retries = 0
|
13
14
|
@combined_host_tags = nil
|
14
15
|
end
|
15
16
|
|
@@ -76,19 +77,39 @@ class DatadogChefTags
|
|
76
77
|
self
|
77
78
|
end
|
78
79
|
|
80
|
+
# set the number of retries when sending tags, when the host is not yet present
|
81
|
+
# on Datadog
|
82
|
+
#
|
83
|
+
# @param retries [Integer] number of retries
|
84
|
+
# @return [DatadogChefTags] instance reference to self enabling method chaining
|
85
|
+
def with_retries(retries)
|
86
|
+
@retries = retries unless retries.nil?
|
87
|
+
self
|
88
|
+
end
|
89
|
+
|
79
90
|
# send updated chef run generated tags to Datadog
|
80
91
|
def send_update_to_datadog
|
81
|
-
|
92
|
+
retries = @retries
|
82
93
|
begin
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
if rc
|
88
|
-
Chef::Log.warn("
|
94
|
+
loop do
|
95
|
+
should_retry = false
|
96
|
+
rc = @dog.update_tags(@hostname, combined_host_tags, 'chef')
|
97
|
+
# See FIXME in DatadogChefEvents::emit_to_datadog about why I feel dirty repeating this code here
|
98
|
+
if rc.length < 2
|
99
|
+
Chef::Log.warn("Unexpected response from Datadog Tags API: #{rc}")
|
89
100
|
else
|
90
|
-
|
101
|
+
if retries > 0 && rc[0].to_i == 404
|
102
|
+
Chef::Log.debug("Host #{@hostname} not yet present on Datadog, re-submitting tags in 2 seconds")
|
103
|
+
sleep 2
|
104
|
+
retries -= 1
|
105
|
+
should_retry = true
|
106
|
+
elsif rc[0].to_i / 100 != 2
|
107
|
+
Chef::Log.warn("Could not submit #{combined_host_tags} tags for #{@hostname} to Datadog: #{rc}")
|
108
|
+
else
|
109
|
+
Chef::Log.debug("Successfully updated #{@hostname}'s tags to #{combined_host_tags.join(', ')}")
|
110
|
+
end
|
91
111
|
end
|
112
|
+
break unless should_retry
|
92
113
|
end
|
93
114
|
rescue
|
94
115
|
Chef::Log.warn("Could not determine whether #{@hostname}'s tags were successfully submitted to Datadog: #{rc}")
|
@@ -106,6 +127,6 @@ class DatadogChefTags
|
|
106
127
|
end
|
107
128
|
|
108
129
|
def node_tags
|
109
|
-
@node.tags.map! { |tag| 'tag:' + tag }
|
130
|
+
@node.tags ? @node.tags.map! { |tag| 'tag:' + tag } : []
|
110
131
|
end
|
111
132
|
end # end class DatadogChefTags
|
data/lib/chef_handler_datadog.rb
CHANGED
data/spec/datadog_spec.rb
CHANGED
@@ -56,7 +56,7 @@ describe Chef::Handler::Datadog, :vcr => :new_episodes do
|
|
56
56
|
it 'reports metrics' do
|
57
57
|
expect(a_request(:post, METRICS_ENDPOINT).with(
|
58
58
|
:query => { 'api_key' => @handler.config[:api_key] }
|
59
|
-
)).to have_been_made.times(
|
59
|
+
)).to have_been_made.times(4)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -233,6 +233,76 @@ describe Chef::Handler::Datadog, :vcr => :new_episodes do
|
|
233
233
|
end
|
234
234
|
end
|
235
235
|
|
236
|
+
context 'tags submission retries' do
|
237
|
+
before(:each) do
|
238
|
+
@node = Chef::Node.build('chef.handler.datadog.test-tags-retries')
|
239
|
+
|
240
|
+
@node.send(:chef_environment, 'hostile')
|
241
|
+
@node.send(:run_list, 'role[highlander]')
|
242
|
+
@node.normal.tags = ['the_one_and_only']
|
243
|
+
|
244
|
+
@events = Chef::EventDispatch::Dispatcher.new
|
245
|
+
@run_context = Chef::RunContext.new(@node, {}, @events)
|
246
|
+
@run_status = Chef::RunStatus.new(@node, @events)
|
247
|
+
|
248
|
+
@expected_time = Time.now
|
249
|
+
allow(Time).to receive(:now).and_return(@expected_time, @expected_time + 5)
|
250
|
+
@run_status.start_clock
|
251
|
+
@run_status.stop_clock
|
252
|
+
|
253
|
+
@run_status.run_context = @run_context
|
254
|
+
end
|
255
|
+
|
256
|
+
describe 'when specified as 2 retries' do
|
257
|
+
before(:each) do
|
258
|
+
@handler.config[:tags_submission_retries] = 2
|
259
|
+
# Stub `sleep` to avoid slowing down the execution
|
260
|
+
allow_any_instance_of(DatadogChefTags).to receive(:sleep)
|
261
|
+
end
|
262
|
+
|
263
|
+
it 'retries no more than twice' do
|
264
|
+
@handler.run_report_unsafe(@run_status)
|
265
|
+
|
266
|
+
expect(a_request(:put, HOST_TAG_ENDPOINT + @node.name).with(
|
267
|
+
:query => { 'api_key' => @handler.config[:api_key],
|
268
|
+
'application_key' => @handler.config[:application_key],
|
269
|
+
'source' => 'chef' },
|
270
|
+
:body => hash_including(:tags => [
|
271
|
+
'env:hostile', 'role:highlander', 'tag:the_one_and_only'
|
272
|
+
]),
|
273
|
+
)).to have_been_made.times(3)
|
274
|
+
end
|
275
|
+
|
276
|
+
it 'stops retrying once submission is successful' do
|
277
|
+
@handler.run_report_unsafe(@run_status)
|
278
|
+
|
279
|
+
expect(a_request(:put, HOST_TAG_ENDPOINT + @node.name).with(
|
280
|
+
:query => { 'api_key' => @handler.config[:api_key],
|
281
|
+
'application_key' => @handler.config[:application_key],
|
282
|
+
'source' => 'chef' },
|
283
|
+
:body => hash_including(:tags => [
|
284
|
+
'env:hostile', 'role:highlander', 'tag:the_one_and_only'
|
285
|
+
]),
|
286
|
+
)).to have_been_made.times(2)
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
describe 'when not specified' do
|
291
|
+
it 'does not retry after a failed submission' do
|
292
|
+
@handler.run_report_unsafe(@run_status)
|
293
|
+
|
294
|
+
expect(a_request(:put, HOST_TAG_ENDPOINT + @node.name).with(
|
295
|
+
:query => { 'api_key' => @handler.config[:api_key],
|
296
|
+
'application_key' => @handler.config[:application_key],
|
297
|
+
'source' => 'chef' },
|
298
|
+
:body => hash_including(:tags => [
|
299
|
+
'env:hostile', 'role:highlander', 'tag:the_one_and_only'
|
300
|
+
]),
|
301
|
+
)).to have_been_made.times(1)
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
236
306
|
describe 'handles no application_key' do
|
237
307
|
before(:each) do
|
238
308
|
@node = Chef::Node.build('chef.handler.datadog.test-noapp')
|
@@ -373,10 +443,10 @@ describe Chef::Handler::Datadog, :vcr => :new_episodes do
|
|
373
443
|
@handler.run_report_unsafe(@run_status)
|
374
444
|
end
|
375
445
|
|
376
|
-
it '
|
446
|
+
it 'only emits a failure metric' do
|
377
447
|
expect(a_request(:post, METRICS_ENDPOINT).with(
|
378
448
|
:query => { 'api_key' => @handler.config[:api_key] }
|
379
|
-
)).
|
449
|
+
)).to have_been_made.times(1)
|
380
450
|
end
|
381
451
|
|
382
452
|
it 'posts an event' do
|
@@ -387,7 +457,7 @@ describe Chef::Handler::Datadog, :vcr => :new_episodes do
|
|
387
457
|
)).to have_been_made.times(1)
|
388
458
|
end
|
389
459
|
end
|
390
|
-
end
|
460
|
+
end
|
391
461
|
|
392
462
|
# TODO: test failures:
|
393
463
|
# @run_status.exception = Exception.new('Boy howdy!')
|
@@ -5,10 +5,12 @@ http_interactions:
|
|
5
5
|
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
|
-
string:
|
8
|
+
string: '{"series":[{"metric":"chef.run.failure","points":[[1453838668,1.0]],"type":"counter","host":"chef.handler.datadog.test-failed","device":null}]}'
|
9
9
|
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
10
12
|
Accept:
|
11
|
-
-
|
13
|
+
- "*/*"
|
12
14
|
User-Agent:
|
13
15
|
- Ruby
|
14
16
|
Content-Type:
|
@@ -19,29 +21,74 @@ http_interactions:
|
|
19
21
|
message: Accepted
|
20
22
|
headers:
|
21
23
|
Content-Type:
|
22
|
-
- text/json
|
24
|
+
- text/json
|
23
25
|
Date:
|
24
|
-
- Tue,
|
25
|
-
|
26
|
-
-
|
26
|
+
- Tue, 26 Jan 2016 20:04:26 GMT
|
27
|
+
Dd-Pool:
|
28
|
+
- propjoe
|
29
|
+
Strict-Transport-Security:
|
30
|
+
- max-age=15724800;
|
31
|
+
X-Content-Type-Options:
|
32
|
+
- nosniff
|
27
33
|
Content-Length:
|
28
|
-
- '
|
34
|
+
- '16'
|
29
35
|
Connection:
|
30
36
|
- keep-alive
|
31
37
|
body:
|
32
|
-
encoding:
|
33
|
-
string:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: '{"status": "ok"}'
|
40
|
+
http_version:
|
41
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
42
|
+
- request:
|
43
|
+
method: post
|
44
|
+
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"series":[{"metric":"chef.resources.total","points":[[1453838668,6.0]],"type":"gauge","host":"chef.handler.datadog.test-failed","device":null}]}'
|
48
|
+
headers:
|
49
|
+
Accept-Encoding:
|
50
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
51
|
+
Accept:
|
52
|
+
- "*/*"
|
53
|
+
User-Agent:
|
54
|
+
- Ruby
|
55
|
+
Content-Type:
|
56
|
+
- application/json
|
57
|
+
response:
|
58
|
+
status:
|
59
|
+
code: 202
|
60
|
+
message: Accepted
|
61
|
+
headers:
|
62
|
+
Content-Type:
|
63
|
+
- text/json
|
64
|
+
Date:
|
65
|
+
- Tue, 26 Jan 2016 20:04:26 GMT
|
66
|
+
Dd-Pool:
|
67
|
+
- propjoe
|
68
|
+
Strict-Transport-Security:
|
69
|
+
- max-age=15724800;
|
70
|
+
X-Content-Type-Options:
|
71
|
+
- nosniff
|
72
|
+
Content-Length:
|
73
|
+
- '16'
|
74
|
+
Connection:
|
75
|
+
- keep-alive
|
76
|
+
body:
|
77
|
+
encoding: UTF-8
|
78
|
+
string: '{"status": "ok"}'
|
34
79
|
http_version:
|
35
|
-
recorded_at: Tue,
|
80
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
36
81
|
- request:
|
37
82
|
method: post
|
38
83
|
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
39
84
|
body:
|
40
85
|
encoding: UTF-8
|
41
|
-
string:
|
86
|
+
string: '{"series":[{"metric":"chef.resources.updated","points":[[1453838668,6.0]],"type":"gauge","host":"chef.handler.datadog.test-failed","device":null}]}'
|
42
87
|
headers:
|
88
|
+
Accept-Encoding:
|
89
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
43
90
|
Accept:
|
44
|
-
-
|
91
|
+
- "*/*"
|
45
92
|
User-Agent:
|
46
93
|
- Ruby
|
47
94
|
Content-Type:
|
@@ -52,29 +99,35 @@ http_interactions:
|
|
52
99
|
message: Accepted
|
53
100
|
headers:
|
54
101
|
Content-Type:
|
55
|
-
- text/json
|
102
|
+
- text/json
|
56
103
|
Date:
|
57
|
-
- Tue,
|
58
|
-
|
59
|
-
-
|
104
|
+
- Tue, 26 Jan 2016 20:04:26 GMT
|
105
|
+
Dd-Pool:
|
106
|
+
- propjoe
|
107
|
+
Strict-Transport-Security:
|
108
|
+
- max-age=15724800;
|
109
|
+
X-Content-Type-Options:
|
110
|
+
- nosniff
|
60
111
|
Content-Length:
|
61
|
-
- '
|
112
|
+
- '16'
|
62
113
|
Connection:
|
63
114
|
- keep-alive
|
64
115
|
body:
|
65
|
-
encoding:
|
66
|
-
string:
|
116
|
+
encoding: UTF-8
|
117
|
+
string: '{"status": "ok"}'
|
67
118
|
http_version:
|
68
|
-
recorded_at: Tue,
|
119
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
69
120
|
- request:
|
70
121
|
method: post
|
71
122
|
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
72
123
|
body:
|
73
124
|
encoding: UTF-8
|
74
|
-
string:
|
125
|
+
string: '{"series":[{"metric":"chef.resources.elapsed_time","points":[[1453838668,2.0]],"type":"gauge","host":"chef.handler.datadog.test-failed","device":null}]}'
|
75
126
|
headers:
|
127
|
+
Accept-Encoding:
|
128
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
76
129
|
Accept:
|
77
|
-
-
|
130
|
+
- "*/*"
|
78
131
|
User-Agent:
|
79
132
|
- Ruby
|
80
133
|
Content-Type:
|
@@ -85,38 +138,43 @@ http_interactions:
|
|
85
138
|
message: Accepted
|
86
139
|
headers:
|
87
140
|
Content-Type:
|
88
|
-
- text/json
|
141
|
+
- text/json
|
89
142
|
Date:
|
90
|
-
- Tue,
|
91
|
-
|
92
|
-
-
|
143
|
+
- Tue, 26 Jan 2016 20:04:26 GMT
|
144
|
+
Dd-Pool:
|
145
|
+
- propjoe
|
146
|
+
Strict-Transport-Security:
|
147
|
+
- max-age=15724800;
|
148
|
+
X-Content-Type-Options:
|
149
|
+
- nosniff
|
93
150
|
Content-Length:
|
94
|
-
- '
|
151
|
+
- '16'
|
95
152
|
Connection:
|
96
153
|
- keep-alive
|
97
154
|
body:
|
98
|
-
encoding:
|
99
|
-
string:
|
155
|
+
encoding: UTF-8
|
156
|
+
string: '{"status": "ok"}'
|
100
157
|
http_version:
|
101
|
-
recorded_at: Tue,
|
158
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
102
159
|
- request:
|
103
160
|
method: post
|
104
161
|
uri: https://app.datadoghq.com/api/v1/events?api_key=<API_KEY>
|
105
162
|
body:
|
106
163
|
encoding: UTF-8
|
107
|
-
string:
|
164
|
+
string: '{"msg_text":"\n$$$\n- [paws] (dynamically defined)\n- [ears] (dynamically
|
165
|
+
defined)\n- [nose] (dynamically defined)\n- [tail] (dynamically defined)\n-
|
166
|
+
[fur] (dynamically defined)\n\n$$$\n\n$$$\nChef::Exceptions::UnsupportedAction:
|
167
|
+
Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","date_happened":1453838668,"msg_title":"Chef
|
168
|
+
failed in 2 seconds on chef.handler.datadog.test-failed ","priority":"normal","parent":null,"tags":["env:hostile","role:highlander","tag:the_one_and_only"],"aggregation_key":"chef.handler.datadog.test-failed","alert_type":"error","event_type":"config_management.run","source_type_name":"chef","title":"Chef
|
169
|
+
failed in 2 seconds on chef.handler.datadog.test-failed ","text":"\n$$$\n-
|
108
170
|
[paws] (dynamically defined)\n- [ears] (dynamically defined)\n- [nose] (dynamically
|
109
171
|
defined)\n- [tail] (dynamically defined)\n- [fur] (dynamically defined)\n\n$$$\n\n$$$\nChef::Exceptions::UnsupportedAction:
|
110
|
-
Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","date_happened":1410264911,"msg_title":"Chef
|
111
|
-
failed in 2 seconds on chef.handler.datadog.test-failed ","priority":"normal","parent":null,"tags":["env:hostile","role:highlander","tag:the_one_and_only"],"aggregation_key":"chef.handler.datadog.test-failed","alert_type":"error","event_type":"config_management.run","source_type_name":"chef","title":"Chef
|
112
|
-
failed in 2 seconds on chef.handler.datadog.test-failed ","text":"Chef updated
|
113
|
-
6 resources out of 6 resources total.\n$$$\n- [paws] (dynamically defined)\n-
|
114
|
-
[ears] (dynamically defined)\n- [nose] (dynamically defined)\n- [tail] (dynamically
|
115
|
-
defined)\n- [fur] (dynamically defined)\n\n$$$\n\n$$$\nChef::Exceptions::UnsupportedAction:
|
116
172
|
Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","host":"chef.handler.datadog.test-failed","device":null}'
|
117
173
|
headers:
|
174
|
+
Accept-Encoding:
|
175
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
118
176
|
Accept:
|
119
|
-
-
|
177
|
+
- "*/*"
|
120
178
|
User-Agent:
|
121
179
|
- Ruby
|
122
180
|
Content-Type:
|
@@ -127,37 +185,39 @@ http_interactions:
|
|
127
185
|
message: Accepted
|
128
186
|
headers:
|
129
187
|
Content-Type:
|
130
|
-
- text/
|
188
|
+
- text/plain; charset=utf-8
|
131
189
|
Date:
|
132
|
-
- Tue,
|
133
|
-
|
134
|
-
-
|
190
|
+
- Tue, 26 Jan 2016 20:04:26 GMT
|
191
|
+
Dd-Pool:
|
192
|
+
- propjoe
|
193
|
+
Strict-Transport-Security:
|
194
|
+
- max-age=15724800;
|
195
|
+
X-Content-Type-Options:
|
196
|
+
- nosniff
|
135
197
|
Content-Length:
|
136
|
-
- '
|
198
|
+
- '647'
|
137
199
|
Connection:
|
138
200
|
- keep-alive
|
139
201
|
body:
|
140
|
-
encoding:
|
141
|
-
string:
|
142
|
-
|
143
|
-
", "url": "https://app.datadoghq.com/event/jump_to?event_id=2449507845826654380",
|
144
|
-
"text": "Chef updated 6 resources out of 6 resources total.\n$$$\n- [paws]
|
202
|
+
encoding: UTF-8
|
203
|
+
string: '{"status":"ok","event":{"id":381236694692316426,"title":"Chef failed
|
204
|
+
in 2 seconds on chef.handler.datadog.test-failed ","text":"\n$$$\n- [paws]
|
145
205
|
(dynamically defined)\n- [ears] (dynamically defined)\n- [nose] (dynamically
|
146
206
|
defined)\n- [tail] (dynamically defined)\n- [fur] (dynamically defined)\n\n$$$\n\n$$$\nChef::Exceptions::UnsupportedAction:
|
147
|
-
Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n",
|
148
|
-
"tags": ["env:hostile", "role:highlander", "tag:the_one_and_only"], "related_event_id":
|
149
|
-
null, "id": 2449507845826654380}}'
|
207
|
+
Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","date_happened":1453838668,"handle":null,"priority":"normal","related_event_id":null,"tags":["env:hostile","role:highlander","tag:the_one_and_only"],"url":"https://app.datadoghq.com/event/event?id=381236694692316426"}}'
|
150
208
|
http_version:
|
151
|
-
recorded_at: Tue,
|
209
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
152
210
|
- request:
|
153
211
|
method: put
|
154
212
|
uri: https://app.datadoghq.com/api/v1/tags/hosts/chef.handler.datadog.test-failed?api_key=<API_KEY>&application_key=<APPLICATION_KEY>&source=chef
|
155
213
|
body:
|
156
214
|
encoding: UTF-8
|
157
|
-
string:
|
215
|
+
string: '{"tags":["env:hostile","role:highlander","tag:the_one_and_only"]}'
|
158
216
|
headers:
|
217
|
+
Accept-Encoding:
|
218
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
159
219
|
Accept:
|
160
|
-
-
|
220
|
+
- "*/*"
|
161
221
|
User-Agent:
|
162
222
|
- Ruby
|
163
223
|
Content-Type:
|
@@ -172,30 +232,40 @@ http_interactions:
|
|
172
232
|
Content-Type:
|
173
233
|
- application/json
|
174
234
|
Date:
|
175
|
-
- Tue,
|
235
|
+
- Tue, 26 Jan 2016 20:04:26 GMT
|
236
|
+
Dd-Pool:
|
237
|
+
- dogweb_sameorig
|
176
238
|
Pragma:
|
177
239
|
- no-cache
|
178
|
-
|
179
|
-
-
|
240
|
+
Strict-Transport-Security:
|
241
|
+
- max-age=15724800;
|
242
|
+
X-Content-Type-Options:
|
243
|
+
- nosniff
|
244
|
+
X-Dd-Debug:
|
245
|
+
- 4G6DflkbLuEPHPN7r5QLLJW1+B1YXxXufb+VXQ5hU44=
|
246
|
+
X-Frame-Options:
|
247
|
+
- SAMEORIGIN
|
180
248
|
Content-Length:
|
181
249
|
- '112'
|
182
250
|
Connection:
|
183
251
|
- keep-alive
|
184
252
|
body:
|
185
|
-
encoding:
|
186
|
-
string:
|
253
|
+
encoding: UTF-8
|
254
|
+
string: '{"host": "chef.handler.datadog.test-failed", "tags": ["env:hostile",
|
187
255
|
"role:highlander", "tag:the_one_and_only"]}'
|
188
256
|
http_version:
|
189
|
-
recorded_at: Tue,
|
257
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
190
258
|
- request:
|
191
259
|
method: post
|
192
260
|
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
193
261
|
body:
|
194
262
|
encoding: UTF-8
|
195
|
-
string:
|
263
|
+
string: '{"series":[{"metric":"chef.run.failure","points":[[1453838668,1.0]],"type":"counter","host":"chef.handler.datadog.test-failed","device":null}]}'
|
196
264
|
headers:
|
265
|
+
Accept-Encoding:
|
266
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
197
267
|
Accept:
|
198
|
-
-
|
268
|
+
- "*/*"
|
199
269
|
User-Agent:
|
200
270
|
- Ruby
|
201
271
|
Content-Type:
|
@@ -206,29 +276,35 @@ http_interactions:
|
|
206
276
|
message: Accepted
|
207
277
|
headers:
|
208
278
|
Content-Type:
|
209
|
-
- text/json
|
279
|
+
- text/json
|
210
280
|
Date:
|
211
|
-
- Tue,
|
212
|
-
|
213
|
-
-
|
281
|
+
- Tue, 26 Jan 2016 20:04:26 GMT
|
282
|
+
Dd-Pool:
|
283
|
+
- propjoe
|
284
|
+
Strict-Transport-Security:
|
285
|
+
- max-age=15724800;
|
286
|
+
X-Content-Type-Options:
|
287
|
+
- nosniff
|
214
288
|
Content-Length:
|
215
|
-
- '
|
289
|
+
- '16'
|
216
290
|
Connection:
|
217
291
|
- keep-alive
|
218
292
|
body:
|
219
|
-
encoding:
|
220
|
-
string:
|
293
|
+
encoding: UTF-8
|
294
|
+
string: '{"status": "ok"}'
|
221
295
|
http_version:
|
222
|
-
recorded_at: Tue,
|
296
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
223
297
|
- request:
|
224
298
|
method: post
|
225
299
|
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
226
300
|
body:
|
227
301
|
encoding: UTF-8
|
228
|
-
string:
|
302
|
+
string: '{"series":[{"metric":"chef.resources.total","points":[[1453838668,6.0]],"type":"gauge","host":"chef.handler.datadog.test-failed","device":null}]}'
|
229
303
|
headers:
|
304
|
+
Accept-Encoding:
|
305
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
230
306
|
Accept:
|
231
|
-
-
|
307
|
+
- "*/*"
|
232
308
|
User-Agent:
|
233
309
|
- Ruby
|
234
310
|
Content-Type:
|
@@ -239,29 +315,35 @@ http_interactions:
|
|
239
315
|
message: Accepted
|
240
316
|
headers:
|
241
317
|
Content-Type:
|
242
|
-
- text/json
|
318
|
+
- text/json
|
243
319
|
Date:
|
244
|
-
- Tue,
|
245
|
-
|
246
|
-
-
|
320
|
+
- Tue, 26 Jan 2016 20:04:26 GMT
|
321
|
+
Dd-Pool:
|
322
|
+
- propjoe
|
323
|
+
Strict-Transport-Security:
|
324
|
+
- max-age=15724800;
|
325
|
+
X-Content-Type-Options:
|
326
|
+
- nosniff
|
247
327
|
Content-Length:
|
248
|
-
- '
|
328
|
+
- '16'
|
249
329
|
Connection:
|
250
330
|
- keep-alive
|
251
331
|
body:
|
252
|
-
encoding:
|
253
|
-
string:
|
332
|
+
encoding: UTF-8
|
333
|
+
string: '{"status": "ok"}'
|
254
334
|
http_version:
|
255
|
-
recorded_at: Tue,
|
335
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
256
336
|
- request:
|
257
337
|
method: post
|
258
338
|
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
259
339
|
body:
|
260
340
|
encoding: UTF-8
|
261
|
-
string:
|
341
|
+
string: '{"series":[{"metric":"chef.resources.updated","points":[[1453838668,6.0]],"type":"gauge","host":"chef.handler.datadog.test-failed","device":null}]}'
|
262
342
|
headers:
|
343
|
+
Accept-Encoding:
|
344
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
263
345
|
Accept:
|
264
|
-
-
|
346
|
+
- "*/*"
|
265
347
|
User-Agent:
|
266
348
|
- Ruby
|
267
349
|
Content-Type:
|
@@ -272,38 +354,82 @@ http_interactions:
|
|
272
354
|
message: Accepted
|
273
355
|
headers:
|
274
356
|
Content-Type:
|
275
|
-
- text/json
|
357
|
+
- text/json
|
276
358
|
Date:
|
277
|
-
- Tue,
|
278
|
-
|
279
|
-
-
|
359
|
+
- Tue, 26 Jan 2016 20:04:27 GMT
|
360
|
+
Dd-Pool:
|
361
|
+
- propjoe
|
362
|
+
Strict-Transport-Security:
|
363
|
+
- max-age=15724800;
|
364
|
+
X-Content-Type-Options:
|
365
|
+
- nosniff
|
280
366
|
Content-Length:
|
281
|
-
- '
|
367
|
+
- '16'
|
282
368
|
Connection:
|
283
369
|
- keep-alive
|
284
370
|
body:
|
285
|
-
encoding:
|
286
|
-
string:
|
371
|
+
encoding: UTF-8
|
372
|
+
string: '{"status": "ok"}'
|
287
373
|
http_version:
|
288
|
-
recorded_at: Tue,
|
374
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
375
|
+
- request:
|
376
|
+
method: post
|
377
|
+
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
378
|
+
body:
|
379
|
+
encoding: UTF-8
|
380
|
+
string: '{"series":[{"metric":"chef.resources.elapsed_time","points":[[1453838668,2.0]],"type":"gauge","host":"chef.handler.datadog.test-failed","device":null}]}'
|
381
|
+
headers:
|
382
|
+
Accept-Encoding:
|
383
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
384
|
+
Accept:
|
385
|
+
- "*/*"
|
386
|
+
User-Agent:
|
387
|
+
- Ruby
|
388
|
+
Content-Type:
|
389
|
+
- application/json
|
390
|
+
response:
|
391
|
+
status:
|
392
|
+
code: 202
|
393
|
+
message: Accepted
|
394
|
+
headers:
|
395
|
+
Content-Type:
|
396
|
+
- text/json
|
397
|
+
Date:
|
398
|
+
- Tue, 26 Jan 2016 20:04:27 GMT
|
399
|
+
Dd-Pool:
|
400
|
+
- propjoe
|
401
|
+
Strict-Transport-Security:
|
402
|
+
- max-age=15724800;
|
403
|
+
X-Content-Type-Options:
|
404
|
+
- nosniff
|
405
|
+
Content-Length:
|
406
|
+
- '16'
|
407
|
+
Connection:
|
408
|
+
- keep-alive
|
409
|
+
body:
|
410
|
+
encoding: UTF-8
|
411
|
+
string: '{"status": "ok"}'
|
412
|
+
http_version:
|
413
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
289
414
|
- request:
|
290
415
|
method: post
|
291
416
|
uri: https://app.datadoghq.com/api/v1/events?api_key=<API_KEY>
|
292
417
|
body:
|
293
418
|
encoding: UTF-8
|
294
|
-
string:
|
419
|
+
string: '{"msg_text":"\n$$$\n- [paws] (dynamically defined)\n- [ears] (dynamically
|
420
|
+
defined)\n- [nose] (dynamically defined)\n- [tail] (dynamically defined)\n-
|
421
|
+
[fur] (dynamically defined)\n\n$$$\n\nAlerting: @alice @bob\n\n$$$\nChef::Exceptions::UnsupportedAction:
|
422
|
+
Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","date_happened":1453838668,"msg_title":"Chef
|
423
|
+
failed in 2 seconds on chef.handler.datadog.test-failed ","priority":"normal","parent":null,"tags":["env:hostile","role:highlander","tag:tag:the_one_and_only"],"aggregation_key":"chef.handler.datadog.test-failed","alert_type":"error","event_type":"config_management.run","source_type_name":"chef","title":"Chef
|
424
|
+
failed in 2 seconds on chef.handler.datadog.test-failed ","text":"\n$$$\n-
|
295
425
|
[paws] (dynamically defined)\n- [ears] (dynamically defined)\n- [nose] (dynamically
|
296
426
|
defined)\n- [tail] (dynamically defined)\n- [fur] (dynamically defined)\n\n$$$\n\nAlerting:
|
297
|
-
@alice @bob\n\n$$$\nChef::Exceptions::UnsupportedAction: Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","
|
298
|
-
failed in 2 seconds on chef.handler.datadog.test-failed ","priority":"normal","parent":null,"tags":["env:hostile","role:highlander","tag:tag:the_one_and_only"],"aggregation_key":"chef.handler.datadog.test-failed","alert_type":"error","event_type":"config_management.run","source_type_name":"chef","title":"Chef
|
299
|
-
failed in 2 seconds on chef.handler.datadog.test-failed ","text":"Chef updated
|
300
|
-
6 resources out of 6 resources total.\n$$$\n- [paws] (dynamically defined)\n-
|
301
|
-
[ears] (dynamically defined)\n- [nose] (dynamically defined)\n- [tail] (dynamically
|
302
|
-
defined)\n- [fur] (dynamically defined)\n\n$$$\n\nAlerting: @alice @bob\n\n$$$\nChef::Exceptions::UnsupportedAction:
|
303
|
-
Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","host":"chef.handler.datadog.test-failed","device":null}'
|
427
|
+
@alice @bob\n\n$$$\nChef::Exceptions::UnsupportedAction: Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","host":"chef.handler.datadog.test-failed","device":null}'
|
304
428
|
headers:
|
429
|
+
Accept-Encoding:
|
430
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
305
431
|
Accept:
|
306
|
-
-
|
432
|
+
- "*/*"
|
307
433
|
User-Agent:
|
308
434
|
- Ruby
|
309
435
|
Content-Type:
|
@@ -314,37 +440,39 @@ http_interactions:
|
|
314
440
|
message: Accepted
|
315
441
|
headers:
|
316
442
|
Content-Type:
|
317
|
-
- text/
|
443
|
+
- text/plain; charset=utf-8
|
318
444
|
Date:
|
319
|
-
- Tue,
|
320
|
-
|
321
|
-
-
|
445
|
+
- Tue, 26 Jan 2016 20:04:27 GMT
|
446
|
+
Dd-Pool:
|
447
|
+
- propjoe
|
448
|
+
Strict-Transport-Security:
|
449
|
+
- max-age=15724800;
|
450
|
+
X-Content-Type-Options:
|
451
|
+
- nosniff
|
322
452
|
Content-Length:
|
323
|
-
- '
|
453
|
+
- '676'
|
324
454
|
Connection:
|
325
455
|
- keep-alive
|
326
456
|
body:
|
327
|
-
encoding:
|
328
|
-
string:
|
329
|
-
|
330
|
-
", "url": "https://app.datadoghq.com/event/jump_to?event_id=2449507892182102265",
|
331
|
-
"text": "Chef updated 6 resources out of 6 resources total.\n$$$\n- [paws]
|
457
|
+
encoding: UTF-8
|
458
|
+
string: '{"status":"ok","event":{"id":381236701686654829,"title":"Chef failed
|
459
|
+
in 2 seconds on chef.handler.datadog.test-failed ","text":"\n$$$\n- [paws]
|
332
460
|
(dynamically defined)\n- [ears] (dynamically defined)\n- [nose] (dynamically
|
333
461
|
defined)\n- [tail] (dynamically defined)\n- [fur] (dynamically defined)\n\n$$$\n\nAlerting:
|
334
|
-
@alice @bob\n\n$$$\nChef::Exceptions::UnsupportedAction: Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n",
|
335
|
-
"tags": ["env:hostile", "role:highlander", "tag:tag:the_one_and_only"], "related_event_id":
|
336
|
-
null, "id": 2449507892182102265}}'
|
462
|
+
@alice @bob\n\n$$$\nChef::Exceptions::UnsupportedAction: Something awry.\n$$$\n\n$$$\nwhiskers.rb:2\npaws.rb:1\nfile.rb:2\nfile.rb:1\n$$$\n","date_happened":1453838668,"handle":null,"priority":"normal","related_event_id":null,"tags":["env:hostile","role:highlander","tag:tag:the_one_and_only"],"url":"https://app.datadoghq.com/event/event?id=381236701686654829"}}'
|
337
463
|
http_version:
|
338
|
-
recorded_at: Tue,
|
464
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
339
465
|
- request:
|
340
466
|
method: put
|
341
467
|
uri: https://app.datadoghq.com/api/v1/tags/hosts/chef.handler.datadog.test-failed?api_key=<API_KEY>&application_key=<APPLICATION_KEY>&source=chef
|
342
468
|
body:
|
343
469
|
encoding: UTF-8
|
344
|
-
string:
|
470
|
+
string: '{"tags":["env:hostile","role:highlander","tag:tag:the_one_and_only"]}'
|
345
471
|
headers:
|
472
|
+
Accept-Encoding:
|
473
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
346
474
|
Accept:
|
347
|
-
-
|
475
|
+
- "*/*"
|
348
476
|
User-Agent:
|
349
477
|
- Ruby
|
350
478
|
Content-Type:
|
@@ -359,19 +487,27 @@ http_interactions:
|
|
359
487
|
Content-Type:
|
360
488
|
- application/json
|
361
489
|
Date:
|
362
|
-
- Tue,
|
490
|
+
- Tue, 26 Jan 2016 20:04:27 GMT
|
491
|
+
Dd-Pool:
|
492
|
+
- dogweb_sameorig
|
363
493
|
Pragma:
|
364
494
|
- no-cache
|
365
|
-
|
366
|
-
-
|
495
|
+
Strict-Transport-Security:
|
496
|
+
- max-age=15724800;
|
497
|
+
X-Content-Type-Options:
|
498
|
+
- nosniff
|
499
|
+
X-Dd-Debug:
|
500
|
+
- QKcGho/VVHvOvAFq4WeaqBhqhL8eYL3K9CW+TToIP+o=
|
501
|
+
X-Frame-Options:
|
502
|
+
- SAMEORIGIN
|
367
503
|
Content-Length:
|
368
504
|
- '116'
|
369
505
|
Connection:
|
370
506
|
- keep-alive
|
371
507
|
body:
|
372
|
-
encoding:
|
373
|
-
string:
|
508
|
+
encoding: UTF-8
|
509
|
+
string: '{"host": "chef.handler.datadog.test-failed", "tags": ["tag:tag:the_one_and_only",
|
374
510
|
"env:hostile", "role:highlander"]}'
|
375
511
|
http_version:
|
376
|
-
recorded_at: Tue,
|
377
|
-
recorded_with: VCR
|
512
|
+
recorded_at: Tue, 26 Jan 2016 20:04:28 GMT
|
513
|
+
recorded_with: VCR 3.0.1
|