atsd 1.0.1
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 +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/Gemfile +8 -0
- data/README.md +365 -0
- data/Rakefile +16 -0
- data/atsd.gemspec +36 -0
- data/lib/atsd.rb +19 -0
- data/lib/atsd/atsd.rb +54 -0
- data/lib/atsd/client.rb +469 -0
- data/lib/atsd/errors/api_error.rb +11 -0
- data/lib/atsd/errors/error.rb +3 -0
- data/lib/atsd/middleware/errors_handler.rb +88 -0
- data/lib/atsd/models/alert.rb +7 -0
- data/lib/atsd/models/alert_history.rb +7 -0
- data/lib/atsd/models/base_model.rb +23 -0
- data/lib/atsd/models/entity.rb +7 -0
- data/lib/atsd/models/entity_group.rb +8 -0
- data/lib/atsd/models/metric.rb +7 -0
- data/lib/atsd/models/property.rb +11 -0
- data/lib/atsd/models/series.rb +8 -0
- data/lib/atsd/queries/alerts_history_query.rb +31 -0
- data/lib/atsd/queries/alerts_query.rb +31 -0
- data/lib/atsd/queries/base_query.rb +40 -0
- data/lib/atsd/queries/properties_query.rb +31 -0
- data/lib/atsd/queries/series_query.rb +150 -0
- data/lib/atsd/services/alerts_service.rb +88 -0
- data/lib/atsd/services/base_service.rb +15 -0
- data/lib/atsd/services/entities_service.rb +130 -0
- data/lib/atsd/services/entity_groups_service.rb +186 -0
- data/lib/atsd/services/metrics_service.rb +122 -0
- data/lib/atsd/services/properties_service.rb +63 -0
- data/lib/atsd/services/series_service.rb +53 -0
- data/lib/atsd/utils.rb +20 -0
- data/lib/atsd/utils/camelize_keys.rb +41 -0
- data/lib/atsd/utils/underscore_keys.rb +21 -0
- data/lib/atsd/version.rb +3 -0
- metadata +264 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'atsd/services/base_service'
|
2
|
+
require 'atsd/queries/properties_query'
|
3
|
+
require 'atsd/models/property'
|
4
|
+
require 'atsd/models/entity'
|
5
|
+
|
6
|
+
module ATSD
|
7
|
+
class PropertiesService < BaseService
|
8
|
+
# Create query builder for properties.
|
9
|
+
#
|
10
|
+
# @param [String, Entity] entity
|
11
|
+
# @param [String] type
|
12
|
+
# @param [Hash] options other query parameters
|
13
|
+
# @return [PropertiesQuery]
|
14
|
+
def query(entity, type, options = {})
|
15
|
+
query = PropertiesQuery.new @client
|
16
|
+
entity = entity.name if entity.is_a? Entity
|
17
|
+
options.merge! entity: entity, type: type
|
18
|
+
options.each { |option, value| query[option] = value }
|
19
|
+
query
|
20
|
+
end
|
21
|
+
|
22
|
+
# Insert properties.
|
23
|
+
#
|
24
|
+
# @param [Array<Property, Hash>, Property, Hash] properties
|
25
|
+
# @return [self]
|
26
|
+
# @raise [APIError]
|
27
|
+
def insert(properties)
|
28
|
+
properties = Utils.ensure_array(properties).map do |s|
|
29
|
+
s = Property.new(s) if s.is_a? Hash
|
30
|
+
s.to_request_hash
|
31
|
+
end
|
32
|
+
@client.properties_insert properties
|
33
|
+
self
|
34
|
+
end
|
35
|
+
|
36
|
+
# Delete properties.
|
37
|
+
#
|
38
|
+
# @param [Array<Property, Hash>, Property, Hash] properties
|
39
|
+
# @return [self]
|
40
|
+
# @raise [APIError]
|
41
|
+
def delete(properties)
|
42
|
+
properties = Utils.ensure_array(properties).map do |s|
|
43
|
+
s = Property.new(s) if s.is_a? Hash
|
44
|
+
s.to_request_hash.select { |k, v| [:entity, :type, :key].include? k }
|
45
|
+
end
|
46
|
+
@client.properties_delete(properties)
|
47
|
+
self
|
48
|
+
end
|
49
|
+
|
50
|
+
# Delete rows that partially match the specified key
|
51
|
+
#
|
52
|
+
# @param [Hash, Array<Hash>] matchers
|
53
|
+
# @return [self]
|
54
|
+
# @raise [APIError]
|
55
|
+
def delete_match(matchers)
|
56
|
+
matchers = Utils.ensure_array(matchers).map do |m|
|
57
|
+
m.camelize_keys
|
58
|
+
end
|
59
|
+
@client.properties_delete_match matchers
|
60
|
+
self
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'atsd/services/base_service'
|
2
|
+
require 'atsd/queries/series_query'
|
3
|
+
require 'atsd/models/series'
|
4
|
+
require 'atsd/models/entity'
|
5
|
+
require 'atsd/models/metric'
|
6
|
+
|
7
|
+
module ATSD
|
8
|
+
class SeriesService < BaseService
|
9
|
+
# Create query builder for series.
|
10
|
+
#
|
11
|
+
# @param [String, Entity] entity
|
12
|
+
# @param [String, Metric] metric
|
13
|
+
# @param [Hash] options other query parameters
|
14
|
+
# @return [SeriesQuery]
|
15
|
+
def query(entity, metric, options = {})
|
16
|
+
query = SeriesQuery.new @client
|
17
|
+
entity = entity.name if entity.is_a? Entity
|
18
|
+
metric = metric.name if metric.is_a? Metric
|
19
|
+
options.merge! entity: entity, metric: metric
|
20
|
+
options.each { |option, value| query[option] = value }
|
21
|
+
query
|
22
|
+
end
|
23
|
+
|
24
|
+
# Insert time series.
|
25
|
+
#
|
26
|
+
# @param [Array<Series, Hash>, Series, Hash] series
|
27
|
+
# @return [self]
|
28
|
+
# @raise [APIError]
|
29
|
+
def insert(series)
|
30
|
+
series = Utils.ensure_array(series).map do |s|
|
31
|
+
s = Series.new(s) if s.is_a? Hash
|
32
|
+
s.to_request_hash
|
33
|
+
end
|
34
|
+
@client.series_insert series
|
35
|
+
self
|
36
|
+
end
|
37
|
+
|
38
|
+
# Series CSV: Insert
|
39
|
+
#
|
40
|
+
# @param [String, Entity] entity
|
41
|
+
# @param [String] data Payload - CSV containing time column and one or multiple metric columns.
|
42
|
+
# - Separator must be comma.
|
43
|
+
# - Time must be specified in Unix milliseconds.
|
44
|
+
# - Time column must be first, name of the time column could be arbitrary.
|
45
|
+
# @param [Hash] tags tag=value hash
|
46
|
+
# @return [true]
|
47
|
+
# @raise [APIError]
|
48
|
+
def csv_insert(entity, data, tags = {})
|
49
|
+
entity = entity.name if entity.is_a? Entity
|
50
|
+
@client.series_csv_insert(entity, data, tags)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/atsd/utils.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'atsd/utils/camelize_keys'
|
2
|
+
require 'atsd/utils/underscore_keys'
|
3
|
+
|
4
|
+
module ATSD
|
5
|
+
module Utils
|
6
|
+
# Ensures that object is an array
|
7
|
+
# @param [Object] object
|
8
|
+
# @return [Array]
|
9
|
+
def self.ensure_array(object)
|
10
|
+
if object.nil?
|
11
|
+
[]
|
12
|
+
elsif object.respond_to?(:to_ary)
|
13
|
+
object.to_ary || [object]
|
14
|
+
else
|
15
|
+
[object]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
|
3
|
+
module ATSD
|
4
|
+
module Utils
|
5
|
+
module CamelizeKeys
|
6
|
+
def camelize_keys!
|
7
|
+
CamelizeKeys.camelize_keys!(self)
|
8
|
+
self
|
9
|
+
end
|
10
|
+
|
11
|
+
def camelize_keys
|
12
|
+
dup.camelize_keys!
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
def camelize_keys!(hash)
|
17
|
+
hash.keys.each do |k|
|
18
|
+
new_key = k.to_s.camelize :lower
|
19
|
+
new_key = new_key.to_sym if k.is_a? Symbol
|
20
|
+
hash[new_key] = hash.delete(k)
|
21
|
+
end
|
22
|
+
hash
|
23
|
+
end
|
24
|
+
|
25
|
+
def camelize_keys(hash)
|
26
|
+
hash.dup.tap do | new_hash |
|
27
|
+
camelize_keys! new_hash
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class << self
|
33
|
+
include ClassMethods
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class Hash
|
40
|
+
include ATSD::Utils::CamelizeKeys
|
41
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
|
3
|
+
module ATSD
|
4
|
+
module Utils
|
5
|
+
module UnderscoreKeys
|
6
|
+
def self.included(base)
|
7
|
+
base.send :include, InstanceMethods
|
8
|
+
|
9
|
+
base.send :alias_method, :set_value_without_underscore, :[]= unless base.method_defined?(:set_value_without_underscore)
|
10
|
+
base.send :alias_method, :[]=, :set_value_with_underscore
|
11
|
+
end
|
12
|
+
|
13
|
+
module InstanceMethods
|
14
|
+
def set_value_with_underscore(key, value)
|
15
|
+
key = key.to_s.underscore.to_sym
|
16
|
+
set_value_without_underscore(key, value)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/atsd/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,264 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: atsd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Axibase Corporation
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-04-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.4'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.10'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.2'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: vcr
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.9'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.9'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: yard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.8'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.8'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: redcarpet
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: geminabox
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: multi_json
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: faraday
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0.9'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0.9'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: faraday_middleware
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.9'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.9'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: hashie
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '3.4'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '3.4'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: activesupport
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '4.0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '4.0'
|
195
|
+
description: Axibase Time-Series Database Client for Ruby is an easy-to-use client
|
196
|
+
for interfacing with ATSD metadata and data REST API services.
|
197
|
+
email:
|
198
|
+
- atsd-api@axibase.com
|
199
|
+
executables: []
|
200
|
+
extensions: []
|
201
|
+
extra_rdoc_files: []
|
202
|
+
files:
|
203
|
+
- ".gitignore"
|
204
|
+
- ".rspec"
|
205
|
+
- Gemfile
|
206
|
+
- README.md
|
207
|
+
- Rakefile
|
208
|
+
- atsd.gemspec
|
209
|
+
- lib/atsd.rb
|
210
|
+
- lib/atsd/atsd.rb
|
211
|
+
- lib/atsd/client.rb
|
212
|
+
- lib/atsd/errors/api_error.rb
|
213
|
+
- lib/atsd/errors/error.rb
|
214
|
+
- lib/atsd/middleware/errors_handler.rb
|
215
|
+
- lib/atsd/models/alert.rb
|
216
|
+
- lib/atsd/models/alert_history.rb
|
217
|
+
- lib/atsd/models/base_model.rb
|
218
|
+
- lib/atsd/models/entity.rb
|
219
|
+
- lib/atsd/models/entity_group.rb
|
220
|
+
- lib/atsd/models/metric.rb
|
221
|
+
- lib/atsd/models/property.rb
|
222
|
+
- lib/atsd/models/series.rb
|
223
|
+
- lib/atsd/queries/alerts_history_query.rb
|
224
|
+
- lib/atsd/queries/alerts_query.rb
|
225
|
+
- lib/atsd/queries/base_query.rb
|
226
|
+
- lib/atsd/queries/properties_query.rb
|
227
|
+
- lib/atsd/queries/series_query.rb
|
228
|
+
- lib/atsd/services/alerts_service.rb
|
229
|
+
- lib/atsd/services/base_service.rb
|
230
|
+
- lib/atsd/services/entities_service.rb
|
231
|
+
- lib/atsd/services/entity_groups_service.rb
|
232
|
+
- lib/atsd/services/metrics_service.rb
|
233
|
+
- lib/atsd/services/properties_service.rb
|
234
|
+
- lib/atsd/services/series_service.rb
|
235
|
+
- lib/atsd/utils.rb
|
236
|
+
- lib/atsd/utils/camelize_keys.rb
|
237
|
+
- lib/atsd/utils/underscore_keys.rb
|
238
|
+
- lib/atsd/version.rb
|
239
|
+
homepage: https://github.com/axibase/atsd-api-ruby/
|
240
|
+
licenses:
|
241
|
+
- Apache-2.0
|
242
|
+
metadata: {}
|
243
|
+
post_install_message:
|
244
|
+
rdoc_options: []
|
245
|
+
require_paths:
|
246
|
+
- lib
|
247
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
248
|
+
requirements:
|
249
|
+
- - ">="
|
250
|
+
- !ruby/object:Gem::Version
|
251
|
+
version: '0'
|
252
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
253
|
+
requirements:
|
254
|
+
- - ">="
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
version: '0'
|
257
|
+
requirements: []
|
258
|
+
rubyforge_project:
|
259
|
+
rubygems_version: 2.4.6
|
260
|
+
signing_key:
|
261
|
+
specification_version: 4
|
262
|
+
summary: Axibase Time-Series Database Client for Ruby.
|
263
|
+
test_files: []
|
264
|
+
has_rdoc:
|