atsd 1.0.5 → 1.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c1e74266e6d628df2501eedbbc39fe0ce37f610
4
- data.tar.gz: f896ec4ccd576751340ca6bf6b28a4637aea06b7
3
+ metadata.gz: a0166a8f99dff59d83cfb254463d9bdbacb48281
4
+ data.tar.gz: ffd582313131f72cfbdbe783445d2d3dd559f7bc
5
5
  SHA512:
6
- metadata.gz: b886e56f95a5af7f3020e2bcf4babefffccb776b9e4e64521ed48f6eb7276cf5eb34613f8a985a8bdbb7b23fc5ea7128bc31221cef88aaa17d76ce661c88bc88
7
- data.tar.gz: d1548660eda809448fcd76a30c2ece2887dfe2eac3483f70a76dedaeb5c355048e0dc391d4a8cbe699ae259c20e0790e97b9ff59be6694b97dfb9829759cf85f
6
+ metadata.gz: 7971fd36026b618b11c71648d286fe90b945f66ed50fe86fa7cc22322ebd865dcaebc7067211b0b57a5aedced796908b259a838d040e3aa7b7c20b1924858a53
7
+ data.tar.gz: 2e23baf470fc966dc4876716dd9cbacdda922cc2ecc3344b0e9d34caec287c3b2240eeebd34cce58b3a941c03c4bc6107f784e3dc282c5dd4af0babdff651d66
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # Axibase Time-Series Database Client for Ruby
1
+ # Axibase Time Series Database Client for Ruby
2
2
 
3
3
  The ATSD Client for Ruby enables Ruby developers
4
4
  to easily read and write statistics and metadata
5
5
  from Axibase Time-Series Database.
6
6
 
7
- API documentation: https://axibase.com/atsd/api
7
+ API documentation: https://github.com/axibase/atsd-docs/blob/master/api/README.md
8
8
 
9
9
  ## Installation
10
10
 
@@ -120,8 +120,8 @@ Basic query:
120
120
  require 'time'
121
121
  series_service = atsd.series_service
122
122
  # => #<ATSD::SeriesService:0x007f82a4446c08
123
- query = series_service.query('sensor-1', 'temperature', Time.parse("2015-11-17T12:00:00Z"), Time.parse("2015-11-17T19:00:00Z"))
124
- # => {:entity=>"sensor-1", :metric=>"temperature", :start_time=>1447750800000, :end_time=>1447776000000}
123
+ query = series_service.query('sensor-1', 'temperature', "2015-11-17T12:00:00Z", "2015-11-17T19:00:00Z")
124
+ # => {:entity=>"sensor-1", :metric=>"temperature", :start_date=>"2015-11-17T12:00:00Z", :end_date=>"2015-11-17T19:00:00Z"}
125
125
 
126
126
  query.class
127
127
  # => ATSD::SeriesQuery
@@ -169,11 +169,11 @@ Query with Versions:
169
169
  ```ruby
170
170
  query = atsd.series_service.query("sensor-2", "pressure", Time.parse("2015-11-17T12:00:00Z"), Time.parse("2015-11-17T19:00:00Z"), {:versioned => true})
171
171
  query.execute
172
- template = "%23s, %13s, %23s, %17s, %17s\n"
173
- output = sprintf(template, "sample_time", "sample_value", "version_time", "version_source", "version_status")
172
+ template = "%24s, %13s, %24s, %17s, %17s\n"
173
+ output = sprintf(template, "sample_date", "sample_value", "version_date", "version_source", "version_status")
174
174
  query.result.each do |data|
175
- samples = data.data.sort_by{|sample| sample["version"]["t"]}
176
- samples.each {|sample| output << sprintf(template, Time.at(sample["t"]/1000).strftime("%Y-%m-%dT%H:%M:%SZ"), sample["v"], Time.at(sample["version"]["t"]/1000).strftime("%Y-%m-%dT%H:%M:%SZ"), sample["version"]["source"], sample["version"]["status"]) }
175
+ samples = data.data.sort_by{|sample| sample["version"]["d"]}
176
+ samples.each {|sample| output << sprintf(template, sample["d"], sample["v"], sample["version"]["d"], sample["version"]["source"], sample["version"]["status"]) }
177
177
  end
178
178
  puts output
179
179
  sample_time, sample_value, version_time, version_source, version_status
@@ -205,7 +205,7 @@ Inserting series:
205
205
  s = Series.new
206
206
  s.entity = 'sensor-1'
207
207
  s.metric = 'temperature'
208
- s.data = [ {t: Time.now.to_i*1000, v: 22} ]
208
+ s.data = [ {d: Time.now.iso8601, v: 22} ]
209
209
  atsd.series_service.insert(s)
210
210
  ```
