chef-handler-datadog 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -1
- data/lib/chef/handler/datadog.rb +2 -1
- data/lib/chef/handler/datadog_chef_tags.rb +24 -16
- data/lib/chef_handler_datadog.rb +1 -1
- data/spec/datadog_spec.rb +34 -3
- data/spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/allows_for_empty_tag_prefix.yml +251 -0
- data/spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/allows_for_user-specified_tag_prefix.yml +251 -0
- data/spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/sets_the_role_and_env_and_tags.yml +10 -10
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79a5cd52c38bd2ea660a477778dc45fc24672bb6
|
4
|
+
data.tar.gz: e2fbe94dc27216f97ceaebab7021bb17f5c013dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 467c6a353533afc854f8e23bed60847d050a0f34f5d2ead72e692ca9e946868b5c2ef83d35fafe05e56993952cabd1b2da25b458015d62e0e615d22c287d2ff4
|
7
|
+
data.tar.gz: c42c73edaa05e589240b59c1971901fdc7d48297be5d06a3901e82a51ac23002692ead16bfca3f3be94125ccd6455968d9dd11f941fc180d6ecdc913341f21f6
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
Changes
|
2
2
|
=======
|
3
3
|
|
4
|
+
# 0.9.0 / 2016-03-22
|
5
|
+
|
6
|
+
* [FEATURE] Enable users to select tag prefix [#81][] [@mstepniowski][]
|
7
|
+
|
4
8
|
# 0.8.0 / 2016-03-01
|
5
9
|
|
6
10
|
* [FEATURE] Add success/failure metric [#75][] [@jhulten][]
|
@@ -84,13 +88,15 @@ And all other versions were prior to this. See git history for more.
|
|
84
88
|
[#75]: https://github.com/DataDog/chef-handler-datadog/issues/75
|
85
89
|
[#78]: https://github.com/DataDog/chef-handler-datadog/issues/78
|
86
90
|
[#80]: https://github.com/DataDog/chef-handler-datadog/issues/80
|
91
|
+
[#81]: https://github.com/DataDog/chef-handler-datadog/issues/81
|
87
92
|
[@alq]: https://github.com/alq
|
88
93
|
[@bigbam505]: https://github.com/bigbam505
|
89
94
|
[@datwiz]: https://github.com/datwiz
|
90
95
|
[@dwradcliffe]: https://github.com/dwradcliffe
|
91
96
|
[@jhulten]: https://github.com/jhulten
|
92
97
|
[@miketheman]: https://github.com/miketheman
|
98
|
+
[@mstepniowski]: https://github.com/mstepniowski
|
93
99
|
[@olivielpeau]: https://github.com/olivielpeau
|
94
100
|
[@owen]: https://github.com/owen
|
95
101
|
[@remh]: https://github.com/remh
|
96
|
-
[@rlaveycal]: https://github.com/rlaveycal
|
102
|
+
[@rlaveycal]: https://github.com/rlaveycal
|
data/lib/chef/handler/datadog.rb
CHANGED
@@ -55,7 +55,8 @@ class Chef
|
|
55
55
|
.with_hostname(hostname)
|
56
56
|
.with_run_status(run_status)
|
57
57
|
.with_application_key(config[:application_key])
|
58
|
-
.
|
58
|
+
.with_tag_prefix(config[:tag_prefix])
|
59
|
+
.with_retries(config[:tags_submission_retries])
|
59
60
|
|
60
61
|
# Build the chef event information
|
61
62
|
@event =
|
@@ -10,6 +10,7 @@ class DatadogChefTags
|
|
10
10
|
@node = nil
|
11
11
|
@run_status = nil
|
12
12
|
@application_key = nil
|
13
|
+
@tag_prefix = 'tag:'
|
13
14
|
@retries = 0
|
14
15
|
@combined_host_tags = nil
|
15
16
|
end
|
@@ -23,11 +24,6 @@ class DatadogChefTags
|
|
23
24
|
self
|
24
25
|
end
|
25
26
|
|
26
|
-
# attribute accessor for combined array of tags
|
27
|
-
#
|
28
|
-
# @return [Array] the set of host tags based off the chef run
|
29
|
-
attr_reader :combined_host_tags
|
30
|
-
|
31
27
|
# set the chef run status used for the report
|
32
28
|
#
|
33
29
|
# @param run_status [Chef::RunStatus] current chef run status
|
@@ -38,13 +34,6 @@ class DatadogChefTags
|
|
38
34
|
# Selects all [env, roles, tags] from the Node's object and reformats
|
39
35
|
# them to `key:value` e.g. `role:database-master`.
|
40
36
|
@node = run_status.node
|
41
|
-
# generate the combined tags
|
42
|
-
chef_env = node_env.split # converts a string into an array
|
43
|
-
chef_roles = node_roles
|
44
|
-
chef_tags = node_tags
|
45
|
-
|
46
|
-
# Combine (union) all arrays. Removes duplicates if found.
|
47
|
-
@combined_host_tags = chef_env | chef_roles | chef_tags
|
48
37
|
self
|
49
38
|
end
|
50
39
|
|
@@ -77,6 +66,15 @@ class DatadogChefTags
|
|
77
66
|
self
|
78
67
|
end
|
79
68
|
|
69
|
+
# set the prefix to be added to all Chef tags
|
70
|
+
#
|
71
|
+
# @param tag_prefix [String] prefix to be added to all Chef tags
|
72
|
+
# @return [DatadogChefTags] instance reference to self enabling method chaining
|
73
|
+
def with_tag_prefix(tag_prefix)
|
74
|
+
@tag_prefix = tag_prefix unless tag_prefix.nil?
|
75
|
+
self
|
76
|
+
end
|
77
|
+
|
80
78
|
# set the number of retries when sending tags, when the host is not yet present
|
81
79
|
# on Datadog
|
82
80
|
#
|
@@ -89,11 +87,12 @@ class DatadogChefTags
|
|
89
87
|
|
90
88
|
# send updated chef run generated tags to Datadog
|
91
89
|
def send_update_to_datadog
|
90
|
+
tags = combined_host_tags
|
92
91
|
retries = @retries
|
93
92
|
begin
|
94
93
|
loop do
|
95
94
|
should_retry = false
|
96
|
-
rc = @dog.update_tags(@hostname,
|
95
|
+
rc = @dog.update_tags(@hostname, tags, 'chef')
|
97
96
|
# See FIXME in DatadogChefEvents::emit_to_datadog about why I feel dirty repeating this code here
|
98
97
|
if rc.length < 2
|
99
98
|
Chef::Log.warn("Unexpected response from Datadog Tags API: #{rc}")
|
@@ -104,9 +103,9 @@ class DatadogChefTags
|
|
104
103
|
retries -= 1
|
105
104
|
should_retry = true
|
106
105
|
elsif rc[0].to_i / 100 != 2
|
107
|
-
Chef::Log.warn("Could not submit #{
|
106
|
+
Chef::Log.warn("Could not submit #{tags} tags for #{@hostname} to Datadog: #{rc}")
|
108
107
|
else
|
109
|
-
Chef::Log.debug("Successfully updated #{@hostname}'s tags to #{
|
108
|
+
Chef::Log.debug("Successfully updated #{@hostname}'s tags to #{tags.join(', ')}")
|
110
109
|
end
|
111
110
|
end
|
112
111
|
break unless should_retry
|
@@ -116,6 +115,14 @@ class DatadogChefTags
|
|
116
115
|
end
|
117
116
|
end
|
118
117
|
|
118
|
+
# return a combined array of tags that should be sent to Datadog
|
119
|
+
#
|
120
|
+
# @return [Array] the set of host tags based off the chef run
|
121
|
+
def combined_host_tags
|
122
|
+
# Combine (union) all arrays. Removes duplicates if found.
|
123
|
+
node_env.split | node_roles | node_tags
|
124
|
+
end
|
125
|
+
|
119
126
|
private
|
120
127
|
|
121
128
|
def node_roles
|
@@ -127,6 +134,7 @@ class DatadogChefTags
|
|
127
134
|
end
|
128
135
|
|
129
136
|
def node_tags
|
130
|
-
|
137
|
+
return [] unless @node.tags
|
138
|
+
@node.tags.map { |tag| "#{@tag_prefix}#{tag}" }
|
131
139
|
end
|
132
140
|
end # end class DatadogChefTags
|
data/lib/chef_handler_datadog.rb
CHANGED
data/spec/datadog_spec.rb
CHANGED
@@ -28,6 +28,7 @@ describe Chef::Handler::Datadog, :vcr => :new_episodes do
|
|
28
28
|
Chef::Handler::Datadog.new(
|
29
29
|
'api_key' => API_KEY,
|
30
30
|
'application_key' => APPLICATION_KEY,
|
31
|
+
'tag_prefix' => 'tag',
|
31
32
|
)
|
32
33
|
end
|
33
34
|
end
|
@@ -203,7 +204,7 @@ describe Chef::Handler::Datadog, :vcr => :new_episodes do
|
|
203
204
|
|
204
205
|
describe 'when specified' do
|
205
206
|
it 'sets the role and env and tags' do
|
206
|
-
@node.normal.tags = ['the_one_and_only']
|
207
|
+
@node.normal.tags = ['the_one_and_only', 'datacenter:my-cloud']
|
207
208
|
@handler.run_report_unsafe(@run_status)
|
208
209
|
|
209
210
|
expect(a_request(:put, HOST_TAG_ENDPOINT + @node.name).with(
|
@@ -211,10 +212,40 @@ describe Chef::Handler::Datadog, :vcr => :new_episodes do
|
|
211
212
|
'application_key' => @handler.config[:application_key],
|
212
213
|
'source' => 'chef' },
|
213
214
|
:body => hash_including(:tags => [
|
214
|
-
'env:hostile', 'role:highlander', 'tag:the_one_and_only'
|
215
|
+
'env:hostile', 'role:highlander', 'tag:the_one_and_only', 'tag:datacenter:my-cloud'
|
215
216
|
]),
|
216
217
|
)).to have_been_made.times(1)
|
217
218
|
end
|
219
|
+
|
220
|
+
it 'allows for user-specified tag prefix' do
|
221
|
+
@node.normal.tags = ['the_one_and_only', 'datacenter:my-cloud']
|
222
|
+
@handler.config[:tag_prefix] = 'custom-prefix-'
|
223
|
+
@handler.run_report_unsafe(@run_status)
|
224
|
+
|
225
|
+
expect(a_request(:put, HOST_TAG_ENDPOINT + @node.name).with(
|
226
|
+
:query => { 'api_key' => @handler.config[:api_key],
|
227
|
+
'application_key' => @handler.config[:application_key],
|
228
|
+
'source' => 'chef' },
|
229
|
+
:body => hash_including(:tags => [
|
230
|
+
'env:hostile', 'role:highlander', 'custom-prefix-the_one_and_only', 'custom-prefix-datacenter:my-cloud'
|
231
|
+
]),
|
232
|
+
)).to have_been_made.times(1)
|
233
|
+
end
|
234
|
+
|
235
|
+
it 'allows for empty tag prefix' do
|
236
|
+
@node.normal.tags = ['the_one_and_only', 'datacenter:my-cloud']
|
237
|
+
@handler.config[:tag_prefix] = ''
|
238
|
+
@handler.run_report_unsafe(@run_status)
|
239
|
+
|
240
|
+
expect(a_request(:put, HOST_TAG_ENDPOINT + @node.name).with(
|
241
|
+
:query => { 'api_key' => @handler.config[:api_key],
|
242
|
+
'application_key' => @handler.config[:application_key],
|
243
|
+
'source' => 'chef' },
|
244
|
+
:body => hash_including(:tags => [
|
245
|
+
'env:hostile', 'role:highlander', 'the_one_and_only', 'datacenter:my-cloud'
|
246
|
+
]),
|
247
|
+
)).to have_been_made.times(1)
|
248
|
+
end
|
218
249
|
end
|
219
250
|
|
220
251
|
describe 'when unspecified' do
|
@@ -457,7 +488,7 @@ describe Chef::Handler::Datadog, :vcr => :new_episodes do
|
|
457
488
|
)).to have_been_made.times(1)
|
458
489
|
end
|
459
490
|
end
|
460
|
-
end
|
491
|
+
end
|
461
492
|
|
462
493
|
# TODO: test failures:
|
463
494
|
# @run_status.exception = Exception.new('Boy howdy!')
|
data/spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/allows_for_empty_tag_prefix.yml
ADDED
@@ -0,0 +1,251 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"series":[{"metric":"chef.run.success","points":[[1458250870,1.0]],"type":"counter","host":"chef.handler.datadog.test-tags","device":null}]}'
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
Content-Type:
|
17
|
+
- application/json
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 202
|
21
|
+
message: Accepted
|
22
|
+
headers:
|
23
|
+
Content-Type:
|
24
|
+
- text/json
|
25
|
+
Date:
|
26
|
+
- Thu, 17 Mar 2016 21:41:05 GMT
|
27
|
+
Dd-Pool:
|
28
|
+
- propjoe
|
29
|
+
Strict-Transport-Security:
|
30
|
+
- max-age=15724800;
|
31
|
+
X-Content-Type-Options:
|
32
|
+
- nosniff
|
33
|
+
Content-Length:
|
34
|
+
- '16'
|
35
|
+
Connection:
|
36
|
+
- keep-alive
|
37
|
+
body:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: '{"status": "ok"}'
|
40
|
+
http_version:
|
41
|
+
recorded_at: Thu, 17 Mar 2016 21:41:10 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":[[1458250870,0.0]],"type":"gauge","host":"chef.handler.datadog.test-tags","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
|
+
- Thu, 17 Mar 2016 21:41:05 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"}'
|
79
|
+
http_version:
|
80
|
+
recorded_at: Thu, 17 Mar 2016 21:41:10 GMT
|
81
|
+
- request:
|
82
|
+
method: post
|
83
|
+
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
84
|
+
body:
|
85
|
+
encoding: UTF-8
|
86
|
+
string: '{"series":[{"metric":"chef.resources.updated","points":[[1458250870,0.0]],"type":"gauge","host":"chef.handler.datadog.test-tags","device":null}]}'
|
87
|
+
headers:
|
88
|
+
Accept-Encoding:
|
89
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
90
|
+
Accept:
|
91
|
+
- "*/*"
|
92
|
+
User-Agent:
|
93
|
+
- Ruby
|
94
|
+
Content-Type:
|
95
|
+
- application/json
|
96
|
+
response:
|
97
|
+
status:
|
98
|
+
code: 202
|
99
|
+
message: Accepted
|
100
|
+
headers:
|
101
|
+
Content-Type:
|
102
|
+
- text/json
|
103
|
+
Date:
|
104
|
+
- Thu, 17 Mar 2016 21:41:05 GMT
|
105
|
+
Dd-Pool:
|
106
|
+
- propjoe
|
107
|
+
Strict-Transport-Security:
|
108
|
+
- max-age=15724800;
|
109
|
+
X-Content-Type-Options:
|
110
|
+
- nosniff
|
111
|
+
Content-Length:
|
112
|
+
- '16'
|
113
|
+
Connection:
|
114
|
+
- keep-alive
|
115
|
+
body:
|
116
|
+
encoding: UTF-8
|
117
|
+
string: '{"status": "ok"}'
|
118
|
+
http_version:
|
119
|
+
recorded_at: Thu, 17 Mar 2016 21:41:10 GMT
|
120
|
+
- request:
|
121
|
+
method: post
|
122
|
+
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
123
|
+
body:
|
124
|
+
encoding: UTF-8
|
125
|
+
string: '{"series":[{"metric":"chef.resources.elapsed_time","points":[[1458250870,5.0]],"type":"gauge","host":"chef.handler.datadog.test-tags","device":null}]}'
|
126
|
+
headers:
|
127
|
+
Accept-Encoding:
|
128
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
129
|
+
Accept:
|
130
|
+
- "*/*"
|
131
|
+
User-Agent:
|
132
|
+
- Ruby
|
133
|
+
Content-Type:
|
134
|
+
- application/json
|
135
|
+
response:
|
136
|
+
status:
|
137
|
+
code: 202
|
138
|
+
message: Accepted
|
139
|
+
headers:
|
140
|
+
Content-Type:
|
141
|
+
- text/json
|
142
|
+
Date:
|
143
|
+
- Thu, 17 Mar 2016 21:41:05 GMT
|
144
|
+
Dd-Pool:
|
145
|
+
- propjoe
|
146
|
+
Strict-Transport-Security:
|
147
|
+
- max-age=15724800;
|
148
|
+
X-Content-Type-Options:
|
149
|
+
- nosniff
|
150
|
+
Content-Length:
|
151
|
+
- '16'
|
152
|
+
Connection:
|
153
|
+
- keep-alive
|
154
|
+
body:
|
155
|
+
encoding: UTF-8
|
156
|
+
string: '{"status": "ok"}'
|
157
|
+
http_version:
|
158
|
+
recorded_at: Thu, 17 Mar 2016 21:41:10 GMT
|
159
|
+
- request:
|
160
|
+
method: post
|
161
|
+
uri: https://app.datadoghq.com/api/v1/events?api_key=<API_KEY>
|
162
|
+
body:
|
163
|
+
encoding: UTF-8
|
164
|
+
string: '{"msg_text":"Chef updated 0 resources out of 0 resources total.","date_happened":1458250870,"msg_title":"Chef
|
165
|
+
completed in 5 seconds on chef.handler.datadog.test-tags ","priority":"low","parent":null,"tags":null,"aggregation_key":"chef.handler.datadog.test-tags","alert_type":"success","event_type":"config_management.run","source_type_name":"chef","title":"Chef
|
166
|
+
completed in 5 seconds on chef.handler.datadog.test-tags ","text":"Chef updated
|
167
|
+
0 resources out of 0 resources total.","host":"chef.handler.datadog.test-tags","device":null}'
|
168
|
+
headers:
|
169
|
+
Accept-Encoding:
|
170
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
171
|
+
Accept:
|
172
|
+
- "*/*"
|
173
|
+
User-Agent:
|
174
|
+
- Ruby
|
175
|
+
Content-Type:
|
176
|
+
- application/json
|
177
|
+
response:
|
178
|
+
status:
|
179
|
+
code: 202
|
180
|
+
message: Accepted
|
181
|
+
headers:
|
182
|
+
Content-Type:
|
183
|
+
- text/plain; charset=utf-8
|
184
|
+
Date:
|
185
|
+
- Thu, 17 Mar 2016 21:41:05 GMT
|
186
|
+
Dd-Pool:
|
187
|
+
- propjoe
|
188
|
+
Strict-Transport-Security:
|
189
|
+
- max-age=15724800;
|
190
|
+
X-Content-Type-Options:
|
191
|
+
- nosniff
|
192
|
+
Content-Length:
|
193
|
+
- '344'
|
194
|
+
Connection:
|
195
|
+
- keep-alive
|
196
|
+
body:
|
197
|
+
encoding: UTF-8
|
198
|
+
string: '{"status":"ok","event":{"id":455261105802551673,"title":"Chef completed
|
199
|
+
in 5 seconds on chef.handler.datadog.test-tags ","text":"Chef updated 0 resources
|
200
|
+
out of 0 resources total.","date_happened":1458250870,"handle":null,"priority":"low","related_event_id":null,"tags":null,"url":"https://app.datadoghq.com/event/event?id=455261105802551673"}}'
|
201
|
+
http_version:
|
202
|
+
recorded_at: Thu, 17 Mar 2016 21:41:10 GMT
|
203
|
+
- request:
|
204
|
+
method: put
|
205
|
+
uri: https://app.datadoghq.com/api/v1/tags/hosts/chef.handler.datadog.test-tags?api_key=<API_KEY>&application_key=<APPLICATION_KEY>&source=chef
|
206
|
+
body:
|
207
|
+
encoding: UTF-8
|
208
|
+
string: '{"tags":["env:hostile","role:highlander"]}'
|
209
|
+
headers:
|
210
|
+
Accept-Encoding:
|
211
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
212
|
+
Accept:
|
213
|
+
- "*/*"
|
214
|
+
User-Agent:
|
215
|
+
- Ruby
|
216
|
+
Content-Type:
|
217
|
+
- application/json
|
218
|
+
response:
|
219
|
+
status:
|
220
|
+
code: 201
|
221
|
+
message: Created
|
222
|
+
headers:
|
223
|
+
Cache-Control:
|
224
|
+
- no-cache
|
225
|
+
Content-Type:
|
226
|
+
- application/json
|
227
|
+
Date:
|
228
|
+
- Thu, 17 Mar 2016 21:41:05 GMT
|
229
|
+
Dd-Pool:
|
230
|
+
- dogweb_sameorig
|
231
|
+
Pragma:
|
232
|
+
- no-cache
|
233
|
+
Strict-Transport-Security:
|
234
|
+
- max-age=15724800;
|
235
|
+
X-Content-Type-Options:
|
236
|
+
- nosniff
|
237
|
+
X-Dd-Debug:
|
238
|
+
- Bj/SqNU1vbZGxNGffIRtmaWe7MKGSPoKHC3+ZhLAjqk=
|
239
|
+
X-Frame-Options:
|
240
|
+
- SAMEORIGIN
|
241
|
+
Content-Length:
|
242
|
+
- '86'
|
243
|
+
Connection:
|
244
|
+
- keep-alive
|
245
|
+
body:
|
246
|
+
encoding: UTF-8
|
247
|
+
string: '{"host": "chef.handler.datadog.test-tags", "tags": ["env:hostile",
|
248
|
+
"role:highlander"]}'
|
249
|
+
http_version:
|
250
|
+
recorded_at: Thu, 17 Mar 2016 21:41:10 GMT
|
251
|
+
recorded_with: VCR 3.0.1
|
@@ -0,0 +1,251 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"series":[{"metric":"chef.run.success","points":[[1458250868,1.0]],"type":"counter","host":"chef.handler.datadog.test-tags","device":null}]}'
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
Content-Type:
|
17
|
+
- application/json
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 202
|
21
|
+
message: Accepted
|
22
|
+
headers:
|
23
|
+
Content-Type:
|
24
|
+
- text/json
|
25
|
+
Date:
|
26
|
+
- Thu, 17 Mar 2016 21:41:04 GMT
|
27
|
+
Dd-Pool:
|
28
|
+
- propjoe
|
29
|
+
Strict-Transport-Security:
|
30
|
+
- max-age=15724800;
|
31
|
+
X-Content-Type-Options:
|
32
|
+
- nosniff
|
33
|
+
Content-Length:
|
34
|
+
- '16'
|
35
|
+
Connection:
|
36
|
+
- keep-alive
|
37
|
+
body:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: '{"status": "ok"}'
|
40
|
+
http_version:
|
41
|
+
recorded_at: Thu, 17 Mar 2016 21:41:08 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":[[1458250868,0.0]],"type":"gauge","host":"chef.handler.datadog.test-tags","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
|
+
- Thu, 17 Mar 2016 21:41:04 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"}'
|
79
|
+
http_version:
|
80
|
+
recorded_at: Thu, 17 Mar 2016 21:41:08 GMT
|
81
|
+
- request:
|
82
|
+
method: post
|
83
|
+
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
84
|
+
body:
|
85
|
+
encoding: UTF-8
|
86
|
+
string: '{"series":[{"metric":"chef.resources.updated","points":[[1458250868,0.0]],"type":"gauge","host":"chef.handler.datadog.test-tags","device":null}]}'
|
87
|
+
headers:
|
88
|
+
Accept-Encoding:
|
89
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
90
|
+
Accept:
|
91
|
+
- "*/*"
|
92
|
+
User-Agent:
|
93
|
+
- Ruby
|
94
|
+
Content-Type:
|
95
|
+
- application/json
|
96
|
+
response:
|
97
|
+
status:
|
98
|
+
code: 202
|
99
|
+
message: Accepted
|
100
|
+
headers:
|
101
|
+
Content-Type:
|
102
|
+
- text/json
|
103
|
+
Date:
|
104
|
+
- Thu, 17 Mar 2016 21:41:04 GMT
|
105
|
+
Dd-Pool:
|
106
|
+
- propjoe
|
107
|
+
Strict-Transport-Security:
|
108
|
+
- max-age=15724800;
|
109
|
+
X-Content-Type-Options:
|
110
|
+
- nosniff
|
111
|
+
Content-Length:
|
112
|
+
- '16'
|
113
|
+
Connection:
|
114
|
+
- keep-alive
|
115
|
+
body:
|
116
|
+
encoding: UTF-8
|
117
|
+
string: '{"status": "ok"}'
|
118
|
+
http_version:
|
119
|
+
recorded_at: Thu, 17 Mar 2016 21:41:08 GMT
|
120
|
+
- request:
|
121
|
+
method: post
|
122
|
+
uri: https://app.datadoghq.com/api/v1/series?api_key=<API_KEY>
|
123
|
+
body:
|
124
|
+
encoding: UTF-8
|
125
|
+
string: '{"series":[{"metric":"chef.resources.elapsed_time","points":[[1458250868,5.0]],"type":"gauge","host":"chef.handler.datadog.test-tags","device":null}]}'
|
126
|
+
headers:
|
127
|
+
Accept-Encoding:
|
128
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
129
|
+
Accept:
|
130
|
+
- "*/*"
|
131
|
+
User-Agent:
|
132
|
+
- Ruby
|
133
|
+
Content-Type:
|
134
|
+
- application/json
|
135
|
+
response:
|
136
|
+
status:
|
137
|
+
code: 202
|
138
|
+
message: Accepted
|
139
|
+
headers:
|
140
|
+
Content-Type:
|
141
|
+
- text/json
|
142
|
+
Date:
|
143
|
+
- Thu, 17 Mar 2016 21:41:04 GMT
|
144
|
+
Dd-Pool:
|
145
|
+
- propjoe
|
146
|
+
Strict-Transport-Security:
|
147
|
+
- max-age=15724800;
|
148
|
+
X-Content-Type-Options:
|
149
|
+
- nosniff
|
150
|
+
Content-Length:
|
151
|
+
- '16'
|
152
|
+
Connection:
|
153
|
+
- keep-alive
|
154
|
+
body:
|
155
|
+
encoding: UTF-8
|
156
|
+
string: '{"status": "ok"}'
|
157
|
+
http_version:
|
158
|
+
recorded_at: Thu, 17 Mar 2016 21:41:08 GMT
|
159
|
+
- request:
|
160
|
+
method: post
|
161
|
+
uri: https://app.datadoghq.com/api/v1/events?api_key=<API_KEY>
|
162
|
+
body:
|
163
|
+
encoding: UTF-8
|
164
|
+
string: '{"msg_text":"Chef updated 0 resources out of 0 resources total.","date_happened":1458250868,"msg_title":"Chef
|
165
|
+
completed in 5 seconds on chef.handler.datadog.test-tags ","priority":"low","parent":null,"tags":null,"aggregation_key":"chef.handler.datadog.test-tags","alert_type":"success","event_type":"config_management.run","source_type_name":"chef","title":"Chef
|
166
|
+
completed in 5 seconds on chef.handler.datadog.test-tags ","text":"Chef updated
|
167
|
+
0 resources out of 0 resources total.","host":"chef.handler.datadog.test-tags","device":null}'
|
168
|
+
headers:
|
169
|
+
Accept-Encoding:
|
170
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
171
|
+
Accept:
|
172
|
+
- "*/*"
|
173
|
+
User-Agent:
|
174
|
+
- Ruby
|
175
|
+
Content-Type:
|
176
|
+
- application/json
|
177
|
+
response:
|
178
|
+
status:
|
179
|
+
code: 202
|
180
|
+
message: Accepted
|
181
|
+
headers:
|
182
|
+
Content-Type:
|
183
|
+
- text/plain; charset=utf-8
|
184
|
+
Date:
|
185
|
+
- Thu, 17 Mar 2016 21:41:04 GMT
|
186
|
+
Dd-Pool:
|
187
|
+
- propjoe
|
188
|
+
Strict-Transport-Security:
|
189
|
+
- max-age=15724800;
|
190
|
+
X-Content-Type-Options:
|
191
|
+
- nosniff
|
192
|
+
Content-Length:
|
193
|
+
- '344'
|
194
|
+
Connection:
|
195
|
+
- keep-alive
|
196
|
+
body:
|
197
|
+
encoding: UTF-8
|
198
|
+
string: '{"status":"ok","event":{"id":455261092784026415,"title":"Chef completed
|
199
|
+
in 5 seconds on chef.handler.datadog.test-tags ","text":"Chef updated 0 resources
|
200
|
+
out of 0 resources total.","date_happened":1458250868,"handle":null,"priority":"low","related_event_id":null,"tags":null,"url":"https://app.datadoghq.com/event/event?id=455261092784026415"}}'
|
201
|
+
http_version:
|
202
|
+
recorded_at: Thu, 17 Mar 2016 21:41:08 GMT
|
203
|
+
- request:
|
204
|
+
method: put
|
205
|
+
uri: https://app.datadoghq.com/api/v1/tags/hosts/chef.handler.datadog.test-tags?api_key=<API_KEY>&application_key=<APPLICATION_KEY>&source=chef
|
206
|
+
body:
|
207
|
+
encoding: UTF-8
|
208
|
+
string: '{"tags":["env:hostile","role:highlander"]}'
|
209
|
+
headers:
|
210
|
+
Accept-Encoding:
|
211
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
212
|
+
Accept:
|
213
|
+
- "*/*"
|
214
|
+
User-Agent:
|
215
|
+
- Ruby
|
216
|
+
Content-Type:
|
217
|
+
- application/json
|
218
|
+
response:
|
219
|
+
status:
|
220
|
+
code: 201
|
221
|
+
message: Created
|
222
|
+
headers:
|
223
|
+
Cache-Control:
|
224
|
+
- no-cache
|
225
|
+
Content-Type:
|
226
|
+
- application/json
|
227
|
+
Date:
|
228
|
+
- Thu, 17 Mar 2016 21:41:04 GMT
|
229
|
+
Dd-Pool:
|
230
|
+
- dogweb_sameorig
|
231
|
+
Pragma:
|
232
|
+
- no-cache
|
233
|
+
Strict-Transport-Security:
|
234
|
+
- max-age=15724800;
|
235
|
+
X-Content-Type-Options:
|
236
|
+
- nosniff
|
237
|
+
X-Dd-Debug:
|
238
|
+
- QYSb9ZUj91gVP/VyhgpNnm/M7M7fif9QER6YVwRajIA=
|
239
|
+
X-Frame-Options:
|
240
|
+
- SAMEORIGIN
|
241
|
+
Content-Length:
|
242
|
+
- '86'
|
243
|
+
Connection:
|
244
|
+
- keep-alive
|
245
|
+
body:
|
246
|
+
encoding: UTF-8
|
247
|
+
string: '{"host": "chef.handler.datadog.test-tags", "tags": ["env:hostile",
|
248
|
+
"role:highlander"]}'
|
249
|
+
http_version:
|
250
|
+
recorded_at: Thu, 17 Mar 2016 21:41:08 GMT
|
251
|
+
recorded_with: VCR 3.0.1
|
@@ -161,8 +161,8 @@ http_interactions:
|
|
161
161
|
uri: https://app.datadoghq.com/api/v1/events?api_key=<API_KEY>
|
162
162
|
body:
|
163
163
|
encoding: UTF-8
|
164
|
-
string: '{"msg_text":"Chef updated 0 resources out of 0 resources total.","date_happened":
|
165
|
-
completed in 5 seconds on chef.handler.datadog.test-tags ","priority":"low","parent":null,"tags":["env:hostile","role:highlander","tag:the_one_and_only"],"aggregation_key":"chef.handler.datadog.test-tags","alert_type":"success","event_type":"config_management.run","source_type_name":"chef","title":"Chef
|
164
|
+
string: '{"msg_text":"Chef updated 0 resources out of 0 resources total.","date_happened":1458601273,"msg_title":"Chef
|
165
|
+
completed in 5 seconds on chef.handler.datadog.test-tags ","priority":"low","parent":null,"tags":["env:hostile","role:highlander","tag:the_one_and_only","tag:datacenter:my-cloud"],"aggregation_key":"chef.handler.datadog.test-tags","alert_type":"success","event_type":"config_management.run","source_type_name":"chef","title":"Chef
|
166
166
|
completed in 5 seconds on chef.handler.datadog.test-tags ","text":"Chef updated
|
167
167
|
0 resources out of 0 resources total.","host":"chef.handler.datadog.test-tags","device":null}'
|
168
168
|
headers:
|
@@ -190,22 +190,22 @@ http_interactions:
|
|
190
190
|
X-Content-Type-Options:
|
191
191
|
- nosniff
|
192
192
|
Content-Length:
|
193
|
-
- '
|
193
|
+
- '422'
|
194
194
|
Connection:
|
195
195
|
- keep-alive
|
196
196
|
body:
|
197
197
|
encoding: UTF-8
|
198
|
-
string: '{"status":"ok","event":{"id":
|
198
|
+
string: '{"status":"ok","event":{"id":461139917332183580,"title":"Chef completed
|
199
199
|
in 5 seconds on chef.handler.datadog.test-tags ","text":"Chef updated 0 resources
|
200
|
-
out of 0 resources total.","date_happened":
|
200
|
+
out of 0 resources total.","date_happened":1458601273,"handle":null,"priority":"low","related_event_id":null,"tags":["env:hostile","role:highlander","tag:the_one_and_only","tag:datacenter:my-cloud"],"url":"https://app.datadoghq.com/event/event?id=461139917332183580"}}'
|
201
201
|
http_version:
|
202
|
-
recorded_at:
|
202
|
+
recorded_at: Mon, 21 Mar 2016 23:01:13 GMT
|
203
203
|
- request:
|
204
204
|
method: put
|
205
205
|
uri: https://app.datadoghq.com/api/v1/tags/hosts/chef.handler.datadog.test-tags?api_key=<API_KEY>&application_key=<APPLICATION_KEY>&source=chef
|
206
206
|
body:
|
207
207
|
encoding: UTF-8
|
208
|
-
string: '{"tags":["env:hostile","role:highlander","tag:the_one_and_only"]}'
|
208
|
+
string: '{"tags":["env:hostile","role:highlander","tag:the_one_and_only","tag:datacenter:my-cloud"]}'
|
209
209
|
headers:
|
210
210
|
Accept-Encoding:
|
211
211
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
@@ -239,13 +239,13 @@ http_interactions:
|
|
239
239
|
X-Frame-Options:
|
240
240
|
- SAMEORIGIN
|
241
241
|
Content-Length:
|
242
|
-
- '
|
242
|
+
- '137'
|
243
243
|
Connection:
|
244
244
|
- keep-alive
|
245
245
|
body:
|
246
246
|
encoding: UTF-8
|
247
|
-
string: '{"host": "chef.handler.datadog.test-tags", "tags": ["
|
248
|
-
"role:highlander", "tag:the_one_and_only"]}'
|
247
|
+
string: '{"host": "chef.handler.datadog.test-tags", "tags": ["tag:datacenter:my-cloud",
|
248
|
+
"env:hostile", "role:highlander", "tag:the_one_and_only"]}'
|
249
249
|
http_version:
|
250
250
|
recorded_at: Tue, 26 Jan 2016 20:04:36 GMT
|
251
251
|
recorded_with: VCR 3.0.1
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-handler-datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Fiedler
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-03-
|
13
|
+
date: 2016-03-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: dogapi
|
@@ -223,6 +223,8 @@ files:
|
|
223
223
|
- spec/support/cassettes/Chef_Handler_Datadog/resources/failure_during_compile_phase/does_not_emit_metrics.yml
|
224
224
|
- spec/support/cassettes/Chef_Handler_Datadog/resources/failure_during_compile_phase/only_emits_a_failure_metric.yml
|
225
225
|
- spec/support/cassettes/Chef_Handler_Datadog/resources/failure_during_compile_phase/posts_an_event.yml
|
226
|
+
- spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/allows_for_empty_tag_prefix.yml
|
227
|
+
- spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/allows_for_user-specified_tag_prefix.yml
|
226
228
|
- spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/sets_the_role_and_env_and_tags.yml
|
227
229
|
- spec/support/cassettes/Chef_Handler_Datadog/tags/when_unspecified/sets_role_env_and_nothing_else.yml
|
228
230
|
- spec/support/cassettes/Chef_Handler_Datadog/tags_submission_retries/when_not_specified/does_not_retry_after_a_failed_submission.yml
|
@@ -272,6 +274,8 @@ test_files:
|
|
272
274
|
- spec/support/cassettes/Chef_Handler_Datadog/resources/failure_during_compile_phase/does_not_emit_metrics.yml
|
273
275
|
- spec/support/cassettes/Chef_Handler_Datadog/resources/failure_during_compile_phase/only_emits_a_failure_metric.yml
|
274
276
|
- spec/support/cassettes/Chef_Handler_Datadog/resources/failure_during_compile_phase/posts_an_event.yml
|
277
|
+
- spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/allows_for_empty_tag_prefix.yml
|
278
|
+
- spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/allows_for_user-specified_tag_prefix.yml
|
275
279
|
- spec/support/cassettes/Chef_Handler_Datadog/tags/when_specified/sets_the_role_and_env_and_tags.yml
|
276
280
|
- spec/support/cassettes/Chef_Handler_Datadog/tags/when_unspecified/sets_role_env_and_nothing_else.yml
|
277
281
|
- spec/support/cassettes/Chef_Handler_Datadog/tags_submission_retries/when_not_specified/does_not_retry_after_a_failed_submission.yml
|