zabbixapi 4.0.0 → 5.0.0.pre.alpha1
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 +5 -5
- data/CHANGELOG.md +20 -0
- data/LICENSE.md +1 -1
- data/README.md +30 -17
- data/lib/zabbixapi.rb +31 -1
- data/lib/zabbixapi/basic/basic_alias.rb +2 -2
- data/lib/zabbixapi/basic/basic_func.rb +13 -12
- data/lib/zabbixapi/basic/basic_init.rb +5 -5
- data/lib/zabbixapi/basic/basic_logic.rb +35 -34
- data/lib/zabbixapi/classes/actions.rb +25 -1
- data/lib/zabbixapi/classes/applications.rb +4 -4
- data/lib/zabbixapi/classes/configurations.rb +3 -3
- data/lib/zabbixapi/classes/drules.rb +55 -0
- data/lib/zabbixapi/classes/errors.rb +5 -2
- data/lib/zabbixapi/classes/events.rb +17 -0
- data/lib/zabbixapi/classes/graphs.rb +23 -33
- data/lib/zabbixapi/classes/hostgroups.rb +1 -1
- data/lib/zabbixapi/classes/hosts.rb +20 -20
- data/lib/zabbixapi/classes/httptests.rb +7 -7
- data/lib/zabbixapi/classes/items.rb +36 -36
- data/lib/zabbixapi/classes/maintenance.rb +1 -1
- data/lib/zabbixapi/classes/mediatypes.rb +86 -11
- data/lib/zabbixapi/classes/problems.rb +101 -0
- data/lib/zabbixapi/classes/proxies.rb +4 -4
- data/lib/zabbixapi/classes/roles.rb +114 -0
- data/lib/zabbixapi/classes/screens.rb +18 -17
- data/lib/zabbixapi/classes/scripts.rb +18 -10
- data/lib/zabbixapi/classes/server.rb +1 -1
- data/lib/zabbixapi/classes/templates.rb +19 -21
- data/lib/zabbixapi/classes/triggers.rb +14 -13
- data/lib/zabbixapi/classes/unusable.rb +1 -1
- data/lib/zabbixapi/classes/usergroups.rb +16 -19
- data/lib/zabbixapi/classes/usermacros.rb +24 -24
- data/lib/zabbixapi/classes/users.rb +16 -17
- data/lib/zabbixapi/classes/valuemaps.rb +4 -4
- data/lib/zabbixapi/client.rb +34 -16
- data/lib/zabbixapi/version.rb +1 -1
- data/zabbixapi.gemspec +2 -2
- metadata +16 -14
- data/.yardopts +0 -9
data/lib/zabbixapi/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'net/http'
|
2
2
|
require 'json'
|
3
|
+
require 'openssl'
|
3
4
|
|
4
5
|
class ZabbixApi
|
5
6
|
class Client
|
@@ -16,7 +17,8 @@ class ZabbixApi
|
|
16
17
|
#
|
17
18
|
# @return [String]
|
18
19
|
def api_version
|
19
|
-
@
|
20
|
+
@api_version ||= api_request(method: 'apiinfo.version', params: {})
|
21
|
+
@api_version
|
20
22
|
end
|
21
23
|
|
22
24
|
# Log in to the Zabbix Server and generate an auth token using the API
|
@@ -24,14 +26,21 @@ class ZabbixApi
|
|
24
26
|
# @return [Hash]
|
25
27
|
def auth
|
26
28
|
api_request(
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
29
|
+
method: 'user.login',
|
30
|
+
params: {
|
31
|
+
user: @options[:user],
|
32
|
+
password: @options[:password]
|
31
33
|
}
|
32
34
|
)
|
33
35
|
end
|
34
36
|
|
37
|
+
# ZabbixApi::Basic.log does not like @client.options[:debug]
|
38
|
+
#
|
39
|
+
# @return [boolean]
|
40
|
+
def debug?
|
41
|
+
return ! @options || @options[:debug]
|
42
|
+
end
|
43
|
+
|
35
44
|
# Initializes a new Client object
|
36
45
|
#
|
37
46
|
# @param options [Hash]
|
@@ -51,9 +60,15 @@ class ZabbixApi
|
|
51
60
|
@proxy_port = @proxy_uri.port
|
52
61
|
@proxy_user, @proxy_pass = @proxy_uri.userinfo.split(/:/) if @proxy_uri.userinfo
|
53
62
|
end
|
54
|
-
unless api_version =~
|
55
|
-
|
63
|
+
unless api_version =~ %r{^5.[0|2]\.\d+$}
|
64
|
+
message = "Zabbix API version: #{api_version} is not supported by this version of zabbixapi"
|
65
|
+
if @options[:ignore_version]
|
66
|
+
puts "[WARNING] #{message}" if @options[:debug]
|
67
|
+
else
|
68
|
+
raise ZabbixApi::ApiError.new(message)
|
69
|
+
end
|
56
70
|
end
|
71
|
+
|
57
72
|
@auth_hash = auth
|
58
73
|
end
|
59
74
|
|
@@ -63,10 +78,10 @@ class ZabbixApi
|
|
63
78
|
# @return [String]
|
64
79
|
def message_json(body)
|
65
80
|
message = {
|
66
|
-
:
|
67
|
-
:
|
68
|
-
:
|
69
|
-
:
|
81
|
+
method: body[:method],
|
82
|
+
params: body[:params],
|
83
|
+
id: id,
|
84
|
+
jsonrpc: '2.0'
|
70
85
|
}
|
71
86
|
|
72
87
|
message[:auth] = @auth_hash unless body[:method] == 'apiinfo.version' || body[:method] == 'user.login'
|
@@ -83,11 +98,12 @@ class ZabbixApi
|
|
83
98
|
timeout = @options[:timeout].nil? ? 60 : @options[:timeout]
|
84
99
|
puts "[DEBUG] Timeout for request set to #{timeout} seconds" if @options[:debug]
|
85
100
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
101
|
+
http =
|
102
|
+
if @proxy_uri
|
103
|
+
Net::HTTP.Proxy(@proxy_host, @proxy_port, @proxy_user, @proxy_pass).new(uri.host, uri.port)
|
104
|
+
else
|
105
|
+
Net::HTTP.new(uri.host, uri.port)
|
106
|
+
end
|
91
107
|
|
92
108
|
if uri.scheme == 'https'
|
93
109
|
http.use_ssl = true
|
@@ -101,6 +117,7 @@ class ZabbixApi
|
|
101
117
|
request.basic_auth @options[:http_user], @options[:http_password] if @options[:http_user]
|
102
118
|
request.add_field('Content-Type', 'application/json-rpc')
|
103
119
|
request.body = body
|
120
|
+
|
104
121
|
response = http.request(request)
|
105
122
|
|
106
123
|
raise HttpError.new("HTTP Error: #{response.code} on #{@options[:url]}", response) unless response.code == '200'
|
@@ -115,6 +132,7 @@ class ZabbixApi
|
|
115
132
|
puts "[DEBUG] Send request: #{body}" if @options[:debug]
|
116
133
|
result = JSON.parse(http_request(body))
|
117
134
|
raise ApiError.new("Server answer API error\n #{JSON.pretty_unparse(result['error'])}\n on request:\n #{pretty_body(body)}", result) if result['error']
|
135
|
+
|
118
136
|
result['result']
|
119
137
|
end
|
120
138
|
|
data/lib/zabbixapi/version.rb
CHANGED
data/zabbixapi.gemspec
CHANGED
@@ -9,7 +9,7 @@ require 'zabbixapi/version'
|
|
9
9
|
Gem::Specification.new do |spec|
|
10
10
|
spec.add_dependency 'http', '~> 2.0'
|
11
11
|
spec.add_dependency 'json', '~> 2.0'
|
12
|
-
spec.add_development_dependency 'bundler'
|
12
|
+
spec.add_development_dependency 'bundler'
|
13
13
|
|
14
14
|
spec.name = 'zabbixapi'
|
15
15
|
spec.version = ZabbixApi::VERSION
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.rubyforge_project = 'zabbixapi'
|
25
25
|
|
26
|
-
spec.files = ['
|
26
|
+
spec.files = ['CHANGELOG.md', 'LICENSE.md', 'README.md', 'zabbixapi.gemspec'] + Dir['lib/**/*.rb']
|
27
27
|
spec.require_paths = 'lib'
|
28
28
|
spec.required_ruby_version = '>= 2.0.0'
|
29
29
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zabbixapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0.pre.alpha1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasiliev D.V.
|
8
8
|
- Ivan Evtuhovich
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-01-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: http
|
@@ -43,16 +43,16 @@ dependencies:
|
|
43
43
|
name: bundler
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '0'
|
56
56
|
description: Allows you to work with zabbix api from ruby.
|
57
57
|
email:
|
58
58
|
- vadv.mkn@gmail.com
|
@@ -61,7 +61,6 @@ executables: []
|
|
61
61
|
extensions: []
|
62
62
|
extra_rdoc_files: []
|
63
63
|
files:
|
64
|
-
- ".yardopts"
|
65
64
|
- CHANGELOG.md
|
66
65
|
- LICENSE.md
|
67
66
|
- README.md
|
@@ -73,7 +72,9 @@ files:
|
|
73
72
|
- lib/zabbixapi/classes/actions.rb
|
74
73
|
- lib/zabbixapi/classes/applications.rb
|
75
74
|
- lib/zabbixapi/classes/configurations.rb
|
75
|
+
- lib/zabbixapi/classes/drules.rb
|
76
76
|
- lib/zabbixapi/classes/errors.rb
|
77
|
+
- lib/zabbixapi/classes/events.rb
|
77
78
|
- lib/zabbixapi/classes/graphs.rb
|
78
79
|
- lib/zabbixapi/classes/hostgroups.rb
|
79
80
|
- lib/zabbixapi/classes/hosts.rb
|
@@ -81,7 +82,9 @@ files:
|
|
81
82
|
- lib/zabbixapi/classes/items.rb
|
82
83
|
- lib/zabbixapi/classes/maintenance.rb
|
83
84
|
- lib/zabbixapi/classes/mediatypes.rb
|
85
|
+
- lib/zabbixapi/classes/problems.rb
|
84
86
|
- lib/zabbixapi/classes/proxies.rb
|
87
|
+
- lib/zabbixapi/classes/roles.rb
|
85
88
|
- lib/zabbixapi/classes/screens.rb
|
86
89
|
- lib/zabbixapi/classes/scripts.rb
|
87
90
|
- lib/zabbixapi/classes/server.rb
|
@@ -99,7 +102,7 @@ homepage: https://github.com/express42/zabbixapi
|
|
99
102
|
licenses:
|
100
103
|
- MIT
|
101
104
|
metadata: {}
|
102
|
-
post_install_message:
|
105
|
+
post_install_message:
|
103
106
|
rdoc_options: []
|
104
107
|
require_paths:
|
105
108
|
- lib
|
@@ -110,13 +113,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
113
|
version: 2.0.0
|
111
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
115
|
requirements:
|
113
|
-
- - "
|
116
|
+
- - ">"
|
114
117
|
- !ruby/object:Gem::Version
|
115
|
-
version:
|
118
|
+
version: 1.3.1
|
116
119
|
requirements: []
|
117
|
-
|
118
|
-
|
119
|
-
signing_key:
|
120
|
+
rubygems_version: 3.0.1
|
121
|
+
signing_key:
|
120
122
|
specification_version: 4
|
121
123
|
summary: Simple and lightweight ruby module for working with the Zabbix API
|
122
124
|
test_files: []
|