dogapi 1.32.0 → 1.33.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/.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
|