influxdb 0.3.12 → 0.3.13

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: b721d82a22974293685ba5fc0275d58e14d91c95
4
- data.tar.gz: 8b45e5a10d9d8018c3919bdc8b62651819cf18d5
3
+ metadata.gz: 01adedbe7674717e14ed72845cfff4e156f2689a
4
+ data.tar.gz: ceefc5493edfa1144ec139d2dc07dc0ae5fe1db4
5
5
  SHA512:
6
- metadata.gz: ed273daa7368a7529acfd072273345056eb4001402d4869e5021776fe3a9e89ce967e519a1224aaa74e01d8205982a3109e2a250e35c997d96aed01e699d8409
7
- data.tar.gz: 02f5b7f0c6e4050be231d33b5dd56068faa6ec7607a20ef48d885b6c38e04f628c88673d449cc34a15c8c488951e02c987be6797421da5a2c3394371a69c3243
6
+ metadata.gz: b86ea8d1c86d8f90e5d11bca3654d7e4462071a126ecbc2bf737514538235da8e0e91836fc12b290c5d8a5c968a5b14a7d1f5308743157762c0796d505b8c52a
7
+ data.tar.gz: 7564b0e19b8e80eb82734054481371459900608324a3d5d844f16680867f3cddf581c4d35e23ed98a1451acd2757465e26884807f28c0e3f63fa21e478b3ebb8
@@ -6,6 +6,13 @@ For the full commit log, [see here](https://github.com/influxdata/influxdb-ruby/
6
6
 
7
7
  - None.
8
8
 
9
+ ## v0.3.13, released 2016-11-23
10
+
11
+ - You can now `InfluxDB::Client#query`, `#write_points`, `#write_point` and
12
+ `#write` now accept an additional parameter to override the database on
13
+ invokation time (#173, #176, @jfragoulis).
14
+
15
+
9
16
  ## v0.3.12, released 2016-11-15
10
17
 
11
18
  - Bugfix for broken Unicode support (regression introduced in #169).
data/README.md CHANGED
@@ -334,6 +334,32 @@ data = {
334
334
  influxdb.write_point(name, data, precision, retention)
335
335
  ```
336
336
 
337
+ Write data while choosing the database:
338
+
339
+ ``` ruby
340
+ require 'influxdb'
341
+
342
+ username = 'foo'
343
+ password = 'bar'
344
+ database = 'site_development'
345
+ name = 'foobar'
346
+ precision = 's'
347
+ retention = '1h.cpu'
348
+
349
+ influxdb = InfluxDB::Client.new {
350
+ username: username,
351
+ password: password
352
+ }
353
+
354
+ data = {
355
+ values: { value: 0 },
356
+ tags: { foo: 'bar', bar: 'baz' }
357
+ timestamp: Time.now.to_i
358
+ }
359
+
360
+ influxdb.write_point(name, data, precision, retention, database)
361
+ ```
362
+
337
363
  Write multiple points in a batch (performance boost):
338
364
 
339
365
  ``` ruby
@@ -458,7 +484,7 @@ influxdb = InfluxDB::Client.new database,
458
484
  password: password
459
485
 
460
486
  # without a block:
461
- influxdb.query 'select * from time_series_1'
487
+ influxdb.query 'select * from time_series_1 group by region'
462
488
 
463
489
  # results are grouped by name, but also their tags:
464
490
  #
@@ -481,7 +507,7 @@ influxdb.query 'select * from time_series_1'
481
507
  # ]
482
508
 
483
509
  # with a block:
484
- influxdb.query 'select * from time_series_1' do |name, tags, points|
510
+ influxdb.query 'select * from time_series_1 group by region' do |name, tags, points|
485
511
  puts "#{name} [ #{tags.inspect} ]"
486
512
  points.each do |pt|
487
513
  puts " -> #{pt.inspect}"
@@ -503,7 +529,7 @@ If you would rather receive points with integer timestamp, it's possible to set
503
529
  # globally, on client initialization:
504
530
  influxdb = InfluxDB::Client.new database, epoch: 's'
505
531
 
506
- influxdb.query 'select * from time_series'
532
+ influxdb.query 'select * from time_series group by region'
507
533
  # [
508
534
  # {
509
535
  # "name"=>"time_series",
@@ -515,7 +541,7 @@ influxdb.query 'select * from time_series'
515
541
  # ]
516
542
 
517
543
  # or for a specific query call:
518
- influxdb.query 'select * from time_series', epoch: 'ms'
544
+ influxdb.query 'select * from time_series group by region', epoch: 'ms'
519
545
  # [
520
546
  # {
521
547
  # "name"=>"time_series",
@@ -551,7 +577,7 @@ columns and rows). If you want to get *raw* data add `denormalize: false` to
551
577
  the initialization options or to query itself:
552
578
 
553
579
  ``` ruby
554
- influxdb.query 'select * from time_series_1', denormalize: false
580
+ influxdb.query 'select * from time_series_1 group by region', denormalize: false
555
581
 
556
582
  # [
557
583
  # {
@@ -574,7 +600,7 @@ influxdb.query 'select * from time_series_1', denormalize: false
574
600
  # ]
575
601
 
576
602
 
577
- influxdb.query 'select * from time_series_1', denormalize: false do |name, tags, points|
603
+ influxdb.query 'select * from time_series_1 group by region', denormalize: false do |name, tags, points|
578
604
  puts "#{name} [ #{tags.inspect} ]"
579
605
  points.each do |key, values|
580
606
  puts " #{key.inspect} -> #{values.inspect}"
@@ -590,6 +616,12 @@ end
590
616
  # values -> [["2015-07-09T09:02:54Z", 55, 0.4343]]}
591
617
  ```
592
618
 
619
+ You can also pick the database to query from:
620
+
621
+ ```
622
+ influxdb.query 'select * from time_series_1', database: 'database'
623
+ ```
624
+
593
625
  #### Streaming response
594
626
 
595
627
  If you expect large quantities of data in a response, you may want to enable
@@ -51,21 +51,24 @@ module InfluxDB
51
51
  # values: {value: 0.9999},
52
52
  # }
53
53
  # ])
54
- def write_points(data, precision = nil, retention_policy = nil)
54
+ def write_points(data, precision = nil, retention_policy = nil, database = nil)
55
55
  data = data.is_a?(Array) ? data : [data]
56
56
  payload = generate_payload(data)
57
- writer.write(payload, precision, retention_policy)
57
+ writer.write(payload, precision, retention_policy, database)
58
58
  end
59
59
 
60
60
  # Example:
61
61
  # write_point('cpu', tags: {region: 'us'}, values: {internal: 60})
62
- def write_point(series, data, precision = nil, retention_policy = nil)
63
- write_points(data.merge(series: series), precision, retention_policy)
62
+ def write_point(series, data, precision = nil, retention_policy = nil, database = nil)
63
+ write_points(data.merge(series: series), precision, retention_policy, database)
64
64
  end
65
65
 
66
- def write(data, precision, retention_policy = nil)
67
- precision ||= config.time_precision
68
- params = { db: config.database, precision: precision }
66
+ def write(data, precision, retention_policy = nil, database = nil)
67
+ params = {
68
+ db: database || config.database,
69
+ precision: precision || config.time_precision
70
+ }
71
+
69
72
  params[:rp] = retention_policy if retention_policy
70
73
  url = full_url("/write", params)
71
74
  post(url, data)
@@ -73,12 +76,14 @@ module InfluxDB
73
76
 
74
77
  private
75
78
 
79
+ # rubocop:disable Metrics/MethodLength
76
80
  def query_params(query, opts)
77
81
  precision = opts.fetch(:precision, config.time_precision)
78
82
  epoch = opts.fetch(:epoch, config.epoch)
79
83
  chunk_size = opts.fetch(:chunk_size, config.chunk_size)
84
+ database = opts.fetch(:database, config.database)
80
85
 
81
- params = { q: query, db: config.database, precision: precision }
86
+ params = { q: query, db: database, precision: precision }
82
87
  params[:epoch] = epoch if epoch
83
88
 
84
89
  if chunk_size
@@ -88,6 +93,7 @@ module InfluxDB
88
93
 
89
94
  params
90
95
  end
96
+ # rubocop:enable Metrics/MethodLength
91
97
 
92
98
  def denormalized_series_list(series)
93
99
  series.map do |s|
@@ -1,3 +1,3 @@
1
1
  module InfluxDB # :nodoc:
2
- VERSION = "0.3.12".freeze
2
+ VERSION = "0.3.13".freeze
3
3
  end
@@ -12,7 +12,7 @@ module InfluxDB
12
12
  @config = config
13
13
  end
14
14
 
15
- def write(data, _precision = nil, _retention_policy = nil)
15
+ def write(data, _precision = nil, _retention_policy = nil, _database = nil)
16
16
  data = data.is_a?(Array) ? data : [data]
17
17
  data.map { |p| worker.push(p) }
18
18
  end
@@ -13,7 +13,7 @@ module InfluxDB
13
13
  socket.connect(host, port)
14
14
  end
15
15
 
16
- def write(payload, _precision = nil, _retention_policy = nil)
16
+ def write(payload, _precision = nil, _retention_policy = nil, _database = nil)
17
17
  socket.send(payload, 0)
18
18
  end
19
19
  end
@@ -159,6 +159,25 @@ describe InfluxDB::Client do
159
159
  expect(subject.query(query)).to eq(expected_result)
160
160
  end
161
161
  end
162
+
163
+ context "with database" do
164
+ let(:extra_params) { { db: 'overriden_db' } }
165
+ let(:response) do
166
+ { "results" => [{ "series" => [{ "name" => "cpu", "tags" => { "region" => "us" },
167
+ "columns" => %w(time temp value),
168
+ "values" => [["2015-07-07T14:58:37Z", 92, 0.3445], ["2015-07-07T14:59:09Z", 68, 0.8787]] }] }] }
169
+ end
170
+ let(:expected_result) do
171
+ [{ "name" => "cpu", "tags" => { "region" => "us" },
172
+ "values" => [{ "time" => "2015-07-07T14:58:37Z", "temp" => 92, "value" => 0.3445 },
173
+ { "time" => "2015-07-07T14:59:09Z", "temp" => 68, "value" => 0.8787 }] }]
174
+ end
175
+ let(:query) { 'SELECT * FROM cpu' }
176
+
177
+ it "should return array with single hash containing multiple values" do
178
+ expect(subject.query(query, database: 'overriden_db')).to eq(expected_result)
179
+ end
180
+ end
162
181
  end
163
182
 
164
183
  describe "multiple select queries" do
@@ -154,5 +154,31 @@ describe InfluxDB::Client do
154
154
  expect(subject.write_points(data, nil, 'rp_1_hour')).to be_a(Net::HTTPNoContent)
155
155
  end
156
156
  end
157
+
158
+ context "with database" do
159
+ let(:data) do
160
+ [{ series: 'cpu',
161
+ values: { temp: 88, value: 54 } },
162
+ { series: 'gpu',
163
+ values: { value: 0.5435345 } }]
164
+ end
165
+
166
+ let(:body) do
167
+ data.map do |point|
168
+ InfluxDB::PointValue.new(point).dump
169
+ end.join("\n")
170
+ end
171
+
172
+ before do
173
+ stub_request(:post, "http://influxdb.test:9999/write").with(
174
+ query: { u: "username", p: "password", precision: 's', db: 'overriden_db' },
175
+ headers: { "Content-Type" => "application/octet-stream" },
176
+ body: body
177
+ ).to_return(status: 204)
178
+ end
179
+ it "should POST multiple points" do
180
+ expect(subject.write_points(data, nil, nil, 'overriden_db')).to be_a(Net::HTTPNoContent)
181
+ end
182
+ end
157
183
  end
158
184
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: influxdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.12
4
+ version: 0.3.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todd Persen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2016-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json