sky_zabbix 2.4.0.1.1 → 2.4.0.1.2
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/README.md +15 -1
- data/Rakefile +33 -6
- data/lib/sky_zabbix/client/target_base.rb +9 -0
- data/lib/sky_zabbix/client/target_gen.rb +5 -0
- data/lib/sky_zabbix/jsonrpc.rb +22 -19
- data/lib/sky_zabbix/jsonrpc/errors.rb +4 -1
- data/lib/sky_zabbix/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88126fe264f9f23743b4070832f3488d3c133b94
|
4
|
+
data.tar.gz: c0fb42cfd106f0cafd9a83c3b70fbd7fb099c674
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd187bc00c8411decdae5a3ce5145a88ad4edb40489000a470e0feca7c3cd5a79157ffba5783262234c0fca078ea5ccc0daa4867892b6452dac654653a69d936
|
7
|
+
data.tar.gz: c0936ecee108baed4826554888390e126401d972dd0120abb0366d1c4a7eacca06617838742b0f0933dd8df93ce5481910eb1886d293bd303e06c3f1b5328d1b
|
data/README.md
CHANGED
@@ -89,7 +89,21 @@ requests = []
|
|
89
89
|
requests.push client.host.build_get()
|
90
90
|
requests.push client.user.build_get()
|
91
91
|
requests.push client.hostgroup.build_get()
|
92
|
-
host_resp, user_resp, hostgroup_resp =
|
92
|
+
host_resp, user_resp, hostgroup_resp = client.batch(*requests)
|
93
|
+
```
|
94
|
+
|
95
|
+
### Logger
|
96
|
+
|
97
|
+
Don't log on default.
|
98
|
+
If logger is received to constructor, SkyZabbix start logging.
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
require 'logger'
|
102
|
+
logger = Logger.new(STDOUT)
|
103
|
+
client = SkyZabbix::Client.new(zabbix_url, logger: logger)
|
104
|
+
client.login(zabbix_user, zabbix_pass)
|
105
|
+
|
106
|
+
client.host.get() # => I, [2015-06-29T17:35:19.609971 #3500] INFO -- : [SkyZabbix 200 5.296144592] host.get({})
|
93
107
|
```
|
94
108
|
|
95
109
|
## Development
|
data/Rakefile
CHANGED
@@ -3,14 +3,11 @@ require "rspec/core/rake_task"
|
|
3
3
|
require 'open3'
|
4
4
|
require 'json'
|
5
5
|
|
6
|
-
require_relative 'lib/sky_zabbix/version'
|
7
|
-
|
8
6
|
RSpec::Core::RakeTask.new(:spec)
|
9
7
|
|
10
8
|
task :default => :spec
|
11
9
|
|
12
10
|
namespace :generate do
|
13
|
-
#TODO: clone zabbix/zabbix, version
|
14
11
|
desc "Generate list of method"
|
15
12
|
task :methods do |task, args|
|
16
13
|
out, err, status = Open3.capture3("php", "build.php")
|
@@ -27,12 +24,40 @@ namespace :release do
|
|
27
24
|
task :all do |task, args|
|
28
25
|
exec = -> (cmd) {
|
29
26
|
print '> '; puts cmd.join(' ')
|
30
|
-
system(*cmd)
|
27
|
+
r = system(*cmd)
|
28
|
+
unless r
|
29
|
+
raise "#{cmd} exit with #{$?}"
|
30
|
+
end
|
31
|
+
}
|
32
|
+
|
33
|
+
get_env = -> (name) {
|
34
|
+
v = ENV[name]
|
35
|
+
raise "#{name} environment variable should be set!" unless v
|
36
|
+
return v
|
31
37
|
}
|
32
38
|
|
33
39
|
versions = %w[2.2 2.4]
|
34
|
-
path
|
40
|
+
path = get_env.('PATH_ZABBIX')
|
41
|
+
lib_version = get_env.('LIB_VERSION')
|
35
42
|
|
43
|
+
# check git status
|
44
|
+
unless `git status --short`.empty?
|
45
|
+
raise "Should commit some changes."
|
46
|
+
end
|
47
|
+
|
48
|
+
# Update version
|
49
|
+
v_path = File.expand_path('../lib/sky_zabbix/version.rb', __FILE__)
|
50
|
+
f = File.read(v_path)
|
51
|
+
f[/^\s+LIB_VERSION = "([\d.]+)"$/, 1] = lib_version
|
52
|
+
File.write(v_path, f)
|
53
|
+
|
54
|
+
# version up commit and add tag and push.
|
55
|
+
exec.(%W[git commit -am "Bump\ up\ version to #{lib_version}"])
|
56
|
+
exec.(%W[git tag v#{lib_version}])
|
57
|
+
exec.(%w[git push])
|
58
|
+
exec.(%W[git push origin v#{lib_version}])
|
59
|
+
|
60
|
+
# build gems
|
36
61
|
versions.each do |v|
|
37
62
|
Dir.chdir(path) do
|
38
63
|
latest_tag = `git tag`.split("\n").select{|x|x =~ /^#{Regexp.escape(v)}/}.sort{|a, b|a[/\.(\d+)$/, 1].to_i <=> b[/\.(\d+)$/, 1].to_i}.last
|
@@ -41,7 +66,9 @@ namespace :release do
|
|
41
66
|
Rake::Task['generate:methods'].execute
|
42
67
|
Rake::Task['build'].execute
|
43
68
|
end
|
44
|
-
|
69
|
+
|
70
|
+
pkgs = Dir.glob(File.join(File.expand_path('../pkg/', __FILE__), "sky_zabbix-*#{lib_version}.gem"))
|
71
|
+
# Push gems
|
45
72
|
pkgs.each do |p|
|
46
73
|
exec.(%W[gem push #{p}])
|
47
74
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# TargetBase is a Base Class for target of Zabbix API method.
|
1
2
|
# @abstract
|
2
3
|
class SkyZabbix::Client::TargetBase
|
3
4
|
# @return [String]
|
@@ -14,6 +15,7 @@ class SkyZabbix::Client::TargetBase
|
|
14
15
|
@client = client
|
15
16
|
end
|
16
17
|
|
18
|
+
# Returns list of filtered primary key.
|
17
19
|
# @param [Hash] filter
|
18
20
|
# @return [Array<String>] List of ID
|
19
21
|
def get_ids(filter)
|
@@ -24,6 +26,7 @@ class SkyZabbix::Client::TargetBase
|
|
24
26
|
return _query('get', params).map{|x|x[pk]}
|
25
27
|
end
|
26
28
|
|
29
|
+
# Return filtered primary key of founded first.
|
27
30
|
# @param [Hash] filter
|
28
31
|
# @return [Array<String>] ID of founded first.
|
29
32
|
def get_id(filter)
|
@@ -40,6 +43,7 @@ class SkyZabbix::Client::TargetBase
|
|
40
43
|
|
41
44
|
# @param [String] method is method name. ex) get, create, delete ...
|
42
45
|
# @param [Any] params is parameters.
|
46
|
+
# @return [Hash{Symbol => Any}]
|
43
47
|
def _build(method, params)
|
44
48
|
raise "Should use method of sub class!" unless _zbx_class
|
45
49
|
@client.build("#{_zbx_class}.#{method}", params)
|
@@ -49,4 +53,9 @@ class SkyZabbix::Client::TargetBase
|
|
49
53
|
def _zbx_class
|
50
54
|
return self.class._zbx_class
|
51
55
|
end
|
56
|
+
|
57
|
+
# @abstract
|
58
|
+
def pk
|
59
|
+
raise 'Should override pk method!'
|
60
|
+
end
|
52
61
|
end
|
@@ -13,12 +13,17 @@ methods.each do |name, v|
|
|
13
13
|
v[:methods].each do |method|
|
14
14
|
# Generate query method.
|
15
15
|
# Example: user.login()
|
16
|
+
# @param [Any] params
|
17
|
+
# @return [Any] return query response.
|
16
18
|
define_method(method) do |params={}|
|
17
19
|
_query(method, params)
|
18
20
|
end
|
19
21
|
|
20
22
|
# Generate build method. For batch request
|
21
23
|
# Example: user.build_login()
|
24
|
+
# @param [Any] params
|
25
|
+
# @return [Hash{}] return query response.
|
26
|
+
# @return [Hash{Symbol => Any}]
|
22
27
|
define_method("build_#{method}") do |params={}|
|
23
28
|
_build(method, params)
|
24
29
|
end
|
data/lib/sky_zabbix/jsonrpc.rb
CHANGED
@@ -12,6 +12,7 @@ class SkyZabbix::Jsonrpc
|
|
12
12
|
|
13
13
|
attr_accessor :token
|
14
14
|
|
15
|
+
# Send normal request.
|
15
16
|
# @param [String] method is json-rpc method name.
|
16
17
|
# @param [Any?] params is json-rpc parameters.
|
17
18
|
# @param [Boolean] notification
|
@@ -19,23 +20,7 @@ class SkyZabbix::Jsonrpc
|
|
19
20
|
request(build(method, params, notification: notification))
|
20
21
|
end
|
21
22
|
|
22
|
-
#
|
23
|
-
# @return [Any?] return result of response
|
24
|
-
def request(builded)
|
25
|
-
uri = URI.parse(@uri)
|
26
|
-
|
27
|
-
resp = do_req(uri, builded)
|
28
|
-
|
29
|
-
return nil unless builded[:id] # when notification
|
30
|
-
|
31
|
-
# Parse and error handling
|
32
|
-
body = JSON.parse(resp.body)
|
33
|
-
raise Error.create(body) if body['error']
|
34
|
-
|
35
|
-
return body['result']
|
36
|
-
end
|
37
|
-
|
38
|
-
# XXX: エラー処理はこれでいい?
|
23
|
+
# Send batch request.
|
39
24
|
# @example Return values.
|
40
25
|
# rpc.batch(
|
41
26
|
# rpc.build('a', 'A'),
|
@@ -50,7 +35,8 @@ class SkyZabbix::Jsonrpc
|
|
50
35
|
# ) # => Error::BatchError.
|
51
36
|
# # Can get response of 'a' from ex.result
|
52
37
|
# @param [Array<Hash>] buildeds is Array of result of 'build' method.
|
53
|
-
# @return [Array<Any|
|
38
|
+
# @return [Array<Any|nil>]
|
39
|
+
# @raise [Error::BatchError]
|
54
40
|
def batch(buildeds)
|
55
41
|
uri = URI.parse(@uri)
|
56
42
|
resp = do_req(uri, buildeds)
|
@@ -83,6 +69,7 @@ class SkyZabbix::Jsonrpc
|
|
83
69
|
# @param [String] method is json-rpc method name.
|
84
70
|
# @param [Any?] params is json-rpc parameters.
|
85
71
|
# @param [Boolean] notification
|
72
|
+
# @return [Hash{Symbol => Any}]
|
86
73
|
def build(method, params, notification: false)
|
87
74
|
res = {
|
88
75
|
jsonrpc: VERSION,
|
@@ -98,6 +85,22 @@ class SkyZabbix::Jsonrpc
|
|
98
85
|
|
99
86
|
private
|
100
87
|
|
88
|
+
# @param [Hash{String => Any}] builded is result of 'build' method.
|
89
|
+
# @return [Any?] return result of response
|
90
|
+
def request(builded)
|
91
|
+
uri = URI.parse(@uri)
|
92
|
+
|
93
|
+
resp = do_req(uri, builded)
|
94
|
+
|
95
|
+
return nil unless builded[:id] # when notification
|
96
|
+
|
97
|
+
# Parse and error handling
|
98
|
+
body = JSON.parse(resp.body)
|
99
|
+
raise Error.create(body) if body['error']
|
100
|
+
|
101
|
+
return body['result']
|
102
|
+
end
|
103
|
+
|
101
104
|
# @return [Integer] random ID.
|
102
105
|
def id_gen
|
103
106
|
return rand(10**12)
|
@@ -131,7 +134,7 @@ class SkyZabbix::Jsonrpc
|
|
131
134
|
# @param [Hash|Array] body is request body.
|
132
135
|
# @param [Net::HTTPResponse] resp
|
133
136
|
def logging_request(start_time, body, resp)
|
134
|
-
return unless @logger
|
137
|
+
return unless @logger && resp
|
135
138
|
|
136
139
|
sec = Time.now - start_time
|
137
140
|
msg_body =
|
@@ -1,4 +1,5 @@
|
|
1
1
|
class SkyZabbix::Jsonrpc::Error < StandardError
|
2
|
+
# @param [Array<Hash{String => Any}>] body is response body.
|
2
3
|
def initialize(body)
|
3
4
|
@error = body['error']
|
4
5
|
msg = "#{@error['message']} #{@error['data']}"
|
@@ -13,6 +14,8 @@ class SkyZabbix::Jsonrpc::Error < StandardError
|
|
13
14
|
class InternalError < self; end # Internal JSON-RPC error.
|
14
15
|
class ServerError < self; end # Reserved for implementation-defined server-errors.
|
15
16
|
|
17
|
+
# @param [Array<Hash{String => Any}>] body is response body.
|
18
|
+
# @return [Error] A Error instance.
|
16
19
|
def self.create(body)
|
17
20
|
klass =
|
18
21
|
case body['code']
|
@@ -41,7 +44,7 @@ class SkyZabbix::Jsonrpc::Error < StandardError
|
|
41
44
|
return errors.map(&:message).join(', ')
|
42
45
|
end
|
43
46
|
|
44
|
-
# @param [Array<Hash
|
47
|
+
# @param [Array<Hash{String => Any}>] body is response body.
|
45
48
|
# @return [Boolean]
|
46
49
|
def self.error?(body)
|
47
50
|
return body.any?{|x|x['error']}
|
data/lib/sky_zabbix/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sky_zabbix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.0.1.
|
4
|
+
version: 2.4.0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Skyarch Networks Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
version: '0'
|
144
144
|
requirements: []
|
145
145
|
rubyforge_project:
|
146
|
-
rubygems_version: 2.4.5
|
146
|
+
rubygems_version: 2.4.5.1
|
147
147
|
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: An API Wrapper of Zabbix
|