zeusclient 0.1.2 → 0.1.3
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 +4 -4
- data/Gemfile.lock +3 -1
- data/lib/zeus/api_client.rb +78 -9
- data/lib/zeus/api_client/result.rb +11 -4
- data/lib/zeus/api_client/version.rb +2 -1
- data/zeusclient.gemspec +1 -0
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c9b1fe09cdda854fc306b53d850844882fcfb8c
|
4
|
+
data.tar.gz: 67609f973c1bb564d651d09e684e5cd02e423389
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ebb415c828ccb35f9146ba6d85b15893538fabcaed53f44c61f91b480a90f66d2909f4e06274b4b833267842e3a36c01d0e1b3f86d7a57ad9ccdd21332b2eaf
|
7
|
+
data.tar.gz: 8a291264fc2236aa6fd0968135518621d9f1e38d00e9fac8301988f5ae80903ca7b1211c7d0527776a7ffdceabaa3bf3eb0c5d4a9579d7f5adc0099c9285941b
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
zeusclient (0.1.
|
4
|
+
zeusclient (0.1.3)
|
5
5
|
json
|
6
6
|
rest-client
|
7
7
|
|
@@ -23,6 +23,7 @@ GEM
|
|
23
23
|
unf (0.1.4)
|
24
24
|
unf_ext
|
25
25
|
unf_ext (0.0.7.1)
|
26
|
+
yard (0.8.7.6)
|
26
27
|
|
27
28
|
PLATFORMS
|
28
29
|
ruby
|
@@ -30,4 +31,5 @@ PLATFORMS
|
|
30
31
|
DEPENDENCIES
|
31
32
|
bundler (~> 1.8)
|
32
33
|
rake (~> 10.0)
|
34
|
+
yard (~> 0.8.0)
|
33
35
|
zeusclient!
|
data/lib/zeus/api_client.rb
CHANGED
@@ -18,13 +18,36 @@ require 'zeus/api_client/version'
|
|
18
18
|
|
19
19
|
module Zeus
|
20
20
|
|
21
|
+
# API Client for Zeus Service
|
21
22
|
class APIClient
|
22
23
|
|
24
|
+
# constructor for Zeus::APIClient
|
25
|
+
# @param [Hash] opts the options to create z Zeus::APIClient instance
|
26
|
+
# @option opts [String] :access_token The tokens for Zeus Service
|
27
|
+
# @option opts [String] :endpoint The base url for API endpoint
|
23
28
|
def initialize(opts={})
|
24
29
|
@access_token = opts[:access_token]
|
25
30
|
@endpoint = opts[:endpoint] || "http://api.ciscozeus.io"
|
26
31
|
end
|
27
32
|
|
33
|
+
# Get metrics list
|
34
|
+
# @param [String] regex a factor for filtering by metrics name
|
35
|
+
# [optional]
|
36
|
+
# [Examples] metric.name, metric.name*, metric.name.* etc.
|
37
|
+
# @param [String] from_date a factor for filtering by start timestamp
|
38
|
+
# [optional]
|
39
|
+
# @param [String] to_date a factor for filtering by end timestamp
|
40
|
+
# [optional]
|
41
|
+
# @param [String] aggregator an aggregation methods
|
42
|
+
# [optional]
|
43
|
+
# @param [String] group_interval grouping values by time interval
|
44
|
+
# [optional]
|
45
|
+
# [Examples] 1000s, 100m, 10h, 1d , 1w. Use 's' for seconds, 'm' for minutes, 'h' for hours, 'd' for days and 'w' for weeks.
|
46
|
+
# @param [String] filter_condition a factor for filtering by metrics name
|
47
|
+
# [optional]
|
48
|
+
# @param [String] limit a maximum number of returning values
|
49
|
+
# [optional]
|
50
|
+
# @return [Zeus::APIClient::Result]
|
28
51
|
def list_metrics(regex=nil, from_date=nil, to_date=nil, aggregator=nil, group_interval=nil, filter_condition=nil, limit=nil)
|
29
52
|
params = {}
|
30
53
|
params.merge!(metric_name: regex) if regex
|
@@ -35,23 +58,46 @@ module Zeus
|
|
35
58
|
params.merge!(filter_condition: filter_condition) if filter_condition
|
36
59
|
params.merge!(limit: limit) if limit
|
37
60
|
begin
|
38
|
-
response =
|
61
|
+
response = get("/metrics/#{@access_token}/_names/", params)
|
39
62
|
Result.new(response)
|
40
63
|
rescue => e
|
41
64
|
Result.new(e.response)
|
42
65
|
end
|
43
66
|
end
|
44
67
|
|
68
|
+
# Send metrics list
|
69
|
+
# @param [String] name a name of metrics
|
70
|
+
# [Examples] metric.name, metric.name*, metric.name.* etc.
|
71
|
+
# @param [Array] metrics a list of hash objects
|
72
|
+
# @return [Zeus::APIClient::Result]
|
45
73
|
def send_metrics(name, metrics)
|
46
74
|
params = {metrics: metrics}
|
47
75
|
begin
|
48
|
-
response =
|
76
|
+
response = post("/metrics/#{@access_token}/#{name}/", params)
|
49
77
|
Result.new(response)
|
50
78
|
rescue => e
|
51
79
|
Result.new(e.response)
|
52
80
|
end
|
53
81
|
end
|
54
82
|
|
83
|
+
# Get metrics
|
84
|
+
# @param [String] regex a factor for filtering by metrics name
|
85
|
+
# [optional]
|
86
|
+
# @param [String] from_date a factor for filtering by start timestamp
|
87
|
+
# [optional]
|
88
|
+
# @param [String] to_date a factor for filtering by end timestamp
|
89
|
+
# [optional]
|
90
|
+
# @param [String] aggregator an aggregation methods
|
91
|
+
# [optional]
|
92
|
+
# @param [String] group_interval grouping values by time interval
|
93
|
+
# [optional]
|
94
|
+
# [Examples] 1000s, 100m, 10h, 1d , 1w. Use 's' for seconds, 'm' for minutes, 'h' for hours, 'd' for days and 'w' for weeks.
|
95
|
+
# @param [String] filter_condition filters to be applied to metric values
|
96
|
+
# [optional]
|
97
|
+
# [Examples] "column1 > 0", "column1 > 50 AND column2 = 10".
|
98
|
+
# @param [Integer] limit a maximum number of returning values
|
99
|
+
# [optional]
|
100
|
+
# @return [Zeus::APIClient::Result]
|
55
101
|
def get_metrics(regex=nil, from_date=nil, to_date=nil, aggregator=nil, group_interval=nil, filter_condition=nil, limit=nil)
|
56
102
|
params = {}
|
57
103
|
params.merge!(metric_name: regex) if regex
|
@@ -62,50 +108,73 @@ module Zeus
|
|
62
108
|
params.merge!(filter_condition: filter_condition) if filter_condition
|
63
109
|
params.merge!(limit: limit) if limit
|
64
110
|
begin
|
65
|
-
response =
|
111
|
+
response = get("/metrics/#{@access_token}/_values/", params)
|
66
112
|
Result.new(response)
|
67
113
|
rescue => e
|
68
114
|
Result.new(e.response)
|
69
115
|
end
|
70
116
|
end
|
71
117
|
|
118
|
+
# delete metrics
|
119
|
+
# @param [String] name a target metrics name
|
120
|
+
# @return [Zeus::APIClient::Result]
|
72
121
|
def delete_metrics(name)
|
73
|
-
response =
|
122
|
+
response = delete("/metrics/#{@access_token}/#{name}/")
|
74
123
|
Result.new(response)
|
75
124
|
end
|
76
125
|
|
126
|
+
# send logs
|
127
|
+
# @param [String] name a log name
|
128
|
+
# @param [Array] logs a list of hash objects
|
129
|
+
# @return [Zeus::APIClient::Result]
|
77
130
|
def send_logs(name, logs)
|
78
131
|
params = {logs:logs}
|
79
132
|
begin
|
80
|
-
response =
|
133
|
+
response = post("/logs/#{@access_token}/#{name}/", params)
|
81
134
|
Result.new(response)
|
82
135
|
rescue => e
|
83
136
|
Result.new(e.response)
|
84
137
|
end
|
85
138
|
end
|
86
139
|
|
87
|
-
|
140
|
+
# get logs
|
141
|
+
# @param [String] name a log name
|
142
|
+
# @param [String] attribute_name Name of the attribute within the log to be searched.
|
143
|
+
# [optional]
|
144
|
+
# [Examples] if the submitted log has the format {"key1": "value1", "key2": "value2", "timestamp": 1430268064} then the value of this field can be "key1" or "key2"
|
145
|
+
# @param [String] pattern a factor for fitering by name
|
146
|
+
# [optional]
|
147
|
+
# @param [String] from_date a factor for filtering by start timestamp
|
148
|
+
# [optional]
|
149
|
+
# @param [String] to_date a factor for filtering by end timestamp
|
150
|
+
# [optional]
|
151
|
+
# @param [Integer] offset a factor for filtering by metrics name
|
152
|
+
# [optional]
|
153
|
+
# @param [Integer] limit a maximum number of returning values
|
154
|
+
# [optional]
|
155
|
+
# @return [Zeus::APIClient::Result]
|
156
|
+
def get_logs(name, attribute_name=nil, pattern=nil, from_date=nil, to_date=nil, offset=nil, limit=nil)
|
88
157
|
params = {log_name: name} # required fields
|
158
|
+
params.merge!(attribute_name: attribute_name) if attribute_name
|
89
159
|
params.merge!(pattern: pattern) if pattern
|
90
160
|
params.merge!(from: from_date) if from_date
|
91
161
|
params.merge!(to: to_date) if to_date
|
92
162
|
params.merge!(offset: offset) if offset
|
93
163
|
params.merge!(limit: limit) if limit
|
94
164
|
begin
|
95
|
-
response =
|
165
|
+
response = get("/logs/#{@access_token}", params)
|
96
166
|
Result.new(response)
|
97
167
|
rescue => e
|
98
168
|
Result.new(e.response)
|
99
169
|
end
|
100
170
|
end
|
101
171
|
|
172
|
+
private
|
102
173
|
def get(path, params={})
|
103
174
|
RestClient.get "#{@endpoint}#{path}", {params: params}
|
104
175
|
end
|
105
176
|
|
106
177
|
def post(path, data={})
|
107
|
-
p "#{@endpoint}#{path}"
|
108
|
-
p data
|
109
178
|
RestClient.post "#{@endpoint}#{path}", data.to_json, :content_type => :json, :accept => :json
|
110
179
|
end
|
111
180
|
|
@@ -16,32 +16,39 @@ require 'json'
|
|
16
16
|
|
17
17
|
module Zeus
|
18
18
|
class APIClient
|
19
|
+
# Wrapper for a response of REST API
|
19
20
|
class Result
|
20
21
|
|
22
|
+
# constructor for Result class
|
21
23
|
def initialize(response)
|
22
24
|
@response = response
|
23
25
|
end
|
24
26
|
|
27
|
+
# request is successed?
|
25
28
|
def success?
|
26
29
|
@response.code == 200 || @response.code == 201
|
27
30
|
end
|
28
31
|
|
32
|
+
# request is error?
|
29
33
|
def error?
|
30
34
|
!self.success?
|
31
35
|
end
|
32
36
|
|
37
|
+
# response code
|
33
38
|
def code
|
34
39
|
@response.code
|
35
40
|
end
|
36
41
|
|
37
|
-
|
38
|
-
JSON.parse(@response)
|
39
|
-
end
|
40
|
-
|
42
|
+
# response header
|
41
43
|
def header
|
42
44
|
@response.headers
|
43
45
|
end
|
44
46
|
|
47
|
+
# response body
|
48
|
+
def data
|
49
|
+
JSON.parse(@response)
|
50
|
+
end
|
51
|
+
|
45
52
|
end
|
46
53
|
end
|
47
54
|
end
|
data/zeusclient.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zeusclient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Komei Shimamura
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.8.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.8.0
|
69
83
|
description: Client for Cisco Zeus. This allows users to send and receive data to
|
70
84
|
and from Cisco Zeus.
|
71
85
|
email:
|
@@ -111,3 +125,4 @@ signing_key:
|
|
111
125
|
specification_version: 4
|
112
126
|
summary: Ruby Client for Cisco Zeus
|
113
127
|
test_files: []
|
128
|
+
has_rdoc:
|