dogapi-demo 0.1.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.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.tailor +106 -0
  5. data/.travis.yml +8 -0
  6. data/CHANGELOG.md +157 -0
  7. data/Gemfile +16 -0
  8. data/LICENSE +25 -0
  9. data/README.rdoc +143 -0
  10. data/Rakefile +50 -0
  11. data/dogapi-demo.gemspec +32 -0
  12. data/examples/Capfile +19 -0
  13. data/examples/custom_event.rb +37 -0
  14. data/examples/custom_metric.rb +35 -0
  15. data/lib/capistrano/README.md +13 -0
  16. data/lib/capistrano/datadog.rb +125 -0
  17. data/lib/capistrano/datadog/v2.rb +74 -0
  18. data/lib/capistrano/datadog/v3.rb +64 -0
  19. data/lib/dogapi-demo.rb +5 -0
  20. data/lib/dogapi-demo/common.rb +168 -0
  21. data/lib/dogapi-demo/event.rb +129 -0
  22. data/lib/dogapi-demo/facade.rb +475 -0
  23. data/lib/dogapi-demo/metric.rb +34 -0
  24. data/lib/dogapi-demo/v1.rb +13 -0
  25. data/lib/dogapi-demo/v1/alert.rb +112 -0
  26. data/lib/dogapi-demo/v1/comment.rb +62 -0
  27. data/lib/dogapi-demo/v1/dash.rb +94 -0
  28. data/lib/dogapi-demo/v1/embed.rb +106 -0
  29. data/lib/dogapi-demo/v1/event.rb +101 -0
  30. data/lib/dogapi-demo/v1/metric.rb +118 -0
  31. data/lib/dogapi-demo/v1/monitor.rb +264 -0
  32. data/lib/dogapi-demo/v1/screenboard.rb +110 -0
  33. data/lib/dogapi-demo/v1/search.rb +27 -0
  34. data/lib/dogapi-demo/v1/service_check.rb +32 -0
  35. data/lib/dogapi-demo/v1/snapshot.rb +30 -0
  36. data/lib/dogapi-demo/v1/tag.rb +141 -0
  37. data/lib/dogapi-demo/v1/user.rb +113 -0
  38. data/lib/dogapi-demo/version.rb +3 -0
  39. data/spec/alerts_spec.rb +33 -0
  40. data/spec/common_spec.rb +37 -0
  41. data/spec/facade_spec.rb +166 -0
  42. data/spec/spec_helper.rb +30 -0
  43. data/spec/support/cassettes/Alerts/create/returns_HTTP_code_200.yml +114 -0
  44. data/spec/support/cassettes/Alerts/create/returns_a_valid_event_ID.yml +114 -0
  45. data/spec/support/cassettes/Alerts/create/returns_the_same_query_as_sent.yml +114 -0
  46. data/spec/support/cassettes/Facade/Events/emits_aggregate_events.yml +193 -0
  47. data/spec/support/cassettes/Facade/Events/emits_events_and_retrieves_them.yml +100 -0
  48. data/spec/support/cassettes/Facade/Events/emits_events_with_specified_priority.yml +98 -0
  49. data/spec/support/cassettes/Facade/Tags/adds_updates_and_detaches_tags.yml +442 -0
  50. data/tests/test_alerts.rb +38 -0
  51. data/tests/test_base.rb +30 -0
  52. data/tests/test_client.rb +23 -0
  53. data/tests/test_comments.rb +39 -0
  54. data/tests/test_dashes.rb +85 -0
  55. data/tests/test_embed.rb +194 -0
  56. data/tests/test_monitors.rb +192 -0
  57. data/tests/test_screenboard.rb +90 -0
  58. data/tests/test_search.rb +20 -0
  59. data/tests/test_snapshot.rb +28 -0
  60. data/tests/test_users.rb +65 -0
  61. metadata +178 -0
