zabbixapi 4.0.0 → 5.0.0.pre.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -10,8 +10,32 @@ class ZabbixApi
|
|
10
10
|
# The id field name used for identifying specific Action objects via Zabbix API
|
11
11
|
#
|
12
12
|
# @return [String]
|
13
|
-
def
|
13
|
+
def identify
|
14
14
|
'name'
|
15
15
|
end
|
16
|
+
|
17
|
+
# Get full/extended Action object data from API
|
18
|
+
#
|
19
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
20
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
21
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
22
|
+
# @return [Hash]
|
23
|
+
def get_full_data(data)
|
24
|
+
log "[DEBUG] Call get_full_data with parameters: #{data.inspect}"
|
25
|
+
|
26
|
+
@client.api_request(
|
27
|
+
method: "#{method_name}.get",
|
28
|
+
params: {
|
29
|
+
filter: {
|
30
|
+
identify.to_sym => data[identify.to_sym]
|
31
|
+
},
|
32
|
+
output: 'extend',
|
33
|
+
selectOperations: "extend",
|
34
|
+
selectRecoveryOperations: "extend",
|
35
|
+
selectAcknowledgeOperations: "extend",
|
36
|
+
selectFilter: "extend",
|
37
|
+
}
|
38
|
+
)
|
39
|
+
end
|
16
40
|
end
|
17
41
|
end
|
@@ -10,7 +10,7 @@ class ZabbixApi
|
|
10
10
|
# The id field name used for identifying specific Application objects via Zabbix API
|
11
11
|
#
|
12
12
|
# @return [String]
|
13
|
-
def
|
13
|
+
def identify
|
14
14
|
'name'
|
15
15
|
end
|
16
16
|
|
@@ -23,7 +23,7 @@ class ZabbixApi
|
|
23
23
|
def get_or_create(data)
|
24
24
|
log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
|
25
25
|
|
26
|
-
unless (id = get_id(:
|
26
|
+
unless (id = get_id(name: data[:name], hostid: data[:hostid]))
|
27
27
|
id = create(data)
|
28
28
|
end
|
29
29
|
id
|
@@ -36,8 +36,8 @@ class ZabbixApi
|
|
36
36
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
37
37
|
# @return [Integer] Zabbix object id
|
38
38
|
def create_or_update(data)
|
39
|
-
applicationid = get_id(:
|
40
|
-
applicationid ? update(data.merge(:
|
39
|
+
applicationid = get_id(name: data[:name], hostid: data[:hostid])
|
40
|
+
applicationid ? update(data.merge(applicationid: applicationid)) : create(data)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -15,7 +15,7 @@ class ZabbixApi
|
|
15
15
|
# The id field name used for identifying specific Configuration objects via Zabbix API
|
16
16
|
#
|
17
17
|
# @return [String]
|
18
|
-
def
|
18
|
+
def identify
|
19
19
|
'host'
|
20
20
|
end
|
21
21
|
|
@@ -26,7 +26,7 @@ class ZabbixApi
|
|
26
26
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
27
27
|
# @return [Hash]
|
28
28
|
def export(data)
|
29
|
-
@client.api_request(:
|
29
|
+
@client.api_request(method: 'configuration.export', params: data)
|
30
30
|
end
|
31
31
|
|
32
32
|
# Import configuration data using Zabbix API
|
@@ -36,7 +36,7 @@ class ZabbixApi
|
|
36
36
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
37
37
|
# @return [Hash]
|
38
38
|
def import(data)
|
39
|
-
@client.api_request(:
|
39
|
+
@client.api_request(method: 'configuration.import', params: data)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Drules < Basic
|
3
|
+
# The method name used for interacting with Drules via Zabbix API
|
4
|
+
#
|
5
|
+
# @return [String]
|
6
|
+
def method_name
|
7
|
+
'drule'
|
8
|
+
end
|
9
|
+
|
10
|
+
# The id field name used for identifying specific Drule objects via Zabbix API
|
11
|
+
#
|
12
|
+
# @return [String]
|
13
|
+
def identify
|
14
|
+
'name'
|
15
|
+
end
|
16
|
+
|
17
|
+
# The default options used when creating Drule objects via Zabbix API
|
18
|
+
#
|
19
|
+
# @return [Hash]
|
20
|
+
def default_options
|
21
|
+
{
|
22
|
+
name: nil,
|
23
|
+
iprange: nil,
|
24
|
+
delay: 3600,
|
25
|
+
status: 0,
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
# Get or Create Drule object using Zabbix API
|
30
|
+
#
|
31
|
+
# @param data [Hash] Needs to include name to properly identify Drule via Zabbix API
|
32
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
33
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
34
|
+
# @return [Integer] Zabbix object id
|
35
|
+
def get_or_create(data)
|
36
|
+
log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
|
37
|
+
|
38
|
+
unless (id = get_id(name: data[:name]))
|
39
|
+
id = create(data)
|
40
|
+
end
|
41
|
+
id
|
42
|
+
end
|
43
|
+
|
44
|
+
# Create or update Drule object using Zabbix API
|
45
|
+
#
|
46
|
+
# @param data [Hash] Needs to include name to properly identify Drules via Zabbix API
|
47
|
+
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
48
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
49
|
+
# @return [Integer] Zabbix object id
|
50
|
+
def create_or_update(data)
|
51
|
+
druleid = get_id(name: data[:name])
|
52
|
+
druleid ? update(data.merge(druleid: druleid)) : create(data)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -12,8 +12,11 @@ class ZabbixApi
|
|
12
12
|
private
|
13
13
|
|
14
14
|
def set_error!
|
15
|
-
@error = @response['error']
|
16
|
-
@error_message = "#{@error['message']}: #{@error['data']}"
|
15
|
+
@error = @response['error']
|
16
|
+
@error_message = "#{@error['message']}: #{@error['data']}"
|
17
|
+
rescue StandardError
|
18
|
+
@error = nil
|
19
|
+
@error_message = nil
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Events < Basic
|
3
|
+
# The method name used for interacting with Events via Zabbix API
|
4
|
+
#
|
5
|
+
# @return [String]
|
6
|
+
def method_name
|
7
|
+
'event'
|
8
|
+
end
|
9
|
+
|
10
|
+
# The id field name used for identifying specific Event objects via Zabbix API
|
11
|
+
#
|
12
|
+
# @return [String]
|
13
|
+
def identify
|
14
|
+
'name'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -10,26 +10,26 @@ class ZabbixApi
|
|
10
10
|
# The id field name used for identifying specific Graph objects via Zabbix API
|
11
11
|
#
|
12
12
|
# @return [String]
|
13
|
-
def
|
13
|
+
def identify
|
14
14
|
'name'
|
15
15
|
end
|
16
16
|
|
17
17
|
# Get full/extended Graph data from Zabbix API
|
18
18
|
#
|
19
|
-
# @param data [Hash] Should include object's id field name (
|
19
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
20
20
|
# @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
|
21
21
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
22
22
|
# @return [Hash]
|
23
23
|
def get_full_data(data)
|
24
|
-
log "[DEBUG] Call get_full_data with
|
24
|
+
log "[DEBUG] Call get_full_data with parameters: #{data.inspect}"
|
25
25
|
|
26
26
|
@client.api_request(
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
|
27
|
+
method: "#{method_name}.get",
|
28
|
+
params: {
|
29
|
+
search: {
|
30
|
+
identify.to_sym => data[identify.to_sym]
|
31
31
|
},
|
32
|
-
:
|
32
|
+
output: 'extend'
|
33
33
|
}
|
34
34
|
)
|
35
35
|
end
|
@@ -41,33 +41,23 @@ class ZabbixApi
|
|
41
41
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
42
42
|
# @return [Array] Returns array of Graph ids
|
43
43
|
def get_ids_by_host(data)
|
44
|
-
ids = []
|
45
|
-
graphs = {}
|
46
|
-
|
47
44
|
result = @client.api_request(
|
48
|
-
:
|
49
|
-
:
|
50
|
-
:
|
51
|
-
:
|
45
|
+
method: 'graph.get',
|
46
|
+
params: {
|
47
|
+
filter: {
|
48
|
+
host: data[:host]
|
52
49
|
},
|
53
|
-
:
|
50
|
+
output: 'extend'
|
54
51
|
}
|
55
52
|
)
|
56
53
|
|
57
|
-
result.
|
54
|
+
result.map do |graph|
|
58
55
|
num = graph['graphid']
|
59
56
|
name = graph['name']
|
60
|
-
graphs[name] = num
|
61
57
|
filter = data[:filter]
|
62
58
|
|
63
|
-
if filter.nil?
|
64
|
-
|
65
|
-
elsif /#{filter}/ =~ name
|
66
|
-
ids.push(graphs[name])
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
ids
|
59
|
+
num if filter.nil? || /#{filter}/ =~ name
|
60
|
+
end.compact
|
71
61
|
end
|
72
62
|
|
73
63
|
# Get Graph Item object using Zabbix API
|
@@ -78,10 +68,10 @@ class ZabbixApi
|
|
78
68
|
# @return [Hash]
|
79
69
|
def get_items(data)
|
80
70
|
@client.api_request(
|
81
|
-
:
|
82
|
-
:
|
83
|
-
:
|
84
|
-
:
|
71
|
+
method: 'graphitem.get',
|
72
|
+
params: {
|
73
|
+
graphids: [data],
|
74
|
+
output: 'extend'
|
85
75
|
}
|
86
76
|
)
|
87
77
|
end
|
@@ -95,7 +85,7 @@ class ZabbixApi
|
|
95
85
|
def get_or_create(data)
|
96
86
|
log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
|
97
87
|
|
98
|
-
unless (id = get_id(:
|
88
|
+
unless (id = get_id(name: data[:name], templateid: data[:templateid]))
|
99
89
|
id = create(data)
|
100
90
|
end
|
101
91
|
|
@@ -109,8 +99,8 @@ class ZabbixApi
|
|
109
99
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
110
100
|
# @return [Integer] Zabbix object id
|
111
101
|
def create_or_update(data)
|
112
|
-
graphid = get_id(:
|
113
|
-
graphid ? _update(data.merge(:
|
102
|
+
graphid = get_id(name: data[:name], templateid: data[:templateid])
|
103
|
+
graphid ? _update(data.merge(graphid: graphid)) : create(data)
|
114
104
|
end
|
115
105
|
|
116
106
|
def _update(data)
|
@@ -10,7 +10,7 @@ class ZabbixApi
|
|
10
10
|
# The id field name used for identifying specific Host objects via Zabbix API
|
11
11
|
#
|
12
12
|
# @return [String]
|
13
|
-
def
|
13
|
+
def identify
|
14
14
|
'host'
|
15
15
|
end
|
16
16
|
|
@@ -21,16 +21,16 @@ class ZabbixApi
|
|
21
21
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
22
22
|
# @return [Hash]
|
23
23
|
def dump_by_id(data)
|
24
|
-
log "[DEBUG] Call dump_by_id with
|
24
|
+
log "[DEBUG] Call dump_by_id with parameters: #{data.inspect}"
|
25
25
|
|
26
26
|
@client.api_request(
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
key.to_sym => data[key.to_sym]
|
27
|
+
method: 'host.get',
|
28
|
+
params: {
|
29
|
+
filter: {
|
30
|
+
key.to_sym => data[key.to_sym]
|
31
31
|
},
|
32
|
-
:
|
33
|
-
:
|
32
|
+
output: 'extend',
|
33
|
+
selectGroups: 'shorten'
|
34
34
|
}
|
35
35
|
)
|
36
36
|
end
|
@@ -40,12 +40,12 @@ class ZabbixApi
|
|
40
40
|
# @return [Hash]
|
41
41
|
def default_options
|
42
42
|
{
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
43
|
+
host: nil,
|
44
|
+
interfaces: [],
|
45
|
+
status: 0,
|
46
|
+
available: 1,
|
47
|
+
groups: [],
|
48
|
+
proxy_hostid: nil
|
49
49
|
}
|
50
50
|
end
|
51
51
|
|
@@ -57,10 +57,10 @@ class ZabbixApi
|
|
57
57
|
# @return [Boolean]
|
58
58
|
def unlink_templates(data)
|
59
59
|
result = @client.api_request(
|
60
|
-
:
|
61
|
-
:
|
62
|
-
:
|
63
|
-
:
|
60
|
+
method: 'host.massRemove',
|
61
|
+
params: {
|
62
|
+
hostids: data[:hosts_id],
|
63
|
+
templates: data[:templates_id]
|
64
64
|
}
|
65
65
|
)
|
66
66
|
result.empty? ? false : true
|
@@ -73,8 +73,8 @@ class ZabbixApi
|
|
73
73
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
74
74
|
# @return [Integer] Zabbix object id
|
75
75
|
def create_or_update(data)
|
76
|
-
hostid = get_id(:
|
77
|
-
hostid ? update(data.merge(:
|
76
|
+
hostid = get_id(host: data[:host])
|
77
|
+
hostid ? update(data.merge(hostid: hostid)) : create(data)
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
@@ -10,7 +10,7 @@ class ZabbixApi
|
|
10
10
|
# The id field name used for identifying specific HttpTest objects via Zabbix API
|
11
11
|
#
|
12
12
|
# @return [String]
|
13
|
-
def
|
13
|
+
def identify
|
14
14
|
'name'
|
15
15
|
end
|
16
16
|
|
@@ -19,9 +19,9 @@ class ZabbixApi
|
|
19
19
|
# @return [Hash]
|
20
20
|
def default_options
|
21
21
|
{
|
22
|
-
:
|
23
|
-
:
|
24
|
-
:
|
22
|
+
hostid: nil,
|
23
|
+
name: nil,
|
24
|
+
steps: []
|
25
25
|
}
|
26
26
|
end
|
27
27
|
|
@@ -34,7 +34,7 @@ class ZabbixApi
|
|
34
34
|
def get_or_create(data)
|
35
35
|
log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
|
36
36
|
|
37
|
-
unless (id = get_id(:
|
37
|
+
unless (id = get_id(name: data[:name], hostid: data[:hostid]))
|
38
38
|
id = create(data)
|
39
39
|
end
|
40
40
|
id
|
@@ -47,8 +47,8 @@ class ZabbixApi
|
|
47
47
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
48
48
|
# @return [Integer] Zabbix object id
|
49
49
|
def create_or_update(data)
|
50
|
-
httptestid = get_id(:
|
51
|
-
httptestid ? update(data.merge(:
|
50
|
+
httptestid = get_id(name: data[:name], hostid: data[:hostid])
|
51
|
+
httptestid ? update(data.merge(httptestid: httptestid)) : create(data)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -10,7 +10,7 @@ class ZabbixApi
|
|
10
10
|
# The id field name used for identifying specific Item objects via Zabbix API
|
11
11
|
#
|
12
12
|
# @return [String]
|
13
|
-
def
|
13
|
+
def identify
|
14
14
|
'name'
|
15
15
|
end
|
16
16
|
|
@@ -19,38 +19,38 @@ class ZabbixApi
|
|
19
19
|
# @return [Hash]
|
20
20
|
def default_options
|
21
21
|
{
|
22
|
-
:
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
36
|
-
:
|
37
|
-
:
|
38
|
-
:
|
39
|
-
:
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
50
|
-
:
|
51
|
-
:
|
52
|
-
:
|
53
|
-
:
|
22
|
+
name: nil,
|
23
|
+
key_: nil,
|
24
|
+
hostid: nil,
|
25
|
+
delay: 60,
|
26
|
+
history: 3600,
|
27
|
+
status: 0,
|
28
|
+
type: 7,
|
29
|
+
snmp_community: '',
|
30
|
+
snmp_oid: '',
|
31
|
+
value_type: 3,
|
32
|
+
data_type: 0,
|
33
|
+
trapper_hosts: 'localhost',
|
34
|
+
snmp_port: 161,
|
35
|
+
units: '',
|
36
|
+
multiplier: 0,
|
37
|
+
delta: 0,
|
38
|
+
snmpv3_securityname: '',
|
39
|
+
snmpv3_securitylevel: 0,
|
40
|
+
snmpv3_authpassphrase: '',
|
41
|
+
snmpv3_privpassphrase: '',
|
42
|
+
formula: 0,
|
43
|
+
trends: 86400,
|
44
|
+
logtimefmt: '',
|
45
|
+
valuemapid: 0,
|
46
|
+
delay_flex: '',
|
47
|
+
authtype: 0,
|
48
|
+
username: '',
|
49
|
+
password: '',
|
50
|
+
publickey: '',
|
51
|
+
privatekey: '',
|
52
|
+
params: '',
|
53
|
+
ipmi_sensor: ''
|
54
54
|
}
|
55
55
|
end
|
56
56
|
|
@@ -63,7 +63,7 @@ class ZabbixApi
|
|
63
63
|
def get_or_create(data)
|
64
64
|
log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
|
65
65
|
|
66
|
-
unless (id = get_id(:
|
66
|
+
unless (id = get_id(name: data[:name], hostid: data[:hostid]))
|
67
67
|
id = create(data)
|
68
68
|
end
|
69
69
|
id
|
@@ -76,8 +76,8 @@ class ZabbixApi
|
|
76
76
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
77
77
|
# @return [Integer] Zabbix object id
|
78
78
|
def create_or_update(data)
|
79
|
-
itemid = get_id(:
|
80
|
-
itemid ? update(data.merge(:
|
79
|
+
itemid = get_id(name: data[:name], hostid: data[:hostid])
|
80
|
+
itemid ? update(data.merge(itemid: itemid)) : create(data)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|