211
211
 
@@ -215,7 +215,7 @@ Inserting series using Sample class:
215
215
  s = Series.new
216
216
  s.entity = 'sensor-1'
217
217
  s.metric = 'pressure'
218
- sample = Sample.new :time => Time.parse("2015-11-17T17:00:00Z"), :value => 7, :version => {:status => "normal", :source => "gateway-1"}
218
+ sample = Sample.new :date => "2015-11-17T17:00:00Z", :value => 7, :version => {:status => "normal", :source => "gateway-1"}
219
219
  s.data = [ sample ]
220
220
  series_service.insert(s)
221
221
  ```
@@ -223,8 +223,8 @@ series_service.insert(s)
223
223
  Inserting Series with Versions:
224
224
 
225
225
  ```ruby
226
- sample_1 = Sample.new :time => Time.parse("2015-11-17T17:00:00Z"), :value => 7, :version => {:status => "normal", :source => "gateway-1"}
227
- sample_2 = Sample.new :time => Time.parse("2015-11-17T18:00:00Z"), :value => 17, :version => {:status => "error", :source => "gateway-1"}
226
+ sample_1 = Sample.new :date => Time.parse("2015-11-17T17:00:00Z"), :value => 7, :version => {:status => "normal", :source => "gateway-1"}
227
+ sample_2 = Sample.new :date => Time.parse("2015-11-17T18:00:00Z"), :value => 17, :version => {:status => "error", :source => "gateway-1"}
228
228
  series = Series.new :entity => "sensor-1", :metric => "pressure", :data => [sample_1, sample_2]
229
229
  atsd.series_service.insert(series)
230
230
  ```
@@ -257,22 +257,18 @@ series_service.csv_insert('sensor-1', File.read('/path/to/data.csv'), { :user =>
257
257
  properties_service = atsd.properties_service
258
258
  # => #<ATSD::PropertiesService:0x007f82a456e6f8
259
259
 
260
- property = Property.new
261
- property.entity = 'sensor-1'
262
- property.type = 'sensor_type'
263
- property.tags = {"location":"NUR","site":"building-1"}
264
- property.keys = {"id": "ch-15"}
260
+ property = Property.new :entity => 'sensor-1', :type => 'sensor_type', :tags => {"location":"NUR","site":"building-1"}, :key => {"id": "ch-15"}
265
261
  properties_service.insert(property)
266
262
 
267
- properties_service.query('sensor-1', 'sensor_type').execute
263
+ properties_service.query('sensor-1', 'sensor_type', :start_date => "2015-11-17T17:00:00Z").execute
268
264
  # => [{:type=>"sensor_type",
269
265
  # :entity=>"sensor-1",
270
266
  # :tags=>{"location"=>"NUR", "site"=>"building-1"},
271
- # :timestamp=>1428304255068,
272
- # :keys=>{"id"=>"ch-15"}}]
267
+ # :d=>"2016-05-30T12:16:31Z",
268
+ # :key=>{"id"=>"ch-15"}}]
273
269
 
274
270
  properties_service.delete(property)
275
- properties_service.query('sensor-1', 'sensor_type').execute
271
+ properties_service.query('sensor-1', 'sensor_type', :start_date => "2015-11-17T17:00:00Z").execute
276
272
  # => []
277
273
  ```
