zabbix_manager 5.1.3 → 5.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/lib/zabbix_manager/basic/basic_alias.rb +3 -20
  3. data/lib/zabbix_manager/basic/basic_func.rb +24 -46
  4. data/lib/zabbix_manager/basic/basic_init.rb +8 -24
  5. data/lib/zabbix_manager/basic/basic_logic.rb +66 -104
  6. data/lib/zabbix_manager/classes/actions.rb +11 -21
  7. data/lib/zabbix_manager/classes/applications.rb +5 -19
  8. data/lib/zabbix_manager/classes/configurations.rb +5 -19
  9. data/lib/zabbix_manager/classes/drules.rb +6 -22
  10. data/lib/zabbix_manager/classes/errors.rb +19 -9
  11. data/lib/zabbix_manager/classes/events.rb +2 -6
  12. data/lib/zabbix_manager/classes/graphs.rb +18 -49
  13. data/lib/zabbix_manager/classes/hostgroups.rb +3 -9
  14. data/lib/zabbix_manager/classes/hostinterfaces.rb +7 -15
  15. data/lib/zabbix_manager/classes/hosts.rb +62 -77
  16. data/lib/zabbix_manager/classes/httptests.rb +8 -24
  17. data/lib/zabbix_manager/classes/items.rb +19 -78
  18. data/lib/zabbix_manager/classes/maintenance.rb +2 -6
  19. data/lib/zabbix_manager/classes/mediatypes.rb +20 -52
  20. data/lib/zabbix_manager/classes/problems.rb +38 -66
  21. data/lib/zabbix_manager/classes/proxies.rb +7 -26
  22. data/lib/zabbix_manager/classes/roles.rb +18 -57
  23. data/lib/zabbix_manager/classes/screens.rb +7 -21
  24. data/lib/zabbix_manager/classes/scripts.rb +7 -10
  25. data/lib/zabbix_manager/classes/server.rb +1 -6
  26. data/lib/zabbix_manager/classes/templates.rb +15 -49
  27. data/lib/zabbix_manager/classes/triggers.rb +15 -49
  28. data/lib/zabbix_manager/classes/unusable.rb +2 -1
  29. data/lib/zabbix_manager/classes/usergroups.rb +6 -28
  30. data/lib/zabbix_manager/classes/usermacros.rb +19 -113
  31. data/lib/zabbix_manager/classes/users.rb +7 -34
  32. data/lib/zabbix_manager/classes/valuemaps.rb +5 -26
  33. data/lib/zabbix_manager/client.rb +66 -69
  34. data/lib/zabbix_manager/version.rb +1 -2
  35. data/lib/zabbix_manager.rb +33 -46
  36. metadata +3 -3
@@ -2,24 +2,20 @@
2
2
 
3
3
  class ZabbixManager
4
4
  class Scripts < Basic
5
+ # 与 Zabbix API 交互的方法名称
5
6
  def method_name
6
7
  "script"
7
8
  end
8
9
 
9
- # The id field name used for identifying specific Screen objects via Zabbix API
10
- #
11
- # @return [String]
10
+ # 用于通过 Zabbix API 标识特定脚本对象的 ID 字段名称
12
11
  def identify
13
12
  "name"
14
13
  end
15
14
 
16
- # Submits a request to the zabbix api
17
- # data - A Hash containing the scriptid and hostid
18
- #
19
- # Example:
20
- # execute({ scriptid: '12', hostid: '32 })
15
+ # 执行 Zabbix API 中特定主机上的脚本
21
16
  #
22
- # Returns nothing
17
+ # 示例:
18
+ # execute({ scriptid: '12', hostid: '32' })
23
19
  def execute(data)
24
20
  @client.api_request(
25
21
  method: "script.execute",
@@ -30,7 +26,8 @@ class ZabbixManager
30
26
  )
31
27
  end
32
28
 
33
- def getscriptsbyhost(data)
29
+ # 使用 Zabbix API 通过主机获取脚本
30
+ def get_scripts_by_host(data)
34
31
  @client.api_request(method: "script.getscriptsbyhosts", params: data)
35
32
  end
36
33
  end
@@ -2,14 +2,9 @@
2
2
 
3
3
  class ZabbixManager
4
4
  class Server