@@ -0,0 +1,90 @@
1
+ require 'dogapi'
2
+ require 'time'
3
+ require 'test_base.rb'
4
+ require 'open-uri'
5
+
6
+ class TestScreenboard < Minitest::Test
7
+ include TestBase
8
+
9
+ def test_screenboard
10
+ dog = Dogapi::Client.new(@api_key, @app_key)
11
+
12
+ board = {
13
+ "width" => 1024,
14
+ "height" => 768,
15
+ "board_title" => "dogapi-rb test",
16
+ "widgets" => [
17
+ {
18
+ "type" => "event_stream",
19
+ "title" => false,
20
+ "height" => 57,
21
+ "width" => 59,
22
+ "y" => 18,
23
+ "x" => 84,
24
+ "query" => "tags:release",
25
+ "timeframe" => "1w"
26
+ },
27
+ {
28
+ "type" => "image",
29
+ "height" => 20,
30
+ "width" => 32,
31
+ "y" => 7,
32
+ "x" => 32,
33
+ "url" => "http://path/to/image.jpg"
34
+ }
35
+ ]
36
+ }
37
+
38
+ updated_board = {
39
+ "width" => 1024,
40
+ "height" => 768,
41
+ "board_title" => "dogapi test",
42
+ "widgets" => [
43
+ {
44
+ "type" => "image",
45
+ "height" => 20,
46
+ "width" => 32,
47
+ "y" => 7,
48
+ "x" => 32,
49
+ "url" => "http://path/to/image.jpg"
50
+ }
51
+ ]
52
+ }
53
+
54
+ status, result = dog.create_screenboard(board)
55
+ assert_equal status, "200", "invalid HTTP response => #{status}"
56
+ assert result["widgets"] == board["widgets"]
57
+
58
+ status, result = dog.get_screenboard(result["id"])
59
+ assert_equal status, "200", "invalid HTTP response => #{status}"
60
+ assert result["widgets"] == board["widgets"]
61
+
62
+ status, result = dog.update_screenboard(result["id"], updated_board)
63
+ assert_equal status, "200", "invalid HTTP response => #{status}"
64
+ assert result["widgets"] == updated_board["widgets"]
65
+
66
+ status, share_result = dog.share_screenboard(result["id"])
67
+ assert_equal status, "200", "invalid HTTP response => #{status}"
68
+ assert share_result["board_id"] == result["id"]
69
+
70
+ open(share_result["public_url"]) do |f|
71
+ assert_equal f.status.first, "200", "invalid HTTP response => #{status}"
72
+ end
73
+
74
+ status, revoke_result = dog.revoke_screenboard(result["id"])
75
+ assert_equal status, "200", "invalid HTTP response => #{status}"
76
+
77
+ ex = assert_raises OpenURI::HTTPError do
78
+ open(share_result["public_url"])
79
+ end
80
+ assert_equal ex.message, "404 Not Found"
81
+
82
+ status, del_result = dog.delete_screenboard(result["id"])
83
+ assert_equal status, "200", "invalid HTTP response => #{status}"
84
+ assert del_result["id"] == result["id"]
85
+
86
+ status, result = dog.get_all_screenboards()
87
+ assert_equal status, "200", "invalid HTTP response => #{status}"
88
+
89
+ end
90
+ end
@@ -0,0 +1,20 @@
1
+ require 'dogapi'
2
+ require 'time'
3
+ require 'test_base.rb'
4
+
5
+ class TestSearch < Minitest::Test
6
+ include TestBase
7
+
8
+ def test_search
9
+ dog = Dogapi::Client.new(@api_key, @app_key)
10
+
11
+ facets = ["hosts", "metrics"]
12
+ facets.each do |facet|
13
+ status, results_body = dog.search("#{facet}:foo")
14
+ results = results_body["results"]
15
+ assert_equal status, "200", "failed search #{facet} facet"
16
+ assert results[facet].kind_of?(Array), "#{facet} facet doesnt exist"
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ require 'dogapi'
2
+ require 'time'
3
+ require 'test_base.rb'
4
+
5
+ class TestSnapshot < Minitest::Test
6
+ include TestBase
7
+
8
+ def test_snapshot
9
+ dog = Dogapi::Client.new(@api_key, @app_key)
10
+
11
+ metric_query = "system.load.1{*}"
12
+ event_query = "*"
13
+ end_ts = Time.now().to_i
14
+ start_ts = end_ts - 60 * 60 # go back 1 hour
15
+
16
+ # Try without an event query
17
+ status, result = dog.graph_snapshot(metric_query, start_ts, end_ts)
18
+ assert_equal status, "200", "invalid HTTP response: #{status}"
19
+ assert result["metric_query"] = metric_query
20
+
21
+ # Try with an event query
22
+ status, result = dog.graph_snapshot(metric_query, start_ts, end_ts,
23
+ event_query=event_query)
24
+ assert_equal status, "200", "invalid HTTP response: #{status}"
25
+ assert result["metric_query"] = metric_query
26
+ assert result["event_query"] = event_query
27
+ end
28
+ end
@@ -0,0 +1,65 @@
1
+ require 'dogapi'
2
+ require 'time'
3
+ require 'test_base.rb'
4
+
5
+ class TestUsers < Minitest::Test
6
+ include TestBase
7
+
8
+ def test_users
9
+ dog = Dogapi::Client.new(@api_key, @app_key)
10
+
11
+ # user invite (deprecated)
12
+ emails = ["notarealperson@datadoghq.com", "alsoreallyfake@datadoghq.com"]
13
+
14
+ invited = dog.invite(emails)
15
+ assert_equal emails, invited[1]["emails"], invited
16
+
17
+ # user CRUD
18
+ handle = 'user@test.com'
19
+ name = 'Test User'
20
+ alternate_name = 'Test User Alt'
21
+ alternate_email = 'user+1@test.com'
22
+
23
+ # test create user
24
+ # the user might already exist
25
+ dog.create_user({
26
+ 'handle' => handle,
27
+ 'name' => name,
28
+ })
29
+
30
+ # reset user to original status
31
+ status, res = dog.update_user(handle, {
32
+ 'name' => name,
33
+ 'email' => handle,
34
+ 'disabled' => false,
35
+ })
36
+ assert_equal handle, res['user']['handle']
37
+ assert_equal name, res['user']['name']
38
+ assert_equal handle, res['user']['email']
39
+
40
+ # test get
41
+ status, res = dog.get_user(handle)
42
+ assert_equal handle, res['user']['handle']
43
+
44
+ # test update user
45
+ status, res = dog.update_user(handle, {
46
+ 'name' => alternate_name,
47
+ 'email' => alternate_email,
48
+ })
49
+ assert_equal handle, res['user']['handle']
50
+ assert_equal alternate_name, res['user']['name']
51
+ assert_equal alternate_email, res['user']['email']
52
+
53
+ # test disable user
54
+ status, res = dog.disable_user(handle)
55
+ assert_equal '200', status
56
+
57
+ # test get all users
58
+ status, res = dog.get_all_users()
59
+ assert_equal true, res['users'].length >= 1
60
+
61
+ end
62
+
63
+
64
+
65
+ end
metadata ADDED
@@ -0,0 +1,178 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dogapi-demo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Datadog, Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: multi_json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Ruby bindings for Datadog's API
70
+ email:
71
+ - packages@datadoghq.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files:
75
+ - README.rdoc
76
+ files:
77
+ - ".gitignore"
78
+ - ".rspec"
79
+ - ".tailor"
80
+ - ".travis.yml"
81
+ - CHANGELOG.md
82
+ - Gemfile
83
+ - LICENSE
84
+ - README.rdoc
85
+ - Rakefile
86
+ - dogapi-demo.gemspec
87
+ - examples/Capfile
88
+ - examples/custom_event.rb
89
+ - examples/custom_metric.rb
90
+ - lib/capistrano/README.md
91
+ - lib/capistrano/datadog.rb
92
+ - lib/capistrano/datadog/v2.rb
93
+ - lib/capistrano/datadog/v3.rb
94
+ - lib/dogapi-demo.rb
95
+ - lib/dogapi-demo/common.rb
96
+ - lib/dogapi-demo/event.rb
97
+ - lib/dogapi-demo/facade.rb
98
+ - lib/dogapi-demo/metric.rb
99
+ - lib/dogapi-demo/v1.rb
100
+ - lib/dogapi-demo/v1/alert.rb
101
+ - lib/dogapi-demo/v1/comment.rb
102
+ - lib/dogapi-demo/v1/dash.rb
103
+ - lib/dogapi-demo/v1/embed.rb
104
+ - lib/dogapi-demo/v1/event.rb
105
+ - lib/dogapi-demo/v1/metric.rb
106
+ - lib/dogapi-demo/v1/monitor.rb
107
+ - lib/dogapi-demo/v1/screenboard.rb
108
+ - lib/dogapi-demo/v1/search.rb
109
+ - lib/dogapi-demo/v1/service_check.rb
110
+ - lib/dogapi-demo/v1/snapshot.rb
111
+ - lib/dogapi-demo/v1/tag.rb
112
+ - lib/dogapi-demo/v1/user.rb
113
+ - lib/dogapi-demo/version.rb
114
+ - spec/alerts_spec.rb
115
+ - spec/common_spec.rb
116
+ - spec/facade_spec.rb
117
+ - spec/spec_helper.rb
118
+ - spec/support/cassettes/Alerts/create/returns_HTTP_code_200.yml
119
+ - spec/support/cassettes/Alerts/create/returns_a_valid_event_ID.yml
120
+ - spec/support/cassettes/Alerts/create/returns_the_same_query_as_sent.yml
121
+ - spec/support/cassettes/Facade/Events/emits_aggregate_events.yml
122
+ - spec/support/cassettes/Facade/Events/emits_events_and_retrieves_them.yml
123
+ - spec/support/cassettes/Facade/Events/emits_events_with_specified_priority.yml
124
+ - spec/support/cassettes/Facade/Tags/adds_updates_and_detaches_tags.yml
125
+ - tests/test_alerts.rb
126
+ - tests/test_base.rb
127
+ - tests/test_client.rb
128
+ - tests/test_comments.rb
129
+ - tests/test_dashes.rb
130
+ - tests/test_embed.rb
131
+ - tests/test_monitors.rb
132
+ - tests/test_screenboard.rb
133
+ - tests/test_search.rb
134
+ - tests/test_snapshot.rb
135
+ - tests/test_users.rb
136
+ homepage: http://datadoghq.com/
137
+ licenses:
138
+ - BSD
139
+ metadata: {}
140
+ post_install_message:
141
+ rdoc_options:
142
+ - "--title"
143
+ - DogAPI -- Datadog Client
144
+ - "--main"
145
+ - README.rdoc
146
+ - "--line-numbers"
147
+ - "--inline-source"
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubyforge_project:
162
+ rubygems_version: 2.4.3
163
+ signing_key:
164
+ specification_version: 4
165
+ summary: Ruby bindings for Datadog's API
166
+ test_files:
167
+ - spec/alerts_spec.rb
168
+ - spec/common_spec.rb
169
+ - spec/facade_spec.rb
170
+ - spec/spec_helper.rb
171
+ - spec/support/cassettes/Alerts/create/returns_HTTP_code_200.yml
172
+ - spec/support/cassettes/Alerts/create/returns_a_valid_event_ID.yml
173
+ - spec/support/cassettes/Alerts/create/returns_the_same_query_as_sent.yml
174
+ - spec/support/cassettes/Facade/Events/emits_aggregate_events.yml
175
+ - spec/support/cassettes/Facade/Events/emits_events_and_retrieves_them.yml
176
+ - spec/support/cassettes/Facade/Events/emits_events_with_specified_priority.yml
177
+ - spec/support/cassettes/Facade/Tags/adds_updates_and_detaches_tags.yml
178
+ has_rdoc: true