dogapi 1.32.0 → 1.33.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -1
- data/CHANGELOG.md +15 -3
- data/dogapi.gemspec +1 -2
- data/lib/dogapi/facade.rb +25 -0
- data/lib/dogapi/v1.rb +1 -0
- data/lib/dogapi/v1/dashboard.rb +92 -0
- data/lib/dogapi/v1/metric.rb +2 -2
- data/lib/dogapi/version.rb +1 -1
- data/spec/integration/dashboard_spec.rb +64 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec1cf46eb8ec6d3e512ac08b5385d62d70f6f28caa48a7681724cdacefc68b45
|
4
|
+
data.tar.gz: 47ca869de7d878e680a8bf1f12c315a02a9075d452aa7f1bb69100c03e8ccb11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54c9fe2f7463c547e96c769e0cfd9d8f30c4ebe4651c1d921d8737d4ba4c901b899d6b990e41ed221e008dc7d419ddac8e4f7a6989a2c39879763aa4c2d85fbb
|
7
|
+
data.tar.gz: bbe2fb112fb558b719896153ad7016e787ca376cc40f68e22ab7fe2e24ae2957ee52c2868d148958e613d49e8e3e3abaeb85752ec7f404d3eb76d97ddf1ceccd
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
# Changes
|
2
2
|
|
3
|
+
## 1.33.0 / 2019-02-13
|
4
|
+
|
5
|
+
* [IMPROVEMENT] Add submission types mentioned in the API documentation. See [#165][], thanks [@TaylURRE][]
|
6
|
+
* [FEATURE] Add support for the new Dashboard API. See [#167][], thanks [@enbashi][]
|
7
|
+
|
3
8
|
## 1.32.0 / 2018-10-23
|
4
9
|
|
5
|
-
* [FEATURE] Added [monitor search](https://docs.datadoghq.com/api/?lang=ruby#monitors-search) and [monitor groups search](https://docs.datadoghq.com/api/?lang=ruby#monitors-group-search) API endpoints. See #163.
|
6
|
-
* [FIX] Add project metadata to the gemspec. See #162, thanks @orien.
|
10
|
+
* [FEATURE] Added [monitor search](https://docs.datadoghq.com/api/?lang=ruby#monitors-search) and [monitor groups search](https://docs.datadoghq.com/api/?lang=ruby#monitors-group-search) API endpoints. See [#163][].
|
11
|
+
* [FIX] Add project metadata to the gemspec. See [#162][], thanks [@orien][].
|
7
12
|
|
8
13
|
## 1.31.0 / 2018-10-01
|
9
14
|
|
@@ -216,8 +221,13 @@ This is the last release compatible with Ruby 1.8. ([EOL 2013-06-30](https://www
|
|
216
221
|
[#152]: https://github.com/DataDog/dogapi-rb/issues/152
|
217
222
|
[#159]: https://github.com/DataDog/dogapi-rb/issues/159
|
218
223
|
[#160]: https://github.com/DataDog/dogapi-rb/issues/160
|
224
|
+
[#162]: https://github.com/DataDog/dogapi-rb/issues/162
|
225
|
+
[#163]: https://github.com/DataDog/dogapi-rb/issues/163
|
226
|
+
[#165]: https://github.com/DataDog/dogapi-rb/issues/165
|
227
|
+
[#167]: https://github.com/DataDog/dogapi-rb/issues/167
|
219
228
|
[@ArjenSchwarz]: https://github.com/ArjenSchwarz
|
220
229
|
[@Kaixiang]: https://github.com/Kaixiang
|
230
|
+
[@TaylURRE]: https://github.com/TaylURRE
|
221
231
|
[@acroos]: https://github.com/acroos
|
222
232
|
[@ansel1]: https://github.com/ansel1
|
223
233
|
[@arielo]: https://github.com/arielo
|
@@ -225,13 +235,15 @@ This is the last release compatible with Ruby 1.8. ([EOL 2013-06-30](https://www
|
|
225
235
|
[@byroot]: https://github.com/byroot
|
226
236
|
[@casperisfine]: https://github.com/casperisfine
|
227
237
|
[@edwardkenfox]: https://github.com/edwardkenfox
|
238
|
+
[@enbashi]: https://github.com/enbashi
|
228
239
|
[@haohcraft]: https://github.com/haohcraft
|
229
240
|
[@hnovikov]: https://github.com/hnovikov
|
230
241
|
[@jimmyngo]: https://github.com/jimmyngo
|
231
242
|
[@martinisoft]: https://github.com/martinisoft
|
232
243
|
[@miknight]: https://github.com/miknight
|
233
244
|
[@nots]: https://github.com/nots
|
245
|
+
[@orien]: https://github.com/orien
|
234
246
|
[@rmoriz]: https://github.com/rmoriz
|
235
247
|
[@treeder]: https://github.com/treeder
|
236
248
|
[@winebarrel]: https://github.com/winebarrel
|
237
|
-
[@yyuu]: https://github.com/yyuu
|
249
|
+
[@yyuu]: https://github.com/yyuu
|
data/dogapi.gemspec
CHANGED
@@ -25,7 +25,6 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
|
28
|
-
spec.has_rdoc = true
|
29
28
|
spec.extra_rdoc_files = ['README.rdoc']
|
30
29
|
spec.rdoc_options << '--title' << 'DogAPI -- Datadog Client' <<
|
31
30
|
'--main' << 'README.rdoc' <<
|
@@ -33,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
33
32
|
|
34
33
|
spec.add_dependency 'multi_json'
|
35
34
|
|
36
|
-
spec.add_development_dependency 'bundler', '
|
35
|
+
spec.add_development_dependency 'bundler', '>= 1.3'
|
37
36
|
spec.add_development_dependency 'rake', '~> 10'
|
38
37
|
spec.add_development_dependency 'rdoc'
|
39
38
|
end
|
data/lib/dogapi/facade.rb
CHANGED
@@ -34,6 +34,7 @@ module Dogapi
|
|
34
34
|
@comment_svc = Dogapi::V1::CommentService.new(@api_key, @application_key, silent, timeout, @datadog_host)
|
35
35
|
@search_svc = Dogapi::V1::SearchService.new(@api_key, @application_key, silent, timeout, @datadog_host)
|
36
36
|
@dash_service = Dogapi::V1::DashService.new(@api_key, @application_key, silent, timeout, @datadog_host)
|
37
|
+
@dashboard_service = Dogapi::V1::DashboardService.new(@api_key, @application_key, silent, timeout, @datadog_host)
|
37
38
|
@dashboard_list_service = Dogapi::V1::DashboardListService.new(
|
38
39
|
@api_key, @application_key, silent, timeout, @datadog_host
|
39
40
|
)
|
@@ -276,6 +277,30 @@ module Dogapi
|
|
276
277
|
@dash_service.delete_dashboard(dash_id)
|
277
278
|
end
|
278
279
|
|
280
|
+
#
|
281
|
+
# DASHBOARDS
|
282
|
+
#
|
283
|
+
|
284
|
+
# Create a dashboard.
|
285
|
+
def create_board(title, widgets, layout_type, options= {})
|
286
|
+
@dashboard_service.create_board(title, widgets, layout_type, options)
|
287
|
+
end
|
288
|
+
|
289
|
+
# Update a dashboard.
|
290
|
+
def update_board(dashboard_id, title, widgets, layout_type, options= {})
|
291
|
+
@dashboard_service.update_board(dashboard_id, title, widgets, layout_type, options)
|
292
|
+
end
|
293
|
+
|
294
|
+
# Fetch the given dashboard.
|
295
|
+
def get_board(dashboard_id)
|
296
|
+
@dashboard_service.get_board(dashboard_id)
|
297
|
+
end
|
298
|
+
|
299
|
+
# Delete the given dashboard.
|
300
|
+
def delete_board(dashboard_id)
|
301
|
+
@dashboard_service.delete_board(dashboard_id)
|
302
|
+
end
|
303
|
+
|
279
304
|
#
|
280
305
|
# DASHBOARD LISTS
|
281
306
|
#
|
data/lib/dogapi/v1.rb
CHANGED
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'dogapi'
|
2
|
+
|
3
|
+
module Dogapi
|
4
|
+
class V1 # for namespacing
|
5
|
+
|
6
|
+
# Dashboard API
|
7
|
+
class DashboardService < Dogapi::APIService
|
8
|
+
|
9
|
+
API_VERSION = 'v1'
|
10
|
+
RESOURCE_NAME = 'dashboard'
|
11
|
+
|
12
|
+
# Create new dashboard
|
13
|
+
#
|
14
|
+
# Required arguments:
|
15
|
+
# :title => String: Title of the dashboard
|
16
|
+
# :widgets => JSON: List of widgets to display on the dashboard
|
17
|
+
# :layout_type => String: Layout type of the dashboard
|
18
|
+
# (for now, only "ordered" layout - current timeboard layout - is supported)
|
19
|
+
# Optional arguments:
|
20
|
+
# :description => String: Description of the dashboard
|
21
|
+
# :is_read_only => Boolean: Whether this dashboard is read-only.
|
22
|
+
# If True, only the author and admins can make changes to it.
|
23
|
+
# :notify_list => JSON: List of handles of users to notify when changes are made to this dashboard
|
24
|
+
# e.g. '["user1@domain.com", "user2@domain.com"]'
|
25
|
+
# :template_variables => JSON: List of template variables for this dashboard.
|
26
|
+
# e.g. [{"name": "host", "prefix": "host", "default": "my-host"}]
|
27
|
+
def create_board(title, widgets, layout_type, options)
|
28
|
+
# Required arguments
|
29
|
+
body = {
|
30
|
+
title: title,
|
31
|
+
widgets: widgets,
|
32
|
+
layout_type: layout_type
|
33
|
+
}
|
34
|
+
# Optional arguments
|
35
|
+
body[:description] = options[:description] if options[:description]
|
36
|
+
body[:is_read_only] = options[:is_read_only] if options[:is_read_only]
|
37
|
+
body[:notify_list] = options[:notify_list] if options[:notify_list]
|
38
|
+
body[:template_variables] = options[:template_variables] if options[:template_variables]
|
39
|
+
|
40
|
+
request(Net::HTTP::Post, "/api/#{API_VERSION}/#{RESOURCE_NAME}", nil, body, true)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Update a dashboard
|
44
|
+
#
|
45
|
+
# Required arguments:
|
46
|
+
# :dashboard_id => String: ID of the dashboard
|
47
|
+
# :title => String: Title of the dashboard
|
48
|
+
# :widgets => JSON: List of widgets to display on the dashboard
|
49
|
+
# :layout_type => String: Layout type of the dashboard
|
50
|
+
# (for now, only "ordered" layout - current timeboard layout - is supported)
|
51
|
+
# Optional arguments:
|
52
|
+
# :description => String: Description of the dashboard
|
53
|
+
# :is_read_only => Boolean: Whether this dashboard is read-only.
|
54
|
+
# If True, only the author and admins can make changes to it.
|
55
|
+
# :notify_list => JSON: List of handles of users to notify when changes are made to this dashboard
|
56
|
+
# e.g. '["user1@domain.com", "user2@domain.com"]'
|
57
|
+
# :template_variables => JSON: List of template variables for this dashboard.
|
58
|
+
# e.g. [{"name": "host", "prefix": "host", "default": "my-host"}]
|
59
|
+
def update_board(dashboard_id, title, widgets, layout_type, options)
|
60
|
+
# Required arguments
|
61
|
+
body = {
|
62
|
+
title: title,
|
63
|
+
widgets: widgets,
|
64
|
+
layout_type: layout_type
|
65
|
+
}
|
66
|
+
# Optional arguments
|
67
|
+
body[:description] = options[:description] if options[:description]
|
68
|
+
body[:is_read_only] = options[:is_read_only] if options[:is_read_only]
|
69
|
+
body[:notify_list] = options[:notify_list] if options[:notify_list]
|
70
|
+
body[:template_variables] = options[:template_variables] if options[:template_variables]
|
71
|
+
|
72
|
+
request(Net::HTTP::Put, "/api/#{API_VERSION}/#{RESOURCE_NAME}/#{dashboard_id}", nil, body, true)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Fetch the given dashboard
|
76
|
+
#
|
77
|
+
# :dashboard_id => String: ID of the dashboard
|
78
|
+
def get_board(dashboard_id)
|
79
|
+
request(Net::HTTP::Get, "/api/#{API_VERSION}/#{RESOURCE_NAME}/#{dashboard_id}", nil, nil, false)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Delete the given dashboard
|
83
|
+
#
|
84
|
+
# :dashboard_id => String: ID of the dashboard
|
85
|
+
def delete_board(dashboard_id)
|
86
|
+
request(Net::HTTP::Delete, "/api/#{API_VERSION}/#{RESOURCE_NAME}/#{dashboard_id}", nil, nil, false)
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
data/lib/dogapi/v1/metric.rb
CHANGED
@@ -61,8 +61,8 @@ module Dogapi
|
|
61
61
|
begin
|
62
62
|
typ = options[:type] || 'gauge'
|
63
63
|
|
64
|
-
if typ != 'gauge' && typ != 'counter'
|
65
|
-
raise ArgumentError, 'metric type must be gauge or counter'
|
64
|
+
if typ != 'gauge' && typ != 'counter' && typ != 'count' && typ != 'rate'
|
65
|
+
raise ArgumentError, 'metric type must be gauge or counter or count or rate'
|
66
66
|
end
|
67
67
|
|
68
68
|
metric_payload = {
|
data/lib/dogapi/version.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
describe Dogapi::Client do
|
4
|
+
DASHBOARD_ID = '3er-f8j-eus'.freeze
|
5
|
+
TITLE = 'My awesome dashboard'.freeze
|
6
|
+
WIDGETS = [{
|
7
|
+
'definition' => {
|
8
|
+
'requests ' => [
|
9
|
+
{ 'q' => 'avg:system.mem.free{*}' }
|
10
|
+
],
|
11
|
+
'title' => 'Average Memory Free',
|
12
|
+
'type' => 'timeseries'
|
13
|
+
},
|
14
|
+
'id' => 1234
|
15
|
+
}].freeze
|
16
|
+
LAYOUT_TYPE = 'ordered'.freeze
|
17
|
+
DESCRIPTION = 'Lorem ipsum'.freeze
|
18
|
+
IS_READ_ONLY = true
|
19
|
+
NOTIFY_LIST = ['user@domain.com'].freeze
|
20
|
+
TEMPLATE_VARIABLES = [{
|
21
|
+
'name' => 'host1',
|
22
|
+
'prefix' => 'host',
|
23
|
+
'default' => 'my-host'
|
24
|
+
}].freeze
|
25
|
+
|
26
|
+
REQUIRED_ARGS = {
|
27
|
+
title: TITLE,
|
28
|
+
widgets: WIDGETS,
|
29
|
+
layout_type: LAYOUT_TYPE
|
30
|
+
}.freeze
|
31
|
+
|
32
|
+
OPTIONS = {
|
33
|
+
description: DESCRIPTION,
|
34
|
+
is_read_only: IS_READ_ONLY,
|
35
|
+
notify_list: NOTIFY_LIST,
|
36
|
+
template_variables: TEMPLATE_VARIABLES
|
37
|
+
}
|
38
|
+
DASHBOARD_ARGS = REQUIRED_ARGS.values + [OPTIONS]
|
39
|
+
DASHBOARD_PAYLOAD = REQUIRED_ARGS.merge(OPTIONS)
|
40
|
+
|
41
|
+
describe '#create_board' do
|
42
|
+
it_behaves_like 'an api method',
|
43
|
+
:create_board, DASHBOARD_ARGS,
|
44
|
+
:post, '/dashboard', DASHBOARD_PAYLOAD
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#update_board' do
|
48
|
+
it_behaves_like 'an api method',
|
49
|
+
:update_board, [DASHBOARD_ID] + DASHBOARD_ARGS,
|
50
|
+
:put, "/dashboard/#{DASHBOARD_ID}", DASHBOARD_PAYLOAD
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#get_board' do
|
54
|
+
it_behaves_like 'an api method',
|
55
|
+
:get_board, [DASHBOARD_ID],
|
56
|
+
:get, "/dashboard/#{DASHBOARD_ID}"
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#delete_board' do
|
60
|
+
it_behaves_like 'an api method',
|
61
|
+
:delete_board, [DASHBOARD_ID],
|
62
|
+
:delete, "/dashboard/#{DASHBOARD_ID}"
|
63
|
+
end
|
64
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dogapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.33.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -28,14 +28,14 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- lib/dogapi/v1/alert.rb
|
103
103
|
- lib/dogapi/v1/comment.rb
|
104
104
|
- lib/dogapi/v1/dash.rb
|
105
|
+
- lib/dogapi/v1/dashboard.rb
|
105
106
|
- lib/dogapi/v1/dashboard_list.rb
|
106
107
|
- lib/dogapi/v1/embed.rb
|
107
108
|
- lib/dogapi/v1/event.rb
|
@@ -121,6 +122,7 @@ files:
|
|
121
122
|
- spec/integration/common_spec.rb
|
122
123
|
- spec/integration/dash_spec.rb
|
123
124
|
- spec/integration/dashboard_list_spec.rb
|
125
|
+
- spec/integration/dashboard_spec.rb
|
124
126
|
- spec/integration/embed_spec.rb
|
125
127
|
- spec/integration/event_spec.rb
|
126
128
|
- spec/integration/metadata_spec.rb
|
@@ -165,8 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
167
|
- !ruby/object:Gem::Version
|
166
168
|
version: '0'
|
167
169
|
requirements: []
|
168
|
-
|
169
|
-
rubygems_version: 2.7.1
|
170
|
+
rubygems_version: 3.0.2
|
170
171
|
signing_key:
|
171
172
|
specification_version: 4
|
172
173
|
summary: Ruby bindings for Datadog's API
|
@@ -176,6 +177,7 @@ test_files:
|
|
176
177
|
- spec/integration/common_spec.rb
|
177
178
|
- spec/integration/dash_spec.rb
|
178
179
|
- spec/integration/dashboard_list_spec.rb
|
180
|
+
- spec/integration/dashboard_spec.rb
|
179
181
|
- spec/integration/embed_spec.rb
|
180
182
|
- spec/integration/event_spec.rb
|
181
183
|
- spec/integration/metadata_spec.rb
|