5
- # @return [String]
6
5
  attr_reader :version
7
6
 
8
- # Initializes a new Server object with ZabbixManager Client and fetches Zabbix Server API version
9
- #
10
- # @param client [ZabbixManager::Client]
11
- # @return [ZabbixManager::Client]
12
- # @return [String] Zabbix API version number
7
+ # 初始化一个新的 Server 对象,使用 ZabbixManager 客户端,并获取 Zabbix 服务器 API 版本
13
8
  def initialize(client)
14
9
  @client = client
15
10
  @version = @client.api_version
@@ -2,63 +2,39 @@
2
2
 
3
3
  class ZabbixManager
4
4
  class Templates < Basic
5
- # The method name used for interacting with Templates via Zabbix API
6
- #
7
- # @return [String]
5
+ # Zabbix API 中与模板交互的方法名称
8
6
  def method_name
9
7
  "template"
10
8
  end
11
9
 
12
- # The id field name used for identifying specific Template objects via Zabbix API
13
- #
14
- # @return [String]
10
+ # 用于通过 Zabbix API 标识特定模板对象的 id 字段名称
15
11
  def identify
16
12
  "host"
17
13
  end
18
14
 
19
- # Delete Template object using Zabbix API
20
- #
21
- # @param data [Array] Should include array of templateid's
22
- # @raise [ZbxError] 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, NilClass] The Template object id that was deleted
15
+ # 通过 Zabbix API 删除模板对象
25
16
  def delete(data)
26
17
  result = @client.api_request(method: "template.delete", params: [data])
27
18
  result.empty? ? nil : result["templateids"][0].to_i
28
19
  end
29
20
 
30
- # Get Template ids for Host from Zabbix API
31
- #
32
- # @param data [Hash] Should include host value to query for matching templates
33
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
34
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
35
- # @return [Array] Returns array of Template ids
21
+ # Zabbix API 获取主机的模板 id
36
22
  def get_ids_by_host(data)
37
23
  @client.api_request(method: "template.get", params: data).map do |tmpl|
38
24
  tmpl["templateid"]
39
25
  end
40
26
  end
41
27
 
42
- # Get or Create Template object using Zabbix API
43
- #
44
- # @param data [Hash] Needs to include host to properly identify Templates via Zabbix API
45
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
46
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
47
- # @return [Integer, TrueClass, FalseClass] Zabbix object id
48
- def get_or_create(data)
49
- if (templateid = get_id(host: data[:host]))
50
- templateid
51
- else
52
- create(data)
53
- end
54
- end
28
+ # 通过 Zabbix API 获取或创建模板对象
29
+ # def get_or_create(data)
30
+ # if (templateid = get_id(host: data[:host]))
31
+ # templateid
32
+ # else
33
+ # create(data)
34
+ # end
35
+ # end
55
36
 
56
- # Mass update Templates for Hosts using Zabbix API
57
- #
58
- # @param data [Hash] Should include hosts_id array and templates_id array
59
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
60
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
61
- # @return [Boolean]
37
+ # 通过 Zabbix API 批量更新主机的模板
62
38
  def mass_update(data)
