mackerel-client 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 63061898bccf9c043d90b1862d65b9e0dd77b242
4
- data.tar.gz: eb03301d97b68317e85382f39613d1217edaade9
3
+ metadata.gz: c6d04e00e5c2881c62e69107348ec1df67d61c22
4
+ data.tar.gz: 2e05e0a387d92c2d455bf89dd83682cb5ec03b75
5
5
  SHA512:
6
- metadata.gz: fcbf1abb628d64b6d2dd2090717ab778889d7697a37a14d7e5ebf8cf2f26a6ed825b308c295b5a96af34e69153b4f76350ede669557aa076315a8448eb1926c8
7
- data.tar.gz: c10721c7b0765e3ed37210a15248cfe5d19f906f4bc74a55527778d6a54427f9ffee72f33865c4297e64eac5eadab11e7a67e87c77051e9731cecd9ce00c85db
6
+ metadata.gz: 7b67df943bbbf9b8b39d10960027201dda2a465184cdb86ead63aa3431e91d1b5d874a2a37aaaaa57b3bf7e30bde9d0937281779697d0a836895d67be34b1783
7
+ data.tar.gz: 9548aa1b053f7aec2c21b693ecca41bc22f26136ef920b984c91acc327791ae0abf770c7d57cf410d238f7fe9e45204ac170d1078bc21e253186e2cc356326db
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
+ before_install: gem install bundler -v 1.11.2
2
3
  rvm:
3
4
  - "2.1.1"
4
5
  - "2.0.0"
data/RELEASE.md ADDED
@@ -0,0 +1,7 @@
1
+ RELEASE
2
+ =======
3
+
4
+ 1. Update VERSION file.
5
+ 1. git push
6
+ 1. `gem build mackerel-client.gemspec`
7
+ 1. `gem push mackerel-client-$VERSION.gem`
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.8
1
+ 0.1.0
@@ -0,0 +1 @@
1
+ require 'mackerel'
@@ -15,6 +15,20 @@ module Mackerel
15
15
  @api_key = args[:mackerel_api_key] || raise(ERROR_MESSAGE_FOR_API_KEY_ABSENCE)
16
16
  end
17
17
 
18
+ def post_host(host)
19
+ response = client.post "/api/v0/hosts" do |req|
20
+ req.headers['X-Api-Key'] = @api_key
21
+ req.headers['Content-Type'] = 'application/json'
22
+ req.body = host.to_json
23
+ end
24
+
25
+ unless response.success?
26
+ raise "POST /api/v0/hosts failed: #{response.status}"
27
+ end
28
+
29
+ data = JSON.parse(response.body)
30
+ end
31
+
18
32
  def get_host(host_id)
19
33
  response = client.get "/api/v0/hosts/#{host_id}" do |req|
20
34
  req.headers['X-Api-Key'] = @api_key
@@ -104,6 +118,20 @@ module Mackerel
104
118
  data = JSON.parse(response.body)
105
119
  end
106
120
 
121
+ def define_graphs(graph_defs)
122
+ response = client.post '/api/v0/graph-defs/create' do |req|
123
+ req.headers['X-Api-Key'] = @api_key
124
+ req.headers['Content-Type'] = 'application/json'
125
+ req.body = graph_defs.to_json
126
+ end
127
+
128
+ unless response.success?
129
+ raise "POST /api/v0/graph-defs/create failed: #{res.status} #{res.body}"
130
+ end
131
+
132
+ JSON.parse(response.body)
133
+ end
134
+
107
135
  def get_hosts(opts = {})
108
136
  response = client.get '/api/v0/hosts.json' do |req|
109
137
  req.headers['X-Api-Key'] = @api_key
@@ -0,0 +1,9 @@
1
+ module Mackerel
2
+ class Client
3
+ module Helper
4
+ def self.as_safe_metric_name(str, replacement = '-')
5
+ str.gsub(/[^a-zA-Z0-9_\-]/, replacement)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ require 'mackerel/client/helper'
2
+
3
+ describe Mackerel::Client::Helper do
4
+ describe '.as_safe_metric_name' do
5
+ it 'translates characters that cannot be used as a metric name to safe characters' do
6
+ name = 'readme.md'
7
+ expect(Mackerel::Client::Helper.as_safe_metric_name(name)).to eq('readme-md')
8
+ end
9
+ end
10
+ end
@@ -13,6 +13,47 @@ describe Mackerel::Client do
13
13
  end
14
14
  end
