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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 872ce78b417080b9ad0affdf398753332f6c88fb3cfac7b5db991413711e2b65
|
4
|
+
data.tar.gz: 077a81ef6f1d562091f61ab58b973192f12b4d1579c9683d8421779c907e6e33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c818c7285117d51cc70dc770ba43c75ae5c8cab4ded5e553b2ffcb5a1256b1578da4720faeec57cdc086c02dbc152ccc540c620aba27b02a0426ed0eefedd289
|
7
|
+
data.tar.gz: ba45247a6463b805aa8fbcd3c1bf8ec2d9531e6a3e5db9bf82805ba29fc9c6a972bf8a0f8cb8f063c69b7429337bd89b1a7fe30d9e0054cbd73e1ca64ff7ada3
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
#CHANGELOG
|
2
|
+
|
3
|
+
## 4.2.0
|
4
|
+
[PR #102](https://github.com/express42/zabbixapi/pull/102) Add events get method method. Fixed all testing failures. (Thanks @kevin-j-smith)
|
5
|
+
|
6
|
+
## 4.1.2
|
7
|
+
[PR #99](https://github.com/express42/zabbixapi/pull/99) Patch addressing log error function not found
|
8
|
+
|
9
|
+
## 4.1.1
|
10
|
+
|
11
|
+
[PR #97](https://github.com/express42/zabbixapi/pull/97) Bumped version
|
12
|
+
|
13
|
+
[PR #98](https://github.com/express42/zabbixapi/pull/98) Removed strict zabbix versioning error
|
14
|
+
|
15
|
+
## 4.1.0
|
16
|
+
|
17
|
+
[PR #82](https://github.com/express42/zabbixapi/pull/82) Add logout method (Thanks @baurmatt)
|
18
|
+
|
19
|
+
[PR #86](https://github.com/express42/zabbixapi/pull/86) Feature: add support for Discovery Rules (`drule` API) (Thanks @lehn-etracker)
|
20
|
+
|
1
21
|
## 4.0.0
|
2
22
|
|
3
23
|
[PR #90](https://github.com/express42/zabbixapi/pull/90) Add 4.0 support (Thanks @svdasein)
|
data/LICENSE.md
CHANGED
data/README.md
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
# Ruby Zabbix Api Module
|
2
2
|
|
3
3
|
[][gem]
|
4
|
-
[][github-ci]
|
5
5
|
|
6
6
|
[gem]: https://rubygems.org/gems/zabbixapi
|
7
|
-
[
|
7
|
+
[github-ci]: https://github.com/express42/zabbixapi/actions?query=workflow%3ACI
|
8
8
|
|
9
9
|
Simple and lightweight ruby module for working with [Zabbix][Zabbix] via the [Zabbix API][Zabbix API]
|
10
10
|
|
11
11
|
## Installation
|
12
|
-
|
12
|
+
```sh
|
13
|
+
# latest
|
14
|
+
gem install zabbixapi
|
15
|
+
|
16
|
+
# specific version
|
17
|
+
gem install zabbixapi -v 4.2.0
|
18
|
+
```
|
13
19
|
|
14
20
|
## Documentation
|
15
21
|
[http://rdoc.info/gems/zabbixapi][documentation]
|
@@ -22,7 +28,10 @@ Simple and lightweight ruby module for working with [Zabbix][Zabbix] via the [Za
|
|
22
28
|
[examples]: https://github.com/express42/zabbixapi/tree/master/examples
|
23
29
|
|
24
30
|
## Version Policy
|
25
|
-
|
31
|
+
|
32
|
+
**NOTE:** `master` branch is used for ongoing development on Zabbix API 5.x (5.0 and 5.2).
|
33
|
+
|
34
|
+
We support only two last versions of zabbix (5.0 and 5.2), so you should consider all previous versions deprecated.
|
26
35
|
|
27
36
|
* Zabbix 1.8.2 (api version 1.2) | zabbixapi 0.6.x | [branch zabbix1.8](https://github.com/express42/zabbixapi/tree/zabbix1.8)
|
28
37
|
* Zabbix 1.8.9 (api version 1.3) | zabbixapi 0.6.x | [branch zabbix1.8](https://github.com/express42/zabbixapi/tree/zabbix1.8)
|
@@ -30,18 +39,19 @@ We support only two last versions of zabbix (3.4 and 4.0), so you should conside
|
|
30
39
|
* Zabbix 2.2.x (api version 2.2.x) | zabbixapi 2.2.x | [branch zabbix2.2](https://github.com/express42/zabbixapi/tree/zabbix2.2)
|
31
40
|
* Zabbix 2.4.x (api version 2.2.x) | zabbixapi 2.4.x | [branch zabbix2.4](https://github.com/express42/zabbixapi/tree/zabbix2.4)
|
32
41
|
* Zabbix 3.0.x (api version 3.0.x) | zabbixapi 3.0.x | [branch zabbix3.0](https://github.com/express42/zabbixapi/tree/zabbix3.0)
|
33
|
-
* Zabbix 3.2.x (api version 3.2.x) | zabbixapi 3.
|
42
|
+
* Zabbix 3.2.x (api version 3.2.x) | zabbixapi 3.2.x | [branch zabbix3.2](https://github.com/express42/zabbixapi/tree/zabbix3.2)
|
43
|
+
* Zabbix 4.0.x (api version 4.0.x) | zabbixapi 4.1.x | [branch zabbix4.0](https://github.com/express42/zabbixapi/tree/zabbix4.0)
|
44
|
+
* Zabbix 4.2.x (api version 4.2.x) | zabbixapi 4.1.x | [branch zabbix4.0](https://github.com/express42/zabbixapi/tree/zabbix4.0)
|
45
|
+
* Zabbix 4.4.x (api version 4.4.x) | zabbixapi 4.2.x | [branch zabbix4.2](https://github.com/express42/zabbixapi/tree/zabbix4.2)
|
34
46
|
|
35
47
|
## Supported Ruby Versions
|
36
|
-
This library aims to support and is [tested against][
|
48
|
+
This library aims to support and is [tested against][github-ci] the following Ruby
|
37
49
|
versions:
|
38
50
|
|
39
|
-
* Ruby 2.
|
40
|
-
* Ruby 2.
|
41
|
-
* Ruby 2.
|
42
|
-
*
|
43
|
-
* Ruby 2.4
|
44
|
-
* JRuby 9.1.6.0
|
51
|
+
* Ruby 2.5
|
52
|
+
* Ruby 2.6
|
53
|
+
* Ruby 2.7
|
54
|
+
* JRuby 9.2.10.0
|
45
55
|
|
46
56
|
If something doesn't work on one of these versions, it's a bug.
|
47
57
|
|
@@ -59,12 +69,12 @@ dropped.
|
|
59
69
|
## Dependencies
|
60
70
|
|
61
71
|
* net/http
|
62
|
-
* net/https
|
63
72
|
* json
|
64
73
|
|
65
74
|
## Contributing
|
66
75
|
|
67
76
|
* Fork the project.
|
77
|
+
* Base your work on the master branch.
|
68
78
|
* Make your feature addition or bug fix, write tests, write documentation/examples.
|
69
79
|
* Commit, do not mess with rakefile, version.
|
70
80
|
* Make a pull request.
|
@@ -75,11 +85,14 @@ dropped.
|
|
75
85
|
* [Zabbix API docs][Zabbix API]
|
76
86
|
|
77
87
|
[Zabbix]: https://www.zabbix.com
|
78
|
-
[Zabbix API]: https://www.zabbix.com/documentation/
|
88
|
+
[Zabbix API]: https://www.zabbix.com/documentation/5.2/manual/api
|
79
89
|
|
80
90
|
## Copyright
|
81
|
-
Copyright (c) 2015-2018 Express 42
|
82
91
|
|
83
|
-
|
92
|
+
- Copyright (c) 2021 [contributors]
|
93
|
+
- Copyright (c) 2015-2018 Express 42 and [contributors]
|
94
|
+
|
95
|
+
See [LICENSE] for details.
|
84
96
|
|
85
|
-
[
|
97
|
+
[LICENSE]: LICENSE.md
|
98
|
+
[contributors]: https://github.com/express42/zabbixapi/graphs/contributors
|
data/lib/zabbixapi.rb
CHANGED
@@ -10,6 +10,7 @@ require 'zabbixapi/classes/actions'
|
|
10
10
|
require 'zabbixapi/classes/applications'
|
11
11
|
require 'zabbixapi/classes/configurations'
|
12
12
|
require 'zabbixapi/classes/errors'
|
13
|
+
require 'zabbixapi/classes/events'
|
13
14
|
require 'zabbixapi/classes/graphs'
|
14
15
|
require 'zabbixapi/classes/hostgroups'
|
15
16
|
require 'zabbixapi/classes/hosts'
|
@@ -18,6 +19,8 @@ require 'zabbixapi/classes/items'
|
|
18
19
|
require 'zabbixapi/classes/maintenance'
|
19
20
|
require 'zabbixapi/classes/mediatypes'
|
20
21
|
require 'zabbixapi/classes/proxies'
|
22
|
+
require 'zabbixapi/classes/problems'
|
23
|
+
require 'zabbixapi/classes/roles'
|
21
24
|
require 'zabbixapi/classes/screens'
|
22
25
|
require 'zabbixapi/classes/scripts'
|
23
26
|
require 'zabbixapi/classes/server'
|
@@ -28,6 +31,7 @@ require 'zabbixapi/classes/usergroups'
|
|
28
31
|
require 'zabbixapi/classes/usermacros'
|
29
32
|
require 'zabbixapi/classes/users'
|
30
33
|
require 'zabbixapi/classes/valuemaps'
|
34
|
+
require 'zabbixapi/classes/drules'
|
31
35
|
|
32
36
|
class ZabbixApi
|
33
37
|
# @return [ZabbixApi::Client]
|
@@ -51,7 +55,13 @@ class ZabbixApi
|
|
51
55
|
# @param data [Hash]
|
52
56
|
# @return [Hash]
|
53
57
|
def query(data)
|
54
|
-
@client.api_request(:
|
58
|
+
@client.api_request(method: data[:method], params: data[:params])
|
59
|
+
end
|
60
|
+
|
61
|
+
# Invalidate current authentication token
|
62
|
+
# @return [Boolean]
|
63
|
+
def logout
|
64
|
+
@client.logout
|
55
65
|
end
|
56
66
|
|
57
67
|
# Initializes a new ZabbixApi object
|
@@ -77,6 +87,11 @@ class ZabbixApi
|
|
77
87
|
@configurations ||= Configurations.new(@client)
|
78
88
|
end
|
79
89
|
|
90
|
+
# @return [ZabbixApi::Events]
|
91
|
+
def events
|
92
|
+
@events ||= Events.new(@client)
|
93
|
+
end
|
94
|
+
|
80
95
|
# @return [ZabbixApi::Graphs]
|
81
96
|
def graphs
|
82
97
|
@graphs ||= Graphs.new(@client)
|
@@ -112,11 +127,21 @@ class ZabbixApi
|
|
112
127
|
@mediatypes ||= Mediatypes.new(@client)
|
113
128
|
end
|
114
129
|
|
130
|
+
# @return [ZabbixApi::Problems]
|
131
|
+
def problems
|
132
|
+
@problems ||= Problems.new(@client)
|
133
|
+
end
|
134
|
+
|
115
135
|
# @return [ZabbixApi::Proxies]
|
116
136
|
def proxies
|
117
137
|
@proxies ||= Proxies.new(@client)
|
118
138
|
end
|
119
139
|
|
140
|
+
# @return [ZabbixApi::Roles]
|
141
|
+
def roles
|
142
|
+
@roles ||= Roles.new(@client)
|
143
|
+
end
|
144
|
+
|
120
145
|
# @return [ZabbixApi::Screens]
|
121
146
|
def screens
|
122
147
|
@screens ||= Screens.new(@client)
|
@@ -161,4 +186,9 @@ class ZabbixApi
|
|
161
186
|
def valuemaps
|
162
187
|
@valuemaps ||= ValueMaps.new(@client)
|
163
188
|
end
|
189
|
+
|
190
|
+
# @return [ZabbixApi::Drules]
|
191
|
+
def drules
|
192
|
+
@drules ||= Drules.new(@client)
|
193
|
+
end
|
164
194
|
end
|
@@ -2,7 +2,7 @@ class ZabbixApi
|
|
2
2
|
class Basic
|
3
3
|
# Get Zabbix object data from API by id
|
4
4
|
#
|
5
|
-
# @param data [Hash] Should include object's id field name (
|
5
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
6
6
|
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
7
7
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
8
8
|
# @return [Hash]
|
@@ -23,7 +23,7 @@ class ZabbixApi
|
|
23
23
|
|
24
24
|
# Destroy Zabbix object using API delete
|
25
25
|
#
|
26
|
-
# @param data [Hash] Should include object's id field name (
|
26
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
27
27
|
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
28
28
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
29
29
|
# @return [Integer] The object id if a single object is deleted
|
@@ -9,14 +9,15 @@ class ZabbixApi
|
|
9
9
|
|
10
10
|
# Compare two hashes for equality
|
11
11
|
#
|
12
|
-
# @param
|
13
|
-
# @param
|
12
|
+
# @param first_hash [Hash]
|
13
|
+
# @param second_hash [Hash]
|
14
14
|
# @return [Boolean]
|
15
|
-
def hash_equals?(
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
def hash_equals?(first_hash, second_hash)
|
16
|
+
normalized_first_hash = normalize_hash(first_hash)
|
17
|
+
normalized_second_hash = normalize_hash(second_hash)
|
18
|
+
|
19
|
+
hash1 = normalized_first_hash.merge(normalized_second_hash)
|
20
|
+
hash2 = normalized_second_hash.merge(normalized_first_hash)
|
20
21
|
hash1 == hash2
|
21
22
|
end
|
22
23
|
|
@@ -91,12 +92,12 @@ class ZabbixApi
|
|
91
92
|
|
92
93
|
# Merge two hashes into a single new hash
|
93
94
|
#
|
94
|
-
# @param
|
95
|
-
# @param
|
95
|
+
# @param first_hash [Hash]
|
96
|
+
# @param second_hash [Hash]
|
96
97
|
# @return [Hash]
|
97
|
-
def merge_params(
|
98
|
-
new =
|
99
|
-
new.merge(
|
98
|
+
def merge_params(first_hash, second_hash)
|
99
|
+
new = first_hash.dup
|
100
|
+
new.merge(second_hash)
|
100
101
|
end
|
101
102
|
end
|
102
103
|
end
|
@@ -22,14 +22,14 @@ class ZabbixApi
|
|
22
22
|
{}
|
23
23
|
end
|
24
24
|
|
25
|
-
# Returns the object's plural id field name (
|
25
|
+
# Returns the object's plural id field name (identify) based on key
|
26
26
|
#
|
27
27
|
# @return [String]
|
28
28
|
def keys
|
29
29
|
key + 's'
|
30
30
|
end
|
31
31
|
|
32
|
-
# Returns the object's id field name (
|
32
|
+
# Returns the object's id field name (identify) based on method_name + id
|
33
33
|
#
|
34
34
|
# @return [String]
|
35
35
|
def key
|
@@ -38,9 +38,9 @@ class ZabbixApi
|
|
38
38
|
|
39
39
|
# Placeholder for inherited objects to provide object-specific id field name
|
40
40
|
#
|
41
|
-
# @raise [ApiError] Basic object does not directly support
|
42
|
-
def
|
43
|
-
raise ApiError.new("Can't call
|
41
|
+
# @raise [ApiError] Basic object does not directly support identify
|
42
|
+
def identify
|
43
|
+
raise ApiError.new("Can't call identify here")
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -12,13 +12,13 @@ class ZabbixApi
|
|
12
12
|
|
13
13
|
data_with_default = default_options.empty? ? data : merge_params(default_options, data)
|
14
14
|
data_create = [data_with_default]
|
15
|
-
result = @client.api_request(:
|
15
|
+
result = @client.api_request(method: "#{method_name}.create", params: data_create)
|
16
16
|
parse_keys result
|
17
17
|
end
|
18
18
|
|
19
19
|
# Delete Zabbix object using API
|
20
20
|
#
|
21
|
-
# @param data [Hash] Should include object's id field name (
|
21
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
22
22
|
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
23
23
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
24
24
|
# @return [Integer] The object id if a single object is deleted
|
@@ -27,13 +27,13 @@ class ZabbixApi
|
|
27
27
|
log "[DEBUG] Call delete with parameters: #{data.inspect}"
|
28
28
|
|
29
29
|
data_delete = [data]
|
30
|
-
result = @client.api_request(:
|
30
|
+
result = @client.api_request(method: "#{method_name}.delete", params: data_delete)
|
31
31
|
parse_keys result
|
32
32
|
end
|
33
33
|
|
34
34
|
# Create or update Zabbix object using API
|
35
35
|
#
|
36
|
-
# @param data [Hash] Should include object's id field name (
|
36
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
37
37
|
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
38
38
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
39
39
|
# @return [Integer] The object id if a single object is created
|
@@ -41,13 +41,13 @@ class ZabbixApi
|
|
41
41
|
def create_or_update(data)
|
42
42
|
log "[DEBUG] Call create_or_update with parameters: #{data.inspect}"
|
43
43
|
|
44
|
-
id = get_id(
|
44
|
+
id = get_id(identify.to_sym => data[identify.to_sym])
|
45
45
|
id ? update(data.merge(key.to_sym => id.to_s)) : create(data)
|
46
46
|
end
|
47
47
|
|
48
48
|
# Update Zabbix object using API
|
49
49
|
#
|
50
|
-
# @param data [Hash] Should include object's id field name (
|
50
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
51
51
|
# @param force [Boolean] Whether to force an object update even if provided data matches Zabbix
|
52
52
|
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
53
53
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
@@ -64,14 +64,14 @@ class ZabbixApi
|
|
64
64
|
data[key.to_sym].to_i
|
65
65
|
else
|
66
66
|
data_update = [data]
|
67
|
-
result = @client.api_request(:
|
67
|
+
result = @client.api_request(method: "#{method_name}.update", params: data_update)
|
68
68
|
parse_keys result
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
72
|
# Get full/extended Zabbix object data from API
|
73
73
|
#
|
74
|
-
# @param data [Hash] Should include object's id field name (
|
74
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
75
75
|
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
76
76
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
77
77
|
# @return [Hash]
|
@@ -79,12 +79,12 @@ class ZabbixApi
|
|
79
79
|
log "[DEBUG] Call get_full_data with parameters: #{data.inspect}"
|
80
80
|
|
81
81
|
@client.api_request(
|
82
|
-
:
|
83
|
-
:
|
84
|
-
:
|
85
|
-
|
82
|
+
method: "#{method_name}.get",
|
83
|
+
params: {
|
84
|
+
filter: {
|
85
|
+
identify.to_sym => data[identify.to_sym]
|
86
86
|
},
|
87
|
-
:
|
87
|
+
output: 'extend'
|
88
88
|
}
|
89
89
|
)
|
90
90
|
end
|
@@ -99,8 +99,8 @@ class ZabbixApi
|
|
99
99
|
log "[DEBUG] Call get_raw with parameters: #{data.inspect}"
|
100
100
|
|
101
101
|
@client.api_request(
|
102
|
-
:
|
103
|
-
:
|
102
|
+
method: "#{method_name}.get",
|
103
|
+
params: data
|
104
104
|
)
|
105
105
|
end
|
106
106
|
|
@@ -114,12 +114,12 @@ class ZabbixApi
|
|
114
114
|
log "[DEBUG] Call dump_by_id with parameters: #{data.inspect}"
|
115
115
|
|
116
116
|
@client.api_request(
|
117
|
-
:
|
118
|
-
:
|
119
|
-
:
|
120
|
-
key.to_sym => data[key.to_sym]
|
117
|
+
method: "#{method_name}.get",
|
118
|
+
params: {
|
119
|
+
filter: {
|
120
|
+
key.to_sym => data[key.to_sym]
|
121
121
|
},
|
122
|
-
:
|
122
|
+
output: 'extend'
|
123
123
|
}
|
124
124
|
)
|
125
125
|
end
|
@@ -131,8 +131,8 @@ class ZabbixApi
|
|
131
131
|
# @return [Array<Hash>] Array of matching objects
|
132
132
|
def all
|
133
133
|
result = {}
|
134
|
-
@client.api_request(:
|
135
|
-
result[item[
|
134
|
+
@client.api_request(method: "#{method_name}.get", params: { output: 'extend' }).each do |item|
|
135
|
+
result[item[identify]] = item[key]
|
136
136
|
end
|
137
137
|
result
|
138
138
|
end
|
@@ -140,38 +140,39 @@ class ZabbixApi
|
|
140
140
|
# Get Zabbix object id from API based on provided data
|
141
141
|
#
|
142
142
|
# @param data [Hash]
|
143
|
-
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call or missing object's id field name (
|
143
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call or missing object's id field name (identify).
|
144
144
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
145
145
|
# @return [Integer] Zabbix object id
|
146
146
|
def get_id(data)
|
147
147
|
log "[DEBUG] Call get_id with parameters: #{data.inspect}"
|
148
148
|
# symbolize keys if the user used string keys instead of symbols
|
149
|
-
data = symbolize_keys(data) if data.key?(
|
150
|
-
# raise an error if
|
151
|
-
name = data[
|
152
|
-
raise ApiError.new("#{
|
149
|
+
data = symbolize_keys(data) if data.key?(identify)
|
150
|
+
# raise an error if identify name was not supplied
|
151
|
+
name = data[identify.to_sym]
|
152
|
+
raise ApiError.new("#{identify} not supplied in call to get_id") if name.nil?
|
153
|
+
|
153
154
|
result = @client.api_request(
|
154
|
-
:
|
155
|
-
:
|
156
|
-
:
|
157
|
-
:
|
155
|
+
method: "#{method_name}.get",
|
156
|
+
params: {
|
157
|
+
filter: data,
|
158
|
+
output: [key, identify]
|
158
159
|
}
|
159
160
|
)
|
160
161
|
id = nil
|
161
|
-
result.each { |item| id = item[key].to_i if item[
|
162
|
+
result.each { |item| id = item[key].to_i if item[identify] == data[identify.to_sym] }
|
162
163
|
id
|
163
164
|
end
|
164
165
|
|
165
166
|
# Get or Create Zabbix object using API
|
166
167
|
#
|
167
|
-
# @param data [Hash] Should include object's id field name (
|
168
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
168
169
|
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
169
170
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
170
171
|
# @return [Integer] Zabbix object id
|
171
172
|
def get_or_create(data)
|
172
173
|
log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
|
173
174
|
|
174
|
-
unless (id = get_id(
|
175
|
+
unless (id = get_id(identify.to_sym => data[identify.to_sym]))
|
175
176
|
id = create(data)
|
176
177
|
end
|
177
178
|
id
|