63
39
  result = @client.api_request(
64
40
  method: "template.massUpdate",
@@ -70,12 +46,7 @@ class ZabbixManager
70
46
  result.empty? ? false : true
71
47
  end
72
48
 
73
- # Mass add Templates to Hosts using Zabbix API
74
- #
75
- # @param data [Hash] Should include hosts_id array and templates_id array
76
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
77
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
78
- # @return [Boolean]
49
+ # 通过 Zabbix API 批量添加模板到主机
79
50
  def mass_add(data)
80
51
  result = @client.api_request(
81
52
  method: "template.massAdd",
@@ -87,12 +58,7 @@ class ZabbixManager
87
58
  result.empty? ? false : true
88
59
  end
89
60
 
90
- # Mass remove Templates to Hosts using Zabbix API
91
- #
92
- # @param data [Hash] Should include hosts_id array and templates_id array
93
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
94
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
95
- # @return [Boolean]
61
+ # 通过 Zabbix API 批量从主机移除模板
96
62
  def mass_remove(data)
97
63
  result = @client.api_request(
98
64
  method: "template.massRemove",
@@ -2,24 +2,17 @@
2
2
 
3
3
  class ZabbixManager
4
4
  class Triggers < Basic
5
- # The method name used for interacting with Triggers via Zabbix API
6
- #
7
- # @return [String]
5
+ # Zabbix API 交互的触发器方法名称
8
6
  def method_name
9
7
  "trigger"
10
8
  end
11
9
 
12
- # The id field name used for identifying specific Trigger objects via Zabbix API
13
- #
14
- # @return [String]
10
+ # 用于通过 Zabbix API 标识特定触发器对象的 id 字段名称
15
11
  def identify
16
12
  "description"
17
13
  end
18
14
 
19
- # The default options used when creating zabbix triggers
20
- # @note 缺省的 trigger 参数
21
- # @see https://www.zabbix.com/documentation/current/en/manual/api/reference/trigger/get
22
- # @return [Hash]
15
+ # 创建 Zabbix 触发器的默认选项
23
16
  def default_options
24
17
  {
25
18
  recovery_mode: 1,
@@ -28,18 +21,12 @@ class ZabbixManager
28
21
  }
29
22
  end
30
23
 
31
- # Dump Trigger object data by key from Zabbix API
32
- #
33
- # @param data [Hash] Should include desired object's key and value
34
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
35
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
36
- # @return [Hash]
24
+ # 通过键值对从 Zabbix API 转储触发器对象数据
37
25
  def dump_by_id(data)
38
- log "[DEBUG] Call dump_by_id with parameters: #{data.inspect}"
26
+ log "[DEBUG] 调用 dump_by_id 方法,参数: #{data.inspect}"
39
27
 
40
- @client.api_request(
41
- method: "trigger.get",
42
- params: {
28
+ get_raw(
29
+ {
43
30
  triggerids: data[keys.to_sym],
44
31
  output: "extend",
45
32
  select_items: "extend",
@@ -48,14 +35,9 @@ class ZabbixManager
48
35
  )
49
36
  end
50
37
 
51
- # Safely update Trigger object using Zabbix API by deleting and replacing trigger
52
- #
53
- # @param data [Hash] Needs to include description and hostid to properly identify Triggers via Zabbix API
54
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
55
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
56
- # @return [Integer, TrueClass, FalseClass, NilClass] Zabbix object id
38
+ # 安全地使用 Zabbix API 更新触发器对象,通过删除和替换触发器
57
39
  def safe_update(data)
58
- log "[DEBUG] Call safe_update with parameters: #{data.inspect}"
40
+ log "[DEBUG] 调用 safe_update 方法,参数: #{data.inspect}"
59
41
 
60
42
  dump = {}
61
43
  item_id = data[key.to_sym].to_i
@@ -75,7 +57,7 @@ class ZabbixManager
75
57
  log "[DEBUG] expression: #{dump[:expression]}\n data: #{data[:expression]}"
76
58
 
77
59
  if hash_equals?(dump, data)
78
- log "[DEBUG] Equal keys #{dump} and #{data}, skip safe_update"
60
+ log "[DEBUG] #{dump} #{data} 相等,跳过 safe_update"
79
61
  item_id
80
62
  else
81
63
  data[:expression] = old_expression
@@ -90,14 +72,9 @@ class ZabbixManager
90
72
  end
91
73
  end
92
74
 
93
- # Get or Create Trigger object using Zabbix API
94
- #
95
- # @param data [Hash] Needs to include description and hostid to properly identify Triggers via Zabbix API
96
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
97
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
98
- # @return [Integer, TrueClass, FalseClass, NilClass] Zabbix object id
75
+ # 通过 Zabbix API 获取或创建触发器对象
99
76
  def get_or_create(data)
100
- log "[DEBUG] Call #{method_name}.get_or_create with parameters: #{data.inspect}"
77
+ log "[DEBUG] 调用 #{method_name}.get_or_create 方法,参数: #{data.inspect}"
101
78
 
102
79
  if (id = get_id(description: data[:description], hostid: data[:hostid]))
103
80
  id
@@ -106,26 +83,15 @@ class ZabbixManager
106
83
  end
107
84
  end
108
85
 
109
- # Create or update Trigger object using Zabbix API
110
- #
111
- # @param data [Hash] Needs to include description and hostid to properly identify Triggers via Zabbix API
112
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
113
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
114
- # @return [Integer, NilClass, TrueClass, FalseClass] Zabbix object id
86
+ # 使用 Zabbix API 创建或更新触发器对象
115
87
  def create_or_update(data)
116
88
  triggerid = get_id(description: data[:description], hostid: data[:hostid])
117
89
  triggerid ? update(data.merge(triggerid: triggerid)) : create(data)
118
90
  end
119
91
 
120
- # Add dependsOnTrigger using Zabbix API
121
- #
122
- # @param triggerid [Integer] identify for trigger via Zabbix API
123
- # @param depend_on_trigger_id [Integer] identify for dependsOnTrigger via Zabbix API
124
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
125
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
126
- # @return [Integer, NilClass] Zabbix object id
92
+ # 使用 Zabbix API 添加触发器依赖关系
127
93
  def add_trigger_dependency(triggerid, depend_on_trigger_id)
128
- log "[DEBUG] Call add_trigger_dependency with parameters: #{triggerid} #{depend_on_trigger_id}"
94
+ log "[DEBUG] 调用 add_trigger_dependency 方法,参数: #{triggerid} #{depend_on_trigger_id}"
129
95
 
130
96
  result = @client.api_request(
131
97
  method: "trigger.adddependencies",
@@ -2,8 +2,9 @@
2
2
 
3
3
  class ZabbixManager
4
4
  class Triggers < Basic
5
+ # 使用 Zabbix API 创建或更新触发器对象
5
6
  def create_or_update(data)
6
- log "[DEBUG] Call create_or_update with parameters: #{data.inspect}"
7
+ log "[DEBUG] 调用 create_or_update 方法,参数: #{data.inspect}"
7
8
  get_or_create(data)
8
9
  end
9
10
  end
@@ -2,33 +2,22 @@
2
2
 
3
3
  class ZabbixManager
4
4
  class Usergroups < Basic
5
- # The method name used for interacting with Usergroups via Zabbix API
6
- #
7
- # @return [String]
5
+ # 用于通过 Zabbix API Usergroups 交互的方法名称
8
6
  def method_name
9
7
  "usergroup"
10
8
  end
11
9
 
12
- # The key field name used for Usergroup objects via Zabbix API
13
- #
14
- # @return [String]
10
+ # 用于 Usergroup 对象通过 Zabbix API 的键字段名称
15
11
  def key
16
12
  "usrgrpid"
17
13
  end
18
14
 
19
- # The id field name used for identifying specific Usergroup objects via Zabbix API
20
- #
21
- # @return [String]
15
+ # 用于通过 Zabbix API 识别特定 Usergroup 对象的 id 字段名称
22
16
  def identify
23
17
  "name"
24
18
  end
25
19
 
26
- # Set permissions for usergroup using Zabbix API
27
- #
28
- # @param data [Hash] Needs to include usrgrpids and hostgroupids along with permissions to set
29
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
30
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
31
- # @return [Integer, NilClass] Zabbix object id (usergroup)
20
+ # 使用 Zabbix API 设置用户组的权限
32
21
  def permissions(data)
33
22
  permission = data[:permission] || 2
34
23
  result = @client.api_request(
@@ -41,23 +30,12 @@ class ZabbixManager
41
30
  result ? result["usrgrpids"][0].to_i : nil
42
31
  end
43
32
 
44
- # Add users to usergroup using Zabbix API
45
- #
46
- # @deprecated Zabbix has removed massAdd in favor of update.
47
- # @param data [Hash] Needs to include userids and usrgrpids to mass add users to groups
48
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
49
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
50
- # @return [Integer, NilClass] Zabbix object id (usergroup)
33
+ # 使用 Zabbix API 将用户添加到用户组
51
34
  def add_user(data)
52
35
  update_users(data)
53
36
  end
54
37
 
55
- # Update users in usergroups using Zabbix API
56
- #
57
- # @param data [Hash] Needs to include userids and usrgrpids to mass update users in groups
58
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
59
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
60
- # @return [Integer, NilClass] Zabbix object id (usergroup)
38
+ # 使用 Zabbix API 更新用户组中的用户
61
39
  def update_users(data)
62
40
  user_groups = data[:usrgrpids].map do |t|
63
41
  {
@@ -2,160 +2,89 @@
2
2
 
3
3
  class ZabbixManager
4
4
  class Usermacros < Basic
5
- # The id field name used for identifying specific User macro objects via Zabbix API
6
- #
7
- # @return [String]
5
+ # 用于通过 Zabbix API 识别特定 User 宏对象的 id 字段名称
8
6
  def identify
9
7
  "macro"
10
8
  end
11
9
 
12
- # The method name used for interacting with User macros via Zabbix API
13
- #
14
- # @return [String]
10
+ # 用于通过 Zabbix API User 宏交互的方法名称
15
11
  def method_name
16
12
  "usermacro"
17
13
  end
18
14
 
19
- # Get User macro object id from Zabbix API based on provided data
20
- #
21
- # @param data [Hash] Needs to include macro to properly identify user macros via Zabbix API
22
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call or missing object's id field name (identify).
23
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
24
- # @return [Integer] Zabbix object id
15
+ # 通过 Zabbix API 根据提供的数据获取 User 宏对象的 id
25
16
  def get_id(data)
26
17
  log "[DEBUG] Call get_id with parameters: #{data.inspect}"
27
18
 
28
- # symbolize keys if the user used string keys instead of symbols
29
19
  data = symbolize_keys(data) if data.key?(identify)
30
- # raise an error if identify name was not supplied
31
20
  name = data[identify.to_sym]
32
21
  raise ZbxError, "#{identify} not supplied in call to get_id" if name.nil?
33
22
 
34
23
  result = request(data, "usermacro.get", "hostmacroid")
35
24
 
36
- !result.empty? && result[0].key?("hostmacroid") ? result[0]["hostmacroid"].to_i : nil
25
+ !result&.empty? && result[0].key?("hostmacroid") ? result[0]["hostmacroid"].to_i : nil
37
26
  end
38
27
 
39
- # Get Global macro object id from Zabbix API based on provided data
40
- #
41
- # @param data [Hash] Needs to include macro to properly identify global macros via Zabbix API
42
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call or missing object's id field name (identify).
43
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
44
- # @return [Integer] Zabbix object id
28
+ # 通过 Zabbix API 根据提供的数据获取 Global 宏对象的 id
45
29
  def get_id_global(data)
46
30
  log "[DEBUG] Call get_id_global with parameters: #{data.inspect}"
47
31
 
48
- # symbolize keys if the user used string keys instead of symbols
49
32
  data = symbolize_keys(data) if data.key?(identify)
50
- # raise an error if identify name was not supplied
51
33
  name = data[identify.to_sym]
52
34
  raise ZbxError, "#{identify} not supplied in call to get_id_global" if name.nil?
53
35
 
54
36
  result = request(data, "usermacro.get", "globalmacroid")
55
37
 
56
- !result.empty? && result[0].key?("globalmacroid") ? result[0]["globalmacroid"].to_i : nil
38
+ !result&.empty? && result[0].key?("globalmacroid") ? result[0]["globalmacroid"].to_i : nil
57
39
  end
58
40
 
59
- # Get full/extended User macro data from Zabbix API
60
- #
61
- # @param data [Hash] Should include object's id field name (identify) and id value
62
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
63
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
64
- # @return [Hash]
41
+ # 通过 Zabbix API 获取完整/扩展的 User 宏数据
65
42
  def get_full_data(data)
66
43
  log "[DEBUG] Call get_full_data with parameters: #{data.inspect}"
67
44
 
68
45
  request(data, "usermacro.get", "hostmacroid")
69
46
  end
70
47
 
71
- # Get full/extended Global macro data from Zabbix API
72
- #
73
- # @param data [Hash] Should include object's id field name (identify) and id value
74
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
75
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
76
- # @return [Hash]
48
+ # 通过 Zabbix API 获取完整/扩展的 Global 宏数据
77
49
  def get_full_data_global(data)
78
50
  log "[DEBUG] Call get_full_data_global with parameters: #{data.inspect}"
79
51
 
80
52
  request(data, "usermacro.get", "globalmacroid")
81
53
  end
82
54
 
83
- # Create new User macro object using Zabbix API (with defaults)
84
- #
85
- # @param data [Hash] Needs to include hostid, macro, and value to create User macro via Zabbix API
86
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
87
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
88
- # @return [Integer] The object id if a single object is created
89
- # @return [Boolean] True/False if multiple objects are created
55
+ # 通过 Zabbix API 创建新的 User 宏对象(使用默认值)
90
56
  def create(data)
91
57
  request(data, "usermacro.create", "hostmacroids")
92
58
  end
93
59
 
94
- # Create new Global macro object using Zabbix API (with defaults)
95
- #
96
- # @param data [Hash] Needs to include hostid, macro, and value to create Global macro via Zabbix API
97
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
98
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
99
- # @return [Integer] The object id if a single object is created
100
- # @return [Boolean] True/False if multiple objects are created
60
+ # 通过 Zabbix API 创建新的 Global 宏对象(使用默认值)
101
61
  def create_global(data)
102
62
  request(data, "usermacro.createglobal", "globalmacroids")
103
63
  end
104
64
 
105
- # Delete User macro object using Zabbix API
106
- #
107
- # @param data [Hash] Should include hostmacroid's of User macros to delete
108
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
109
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
110
- # @return [Integer] The object id if a single object is deleted
111
- # @return [Boolean] True/False if multiple objects are deleted
65
+ # 通过 Zabbix API 删除 User 宏对象
112
66
  def delete(data)
113
67
  data_delete = [data]
114
68
  request(data_delete, "usermacro.delete", "hostmacroids")
115
69
  end
116
70
 
117
- # Delete Global macro object using Zabbix API
118
- #
119
- # @param data [Hash] Should include hostmacroid's of Global macros to delete
120
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
121
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
122
- # @return [Integer] The object id if a single object is deleted
123
- # @return [Boolean] True/False if multiple objects are deleted
71
+ # 通过 Zabbix API 删除 Global 宏对象
124
72
  def delete_global(data)
125
73
  data_delete = [data]
126
74
  request(data_delete, "usermacro.deleteglobal", "globalmacroids")
127
75
  end
128
76
 
129
- # Update User macro object using Zabbix API
130
- #
131
- # @param data [Hash] Should include object's id field name (identify), id value, and fields to update
132
- # @param force [Boolean] Whether to force an object update even if provided data matches Zabbix
133
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
134
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
135
- # @return [Integer] The object id if a single object is created
136
- # @return [Boolean] True/False if multiple objects are created
77
+ # 通过 Zabbix API 更新 User 宏对象
137
78
  def update(data)
138
79
  request(data, "usermacro.update", "hostmacroids")
139
80
  end
140
81
 
141
- # Update Global macro object using Zabbix API
142
- #
143
- # @param data [Hash] Should include object's id field name (identify), id value, and fields to update
144
- # @param force [Boolean] Whether to force an object update even if provided data matches Zabbix
145
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
146
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
147
- # @return [Integer] The object id if a single object is created
148
- # @return [Boolean] True/False if multiple objects are created
82
+ # 通过 Zabbix API 更新 Global 宏对象
149
83
  def update_global(data)
150
84
  request(data, "usermacro.updateglobal", "globalmacroids")
151
85
  end
152
86
 
153
- # Get or Create User macro object using Zabbix API
154
- #
155
- # @param data [Hash] Needs to include macro and hostid to properly identify User macros via Zabbix API
156
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
157
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
158
- # @return [Integer] Zabbix object id
87
+ # 通过 Zabbix API 获取或创建 User 宏对象
159
88
  def get_or_create(data)
160
89
  log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
161
90
 
@@ -165,12 +94,7 @@ class ZabbixManager
165
94
  id
166
95
  end
167
96
 
168
- # Get or Create Global macro object using Zabbix API
169
- #
170
- # @param data [Hash] Needs to include macro and hostid to properly identify Global macros via Zabbix API
171
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
172
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
173
- # @return [Integer] Zabbix object id
97
+ # 通过 Zabbix API 获取或创建 Global 宏对象
174
98
  def get_or_create_global(data)
175
99
  log "[DEBUG] Call get_or_create_global with parameters: #{data.inspect}"
176
100
 
@@ -180,23 +104,13 @@ class ZabbixManager
180
104
  id
181
105
  end
182
106
 
183
- # Create or update User macro object using Zabbix API
184
- #
185
- # @param data [Hash] Needs to include macro and hostid to properly identify User macros via Zabbix API
186
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
187
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
188
- # @return [Integer, TrueClass, FalseClass, NilClass] Zabbix object id
107
+ # 通过 Zabbix API 创建或更新 User 宏对象
189
108
  def create_or_update(data)
190
109
  hostmacroid = get_id(macro: data[:macro], hostid: data[:hostid])
191
110
  hostmacroid ? update(data.merge(hostmacroid: hostmacroid)) : create(data)
192
111
  end
193
112
 
194
- # Create or update Global macro object using Zabbix API
195
- #
196
- # @param data [Hash] Needs to include macro and hostid to properly identify Global macros via Zabbix API
197
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
198
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
199
- # @return [Integer, TrueClass, FalseClass, NilClass] Zabbix object id
113
+ # 通过 Zabbix API 创建或更新 Global 宏对象
200
114
  def create_or_update_global(data)
201
115
  globalmacroid = get_id_global(macro: data[:macro], hostid: data[:hostid])
202
116
  globalmacroid ? update_global(data.merge(globalmacroid: globalmacroid)) : create_global(data)
@@ -204,16 +118,8 @@ class ZabbixManager
204
118
 
205
119
  private
206
120
 
207
- # Custom request method to handle both User and Global macros in one
208
- #
209
- # @param data [Hash] Needs to include macro and hostid to properly identify Global macros via Zabbix API
210
- # @param method [String] Zabbix API method to use for the request
211
- # @param result_key [String] Which key to use for parsing results based on User vs Global macros
212
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
213
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
214
- # @return [Integer, TrueClass, FalseClass, NilClass] Zabbix object id
121
+ # 自定义请求方法,以处理 User Global
215
122
  def request(data, method, result_key)
216
- # Zabbix has different result formats for gets vs updates
217
123
  if method.include?(".get")
218
124
  if result_key.include?("global")
219
125
  @client.api_request(method: method, params: { globalmacro: true, filter: data })
@@ -2,40 +2,23 @@
2
2
 
3
3
  class ZabbixManager
4
4
  class Users < Basic
5
- # The method name used for interacting with Users via Zabbix API
6
- #
7
- # @return [String]
5
+ # 用于通过 Zabbix API Users 交互的方法名称
8
6
  def method_name
9
7
  "user"
10
8
  end
11
9
 
12
- # The keys field name used for User objects via Zabbix API
13
- #
14
- # @return [String]
15
- def keys
16
- "userids"
17
- end
18
-
19
- # The key field name used for User objects via Zabbix API
20
- #
21
- # @return [String]
22
- def key
23
- "userid"
24
- end
25
-
26
- # The id field name used for identifying specific User objects via Zabbix API
27
- #
28
- # @return [String]
10
+ # 用于通过 Zabbix API 识别特定 User 对象的 id 字段名称
29
11
  def identify
30
12
  "alias"
31
13
  end
32
14
 
15
+ # 用于辅助处理添加或更新用户媒体信息的方法
33
16
  def medias_helper(data, action)
34
17
  result = @client.api_request(
35
18
  method: "user.#{action}",
36
- params: data[:userids].map do |t|
19
+ params: data[:userids].map do |i|
37
20
  {
38
- userid: t,
21
+ userid: i,
39
22
  user_medias: data[:media]
40
23
  }
41
24
  end
@@ -43,22 +26,12 @@ class ZabbixManager
43
26
  result ? result["userids"][0].to_i : nil
44
27
  end
45
28
 
46
- # Add media to users using Zabbix API
47
- #
48
- # @param data [Hash] Needs to include userids and media to mass add media to users
49
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
50
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
51
- # @return [Integer, NilClass] Zabbix object id (media)
29
+ # 通过 Zabbix API 为用户添加媒体信息
52
30
  def add_medias(data)
53
31
  medias_helper(data, "update")
54
32
  end
55
33
 
56
- # Update media for users using Zabbix API
57
- #
58
- # @param data [Hash] Needs to include userids and media to mass update media for users
59
- # @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
60
- # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
61
- # @return [Integer, NilClass] Zabbix object id (user)
34
+ # 通过 Zabbix API 更新用户媒体信息
62
35
  def update_medias(data)
63
36
  medias_helper(data, "update")
64
37
  end