15
15
 
16
+ describe '#post_host' do
17
+ let(:stubbed_response) {
18
+ [
19
+ 200,
20
+ {},
21
+ JSON.dump(response_object)
22
+ ]
23
+ }
24
+
25
+ let(:test_client) {
26
+ Faraday.new do |builder|
27
+ builder.adapter :test do |stubs|
28
+ stubs.post(api_path) { stubbed_response }
29
+ end
30
+ end
31
+ }
32
+
33
+ let(:hostId) { '21obeF4PhZN' }
34
+
35
+ let(:api_path) { '/api/v0/hosts' }
36
+
37
+ let(:host) {
38
+ {
39
+ 'name' => 'host001',
40
+ 'meta' => {},
41
+ }
42
+ }
43
+
44
+ let(:response_object) {
45
+ { 'id' => hostId }
46
+ }
47
+
48
+ before do
49
+ allow(client).to receive(:http_client).and_return(test_client)
50
+ end
51
+
52
+ it "successfully post host" do
53
+ expect(client.post_host(host)).to eq(response_object)
54
+ end
55
+ end
56
+
16
57
  describe '#get_host' do
17
58
  let(:stubbed_response) {
18
59
  [
@@ -256,6 +297,63 @@ describe Mackerel::Client do
256
297
  end
257
298
  end
258
299
 
300
+ describe '#define_graphs' do
301
+ let(:stubbed_response) {
302
+ [
303
+ 200,
304
+ {},
305
+ JSON.dump(response_object)
306
+ ]
307
+ }
308
+
309
+ let(:test_client) {
310
+ Faraday.new do |builder|
311
+ builder.adapter :test do |stubs|
312
+ stubs.post(api_path) { stubbed_response }
313
+ end
314
+ end
315
+ }
316
+
317
+ let(:api_path) { '/api/v0/graph-defs/create' }
318
+
319
+ let(:response_object) {
320
+ { 'success' => true }
321
+ }
322
+
323
+ let(:defs) { [
324
+ {
325
+ name: 'custom.fish-catch',
326
+ displayName: 'My fish catch',
327
+ unit: 'integer',
328
+ metrics: [
329
+ {
330
+ name: 'custom.fish-catch.mackerel',
331
+ displayName: 'Mackerel',
332
+ isStacked: false,
333
+ },
334
+ {
335
+ name: 'custom.fish-catch.herring',
336
+ displayName: 'Herring',
337
+ isStacked: false,
338
+ },
339
+ {
340
+ name: 'custom.fish-catch.salmon',
341
+ displayName: 'Salmon',
342
+ isStacked: false,
343
+ },
344
+ ]
345
+ }
346
+ ] }
347
+
348
+ before do
349
+ allow(client).to receive(:http_client).and_return(test_client)
350
+ end
351
+
352
+ it "successfully post metrics" do
353
+ expect(client.define_graphs(defs)).to eq(response_object)
354
+ end
355
+ end
356
+
259
357
  describe '#get_hosts' do
260
358
  let(:stubbed_response) {
261
359
  [
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mackerel-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mackerel developer team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-16 00:00:00.000000000 Z
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -81,14 +81,18 @@ files:
81
81
  - Gemfile
82
82
  - LICENSE.txt
83
83
  - README.md
84
+ - RELEASE.md
84
85
  - Rakefile
85
86
  - VERSION
86
87
  - bin/mkr.rb
88
+ - lib/mackerel-client.rb
87
89
  - lib/mackerel.rb
88
90
  - lib/mackerel/client.rb
91
+ - lib/mackerel/client/helper.rb
89
92
  - lib/mackerel/host.rb
90
93
  - lib/mackerel/runner.rb
91
94
  - mackerel-client.gemspec
95
+ - spec/mackerel/client/helper_spec.rb
92
96
  - spec/mackerel/client_spec.rb
93
97
  - spec/spec_helper.rb
94
98
  homepage: https://mackerel.io/
@@ -111,10 +115,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
115
  version: '0'
112
116
  requirements: []
113
117
  rubyforge_project:
114
- rubygems_version: 2.2.5
118
+ rubygems_version: 2.2.2
115
119
  signing_key:
116
120
  specification_version: 4
117
121
  summary: Mackerel client implemented by Ruby.
118
122
  test_files:
123
+ - spec/mackerel/client/helper_spec.rb
119
124
  - spec/mackerel/client_spec.rb
120
125
  - spec/spec_helper.rb