zbxapi 0.3.1 → 0.3.2
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.
- data/api_classes/api_dsl.rb +111 -10
- data/api_classes/dsl_host.rb +38 -32
- data/api_classes/dsl_trigger.rb +3 -2
- data/zbxapi.rb +23 -0
- metadata +2 -2
data/api_classes/api_dsl.rb
CHANGED
@@ -26,6 +26,43 @@
|
|
26
26
|
|
27
27
|
require "zbxapi/zdebug"
|
28
28
|
require "zbxapi/exceptions"
|
29
|
+
require "pp"
|
30
|
+
|
31
|
+
class ZabbixAPI_ParametersDSL
|
32
|
+
attr_reader :valid_params, :required_params
|
33
|
+
|
34
|
+
def initialize(other_validparams,other_requiredparams)
|
35
|
+
@other_valid_parameters=other_validparams
|
36
|
+
@other_required_parameters=other_requiredparams
|
37
|
+
@valid_params=[]
|
38
|
+
@required_params=[]
|
39
|
+
end
|
40
|
+
|
41
|
+
def inherit(ver)
|
42
|
+
@valid_params=@other_valid_parameters[ver] || []
|
43
|
+
@required_params=@other_required_parameters[ver] || []
|
44
|
+
end
|
45
|
+
|
46
|
+
def add(*params)
|
47
|
+
@valid_params+=params
|
48
|
+
@valid_params.flatten!
|
49
|
+
end
|
50
|
+
|
51
|
+
def remove(*params)
|
52
|
+
#TODO Add sanity checking to ensure that a removed parameter is also removed from the required list
|
53
|
+
@valid_params-=params
|
54
|
+
end
|
55
|
+
|
56
|
+
def from(var)
|
57
|
+
var
|
58
|
+
end
|
59
|
+
|
60
|
+
def requires(*params)
|
61
|
+
#TODO Add sanity checking to ensure that required arguments are also valid arguments
|
62
|
+
@required_params+=params
|
63
|
+
@required_params.flatten!
|
64
|
+
end
|
65
|
+
end
|
29
66
|
|
30
67
|
class ZabbixAPI_Method
|
31
68
|
include ZDebug
|
@@ -67,6 +104,12 @@ class ZabbixAPI_Method
|
|
67
104
|
@deprecated={ver=>(msg || "") }
|
68
105
|
end
|
69
106
|
|
107
|
+
def deprecate_dsl(msg)
|
108
|
+
warn msg
|
109
|
+
caller[1]=~/(.*:\d+):.*`(.*?)'/
|
110
|
+
warn "from: #{$1}"
|
111
|
+
end
|
112
|
+
|
70
113
|
#Invalidate this function starting at API version ver
|
71
114
|
#This will raise the ZabbixAPI_Method::InvalidMethod exception
|
72
115
|
#If msg is nil the following string will be used in the exception:
|
@@ -112,13 +155,21 @@ class ZabbixAPI_Method
|
|
112
155
|
end
|
113
156
|
|
114
157
|
def add_valid_params(ver,params)
|
158
|
+
deprecate_dsl("DSL statement add_valid_params is deprecated, use the parameters statement")
|
115
159
|
@validparams[ver]=params
|
116
160
|
end
|
117
161
|
|
118
162
|
def add_required_params(ver,params)
|
163
|
+
deprecate_dsl("DSL statement add_required_params is deprecated, use the parameters statement")
|
119
164
|
@requiredparams[ver]=params
|
120
165
|
end
|
121
166
|
|
167
|
+
# Return the valid parameters for the method given version.
|
168
|
+
# If version is nil, the highest version number available in the valid
|
169
|
+
# parameters hash is used.
|
170
|
+
# If ver is a version number, the closest version number in the valid
|
171
|
+
# parameters hash which is less than or equal to is returned.
|
172
|
+
# nil is returned is no valid parameters are found
|
122
173
|
def get_valid_params(ver)
|
123
174
|
ver=get_version(ver,@validparams)
|
124
175
|
return nil if ver.nil?
|
@@ -131,6 +182,15 @@ class ZabbixAPI_Method
|
|
131
182
|
@requiredparams[ver]
|
132
183
|
end
|
133
184
|
|
185
|
+
def parameters(ver,*params,&block)
|
186
|
+
parameters=ZabbixAPI_ParametersDSL.new(@validparams,@requiredparams)
|
187
|
+
|
188
|
+
parameters.add(params) if !params.nil?
|
189
|
+
parameters.instance_eval(&block) if !block.nil?
|
190
|
+
@validparams[ver]=parameters.valid_params
|
191
|
+
@requiredparams[ver]=parameters.required_params
|
192
|
+
end
|
193
|
+
|
134
194
|
def params_good?(server_version, params)
|
135
195
|
debug(8,:msg=>"Server Version", :var=>server_version)
|
136
196
|
var=params.is_a?(Hash) ? params.keys : params
|
@@ -220,16 +280,51 @@ class ZabbixAPI_Method
|
|
220
280
|
#If no versions exist in hash, nil is returned
|
221
281
|
def get_version(server,hash)
|
222
282
|
return nil if hash.nil?
|
223
|
-
server
|
224
|
-
|
283
|
+
if server
|
284
|
+
#server=server.split(".").map{|i| i.to_i }
|
285
|
+
keys=hash.keys.sort do |a,b|
|
286
|
+
aa=a.split(".")
|
287
|
+
bb=b.split(".")
|
288
|
+
last_pos=((aa.length > bb.length) ? aa.length : bb.length)-1
|
289
|
+
pos=0
|
290
|
+
while aa[pos].to_i==bb[pos].to_i
|
291
|
+
break if pos>=last_pos
|
292
|
+
pos+=1
|
293
|
+
end
|
294
|
+
(aa[pos].to_i<=>bb[pos].to_i)
|
295
|
+
end
|
225
296
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
297
|
+
keys.delete_if do |k|
|
298
|
+
kk=k.split(".")
|
299
|
+
ss=server.split(".")
|
300
|
+
last_pos=((kk.length > ss.length) ? ss.length : ss.length)-1
|
301
|
+
pos=0
|
302
|
+
while kk[pos].to_i<=ss[pos].to_i
|
303
|
+
break if pos>=last_pos
|
304
|
+
pos+=1
|
305
|
+
end
|
306
|
+
kk[pos].to_i>ss[pos].to_i
|
307
|
+
end
|
308
|
+
|
309
|
+
if keys.empty?
|
310
|
+
return nil
|
311
|
+
else
|
312
|
+
return keys.last
|
313
|
+
end
|
314
|
+
else
|
315
|
+
sorted=hash.keys.sort do |a,b|
|
316
|
+
aa=a.split(".")
|
317
|
+
bb=b.split(".")
|
318
|
+
last_pos=((aa.length > bb.length) ? aa.length : bb.length)-1
|
319
|
+
pos=0
|
320
|
+
while aa[pos].to_i==bb[pos].to_i
|
321
|
+
break if pos>=last_pos
|
322
|
+
pos+=1
|
323
|
+
end
|
324
|
+
(aa[pos].to_i<=>bb[pos].to_i)
|
325
|
+
end
|
326
|
+
sorted.last
|
327
|
+
end
|
233
328
|
end
|
234
329
|
|
235
330
|
|
@@ -251,7 +346,13 @@ class ZabbixAPI_Base
|
|
251
346
|
def valid_params(sym,ver=nil)
|
252
347
|
api_method=self.class.api_methods[sym]
|
253
348
|
return nil if api_method.nil?
|
254
|
-
api_method.
|
349
|
+
api_method.get_valid_params(ver)
|
350
|
+
end
|
351
|
+
|
352
|
+
def required_params(sym,ver=nil)
|
353
|
+
api_method=self.class.api_methods[sym]
|
354
|
+
return nil if api_method.nil?
|
355
|
+
api_method.get_required_params(ver)
|
255
356
|
end
|
256
357
|
|
257
358
|
def self.method_missing(sym,&block)
|
data/api_classes/dsl_host.rb
CHANGED
@@ -27,44 +27,50 @@ class Host < ZabbixAPI_Base
|
|
27
27
|
# params
|
28
28
|
#end
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
30
|
+
parameters "1.3",
|
31
|
+
"nodeids","groupids","hostids","templateids","itemids","triggerids",
|
32
|
+
"graphids","proxyids","maintenanceids","dhostids","dserviceids",
|
33
|
+
"monitored_hosts","templated_hosts","proxy_hosts","with_items",
|
34
|
+
"with_monitored_items","with_historical_items","with_triggers",
|
35
|
+
"with_monitored_triggers","with_httptests",
|
36
|
+
"with_monitored_httptests","with_graphs","editable","filter",
|
37
|
+
"search","startSearch","excludeSearch","searchWildcardsEnabled",
|
38
|
+
"output","select_groups","selectParentTemplates","select_items",
|
39
|
+
"select_triggers","select_graphs","select_applications",
|
40
|
+
"selectInterfaces","select_macros","select_profile","countOutput",
|
41
|
+
"groupOutput","preservekeys","sortfield","sortorder","limit",
|
42
|
+
"extendoutput"
|
43
|
+
|
44
|
+
parameters "2.0" do
|
45
|
+
inherit from "1.3"
|
46
|
+
end
|
47
|
+
|
48
|
+
#parameters "3.0" do
|
49
|
+
# inherit from "2.0"
|
50
|
+
# remove "select_macros","preserve_keys","extendoutput"
|
51
|
+
# add "test_param"
|
52
|
+
# requires "test_param"
|
53
|
+
#end
|
53
54
|
end
|
54
55
|
|
55
56
|
action :exists do
|
56
|
-
|
57
|
+
parameters "1.3" do
|
58
|
+
add "nodeids","hostid","host"
|
59
|
+
end
|
57
60
|
end
|
58
61
|
|
59
62
|
action :create do
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
parameters "1.3" do
|
64
|
+
add "host","name","port","status","useip","dns","ip","proxy_hostid",
|
65
|
+
"useipmi","ipmi_ip","ipmi_port","ipmi_authtype","ipmi_privilege",
|
66
|
+
"ipmi_username","ipmi_password","groups","templates"
|
67
|
+
requires "groups","interfaces"
|
68
|
+
end
|
69
|
+
|
70
|
+
parameters "2.0" do
|
71
|
+
inherit from "1.3"
|
72
|
+
add "interfaces"
|
73
|
+
end
|
68
74
|
end
|
69
75
|
|
70
76
|
action :delete do
|
data/api_classes/dsl_trigger.rb
CHANGED
@@ -35,14 +35,15 @@ Trigger.delete
|
|
35
35
|
Trigger.deleteDependencies
|
36
36
|
Trigger.exists
|
37
37
|
Trigger.get do
|
38
|
-
|
38
|
+
parameters "1.3",
|
39
|
+
'triggerids', "select_functions", "nodeids", "groupids", "templateids",
|
39
40
|
"hostids", "itemids", "applicationids", "functions", "inherited", "templated", "monitored",
|
40
41
|
"active", "maintenance", "withUnacknowledgedEvents", "withAcknowledgedEvents",
|
41
42
|
"withLastEventUnacknowledged", "skipDependent", "editable", "lastChangeSince",
|
42
43
|
"lastChangeTill", "filter", "group", "host", "only_true", "min_severity", "search",
|
43
44
|
"startSearch", "excludeSearch", "searchWildcardsEnabled", "output", "expandData",
|
44
45
|
"expandDescription", "select_groups", "select_hosts", "select_items", "select_dependencies",
|
45
|
-
"countOutput", "groupOutput", "preservekeys", "sortfield", "sortorder", "limit"
|
46
|
+
"countOutput", "groupOutput", "preservekeys", "sortfield", "sortorder", "limit"
|
46
47
|
end
|
47
48
|
Trigger.update
|
48
49
|
|
data/zbxapi.rb
CHANGED
@@ -340,6 +340,29 @@ class ZabbixAPI
|
|
340
340
|
end
|
341
341
|
end
|
342
342
|
|
343
|
+
def api_info(request=:objects,*options)
|
344
|
+
options = options[0] || {}
|
345
|
+
version=options[:version] || nil
|
346
|
+
request_type=options[:params] || :valid
|
347
|
+
|
348
|
+
case request
|
349
|
+
when :objects then
|
350
|
+
@objects.keys.map { |k| k.to_s }
|
351
|
+
else
|
352
|
+
obj,meth=request.split(".")
|
353
|
+
if meth then
|
354
|
+
case request_type
|
355
|
+
when :valid
|
356
|
+
@objects[obj.intern].valid_params(meth.intern,version)
|
357
|
+
when :required
|
358
|
+
@objects[obj.intern].required_params(meth.intern,version)
|
359
|
+
end
|
360
|
+
else
|
361
|
+
@objects[obj.intern].api_methods.map{ |m| m.to_s }
|
362
|
+
end
|
363
|
+
end
|
364
|
+
end
|
365
|
+
|
343
366
|
private
|
344
367
|
|
345
368
|
#Select the http object to be used.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zbxapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|