zabbix_manager 5.0.5 → 5.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.idea/vcs.xml +6 -0
- data/.idea/workspace.xml +2 -4
- data/.rubocop.yml +1 -1
- data/lib/zabbix_manager/basic/basic_alias.rb +2 -0
- data/lib/zabbix_manager/basic/basic_extend.rb +11 -9
- data/lib/zabbix_manager/basic/basic_func.rb +9 -5
- data/lib/zabbix_manager/basic/basic_init.rb +6 -4
- data/lib/zabbix_manager/basic/basic_logic.rb +7 -5
- data/lib/zabbix_manager/classes/actions.rb +6 -4
- data/lib/zabbix_manager/classes/applications.rb +4 -2
- data/lib/zabbix_manager/classes/configurations.rb +6 -4
- data/lib/zabbix_manager/classes/drules.rb +5 -3
- data/lib/zabbix_manager/classes/errors.rb +5 -3
- data/lib/zabbix_manager/classes/events.rb +4 -3
- data/lib/zabbix_manager/classes/graphs.rb +11 -9
- data/lib/zabbix_manager/classes/hostgroups.rb +13 -11
- data/lib/zabbix_manager/classes/hosts.rb +36 -34
- data/lib/zabbix_manager/classes/httptests.rb +4 -2
- data/lib/zabbix_manager/classes/items.rb +51 -49
- data/lib/zabbix_manager/classes/maintenance.rb +4 -2
- data/lib/zabbix_manager/classes/mediatypes.rb +15 -13
- data/lib/zabbix_manager/classes/problems.rb +31 -30
- data/lib/zabbix_manager/classes/proxies.rb +9 -7
- data/lib/zabbix_manager/classes/roles.rb +17 -15
- data/lib/zabbix_manager/classes/screens.rb +6 -4
- data/lib/zabbix_manager/classes/scripts.rb +6 -4
- data/lib/zabbix_manager/classes/server.rb +3 -1
- data/lib/zabbix_manager/classes/templates.rb +18 -16
- data/lib/zabbix_manager/classes/triggers.rb +41 -37
- data/lib/zabbix_manager/classes/unusable.rb +2 -0
- data/lib/zabbix_manager/classes/usergroups.rb +11 -9
- data/lib/zabbix_manager/classes/usermacros.rb +21 -19
- data/lib/zabbix_manager/classes/users.rb +11 -9
- data/lib/zabbix_manager/classes/valuemaps.rb +5 -3
- data/lib/zabbix_manager/client.rb +38 -28
- data/lib/zabbix_manager/version.rb +3 -1
- data/lib/zabbix_manager.rb +36 -35
- data/zabbix_manager-5.0.3.gem +0 -0
- data/zabbix_manager-5.0.4.gem +0 -0
- data/zabbix_manager-5.0.5.gem +0 -0
- metadata +9 -4
@@ -1,24 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ZabbixManager
|
2
4
|
class Roles < Basic
|
3
5
|
# The method name used for interacting with Role via Zabbix API
|
4
6
|
#
|
5
7
|
# @return [String]
|
6
8
|
def method_name
|
7
|
-
|
9
|
+
"role"
|
8
10
|
end
|
9
11
|
|
10
12
|
# The key field name used for Role objects via Zabbix API
|
11
13
|
#
|
12
14
|
# @return [String]
|
13
15
|
def key
|
14
|
-
|
16
|
+
"roleid"
|
15
17
|
end
|
16
18
|
|
17
19
|
# The id field name used for identifying specific Role objects via Zabbix API
|
18
20
|
#
|
19
21
|
# @return [String]
|
20
22
|
def identify
|
21
|
-
|
23
|
+
"name"
|
22
24
|
end
|
23
25
|
|
24
26
|
# Set permissions for usergroup using Zabbix API
|
@@ -30,13 +32,13 @@ class ZabbixManager
|
|
30
32
|
def rules(data)
|
31
33
|
rules = data[:rules] || 2
|
32
34
|
result = @client.api_request(
|
33
|
-
method:
|
35
|
+
method: "role.update",
|
34
36
|
params: {
|
35
37
|
roleid: data[:roleid],
|
36
38
|
rules: data[:hostgroupids].map { |t| { permission: permission, id: t } }
|
37
39
|
}
|
38
40
|
)
|
39
|
-
result ? result[
|
41
|
+
result ? result["usrgrpids"][0].to_i : nil
|
40
42
|
end
|
41
43
|
|
42
44
|
# Add users to usergroup using Zabbix API
|
@@ -60,10 +62,10 @@ class ZabbixManager
|
|
60
62
|
log "[DEBUG] Call dump_by_id with parameters: #{data.inspect}"
|
61
63
|
|
62
64
|
@client.api_request(
|
63
|
-
method:
|
65
|
+
method: "role.get",
|
64
66
|
params: {
|
65
|
-
output:
|
66
|
-
selectRules:
|
67
|
+
output: "extend",
|
68
|
+
selectRules: "extend",
|
67
69
|
roleids: data[:id]
|
68
70
|
}
|
69
71
|
)
|
@@ -77,17 +79,17 @@ class ZabbixManager
|
|
77
79
|
# @return [Array] Returns array of Graph ids
|
78
80
|
def get_ids_by_name(data)
|
79
81
|
result = @client.api_request(
|
80
|
-
method:
|
82
|
+
method: "role.get",
|
81
83
|
params: {
|
82
84
|
filter: {
|
83
85
|
name: data[:name]
|
84
86
|
},
|
85
|
-
output:
|
87
|
+
output: "extend"
|
86
88
|
}
|
87
89
|
)
|
88
90
|
|
89
91
|
result.map do |rule|
|
90
|
-
rule[
|
92
|
+
rule["roleid"]
|
91
93
|
end.compact
|
92
94
|
end
|
93
95
|
|
@@ -101,14 +103,14 @@ class ZabbixManager
|
|
101
103
|
user_groups = data[:usrgrpids].map do |t|
|
102
104
|
{
|
103
105
|
usrgrpid: t,
|
104
|
-
userids: data[:userids]
|
106
|
+
userids: data[:userids]
|
105
107
|
}
|
106
108
|
end
|
107
109
|
result = @client.api_request(
|
108
|
-
method:
|
109
|
-
params: user_groups
|
110
|
+
method: "usergroup.update",
|
111
|
+
params: user_groups
|
110
112
|
)
|
111
|
-
result ? result[
|
113
|
+
result ? result["usrgrpids"][0].to_i : nil
|
112
114
|
end
|
113
115
|
end
|
114
116
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ZabbixManager
|
2
4
|
class Screens < Basic
|
3
5
|
# extracted from frontends/php/include/defines.inc.php
|
@@ -23,14 +25,14 @@ class ZabbixManager
|
|
23
25
|
#
|
24
26
|
# @return [String]
|
25
27
|
def method_name
|
26
|
-
|
28
|
+
"screen"
|
27
29
|
end
|
28
30
|
|
29
31
|
# The id field name used for identifying specific Screen objects via Zabbix API
|
30
32
|
#
|
31
33
|
# @return [String]
|
32
34
|
def identify
|
33
|
-
|
35
|
+
"name"
|
34
36
|
end
|
35
37
|
|
36
38
|
# Delete Screen object using Zabbix API
|
@@ -40,8 +42,8 @@ class ZabbixManager
|
|
40
42
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
41
43
|
# @return [Integer] Zabbix object id
|
42
44
|
def delete(data)
|
43
|
-
result = @client.api_request(method:
|
44
|
-
result.empty? ? nil : result[
|
45
|
+
result = @client.api_request(method: "screen.delete", params: [data])
|
46
|
+
result.empty? ? nil : result["screenids"][0].to_i
|
45
47
|
end
|
46
48
|
|
47
49
|
# Get or Create Screen object for Host using Zabbix API
|
@@ -1,14 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ZabbixManager
|
2
4
|
class Scripts < Basic
|
3
5
|
def method_name
|
4
|
-
|
6
|
+
"script"
|
5
7
|
end
|
6
8
|
|
7
9
|
# The id field name used for identifying specific Screen objects via Zabbix API
|
8
10
|
#
|
9
11
|
# @return [String]
|
10
12
|
def identify
|
11
|
-
|
13
|
+
"name"
|
12
14
|
end
|
13
15
|
|
14
16
|
# Submits a request to the zabbix api
|
@@ -20,7 +22,7 @@ class ZabbixManager
|
|
20
22
|
# Returns nothing
|
21
23
|
def execute(data)
|
22
24
|
@client.api_request(
|
23
|
-
method:
|
25
|
+
method: "script.execute",
|
24
26
|
params: {
|
25
27
|
scriptid: data[:scriptid],
|
26
28
|
hostid: data[:hostid]
|
@@ -29,7 +31,7 @@ class ZabbixManager
|
|
29
31
|
end
|
30
32
|
|
31
33
|
def getscriptsbyhost(data)
|
32
|
-
@client.api_request(method:
|
34
|
+
@client.api_request(method: "script.getscriptsbyhosts", params: data)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ZabbixManager
|
2
4
|
class Server
|
3
5
|
# @return [String]
|
@@ -10,7 +12,7 @@ class ZabbixManager
|
|
10
12
|
# @return [String] Zabbix API version number
|
11
13
|
def initialize(client)
|
12
14
|
@client = client
|
13
|
-
@version = @client.api_version
|
15
|
+
@version = @client.api_version
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -1,17 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ZabbixManager
|
2
4
|
class Templates < Basic
|
3
5
|
# The method name used for interacting with Templates via Zabbix API
|
4
6
|
#
|
5
7
|
# @return [String]
|
6
8
|
def method_name
|
7
|
-
|
9
|
+
"template"
|
8
10
|
end
|
9
11
|
|
10
12
|
# The id field name used for identifying specific Template objects via Zabbix API
|
11
13
|
#
|
12
14
|
# @return [String]
|
13
15
|
def identify
|
14
|
-
|
16
|
+
"host"
|
15
17
|
end
|
16
18
|
|
17
19
|
# Delete Template object using Zabbix API
|
@@ -21,8 +23,8 @@ class ZabbixManager
|
|
21
23
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
22
24
|
# @return [Integer] The Template object id that was deleted
|
23
25
|
def delete(data)
|
24
|
-
result = @client.api_request(method:
|
25
|
-
result.empty? ? nil : result[
|
26
|
+
result = @client.api_request(method: "template.delete", params: [data])
|
27
|
+
result.empty? ? nil : result["templateids"][0].to_i
|
26
28
|
end
|
27
29
|
|
28
30
|
# Get Template ids for Host from Zabbix API
|
@@ -32,8 +34,8 @@ class ZabbixManager
|
|
32
34
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
33
35
|
# @return [Array] Returns array of Template ids
|
34
36
|
def get_ids_by_host(data)
|
35
|
-
@client.api_request(method:
|
36
|
-
tmpl[
|
37
|
+
@client.api_request(method: "template.get", params: data).map do |tmpl|
|
38
|
+
tmpl["templateid"]
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
@@ -58,9 +60,9 @@ class ZabbixManager
|
|
58
60
|
# @return [Boolean]
|
59
61
|
def mass_update(data)
|
60
62
|
result = @client.api_request(
|
61
|
-
method:
|
63
|
+
method: "template.massUpdate",
|
62
64
|
params: {
|
63
|
-
hosts:
|
65
|
+
hosts: data[:hosts_id].map { |t| { hostid: t } },
|
64
66
|
templates: data[:templates_id].map { |t| { templateid: t } }
|
65
67
|
}
|
66
68
|
)
|
@@ -75,9 +77,9 @@ class ZabbixManager
|
|
75
77
|
# @return [Boolean]
|
76
78
|
def mass_add(data)
|
77
79
|
result = @client.api_request(
|
78
|
-
method:
|
80
|
+
method: "template.massAdd",
|
79
81
|
params: {
|
80
|
-
hosts:
|
82
|
+
hosts: data[:hosts_id].map { |t| { hostid: t } },
|
81
83
|
templates: data[:templates_id].map { |t| { templateid: t } }
|
82
84
|
}
|
83
85
|
)
|
@@ -92,12 +94,12 @@ class ZabbixManager
|
|
92
94
|
# @return [Boolean]
|
93
95
|
def mass_remove(data)
|
94
96
|
result = @client.api_request(
|
95
|
-
method:
|
97
|
+
method: "template.massRemove",
|
96
98
|
params: {
|
97
|
-
hostids:
|
99
|
+
hostids: data[:hosts_id],
|
98
100
|
templateids: data[:templates_id],
|
99
|
-
groupids:
|
100
|
-
force:
|
101
|
+
groupids: data[:group_id],
|
102
|
+
force: 1
|
101
103
|
}
|
102
104
|
)
|
103
105
|
result.empty? ? false : true
|
@@ -107,14 +109,14 @@ class ZabbixManager
|
|
107
109
|
def get_template_ids(data)
|
108
110
|
# 直接调后端接口
|
109
111
|
result = @client.api_request(
|
110
|
-
method:
|
112
|
+
method: "template.get",
|
111
113
|
params: {
|
112
114
|
output: "extend",
|
113
115
|
filter: {
|
114
116
|
host: [data].flatten
|
115
117
|
}
|
116
118
|
}
|
117
|
-
).map { |temp| [templateid: temp[
|
119
|
+
).map { |temp| [templateid: temp["templateid"]] }
|
118
120
|
|
119
121
|
# 返回 template 模板数组对象
|
120
122
|
result.empty? ? nil : result.flatten
|
@@ -1,17 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ZabbixManager
|
2
4
|
class Triggers < Basic
|
3
5
|
# The method name used for interacting with Triggers via Zabbix API
|
4
6
|
#
|
5
7
|
# @return [String]
|
6
8
|
def method_name
|
7
|
-
|
9
|
+
"trigger"
|
8
10
|
end
|
9
11
|
|
10
12
|
# The id field name used for identifying specific Trigger objects via Zabbix API
|
11
13
|
#
|
12
14
|
# @return [String]
|
13
15
|
def identify
|
14
|
-
|
16
|
+
"description"
|
15
17
|
end
|
16
18
|
|
17
19
|
# Dump Trigger object data by key from Zabbix API
|
@@ -24,14 +26,14 @@ class ZabbixManager
|
|
24
26
|
log "[DEBUG] Call dump_by_id with parameters: #{data.inspect}"
|
25
27
|
|
26
28
|
@client.api_request(
|
27
|
-
method:
|
29
|
+
method: "trigger.get",
|
28
30
|
params: {
|
29
|
-
filter:
|
31
|
+
filter: {
|
30
32
|
keys.to_sym => data[keys.to_sym]
|
31
33
|
},
|
32
|
-
output:
|
33
|
-
select_items:
|
34
|
-
select_functions:
|
34
|
+
output: "extend",
|
35
|
+
select_items: "extend",
|
36
|
+
select_functions: "extend"
|
35
37
|
}
|
36
38
|
)
|
37
39
|
end
|
@@ -51,13 +53,13 @@ class ZabbixManager
|
|
51
53
|
dump = symbolize_keys(item) if item[key].to_i == data[key.to_sym].to_i
|
52
54
|
end
|
53
55
|
|
54
|
-
expression = dump[:items][0][:key_]
|
56
|
+
expression = "#{dump[:items][0][:key_]}.#{dump[:functions][0][:function]}(#{dump[:functions][0][:parameter]})"
|
55
57
|
dump[:expression] = dump[:expression].gsub(/\{(\d*)\}/, "{#{expression}}") # TODO: ugly regexp
|
56
58
|
dump.delete(:functions)
|
57
59
|
dump.delete(:items)
|
58
60
|
|
59
61
|
old_expression = data[:expression]
|
60
|
-
data[:expression] = data[:expression].gsub(/\{
|
62
|
+
data[:expression] = data[:expression].gsub(/\{.*:/, "{") # TODO: ugly regexp
|
61
63
|
data.delete(:templateid)
|
62
64
|
|
63
65
|
log "[DEBUG] expression: #{dump[:expression]}\n data: #{data[:expression]}"
|
@@ -68,7 +70,10 @@ class ZabbixManager
|
|
68
70
|
else
|
69
71
|
data[:expression] = old_expression
|
70
72
|
# disable old trigger
|
71
|
-
log
|
73
|
+
log "[DEBUG] disable :" + @client.api_request(method: "#{method_name}.update",
|
74
|
+
params: [{
|
75
|
+
triggerid: data[:triggerid], status: "1"
|
76
|
+
}]).inspect
|
72
77
|
# create new trigger
|
73
78
|
data.delete(:triggerid)
|
74
79
|
create(data)
|
@@ -105,16 +110,15 @@ class ZabbixManager
|
|
105
110
|
# 测试数据
|
106
111
|
def mojo_data
|
107
112
|
data = {
|
108
|
-
comments:
|
109
|
-
opdata:
|
110
|
-
priority:
|
111
|
-
description:
|
112
|
-
expression:
|
113
|
-
recovery_expression: "{SZX1-ISP-SW7:net.if.in[ifHCInOctets.1].avg(15m)}<=350000000 or {SZX1-ISP-SW7:net.if.out[ifHCOutOctets.1].avg(15m)}<=350000000"
|
113
|
+
comments: "MOJO1",
|
114
|
+
opdata: "MOJO_OPDATA",
|
115
|
+
priority: 1,
|
116
|
+
description: "MOJO1",
|
117
|
+
expression: "{SZX1-ISP-SW7:net.if.in[ifHCInOctets.1].avg(15m)}>=450000000 or {SZX1-ISP-SW7:net.if.out[ifHCOutOctets.1].avg(15m)}>=450000000",
|
118
|
+
recovery_expression: "{SZX1-ISP-SW7:net.if.in[ifHCInOctets.1].avg(15m)}<=350000000 or {SZX1-ISP-SW7:net.if.out[ifHCOutOctets.1].avg(15m)}<=350000000"
|
114
119
|
}
|
115
120
|
|
116
121
|
create_trigger data.stringify_keys!
|
117
|
-
|
118
122
|
end
|
119
123
|
|
120
124
|
# 设置触发器
|
@@ -122,17 +126,17 @@ class ZabbixManager
|
|
122
126
|
data = data.with_indifferent_access
|
123
127
|
# 请求生成触发器
|
124
128
|
result = @client.api_request(
|
125
|
-
method:
|
129
|
+
method: "trigger.create",
|
126
130
|
params: {
|
127
|
-
comments:
|
128
|
-
priority:
|
129
|
-
description:
|
130
|
-
expression:
|
131
|
+
comments: data["comments"],
|
132
|
+
priority: data["priority"],
|
133
|
+
description: data["description"],
|
134
|
+
expression: data["expression"],
|
131
135
|
recovery_expression: data["recovery_expression"],
|
132
|
-
opdata:
|
133
|
-
recovery_mode:
|
134
|
-
type:
|
135
|
-
manual_close:
|
136
|
+
opdata: data["opdata"],
|
137
|
+
recovery_mode: 1,
|
138
|
+
type: 0,
|
139
|
+
manual_close: 1
|
136
140
|
}
|
137
141
|
)
|
138
142
|
# 检查是是否存在
|
@@ -144,21 +148,21 @@ class ZabbixManager
|
|
144
148
|
data = data.with_indifferent_access
|
145
149
|
# 请求生成触发器
|
146
150
|
result = @client.api_request(
|
147
|
-
method:
|
151
|
+
method: "trigger.update",
|
148
152
|
params: {
|
149
|
-
triggerid:
|
150
|
-
comments:
|
151
|
-
priority:
|
152
|
-
description:
|
153
|
-
expression:
|
153
|
+
triggerid: triggerid.to_i,
|
154
|
+
comments: data["comments"],
|
155
|
+
priority: data["priority"],
|
156
|
+
description: data["description"],
|
157
|
+
expression: data["expression"],
|
154
158
|
recovery_expression: data["recovery_expression"],
|
155
|
-
opdata:
|
156
|
-
recovery_mode:
|
157
|
-
type:
|
158
|
-
manual_close:
|
159
|
+
opdata: data["opdata"],
|
160
|
+
recovery_mode: 1,
|
161
|
+
type: 1,
|
162
|
+
manual_close: 1
|
159
163
|
}
|
160
164
|
)
|
161
|
-
#ap result
|
165
|
+
# ap result
|
162
166
|
# 检查是是否存在
|
163
167
|
result.empty? ? nil : result["triggerids"]
|
164
168
|
end
|
@@ -1,24 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ZabbixManager
|
2
4
|
class Usergroups < Basic
|
3
5
|
# The method name used for interacting with Usergroups via Zabbix API
|
4
6
|
#
|
5
7
|
# @return [String]
|
6
8
|
def method_name
|
7
|
-
|
9
|
+
"usergroup"
|
8
10
|
end
|
9
11
|
|
10
12
|
# The key field name used for Usergroup objects via Zabbix API
|
11
13
|
#
|
12
14
|
# @return [String]
|
13
15
|
def key
|
14
|
-
|
16
|
+
"usrgrpid"
|
15
17
|
end
|
16
18
|
|
17
19
|
# The id field name used for identifying specific Usergroup objects via Zabbix API
|
18
20
|
#
|
19
21
|
# @return [String]
|
20
22
|
def identify
|
21
|
-
|
23
|
+
"name"
|
22
24
|
end
|
23
25
|
|
24
26
|
# Set permissions for usergroup using Zabbix API
|
@@ -30,13 +32,13 @@ class ZabbixManager
|
|
30
32
|
def permissions(data)
|
31
33
|
permission = data[:permission] || 2
|
32
34
|
result = @client.api_request(
|
33
|
-
method:
|
35
|
+
method: "usergroup.update",
|
34
36
|
params: {
|
35
37
|
usrgrpid: data[:usrgrpid],
|
36
38
|
rights: data[:hostgroupids].map { |t| { permission: permission, id: t } }
|
37
39
|
}
|
38
40
|
)
|
39
|
-
result ? result[
|
41
|
+
result ? result["usrgrpids"][0].to_i : nil
|
40
42
|
end
|
41
43
|
|
42
44
|
# Add users to usergroup using Zabbix API
|
@@ -60,14 +62,14 @@ class ZabbixManager
|
|
60
62
|
user_groups = data[:usrgrpids].map do |t|
|
61
63
|
{
|
62
64
|
usrgrpid: t,
|
63
|
-
userids: data[:userids]
|
65
|
+
userids: data[:userids]
|
64
66
|
}
|
65
67
|
end
|
66
68
|
result = @client.api_request(
|
67
|
-
method:
|
68
|
-
params: user_groups
|
69
|
+
method: "usergroup.update",
|
70
|
+
params: user_groups
|
69
71
|
)
|
70
|
-
result ? result[
|
72
|
+
result ? result["usrgrpids"][0].to_i : nil
|
71
73
|
end
|
72
74
|
end
|
73
75
|
end
|
@@ -1,17 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ZabbixManager
|
2
4
|
class Usermacros < Basic
|
3
5
|
# The id field name used for identifying specific User macro objects via Zabbix API
|
4
6
|
#
|
5
7
|
# @return [String]
|
6
8
|
def identify
|
7
|
-
|
9
|
+
"macro"
|
8
10
|
end
|
9
11
|
|
10
12
|
# The method name used for interacting with User macros via Zabbix API
|
11
13
|
#
|
12
14
|
# @return [String]
|
13
15
|
def method_name
|
14
|
-
|
16
|
+
"usermacro"
|
15
17
|
end
|
16
18
|
|
17
19
|
# Get User macro object id from Zabbix API based on provided data
|
@@ -27,11 +29,11 @@ class ZabbixManager
|
|
27
29
|
data = symbolize_keys(data) if data.key?(identify)
|
28
30
|
# raise an error if identify name was not supplied
|
29
31
|
name = data[identify.to_sym]
|
30
|
-
raise ManagerError
|
32
|
+
raise ManagerError, "#{identify} not supplied in call to get_id" if name.nil?
|
31
33
|
|
32
|
-
result = request(data,
|
34
|
+
result = request(data, "usermacro.get", "hostmacroid")
|
33
35
|
|
34
|
-
!result.empty? && result[0].key?(
|
36
|
+
!result.empty? && result[0].key?("hostmacroid") ? result[0]["hostmacroid"].to_i : nil
|
35
37
|
end
|
36
38
|
|
37
39
|
# Get Global macro object id from Zabbix API based on provided data
|
@@ -47,11 +49,11 @@ class ZabbixManager
|
|
47
49
|
data = symbolize_keys(data) if data.key?(identify)
|
48
50
|
# raise an error if identify name was not supplied
|
49
51
|
name = data[identify.to_sym]
|
50
|
-
raise ManagerError
|
52
|
+
raise ManagerError, "#{identify} not supplied in call to get_id_global" if name.nil?
|
51
53
|
|
52
|
-
result = request(data,
|
54
|
+
result = request(data, "usermacro.get", "globalmacroid")
|
53
55
|
|
54
|
-
!result.empty? && result[0].key?(
|
56
|
+
!result.empty? && result[0].key?("globalmacroid") ? result[0]["globalmacroid"].to_i : nil
|
55
57
|
end
|
56
58
|
|
57
59
|
# Get full/extended User macro data from Zabbix API
|
@@ -63,7 +65,7 @@ class ZabbixManager
|
|
63
65
|
def get_full_data(data)
|
64
66
|
log "[DEBUG] Call get_full_data with parameters: #{data.inspect}"
|
65
67
|
|
66
|
-
request(data,
|
68
|
+
request(data, "usermacro.get", "hostmacroid")
|
67
69
|
end
|
68
70
|
|
69
71
|
# Get full/extended Global macro data from Zabbix API
|
@@ -75,7 +77,7 @@ class ZabbixManager
|
|
75
77
|
def get_full_data_global(data)
|
76
78
|
log "[DEBUG] Call get_full_data_global with parameters: #{data.inspect}"
|
77
79
|
|
78
|
-
request(data,
|
80
|
+
request(data, "usermacro.get", "globalmacroid")
|
79
81
|
end
|
80
82
|
|
81
83
|
# Create new User macro object using Zabbix API (with defaults)
|
@@ -86,7 +88,7 @@ class ZabbixManager
|
|
86
88
|
# @return [Integer] The object id if a single object is created
|
87
89
|
# @return [Boolean] True/False if multiple objects are created
|
88
90
|
def create(data)
|
89
|
-
request(data,
|
91
|
+
request(data, "usermacro.create", "hostmacroids")
|
90
92
|
end
|
91
93
|
|
92
94
|
# Create new Global macro object using Zabbix API (with defaults)
|
@@ -97,7 +99,7 @@ class ZabbixManager
|
|
97
99
|
# @return [Integer] The object id if a single object is created
|
98
100
|
# @return [Boolean] True/False if multiple objects are created
|
99
101
|
def create_global(data)
|
100
|
-
request(data,
|
102
|
+
request(data, "usermacro.createglobal", "globalmacroids")
|
101
103
|
end
|
102
104
|
|
103
105
|
# Delete User macro object using Zabbix API
|
@@ -109,7 +111,7 @@ class ZabbixManager
|
|
109
111
|
# @return [Boolean] True/False if multiple objects are deleted
|
110
112
|
def delete(data)
|
111
113
|
data_delete = [data]
|
112
|
-
request(data_delete,
|
114
|
+
request(data_delete, "usermacro.delete", "hostmacroids")
|
113
115
|
end
|
114
116
|
|
115
117
|
# Delete Global macro object using Zabbix API
|
@@ -121,7 +123,7 @@ class ZabbixManager
|
|
121
123
|
# @return [Boolean] True/False if multiple objects are deleted
|
122
124
|
def delete_global(data)
|
123
125
|
data_delete = [data]
|
124
|
-
request(data_delete,
|
126
|
+
request(data_delete, "usermacro.deleteglobal", "globalmacroids")
|
125
127
|
end
|
126
128
|
|
127
129
|
# Update User macro object using Zabbix API
|
@@ -133,7 +135,7 @@ class ZabbixManager
|
|
133
135
|
# @return [Integer] The object id if a single object is created
|
134
136
|
# @return [Boolean] True/False if multiple objects are created
|
135
137
|
def update(data)
|
136
|
-
request(data,
|
138
|
+
request(data, "usermacro.update", "hostmacroids")
|
137
139
|
end
|
138
140
|
|
139
141
|
# Update Global macro object using Zabbix API
|
@@ -145,7 +147,7 @@ class ZabbixManager
|
|
145
147
|
# @return [Integer] The object id if a single object is created
|
146
148
|
# @return [Boolean] True/False if multiple objects are created
|
147
149
|
def update_global(data)
|
148
|
-
request(data,
|
150
|
+
request(data, "usermacro.updateglobal", "globalmacroids")
|
149
151
|
end
|
150
152
|
|
151
153
|
# Get or Create User macro object using Zabbix API
|
@@ -200,7 +202,7 @@ class ZabbixManager
|
|
200
202
|
globalmacroid ? update_global(data.merge(globalmacroid: globalmacroid)) : create_global(data)
|
201
203
|
end
|
202
204
|
|
203
|
-
|
205
|
+
private
|
204
206
|
|
205
207
|
# Custom request method to handle both User and Global macros in one
|
206
208
|
#
|
@@ -212,8 +214,8 @@ class ZabbixManager
|
|
212
214
|
# @return [Integer] Zabbix object id
|
213
215
|
def request(data, method, result_key)
|
214
216
|
# Zabbix has different result formats for gets vs updates
|
215
|
-
if method.include?(
|
216
|
-
if result_key.include?(
|
217
|
+
if method.include?(".get")
|
218
|
+
if result_key.include?("global")
|
217
219
|
@client.api_request(method: method, params: { globalmacro: true, filter: data })
|
218
220
|
else
|
219
221
|
@client.api_request(method: method, params: { filter: data })
|