zabbixapi 3.1.0 → 3.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +9 -0
- data/CHANGELOG.md +5 -0
- data/{LICENSE → LICENSE.md} +1 -1
- data/README.md +53 -569
- data/lib/zabbixapi.rb +102 -65
- data/lib/zabbixapi/basic/basic_alias.rb +21 -4
- data/lib/zabbixapi/basic/basic_func.rb +56 -23
- data/lib/zabbixapi/basic/basic_init.rb +21 -4
- data/lib/zabbixapi/basic/basic_logic.rb +75 -18
- data/lib/zabbixapi/classes/actions.rb +8 -4
- data/lib/zabbixapi/classes/applications.rb +20 -6
- data/lib/zabbixapi/classes/configurations.rb +23 -17
- data/lib/zabbixapi/classes/errors.rb +2 -4
- data/lib/zabbixapi/classes/graphs.rb +65 -15
- data/lib/zabbixapi/classes/hostgroups.rb +12 -4
- data/lib/zabbixapi/classes/hosts.rb +36 -10
- data/lib/zabbixapi/classes/httptests.rb +24 -4
- data/lib/zabbixapi/classes/items.rb +24 -5
- data/lib/zabbixapi/classes/maintenance.rb +8 -4
- data/lib/zabbixapi/classes/mediatypes.rb +20 -13
- data/lib/zabbixapi/classes/proxies.rb +29 -8
- data/lib/zabbixapi/classes/screens.rb +41 -25
- data/lib/zabbixapi/classes/server.rb +8 -4
- data/lib/zabbixapi/classes/templates.rb +46 -43
- data/lib/zabbixapi/classes/triggers.rb +43 -16
- data/lib/zabbixapi/classes/unusable.rb +0 -2
- data/lib/zabbixapi/classes/usergroups.rb +33 -26
- data/lib/zabbixapi/classes/usermacros.rb +137 -31
- data/lib/zabbixapi/classes/users.rb +32 -10
- data/lib/zabbixapi/classes/valuemaps.rb +50 -0
- data/lib/zabbixapi/client.rb +61 -22
- data/lib/zabbixapi/version.rb +1 -1
- data/zabbixapi.gemspec +26 -23
- metadata +25 -73
- data/.gitignore +0 -7
- data/.rspec +0 -1
- data/.travis.yml +0 -41
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -36
- data/Rakefile +0 -1
- data/json-1.x.Gemfile +0 -4
- data/json-1.x.Gemfile.lock +0 -28
- data/spec/action.rb +0 -89
- data/spec/application.rb +0 -83
- data/spec/basic_func.rb +0 -4
- data/spec/configuration.rb +0 -122
- data/spec/graph.rb +0 -135
- data/spec/host.rb +0 -176
- data/spec/hostgroup.rb +0 -55
- data/spec/httptest.rb +0 -136
- data/spec/item.rb +0 -134
- data/spec/maintenance.rb +0 -81
- data/spec/mediatype.rb +0 -50
- data/spec/query.rb +0 -18
- data/spec/screen.rb +0 -88
- data/spec/script.rb +0 -123
- data/spec/server.rb +0 -15
- data/spec/spec_helper.rb +0 -21
- data/spec/template.rb +0 -148
- data/spec/trigger.rb +0 -103
- data/spec/user.rb +0 -116
- data/spec/usergroup.rb +0 -85
- data/spec/usermacro.rb +0 -190
data/lib/zabbixapi.rb
CHANGED
@@ -1,127 +1,164 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require
|
23
|
-
require
|
24
|
-
require
|
25
|
-
require
|
26
|
-
require
|
27
|
-
require
|
28
|
-
require
|
29
|
-
require
|
1
|
+
require 'zabbixapi/version'
|
2
|
+
require 'zabbixapi/client'
|
3
|
+
|
4
|
+
require 'zabbixapi/basic/basic_alias'
|
5
|
+
require 'zabbixapi/basic/basic_func'
|
6
|
+
require 'zabbixapi/basic/basic_init'
|
7
|
+
require 'zabbixapi/basic/basic_logic'
|
8
|
+
|
9
|
+
require 'zabbixapi/classes/actions'
|
10
|
+
require 'zabbixapi/classes/applications'
|
11
|
+
require 'zabbixapi/classes/configurations'
|
12
|
+
require 'zabbixapi/classes/errors'
|
13
|
+
require 'zabbixapi/classes/graphs'
|
14
|
+
require 'zabbixapi/classes/hostgroups'
|
15
|
+
require 'zabbixapi/classes/hosts'
|
16
|
+
require 'zabbixapi/classes/httptests'
|
17
|
+
require 'zabbixapi/classes/items'
|
18
|
+
require 'zabbixapi/classes/maintenance'
|
19
|
+
require 'zabbixapi/classes/mediatypes'
|
20
|
+
require 'zabbixapi/classes/proxies'
|
21
|
+
require 'zabbixapi/classes/screens'
|
22
|
+
require 'zabbixapi/classes/scripts'
|
23
|
+
require 'zabbixapi/classes/server'
|
24
|
+
require 'zabbixapi/classes/templates'
|
25
|
+
require 'zabbixapi/classes/triggers'
|
26
|
+
require 'zabbixapi/classes/unusable'
|
27
|
+
require 'zabbixapi/classes/usergroups'
|
28
|
+
require 'zabbixapi/classes/usermacros'
|
29
|
+
require 'zabbixapi/classes/users'
|
30
|
+
require 'zabbixapi/classes/valuemaps'
|
30
31
|
|
31
32
|
class ZabbixApi
|
33
|
+
# @return [ZabbixApi::Client]
|
34
|
+
attr_reader :client
|
32
35
|
|
33
|
-
|
34
|
-
|
36
|
+
# Initializes a new ZabbixApi object
|
37
|
+
#
|
38
|
+
# @param options [Hash]
|
39
|
+
# @return [ZabbixApi]
|
35
40
|
def self.connect(options = {})
|
36
41
|
new(options)
|
37
42
|
end
|
38
43
|
|
44
|
+
# @return [ZabbixApi]
|
39
45
|
def self.current
|
40
46
|
@current ||= ZabbixApi.new
|
41
47
|
end
|
42
48
|
|
49
|
+
# Executes an API request directly using a custom query
|
50
|
+
#
|
51
|
+
# @param data [Hash]
|
52
|
+
# @return [Hash]
|
43
53
|
def query(data)
|
44
54
|
@client.api_request(:method => data[:method], :params => data[:params])
|
45
55
|
end
|
46
56
|
|
57
|
+
# Initializes a new ZabbixApi object
|
58
|
+
#
|
59
|
+
# @param options [Hash]
|
60
|
+
# @return [ZabbixApi::Client]
|
47
61
|
def initialize(options = {})
|
48
62
|
@client = Client.new(options)
|
49
63
|
end
|
50
64
|
|
51
|
-
|
52
|
-
|
65
|
+
# @return [ZabbixApi::Actions]
|
66
|
+
def actions
|
67
|
+
@actions ||= Actions.new(@client)
|
53
68
|
end
|
54
69
|
|
55
|
-
|
56
|
-
|
70
|
+
# @return [ZabbixApi::Applications]
|
71
|
+
def applications
|
72
|
+
@applications ||= Applications.new(@client)
|
57
73
|
end
|
58
74
|
|
59
|
-
|
60
|
-
|
75
|
+
# @return [ZabbixApi::Configurations]
|
76
|
+
def configurations
|
77
|
+
@configurations ||= Configurations.new(@client)
|
61
78
|
end
|
62
79
|
|
63
|
-
|
64
|
-
|
80
|
+
# @return [ZabbixApi::Graphs]
|
81
|
+
def graphs
|
82
|
+
@graphs ||= Graphs.new(@client)
|
65
83
|
end
|
66
84
|
|
67
|
-
|
68
|
-
|
85
|
+
# @return [ZabbixApi::HostGroups]
|
86
|
+
def hostgroups
|
87
|
+
@hostgroups ||= HostGroups.new(@client)
|
69
88
|
end
|
70
89
|
|
71
|
-
|
72
|
-
|
90
|
+
# @return [ZabbixApi::Hosts]
|
91
|
+
def hosts
|
92
|
+
@hosts ||= Hosts.new(@client)
|
73
93
|
end
|
74
94
|
|
75
|
-
|
76
|
-
|
95
|
+
# @return [ZabbixApi::HttpTests]
|
96
|
+
def httptests
|
97
|
+
@httptests ||= HttpTests.new(@client)
|
77
98
|
end
|
78
99
|
|
79
|
-
|
80
|
-
|
100
|
+
# @return [ZabbixApi::Items]
|
101
|
+
def items
|
102
|
+
@items ||= Items.new(@client)
|
81
103
|
end
|
82
104
|
|
105
|
+
# @return [ZabbixApi::Maintenance]
|
83
106
|
def maintenance
|
84
107
|
@maintenance ||= Maintenance.new(@client)
|
85
108
|
end
|
86
109
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
def graphs
|
92
|
-
@graphs ||= Graphs.new(@client)
|
110
|
+
# @return [ZabbixApi::Mediatypes]
|
111
|
+
def mediatypes
|
112
|
+
@mediatypes ||= Mediatypes.new(@client)
|
93
113
|
end
|
94
114
|
|
115
|
+
# @return [ZabbixApi::Proxies]
|
95
116
|
def proxies
|
96
117
|
@proxies ||= Proxies.new(@client)
|
97
118
|
end
|
98
119
|
|
120
|
+
# @return [ZabbixApi::Screens]
|
99
121
|
def screens
|
100
122
|
@screens ||= Screens.new(@client)
|
101
123
|
end
|
102
124
|
|
103
|
-
|
104
|
-
|
125
|
+
# @return [ZabbixApi::Scripts]
|
126
|
+
def scripts
|
127
|
+
@scripts ||= Scripts.new(@client)
|
105
128
|
end
|
106
129
|
|
107
|
-
|
108
|
-
|
130
|
+
# @return [ZabbixApi::Server]
|
131
|
+
def server
|
132
|
+
@server ||= Server.new(@client)
|
109
133
|
end
|
110
134
|
|
111
|
-
|
112
|
-
|
135
|
+
# @return [ZabbixApi::Templates]
|
136
|
+
def templates
|
137
|
+
@templates ||= Templates.new(@client)
|
113
138
|
end
|
114
139
|
|
115
|
-
|
116
|
-
|
140
|
+
# @return [ZabbixApi::Triggers]
|
141
|
+
def triggers
|
142
|
+
@triggers ||= Triggers.new(@client)
|
117
143
|
end
|
118
144
|
|
119
|
-
|
120
|
-
|
145
|
+
# @return [ZabbixApi::Usergroups]
|
146
|
+
def usergroups
|
147
|
+
@usergroups ||= Usergroups.new(@client)
|
121
148
|
end
|
122
149
|
|
123
|
-
|
124
|
-
|
150
|
+
# @return [ZabbixApi::Usermacros]
|
151
|
+
def usermacros
|
152
|
+
@usermacros ||= Usermacros.new(@client)
|
153
|
+
end
|
154
|
+
|
155
|
+
# @return [ZabbixApi::Users]
|
156
|
+
def users
|
157
|
+
@users ||= Users.new(@client)
|
125
158
|
end
|
126
159
|
|
160
|
+
# @return [ZabbixApi::ValueMaps]
|
161
|
+
def valuemaps
|
162
|
+
@valuemaps ||= ValueMaps.new(@client)
|
163
|
+
end
|
127
164
|
end
|
@@ -1,20 +1,37 @@
|
|
1
1
|
class ZabbixApi
|
2
2
|
class Basic
|
3
|
-
|
3
|
+
# Get Zabbix object data from API by id
|
4
|
+
#
|
5
|
+
# @param data [Hash] Should include object's id field name (indentify) and id value
|
6
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
7
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
8
|
+
# @return [Hash]
|
4
9
|
def get(data)
|
5
10
|
get_full_data(data)
|
6
11
|
end
|
7
12
|
|
13
|
+
# Add new Zabbix object using API create
|
14
|
+
#
|
15
|
+
# @param data [Hash]
|
16
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
17
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
18
|
+
# @return [Integer] The object id if a single object is created
|
19
|
+
# @return [Boolean] True/False if multiple objects are created
|
8
20
|
def add(data)
|
9
21
|
create(data)
|
10
22
|
end
|
11
23
|
|
24
|
+
# Destroy Zabbix object using API delete
|
25
|
+
#
|
26
|
+
# @param data [Hash] Should include object's id field name (indentify) and id value
|
27
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
28
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
29
|
+
# @return [Integer] The object id if a single object is deleted
|
30
|
+
# @return [Boolean] True/False if multiple objects are deleted
|
12
31
|
def destroy(data)
|
13
32
|
delete(data)
|
14
33
|
end
|
15
34
|
|
16
|
-
def method_name
|
17
|
-
end
|
18
|
-
|
35
|
+
def method_name; end
|
19
36
|
end
|
20
37
|
end
|
@@ -1,10 +1,17 @@
|
|
1
1
|
class ZabbixApi
|
2
2
|
class Basic
|
3
|
-
|
3
|
+
# Log messages to stdout when debugging
|
4
|
+
#
|
5
|
+
# @param message [String]
|
4
6
|
def log(message)
|
5
|
-
puts
|
7
|
+
puts message.to_s if @client.options[:debug]
|
6
8
|
end
|
7
9
|
|
10
|
+
# Compare two hashes for equality
|
11
|
+
#
|
12
|
+
# @param a [Hash]
|
13
|
+
# @param b [Hash]
|
14
|
+
# @return [Boolean]
|
8
15
|
def hash_equals?(a, b)
|
9
16
|
a_new = normalize_hash(a)
|
10
17
|
b_new = normalize_hash(b)
|
@@ -13,40 +20,64 @@ class ZabbixApi
|
|
13
20
|
hash1 == hash2
|
14
21
|
end
|
15
22
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
# Convert all hash/array keys to symbols
|
24
|
+
#
|
25
|
+
# @param object [Array, Hash]
|
26
|
+
# @return [Array, Hash]
|
27
|
+
def symbolize_keys(object)
|
28
|
+
if object.is_a?(Array)
|
29
|
+
object.each_with_index do |val, index|
|
30
|
+
object[index] = symbolize_keys(val)
|
31
|
+
end
|
32
|
+
elsif object.is_a?(Hash)
|
33
|
+
object.keys.each do |key|
|
34
|
+
object[key.to_sym] = symbolize_keys(object.delete(key))
|
35
|
+
end
|
36
|
+
end
|
37
|
+
object
|
20
38
|
end
|
21
39
|
|
40
|
+
# Normalize all hash values to strings
|
41
|
+
#
|
42
|
+
# @param hash [Hash]
|
43
|
+
# @return [Hash]
|
22
44
|
def normalize_hash(hash)
|
23
45
|
result = hash.dup
|
24
|
-
|
46
|
+
|
47
|
+
result.delete(:hostid) # TODO: remove to logig. TemplateID and HostID has different id
|
48
|
+
|
25
49
|
result.each do |key, value|
|
26
|
-
|
27
|
-
when Array
|
28
|
-
result[key] = normalize_array(value)
|
29
|
-
else
|
30
|
-
result[key] = value.to_s
|
31
|
-
end
|
50
|
+
result[key] = value.is_a?(Array) ? normalize_array(value) : value.to_s
|
32
51
|
end
|
52
|
+
|
33
53
|
result
|
34
54
|
end
|
35
55
|
|
56
|
+
# Normalize all array values to strings
|
57
|
+
#
|
58
|
+
# @param array [Array]
|
59
|
+
# @return [Array]
|
36
60
|
def normalize_array(array)
|
37
61
|
result = []
|
62
|
+
|
38
63
|
array.each do |e|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
result << e.to_s
|
64
|
+
if e.is_a?(Array)
|
65
|
+
result.push(normalize_array(e))
|
66
|
+
elsif e.is_a?(Hash)
|
67
|
+
result.push(normalize_hash(e))
|
68
|
+
else
|
69
|
+
result.push(e.to_s)
|
46
70
|
end
|
47
71
|
end
|
72
|
+
|
73
|
+
result
|
48
74
|
end
|
49
75
|
|
76
|
+
# Parse a data hash for id key or boolean to return
|
77
|
+
#
|
78
|
+
# @param data [Hash]
|
79
|
+
# @return [Integer] The object id if a single object hash is provided with key
|
80
|
+
# @return [Boolean] True/False if multiple class object hash is provided
|
50
81
|
def parse_keys(data)
|
51
82
|
case data
|
52
83
|
when Hash
|
@@ -55,15 +86,17 @@ class ZabbixApi
|
|
55
86
|
true
|
56
87
|
when FalseClass
|
57
88
|
false
|
58
|
-
else
|
59
|
-
nil
|
60
89
|
end
|
61
90
|
end
|
62
91
|
|
92
|
+
# Merge two hashes into a single new hash
|
93
|
+
#
|
94
|
+
# @param a [Hash]
|
95
|
+
# @param b [Hash]
|
96
|
+
# @return [Hash]
|
63
97
|
def merge_params(a, b)
|
64
98
|
new = a.dup
|
65
99
|
new.merge(b)
|
66
100
|
end
|
67
|
-
|
68
101
|
end
|
69
102
|
end
|
@@ -1,29 +1,46 @@
|
|
1
1
|
class ZabbixApi
|
2
2
|
class Basic
|
3
|
-
|
3
|
+
# Initializes a new Basic object with ZabbixApi Client
|
4
|
+
#
|
5
|
+
# @param client [ZabbixApi::Client]
|
6
|
+
# @return [ZabbixApi::Client]
|
4
7
|
def initialize(client)
|
5
8
|
@client = client
|
6
9
|
end
|
7
10
|
|
11
|
+
# Placeholder for inherited objects to provide object-specific method name
|
12
|
+
#
|
13
|
+
# @raise [ApiError] Basic object does not directly support method_name
|
8
14
|
def method_name
|
9
15
|
raise ApiError.new("Can't call method_name here")
|
10
16
|
end
|
11
17
|
|
18
|
+
# Placeholder for inherited objects to provide default options
|
19
|
+
#
|
20
|
+
# @return [Hash]
|
12
21
|
def default_options
|
13
22
|
{}
|
14
23
|
end
|
15
24
|
|
25
|
+
# Returns the object's plural id field name (indentify) based on key
|
26
|
+
#
|
27
|
+
# @return [String]
|
16
28
|
def keys
|
17
|
-
key +
|
29
|
+
key + 's'
|
18
30
|
end
|
19
31
|
|
32
|
+
# Returns the object's id field name (indentify) based on method_name + id
|
33
|
+
#
|
34
|
+
# @return [String]
|
20
35
|
def key
|
21
|
-
method_name +
|
36
|
+
method_name + 'id'
|
22
37
|
end
|
23
38
|
|
39
|
+
# Placeholder for inherited objects to provide object-specific id field name
|
40
|
+
#
|
41
|
+
# @raise [ApiError] Basic object does not directly support indentify
|
24
42
|
def indentify
|
25
43
|
raise ApiError.new("Can't call indentify here")
|
26
44
|
end
|
27
|
-
|
28
45
|
end
|
29
46
|
end
|
@@ -1,6 +1,12 @@
|
|
1
1
|
class ZabbixApi
|
2
2
|
class Basic
|
3
|
-
|
3
|
+
# Create new Zabbix object using API (with defaults)
|
4
|
+
#
|
5
|
+
# @param data [Hash]
|
6
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
7
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
8
|
+
# @return [Integer] The object id if a single object is created
|
9
|
+
# @return [Boolean] True/False if multiple objects are created
|
4
10
|
def create(data)
|
5
11
|
log "[DEBUG] Call create with parameters: #{data.inspect}"
|
6
12
|
|
@@ -10,6 +16,13 @@ class ZabbixApi
|
|
10
16
|
parse_keys result
|
11
17
|
end
|
12
18
|
|
19
|
+
# Delete Zabbix object using API
|
20
|
+
#
|
21
|
+
# @param data [Hash] Should include object's id field name (indentify) and id value
|
22
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
23
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
24
|
+
# @return [Integer] The object id if a single object is deleted
|
25
|
+
# @return [Boolean] True/False if multiple objects are deleted
|
13
26
|
def delete(data)
|
14
27
|
log "[DEBUG] Call delete with parameters: #{data.inspect}"
|
15
28
|
|
@@ -18,6 +31,13 @@ class ZabbixApi
|
|
18
31
|
parse_keys result
|
19
32
|
end
|
20
33
|
|
34
|
+
# Create or update Zabbix object using API
|
35
|
+
#
|
36
|
+
# @param data [Hash] Should include object's id field name (indentify) and id value
|
37
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
38
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
39
|
+
# @return [Integer] The object id if a single object is created
|
40
|
+
# @return [Boolean] True/False if multiple objects are created
|
21
41
|
def create_or_update(data)
|
22
42
|
log "[DEBUG] Call create_or_update with parameters: #{data.inspect}"
|
23
43
|
|
@@ -25,26 +45,36 @@ class ZabbixApi
|
|
25
45
|
id ? update(data.merge(key.to_sym => id.to_s)) : create(data)
|
26
46
|
end
|
27
47
|
|
28
|
-
|
48
|
+
# Update Zabbix object using API
|
49
|
+
#
|
50
|
+
# @param data [Hash] Should include object's id field name (indentify) and id value
|
51
|
+
# @param force [Boolean] Whether to force an object update even if provided data matches Zabbix
|
52
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
53
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
54
|
+
# @return [Integer] The object id if a single object is created
|
55
|
+
# @return [Boolean] True/False if multiple objects are created
|
56
|
+
def update(data, force = false)
|
29
57
|
log "[DEBUG] Call update with parameters: #{data.inspect}"
|
30
|
-
|
31
58
|
dump = {}
|
32
|
-
item_id = data[key.to_sym].to_i
|
33
59
|
dump_by_id(key.to_sym => data[key.to_sym]).each do |item|
|
34
60
|
dump = symbolize_keys(item) if item[key].to_i == data[key.to_sym].to_i
|
35
61
|
end
|
36
|
-
|
37
|
-
if hash_equals?(dump, data) and not force
|
62
|
+
if hash_equals?(dump, data) && !force
|
38
63
|
log "[DEBUG] Equal keys #{dump} and #{data}, skip update"
|
39
|
-
|
64
|
+
data[key.to_sym].to_i
|
40
65
|
else
|
41
66
|
data_update = [data]
|
42
67
|
result = @client.api_request(:method => "#{method_name}.update", :params => data_update)
|
43
68
|
parse_keys result
|
44
69
|
end
|
45
|
-
|
46
70
|
end
|
47
71
|
|
72
|
+
# Get full/extended Zabbix object data from API
|
73
|
+
#
|
74
|
+
# @param data [Hash] Should include object's id field name (indentify) and id value
|
75
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
76
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
77
|
+
# @return [Hash]
|
48
78
|
def get_full_data(data)
|
49
79
|
log "[DEBUG] Call get_full_data with parameters: #{data.inspect}"
|
50
80
|
|
@@ -52,13 +82,19 @@ class ZabbixApi
|
|
52
82
|
:method => "#{method_name}.get",
|
53
83
|
:params => {
|
54
84
|
:filter => {
|
55
|
-
indentify.to_sym => data[indentify.to_sym]
|
85
|
+
indentify.to_sym => data[indentify.to_sym],
|
56
86
|
},
|
57
|
-
:output =>
|
87
|
+
:output => 'extend',
|
58
88
|
}
|
59
89
|
)
|
60
90
|
end
|
61
91
|
|
92
|
+
# Get raw Zabbix object data from API
|
93
|
+
#
|
94
|
+
# @param data [Hash]
|
95
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
96
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
97
|
+
# @return [Hash]
|
62
98
|
def get_raw(data)
|
63
99
|
log "[DEBUG] Call get_raw with parameters: #{data.inspect}"
|
64
100
|
|
@@ -68,6 +104,12 @@ class ZabbixApi
|
|
68
104
|
)
|
69
105
|
end
|
70
106
|
|
107
|
+
# Dump Zabbix object data by key from API
|
108
|
+
#
|
109
|
+
# @param data [Hash] Should include desired object's key and value
|
110
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
111
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
112
|
+
# @return [Hash]
|
71
113
|
def dump_by_id(data)
|
72
114
|
log "[DEBUG] Call dump_by_id with parameters: #{data.inspect}"
|
73
115
|
|
@@ -75,34 +117,44 @@ class ZabbixApi
|
|
75
117
|
:method => "#{method_name}.get",
|
76
118
|
:params => {
|
77
119
|
:filter => {
|
78
|
-
key.to_sym => data[key.to_sym]
|
120
|
+
key.to_sym => data[key.to_sym],
|
79
121
|
},
|
80
|
-
:output =>
|
122
|
+
:output => 'extend',
|
81
123
|
}
|
82
124
|
)
|
83
125
|
end
|
84
126
|
|
127
|
+
# Get full/extended Zabbix data for all objects of type/class from API
|
128
|
+
#
|
129
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
130
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
131
|
+
# @return [Array<Hash>] Array of matching objects
|
85
132
|
def all
|
86
133
|
result = {}
|
87
|
-
@client.api_request(:method => "#{method_name}.get", :params => {:output =>
|
134
|
+
@client.api_request(:method => "#{method_name}.get", :params => {:output => 'extend'}).each do |item|
|
88
135
|
result[item[indentify]] = item[key]
|
89
136
|
end
|
90
137
|
result
|
91
138
|
end
|
92
139
|
|
140
|
+
# Get Zabbix object id from API based on provided data
|
141
|
+
#
|
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 (indentify).
|
144
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
145
|
+
# @return [Integer] Zabbix object id
|
93
146
|
def get_id(data)
|
94
147
|
log "[DEBUG] Call get_id with parameters: #{data.inspect}"
|
95
|
-
|
96
148
|
# symbolize keys if the user used string keys instead of symbols
|
97
149
|
data = symbolize_keys(data) if data.key?(indentify)
|
98
|
-
# raise an error if indentify name was not supplied
|
150
|
+
# raise an error if indentify name was not supplied
|
99
151
|
name = data[indentify.to_sym]
|
100
|
-
raise ApiError.new("#{indentify} not supplied in call to get_id") if name
|
152
|
+
raise ApiError.new("#{indentify} not supplied in call to get_id") if name.nil?
|
101
153
|
result = @client.api_request(
|
102
154
|
:method => "#{method_name}.get",
|
103
155
|
:params => {
|
104
156
|
:filter => data,
|
105
|
-
:output => [key, indentify]
|
157
|
+
:output => [key, indentify],
|
106
158
|
}
|
107
159
|
)
|
108
160
|
id = nil
|
@@ -110,6 +162,12 @@ class ZabbixApi
|
|
110
162
|
id
|
111
163
|
end
|
112
164
|
|
165
|
+
# Get or Create Zabbix object using API
|
166
|
+
#
|
167
|
+
# @param data [Hash] Should include object's id field name (indentify) and id value
|
168
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
169
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
170
|
+
# @return [Integer] Zabbix object id
|
113
171
|
def get_or_create(data)
|
114
172
|
log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
|
115
173
|
|
@@ -118,6 +176,5 @@ class ZabbixApi
|
|
118
176
|
end
|
119
177
|
id
|
120
178
|
end
|
121
|
-
|
122
179
|
end
|
123
180
|
end
|