zabbix_manager 5.1.2.pre.alpha1 → 5.1.3
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.
- checksums.yaml +4 -4
- data/lib/zabbix_manager/basic/basic_logic.rb +1 -1
- data/lib/zabbix_manager/classes/hostinterfaces.rb +11 -0
- data/lib/zabbix_manager/classes/hosts.rb +36 -0
- data/lib/zabbix_manager/classes/items.rb +1 -1
- data/lib/zabbix_manager/classes/triggers.rb +2 -4
- data/lib/zabbix_manager/version.rb +1 -1
- data/lib/zabbix_manager.rb +11 -6
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96bd31db6f13198d30bc1de2ac7168b7e535b17e3b1d80d97a30d852dc509c55
|
4
|
+
data.tar.gz: 9022b530a873d1750502c288201583707303a6128eff5c10f82f125f1538a515
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b4e51fc29613d082df8de77f4eab1b9eb12b30acf5d4d36f751bbaf8c657577f21d1faf8e715c4694f78b832b8c02696e5aeb468d1ffbfc9a2b7ecbbd7d1722
|
7
|
+
data.tar.gz: 5e56fdd12fc7afddc2df2f5899fa390f97ba0e7eacafa3141fcfc2dad37ab9aa85f7e8a4553797d6dfbe8aaa286d0ad5932ee2dadb231d4a3b2e2c4a01986c9c
|
@@ -51,7 +51,7 @@ class ZabbixManager
|
|
51
51
|
def delete(data)
|
52
52
|
log "[DEBUG] Call #{method_name}.delete with parameters: #{data.inspect}"
|
53
53
|
|
54
|
-
result = @client.api_request(method: "#{method_name}.delete", params: data)
|
54
|
+
result = @client.api_request(method: "#{method_name}.delete", params: [data].flatten)
|
55
55
|
parse_keys result
|
56
56
|
end
|
57
57
|
|
@@ -22,5 +22,16 @@ class ZabbixManager
|
|
22
22
|
def key
|
23
23
|
"interfaceid"
|
24
24
|
end
|
25
|
+
|
26
|
+
# Get Zabbix interface id from API based on provided hostid
|
27
|
+
# @note 基于 hostid 查询关联的 Interfaceid
|
28
|
+
# @param hostid [Integer, String]
|
29
|
+
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call or missing object's id field name (identify).
|
30
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
31
|
+
# @return [Integer, NilClass] Zabbix object id
|
32
|
+
def get_interfaceid(hostid)
|
33
|
+
result = get_raw({ output: key, "#{identify}": hostid })
|
34
|
+
result&.[](0)&.[](key)&.to_i
|
35
|
+
end
|
25
36
|
end
|
26
37
|
end
|
@@ -98,5 +98,41 @@ class ZabbixManager
|
|
98
98
|
result.empty? ? nil : result.map { |i| { "#{key}": i[key] } }
|
99
99
|
end
|
100
100
|
|
101
|
+
# Create or update Zabbix object using API
|
102
|
+
# @note 创建或更新 Host 监控对象,入参为基于符号的哈希对象,返回监控对象 id
|
103
|
+
# @note 重写基类方法 create_or_update,特殊处理 interfaces 对象
|
104
|
+
# @param data [Hash] Should include object's id field name (identify) and id value
|
105
|
+
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
106
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
107
|
+
# @return [Integer] The object id if a single object is created
|
108
|
+
# @return [Boolean] True/False if multiple objects are created
|
109
|
+
def create_or_update(data)
|
110
|
+
log "[DEBUG] Call #{method_name}.create_or_update with parameters: #{data.inspect}"
|
111
|
+
|
112
|
+
hostid = get_id(identify.to_sym => data[identify.to_sym])
|
113
|
+
return create(data) unless hostid
|
114
|
+
|
115
|
+
interface_id = get_interfaceid(hostid)
|
116
|
+
raise ZbxError, "interfaceid not found in call to get_interfaceid" unless interface_id
|
117
|
+
|
118
|
+
interfaces = data.delete(:interfaces)&.merge(interfaceid: interface_id)
|
119
|
+
params = data.merge(interfaces: interfaces).merge(key.to_sym => hostid.to_s)
|
120
|
+
update(params)
|
121
|
+
end
|
122
|
+
|
123
|
+
# Get Zabbix interface id from API based on provided hostid
|
124
|
+
# @note 基于 hostid 查询关联的 Interfaceid
|
125
|
+
# @param hostid [Integer, String]
|
126
|
+
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call or missing object's id field name (identify).
|
127
|
+
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
128
|
+
# @return [Integer, NilClass] Zabbix object id
|
129
|
+
def get_interfaceid(hostid)
|
130
|
+
result = @client.api_request(
|
131
|
+
method: "hostinterface.get",
|
132
|
+
params: { output: "interfaceid", hostids: hostid }
|
133
|
+
)
|
134
|
+
result&.[](0)&.[]("interfaceid")&.to_i
|
135
|
+
end
|
101
136
|
end
|
102
137
|
end
|
138
|
+
|
@@ -95,7 +95,7 @@ class ZabbixManager
|
|
95
95
|
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
96
96
|
# @return [Integer, TrueClass, FalseClass, NilClass] Zabbix object id
|
97
97
|
def get_interface_items(hostid, name)
|
98
|
-
log "[DEBUG] Call #{method_name}.get_interface_items with
|
98
|
+
log "[DEBUG] Call #{method_name}.get_interface_items with: hostid #{hostid.inspect} name #{name.inspect}"
|
99
99
|
|
100
100
|
# 自动剔除收尾空白字串
|
101
101
|
_name = name&.gsub(%r{[^/0-9]}, "").strip
|
@@ -18,6 +18,7 @@ class ZabbixManager
|
|
18
18
|
|
19
19
|
# The default options used when creating zabbix triggers
|
20
20
|
# @note 缺省的 trigger 参数
|
21
|
+
# @see https://www.zabbix.com/documentation/current/en/manual/api/reference/trigger/get
|
21
22
|
# @return [Hash]
|
22
23
|
def default_options
|
23
24
|
{
|
@@ -39,9 +40,7 @@ class ZabbixManager
|
|
39
40
|
@client.api_request(
|
40
41
|
method: "trigger.get",
|
41
42
|
params: {
|
42
|
-
|
43
|
-
keys.to_sym => data[keys.to_sym]
|
44
|
-
},
|
43
|
+
triggerids: data[keys.to_sym],
|
45
44
|
output: "extend",
|
46
45
|
select_items: "extend",
|
47
46
|
select_functions: "extend"
|
@@ -118,7 +117,6 @@ class ZabbixManager
|
|
118
117
|
triggerid ? update(data.merge(triggerid: triggerid)) : create(data)
|
119
118
|
end
|
120
119
|
|
121
|
-
|
122
120
|
# Add dependsOnTrigger using Zabbix API
|
123
121
|
#
|
124
122
|
# @param triggerid [Integer] identify for trigger via Zabbix API
|
data/lib/zabbix_manager.rb
CHANGED
@@ -1,13 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require "zabbix_manager/version"
|
4
|
+
require "zabbix_manager/client"
|
5
|
+
|
6
|
+
# Dynamically load Basic Classes
|
7
|
+
Dir.glob(File.join(__dir__, "zabbix_manager/basic", "**", "*.rb")).sort.each do |basic_class|
|
8
|
+
require basic_class
|
9
|
+
end
|
10
|
+
|
11
|
+
# Dynamically load Extend Classes
|
12
|
+
Dir.glob(File.join(__dir__, "zabbix_manager/classes", "**", "*.rb")).sort.each do |extend_class|
|
13
|
+
require extend_class
|
6
14
|
end
|
7
15
|
|
8
|
-
# @author: WENWU YAN
|
9
|
-
# @email: 968828@gmail.com
|
10
|
-
# @date: 2023/3/25下午4:47
|
11
16
|
class ZabbixManager
|
12
17
|
# @return [ZabbixManager::Client]
|
13
18
|
attr_reader :client
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zabbix_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.1.
|
4
|
+
version: 5.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WENWU YAN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -116,9 +116,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: 2.7.0
|
117
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- - "
|
119
|
+
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
|
-
version:
|
121
|
+
version: '0'
|
122
122
|
requirements: []
|
123
123
|
rubygems_version: 3.4.6
|
124
124
|
signing_key:
|