zabbix_manager 5.1.3 → 5.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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