278
274
 
@@ -282,28 +278,21 @@ properties_service.query('sensor-1', 'sensor_type').execute
282
278
  alerts_service = atsd.alerts_service
283
279
  # => #<ATSD::AlertsService:0x007faf7c0efdc0
284
280
 
281
+ alerts_service.query(:entity => "sensor-1", :metrics => ["meminfo.active"], :start_date => "2015-11-17T17:00:00Z").execute
285
282
  alerts_service.query.execute
286
- # => [{:value=>447660.0,
287
- # :id=>4,
288
- # :text_value=>"447660",
289
- # :tags=>{},
290
- # :metric=>"meminfo.active",
291
- # :entity=>"sensor-1",
292
- # :severity=>3,
293
- # :rule=>"My rule!",
294
- # :repeat_count=>5,
295
- # :open_time=>1428330612667,
296
- # :open_value=>445144.0,
297
- # :acknowledged=>false,
298
- # :last_event_time=>1428330687440},
299
- # {:value=>447660.0,
300
- # :id=>6,
301
- # :text_value=>"447660",
302
- # :tags=>{},
303
- # :metric=>"meminfo.active",
304
- # :entity=>"sensor-1",
305
- # :severity=>3,
306
- # ...
283
+ # => [{"entity"=>"sensor-1",
284
+ # "tags"=>{},
285
+ # "repeatCount"=>79,
286
+ # "textValue"=>"21.9",
287
+ # "metric"=>"meminfo.active",
288
+ # "severity"=>3,
289
+ # "rule"=>"memory info",
290
+ # "openDate"=>"2016-05-30T12:33:07Z",
291
+ # "lastEventDate"=>"2016-05-30T13:52:11Z",
292
+ # "acknowledged"=>false,
293
+ # "openValue"=>100.0,
294
+ # :v=>21.9,
295
+ # "id"=>8}]
307
296
  ```
308
297
  #### Metrics Service
309
298
 
@@ -311,7 +300,7 @@ alerts_service.query.execute
311
300
  metrics_service = atsd.metrics_service
312
301
  # => #<ATSD::MetricsService:0x007fbb548d9548
313
302
 
314
- metrics_service.list
303
+ metrics_service.list(:limit => 10)
315
304
  # => [{:name=>"activemq_metrics_count",
316
305
  # :enabled=>true,
317
306
  # :data_type=>"FLOAT",
@@ -43,8 +43,8 @@ module ATSD
43
43
  # @return [Array<Hash>] time series
44
44
  # @raise [APIError]
45
45
  def series_query(queries)
46
- response = @connection.post 'series', :queries => Utils.ensure_array(queries)
47
- response.body['series']
46
+ response = @connection.post 'series/query', Utils.ensure_array(queries)
47
+ response.body
48
48
  end
49
49
 
50
50
  # Insert time series
@@ -84,7 +84,7 @@ module ATSD
84
84
  # @return [Array<Hash>] array of properties
85
85
  # @raise [APIError]
86
86
  def properties_query(queries = nil)
87
- response = @connection.post 'properties', :queries => Utils.ensure_array(queries)
87
+ response = @connection.post 'properties/query', Utils.ensure_array(queries)
88
88
  response.body
89
89
  end
90
90
 
@@ -95,7 +95,7 @@ module ATSD
95
95
  # @return [Array<Hash>] array of properties
96
96
  # @raise [APIError]
97
97
  def properties_for_entity_and_type(entity, type)
98
- response = @connection.get "properties/#{entity}/types#{type}"
98
+ response = @connection.get "properties/query/#{entity}/types#{type}"
99
99
  response.body
100
100
  end
101
101
 
@@ -153,7 +153,7 @@ module ATSD
153
153
  # @return [Array<Hash>] alerts
154
154
  # @raise [APIError]
155
155
  def alerts_query(queries = nil)
156
- response = @connection.post 'alerts', :queries => Utils.ensure_array(queries)
156
+ response = @connection.post 'alerts/query', Utils.ensure_array(queries)
157
157
  response.body
158
158
  end
159
159
 
@@ -173,7 +173,7 @@ module ATSD
173
173
  # @return [Array<Hash>] history records
174
174
  # @raise [APIError]
175
175
  def alerts_history_query(queries = nil)
176
- response = @connection.post 'alerts/history', :queries => Utils.ensure_array(queries)
176
+ response = @connection.post 'alerts/history/query', Utils.ensure_array(queries)
177
177
  response.body
178
178
  end
179
179
 
@@ -24,13 +24,13 @@ module ATSD
24
24
  # Converts time and value keys as t and v respectively
25
25
  # for the rest operates as a superclass method
26
26
  def []=(key,value)
27
- if key.to_s == 'time'
28
- key = :t
27
+ if key.to_s == 'date'
28
+ key = :d
29
29
  case value
30
30
  when Time
31
- value = value.to_i * 1_000
31
+ value = value.iso8601
32
32
  else
33
- value = value.to_i
33
+ value = value
34
34
  end
35
35
  end
36
36
  key = :v if key.to_s == 'value'
@@ -7,24 +7,20 @@ module ATSD
7
7
 
8
8
  class Sample < BaseModel
9
9
 
10
- def set_time(time)
11
- self["t"] = time
12
- end
13
-
14
- def get_time()
15
- self.send("t")
10
+ def set_date(date)
11
+ self['d'] = date
16
12
  end
17
13
 
18
14
  def get_date()
19
- Time.at(self.send("t")/1000)
15
+ self.send('d')
20
16
  end
21
17
 
22
18
  def set_value(value)
23
- self["v"] = value
19
+ self['v'] = value
24
20
  end
25
21
 
26
22
  def get_value()
27
- self.send("v")
23
+ self.send('v')
28
24
  end
29
25
 
30
26
  end
@@ -32,19 +28,19 @@ module ATSD
32
28
  class Version < BaseModel
33
29
 
34
30
  def set_source(source)
35
- self["source"] = source
31
+ self['source'] = source
36
32
  end
37
33
 
38
34
  def get_source()
39
- self.send("source")
35
+ self.send('source')
40
36
  end
41
37
 
42
38
  def set_status(status)
43
- self["status"] = status
39
+ self['status'] = status
44
40
  end
45
41
 
46
42
  def get_status()
47
- self.send("status")
43
+ self.send('status')
48
44
  end
49
45
  end
50
46
  end
@@ -4,17 +4,17 @@ module ATSD
4
4
  # Class for building and executing Alerts History Query
5
5
  # @see https://axibase.com/atsd/api/#alerts:-history-query
6
6
  class AlertsHistoryQuery < BaseQuery
7
- TO_MILLISECONDS_LAMBDA = ->(v) do
7
+ TO_ISO_LAMBDA = ->(v) do
8
8
  case v
9
9
  when Time
10
- v.to_i * 1_000
10
+ v.iso8601
11
11
  else
12
- v.to_i
12
+ v
13
13
  end
14
14
  end
15
15
 
16
- coerce_key :end_time, TO_MILLISECONDS_LAMBDA
17
- coerce_key :start_time, TO_MILLISECONDS_LAMBDA
16
+ coerce_key :end_date, TO_ISO_LAMBDA
17
+ coerce_key :start_date, TO_ISO_LAMBDA
18
18
 
19
19
  # @return [Array<AlertHistory>]
20
20
  def result
@@ -18,12 +18,12 @@ module ATSD
18
18
  # @param [String] type see {Type} for possible values
19
19
  # @return [self]
20
20
 
21
- TO_MILLISECONDS_LAMBDA = ->(v) do
21
+ TO_ISO_LAMBDA = ->(v) do
22
22
  case v
23
23
  when Time
24
- v.to_i * 1_000
24
+ v.iso8601
25
25
  else
26
- v.to_i
26
+ v
27
27
  end
28
28
  end
29
29
 
@@ -4,17 +4,17 @@ module ATSD
4
4
  # Class for building and executing Properties Query
5
5
  # @see https://axibase.com/atsd/api/#properties:-query
6
6
  class PropertiesQuery < BaseQuery
7
- TO_MILLISECONDS_LAMBDA = ->(v) do
7
+ TO_ISO_LAMBDA = ->(v) do
8
8
  case v
9
9
  when Time
10
- v.to_i * 1_000
10
+ v.iso8601
11
11
  else
12
- v.to_i
12
+ v
13
13
  end
14
14
  end
15
15
 
16
- coerce_key :end_time, TO_MILLISECONDS_LAMBDA
17
- coerce_key :start_time, TO_MILLISECONDS_LAMBDA
16
+ coerce_key :end_date, TO_ISO_LAMBDA
17
+ coerce_key :start_date, TO_ISO_LAMBDA
18
18
 
19
19
  # @return [Array<Property>]
20
20
  def result
@@ -5,8 +5,8 @@ module ATSD
5
5
  # @see https://axibase.com/atsd/api/#series:-query
6
6
  class SeriesQuery < BaseQuery
7
7
 
8
- coerce_key :end_time, TO_MILLISECONDS_LAMBDA
9
- coerce_key :start_time, TO_MILLISECONDS_LAMBDA
8
+ coerce_key :end_date, TO_ISO_LAMBDA
9
+ coerce_key :start_date, TO_ISO_LAMBDA
10
10
 
11
11
  # @return [Array<Series>]
12
12
  def result
@@ -82,13 +82,13 @@ module ATSD
82
82
  # Returns an array of property types for the entity.
83
83
  #
84
84
  # @param [String, Hash, Entity] entity
85
- # @param [Integer, Time] start_time
85
+ # @param [Integer, Time] start_date
86
86
  # Return only property types that have been collected after the specified time.
87
87
  # @return [Array<String>]
88
88
  # @raise [APIError]
89
- def property_types(entity, start_time = nil)
90
- start_time = start_time.to_i * 1000 if start_time.is_a? Time
91
- params = start_time ? { :start_time => start_time } : {}
89
+ def property_types(entity, start_date = nil)
90
+ start_date = start_date.iso8601 if start_date.is_a? Time
91
+ params = start_date ? { :start_date => start_date } : {}
92
92
  @client.entities_property_types(name_for_entity(entity), params)
93
93
  end
94
94
 
@@ -10,15 +10,15 @@ module ATSD
10
10
  #
11
11
  # @param [String, Entity] entity
12
12
  # @param [String, Metric] metric
13
- # @param [Fixnum] start_time
14
- # @param [Fixnum] end_time
13
+ # @param [String] start_date
14
+ # @param [String] end_date
15
15
  # @param [Hash] options other query parameters
16
16
  # @return [SeriesQuery]
17
- def query(entity, metric, start_time, end_time, options = {})
17
+ def query(entity, metric, start_date, end_date, options = {})
18
18
  query = SeriesQuery.new @client
19
19
  entity = entity.name if entity.is_a? Entity
20
20
  metric = metric.name if metric.is_a? Metric
21
- options.merge! entity: entity, metric: metric, start_time: start_time, end_time: end_time
21
+ options.merge! entity: entity, metric: metric, start_date: start_date, end_date: end_date
22
22
  options.each { |option, value| query[option] = value }
23
23
  query
24
24
  end
@@ -1,3 +1,3 @@
1
1
  module ATSD
2
- VERSION = '1.0.5'
2
+ VERSION = '1.0.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Axibase Corporation
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-22 00:00:00.000000000 Z
11
+ date: 2016-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -256,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
256
  version: '0'
257
257
  requirements: []
258
258
  rubyforge_project:
259
- rubygems_version: 2.4.5.1
259
+ rubygems_version: 2.6.4
260
260
  signing_key:
261
261
  specification_version: 4
262
262
  summary: Axibase Time-Series Database Client for Ruby.