zbxapi 0.1.398 → 0.2.415

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,29 +19,22 @@
19
19
  #--
20
20
  ##########################################
21
21
  # Subversion information
22
- # $Id: proxy.rb 344 2011-11-18 01:44:36Z nelsonab $
23
- # $Revision: 344 $
22
+ # $Id: dsl_hostgroup.rb 395 2012-05-18 03:49:48Z nelsonab $
23
+ # $Revision: 395 $
24
24
  ##########################################
25
25
  #++
26
26
 
27
- require "api_classes/subclass_base"
27
+ require "api_classes/api_dsl"
28
28
 
29
+ class HostGroup < ZabbixAPI_Base
30
+ end
29
31
 
30
- #******************************************************************************
31
- #
32
- # Class ZbxAPI_Proxy
33
- #
34
- # Class encapsulating proxy functions
35
- #
36
- # get
37
- #
38
- #******************************************************************************
39
32
 
40
- class ZbxAPI_Proxy< ZbxAPI_Sub
41
- def get(options={})
42
- checkauth
43
- checkversion(1,3)
44
- obj=do_request(json_obj('proxy.get',options))
45
- obj['result']
46
- end
47
- end
33
+ HostGroup.get
34
+ HostGroup.exists
35
+ HostGroup.create
36
+ HostGroup.update
37
+ HostGroup.delete
38
+ HostGroup.massadd
39
+ HostGroup.massupdate
40
+ HostGroup.massremove
@@ -19,38 +19,19 @@
19
19
  #--
20
20
  ##########################################
21
21
  # Subversion information
22
- # $Id: zbxapi.rb 281 2011-04-06 18:10:16Z nelsonab $
23
- # $Revision: 281 $
22
+ # $Id: dsl_item.rb 340 2011-10-14 23:22:06Z nelsonab $
23
+ # $Revision: 340 $
24
24
  ##########################################
25
25
  #++
26
26
 
27
- require "api_classes/subclass_base"
27
+ require "api_classes/api_dsl"
28
28
 
29
- #******************************************************************************
30
- #
31
- # Class ZbxAPI_UserGroup
32
- #
33
- # Class encapsulating User Group functions
34
- #
35
- # API Function Status
36
- # get Basic function implemented
37
- # getid
38
- # create
39
- # update
40
- # updaterights
41
- # addrights
42
- # addusers
43
- # removeusers
44
- # delete
45
- #
46
- #******************************************************************************
47
-
48
- class ZbxAPI_UserGroup < ZbxAPI_Sub
49
- def get(options={})
50
- checkauth
51
- checkversion(1,1)
29
+ class Item < ZabbixAPI_Base
52
30
 
53
- obj=do_request(json_obj('usergroup.get',options))
54
- return obj['result']
55
- end
56
31
  end
32
+
33
+ Item.get
34
+ Item.exists
35
+ Item.create
36
+ Item.update
37
+ Item.delete
@@ -0,0 +1,32 @@
1
+ # Title:: Zabbix API Ruby Library
2
+ # License:: LGPL 2.1 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
3
+ # Copyright:: Copyright (C) 2009,2010 Andrew Nelson nelsonab(at)red-tux(dot)net
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ #--
20
+ ##########################################
21
+ # Subversion information
22
+ # $Id: dsl_proxy.rb 395 2012-05-18 03:49:48Z nelsonab $
23
+ # $Revision: 395 $
24
+ ##########################################
25
+ #++
26
+
27
+ require "api_classes/api_dsl"
28
+
29
+ class Proxy < ZabbixAPI_Base
30
+ end
31
+
32
+ Proxy.get
@@ -0,0 +1,39 @@
1
+ # Title:: Zabbix API Ruby Library
2
+ # License:: LGPL 2.1 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
3
+ # Copyright:: Copyright (C) 2009,2010 Andrew Nelson nelsonab(at)red-tux(dot)net
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ #--
20
+ ##########################################
21
+ # Subversion information
22
+ # $Id: dsl_template.rb 340 2011-10-14 23:22:06Z nelsonab $
23
+ # $Revision: 340 $
24
+ ##########################################
25
+ #++
26
+
27
+ require "api_classes/api_dsl"
28
+
29
+ class Template < ZabbixAPI_Base
30
+ end
31
+
32
+ Template.get
33
+ Template.exists
34
+ Template.create
35
+ Template.update
36
+ Template.delete
37
+ Template.massadd
38
+ Template.massupdate
39
+ Template.massremove
@@ -0,0 +1,48 @@
1
+ # Title:: Zabbix API Ruby Library
2
+ # License:: LGPL 2.1 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
3
+ # Copyright:: Copyright (C) 2009,2010 Andrew Nelson nelsonab(at)red-tux(dot)net
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ #--
20
+ ##########################################
21
+ # Subversion information
22
+ # $Id: dsl_trigger.rb 395 2012-05-18 03:49:48Z nelsonab $
23
+ # $Revision: 395 $
24
+ ##########################################
25
+ #++
26
+
27
+ require "api_classes/api_dsl"
28
+
29
+ class Trigger < ZabbixAPI_Base
30
+ end
31
+
32
+ Trigger.addDependencies
33
+ Trigger.create
34
+ Trigger.delete
35
+ Trigger.deleteDependencies
36
+ Trigger.exists
37
+ Trigger.get do
38
+ add_valid_params "1.3", ['triggerids', "select_functions", "nodeids", "groupids", "templateids",
39
+ "hostids", "itemids", "applicationids", "functions", "inherited", "templated", "monitored",
40
+ "active", "maintenance", "withUnacknowledgedEvents", "withAcknowledgedEvents",
41
+ "withLastEventUnacknowledged", "skipDependent", "editable", "lastChangeSince",
42
+ "lastChangeTill", "filter", "group", "host", "only_true", "min_severity", "search",
43
+ "startSearch", "excludeSearch", "searchWildcardsEnabled", "output", "expandData",
44
+ "expandDescription", "select_groups", "select_hosts", "select_items", "select_dependencies",
45
+ "countOutput", "groupOutput", "preservekeys", "sortfield", "sortorder", "limit"]
46
+ end
47
+ Trigger.update
48
+
@@ -19,41 +19,25 @@
19
19
  #--
20
20
  ##########################################
21
21
  # Subversion information
22
- # $Id: zbxapi.rb 281 2011-04-06 18:10:16Z nelsonab $
23
- # $Revision: 281 $
22
+ # $Id: dsl_user.rb 339 2011-10-14 18:57:38Z nelsonab $
23
+ # $Revision: 339 $
24
24
  ##########################################
25
25
  #++
26
26
 
27
- require 'zbxapi'
27
+ require "api_classes/api_dsl"
28
28
 
29
- # Class: Zbx_API_Sub
30
- # Wrapper class to ensure all class calls goes to the parent object not the
31
- # currently instantiated object.
32
- # Also ensures class specific variable sanity for global functions
33
- class ZbxAPI_Sub < ZabbixAPI #:nodoc: all
34
- attr_accessor :parent
29
+ class User < ZabbixAPI_Base
35
30
 
36
- def initialize(parent)
37
- @parent=parent
38
- end
39
-
40
- def checkauth
41
- @parent.checkauth
42
- end
43
-
44
- def checkversion(major,minor,options=nil)
45
- @parent.checkversion(major,minor,options)
46
- end
47
-
48
- def do_request(req)
49
- return @parent.do_request(req)
50
- end
51
-
52
- def json_obj(method, param)
53
- return @parent.json_obj(method, param)
54
- end
55
-
56
- def debug(level,args={})
57
- @parent.debug(level,args)
58
- end
59
31
  end
32
+
33
+ User.get
34
+ User.create
35
+ User.update
36
+ User.updateprofile
37
+ User.delete
38
+ User.addmedia
39
+ User.updatemedia
40
+ User.deletemedia
41
+ User.authenticate
42
+ User.login
43
+ User.logout
@@ -0,0 +1,39 @@
1
+ # Title:: Zabbix API Ruby Library
2
+ # License:: LGPL 2.1 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
3
+ # Copyright:: Copyright (C) 2009,2010 Andrew Nelson nelsonab(at)red-tux(dot)net
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ #--
20
+ ##########################################
21
+ # Subversion information
22
+ # $Id: dsl_usergroup.rb 340 2011-10-14 23:22:06Z nelsonab $
23
+ # $Revision: 340 $
24
+ ##########################################
25
+ #++
26
+
27
+ require "api_classes/api_dsl"
28
+
29
+ class UserGroup < ZabbixAPI_Base
30
+ end
31
+
32
+ UserGroup.get
33
+ UserGroup.exists
34
+ UserGroup.create
35
+ UserGroup.update
36
+ UserGroup.delete
37
+ UserGroup.massadd
38
+ UserGroup.massupdate
39
+ UserGroup.massremove
@@ -0,0 +1,39 @@
1
+ # Title:: Zabbix API Ruby Library
2
+ # License:: LGPL 2.1 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
3
+ # Copyright:: Copyright (C) 2009,2010 Andrew Nelson nelsonab(at)red-tux(dot)net
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ #--
20
+ ##########################################
21
+ # Subversion information
22
+ # $Id: dsl_usermacro.rb 340 2011-10-14 23:22:06Z nelsonab $
23
+ # $Revision: 340 $
24
+ ##########################################
25
+ #++
26
+
27
+ require "api_classes/api_dsl"
28
+
29
+ class UserMacro < ZabbixAPI_Base
30
+ end
31
+
32
+ UserMacro.get
33
+ UserMacro.createglobal
34
+ UserMacro.updateglobal
35
+ UserMacro.deleteglobal
36
+ UserMacro.deletehostmacro
37
+ UserMacro.massadd
38
+ UserMacro.massupdate
39
+ UserMacro.massremove
@@ -0,0 +1,32 @@
1
+ # Title:: Zabbix API Ruby Library
2
+ # License:: LGPL 2.1 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
3
+ # Copyright:: Copyright (C) 2009,2010 Andrew Nelson nelsonab(at)red-tux(dot)net
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ #--
20
+ ##########################################
21
+ # Subversion information
22
+ # $Id: dsl_usermedia.rb 340 2011-10-14 23:22:06Z nelsonab $
23
+ # $Revision: 340 $
24
+ ##########################################
25
+ #++
26
+
27
+ require "api_classes/api_dsl"
28
+
29
+ class UserMedia < ZabbixAPI_Base
30
+ end
31
+
32
+ UserMedia.get
data/zbxapi.rb CHANGED
@@ -19,8 +19,8 @@
19
19
  #--
20
20
  ##########################################
21
21
  # Subversion information
22
- # $Id: zbxapi.rb 397 2012-05-21 17:20:37Z nelsonab $
23
- # $Revision: 397 $
22
+ # $Id: zbxapi.rb 413 2012-09-12 07:22:27Z nelsonab $
23
+ # $Revision: 413 $
24
24
  ##########################################
25
25
  #++
26
26
 
@@ -29,34 +29,25 @@
29
29
  class ZabbixAPI #create a stub to be defined later
30
30
  end
31
31
 
32
- class ZbxAPI_Sub < ZabbixAPI #create a stub to be defined later
33
- end
34
-
35
32
  #setup our search path or libraries
36
33
  $: << File.expand_path(File.join(File.dirname(__FILE__), '.'))
37
34
 
38
- require 'zbxapi/revision'
35
+ #require 'zbxapi/revision'
39
36
  require 'zbxapi/zdebug'
40
37
  require 'zbxapi/api_exceptions.rb'
38
+ require 'zbxapi/result'
41
39
  require 'uri'
42
- #require 'net/http'
43
40
  require 'net/https'
44
41
  require 'rubygems'
45
42
  require 'json'
46
- require 'pp'
47
43
 
48
- require "api_classes/application"
49
- require "api_classes/graph"
50
- require "api_classes/history"
51
- require "api_classes/host"
52
- require "api_classes/host_group"
53
- require "api_classes/item"
54
- require "api_classes/proxy"
55
- require "api_classes/sysmap"
56
- require "api_classes/trigger"
57
- require "api_classes/user"
58
- require "api_classes/user_group"
44
+ require "api_classes/api_dsl"
59
45
 
46
+ #Dynamicly load all API description files
47
+ dir=File.dirname(__FILE__)+"/api_classes/"
48
+ Dir[dir + 'dsl_*.rb'].each do |file|
49
+ require dir+File.basename(file, File.extname(file))
50
+ end
60
51
 
61
52
 
62
53
  #------------------------------------------------------------------------------
@@ -73,18 +64,15 @@ class ZabbixAPI
73
64
 
74
65
  attr_accessor :method, :params, :debug_level, :auth, :verify_ssl
75
66
 
76
- #subordinate class
77
- attr_accessor :user # [User#new]
78
- #subordinate class
79
- attr_accessor :usergroup, :host, :item, :hostgroup, :application, :trigger, :sysmap, :history, :proxy, :graph
80
67
  @id=0
81
68
  @auth=''
82
69
  @url=nil
83
- @verify_ssl = true
70
+ @verify_ssl=true
84
71
 
85
72
  private
86
73
  @user_name=''
87
74
  @password=''
75
+ @proxy_server=nil
88
76
 
89
77
 
90
78
  class Redirect < Exception #:nodoc: all
@@ -92,37 +80,76 @@ class ZabbixAPI
92
80
 
93
81
  public
94
82
 
83
+ class << self
84
+ public :define_method
85
+ end
86
+
95
87
  # The initialization routine for the Zabbix API class
96
88
  # * url is a string defining the url to connect to, it should only point to the base url for Zabbix, not the api directory
97
89
  # * debug_level is the default level to be used for debug messages
98
90
  # Upon successful initialization the class will be set up to allow a connection to the Zabbix server
99
91
  # A connection however will not have been made, to actually connect to the Zabbix server use the login method
100
- def initialize(url,debug_level=0)
101
- set_debug_level(debug_level)
92
+ #options:
93
+ #Parameter Default Description
94
+ #:debug 0 Debug Level
95
+ #:returntype :result Return the value of "result" from the json result
96
+ #:verify_ssl true Enable checking the SSL Cert
97
+ def initialize(url,*args)
98
+ options=args[0]
99
+ options ||= {}
100
+ if options.is_a?(Fixnum)
101
+ warn "WARNING: Initialization has changed, backwards compatability is being used."
102
+ warn "WARNING: Use ZabbixAPI.new(url,:debug=>n,:returntype=>:result) to have the"
103
+ warn "WARNING: same capability as previous versions."
104
+ warn "WARNING: This depreciated functionality will be removed in a future release"
105
+ options={:debug=>0,:returntype=>:result}
106
+ end
107
+
108
+ set_debug_level(options[:debug] || 0)
109
+ @returntype=options[:returntype] || :result
110
+ @verify_ssl=options[:verify_ssl] || true
102
111
  @orig_url=url #save the original url
103
112
  @url=URI.parse(url+'/api_jsonrpc.php')
104
- @user = ZbxAPI_User.new(self)
105
- @usergroup = ZbxAPI_UserGroup.new(self)
106
- @host = ZbxAPI_Host.new(self)
107
- @proxy = ZbxAPI_Proxy.new(self)
108
- @item = ZbxAPI_Item.new(self)
109
- @hostgroup = ZbxAPI_HostGroup.new(self)
110
- @application = ZbxAPI_Application.new(self)
111
- @trigger = ZbxAPI_Trigger.new(self)
112
- @sysmap = ZbxAPI_Sysmap.new(self)
113
- @history = ZbxAPI_History.new(self)
114
- @graph = ZbxAPI_Graph.new(self)
113
+
114
+ #Generate the list of sub objects dynamically, from all objects
115
+ #derived from ZabbixAPI_Base
116
+ objects=Object.constants.map do |i|
117
+ obj=Object.const_get(i.intern)
118
+ if obj.is_a?(Class) && ([ZabbixAPI_Base]-obj.ancestors).empty?
119
+ obj
120
+ else
121
+ nil
122
+ end
123
+ end.compact-[ZabbixAPI_Base]
124
+
125
+ @objects={}
126
+
127
+ objects.each do |i|
128
+ i_s=i.to_s.downcase.intern
129
+ @objects[i_s]=i.new(self)
130
+ self.class.define_method(i_s) do
131
+ instance_variable_get(:@objects)[i_s]
132
+ end
133
+ end
134
+
115
135
  @id=0
116
- @http_proxy=nil
117
136
 
118
137
  debug(6,:msg=>"protocol: #{@url.scheme}, host: #{@url.host}")
119
138
  debug(6,:msg=>"port: #{@url.port}, path: #{@url.path}")
120
139
  debug(6,:msg=>"query: #{@url.query}, fragment: #{@url.fragment}")
140
+
141
+ if block_given?
142
+ puts "block"
143
+ yield(self)
144
+ end
121
145
  end
122
146
 
147
+ #Configure the information for the proxy server to be used to connect to the
148
+ #Zabbix server
123
149
  def set_proxy(address,port,user=nil,password=nil)
124
- @http_proxy={:address=>address, :port=>port,
125
- :user=>user, :password=>password}
150
+ @proxy_server={:address=>address,:port=>port,
151
+ :user=>user, :password=>password}
152
+ return self
126
153
  end
127
154
 
128
155
  def self.get_version
@@ -188,7 +215,7 @@ class ZabbixAPI
188
215
  @auth=result['result']
189
216
 
190
217
  #setup the version variables
191
- @major,@minor=do_request(json_obj('apiinfo.version',{}))['result'].split('.')
218
+ @major,@minor=do_request(json_obj('APIInfo.version',{}))['result'].split('.')
192
219
  @major=@major.to_i
193
220
  @minor=@minor.to_i
194
221
  rescue ZbxAPI_ExceptionLoginPermission => e
@@ -207,6 +234,8 @@ class ZabbixAPI
207
234
  rescue => e
208
235
  raise ZbxAPI_ExceptionBadAuth.new('General Login error, check host connectivity.')
209
236
  end
237
+
238
+ return self
210
239
  end
211
240
 
212
241
  def logout
@@ -274,15 +303,36 @@ class ZabbixAPI
274
303
 
275
304
  end
276
305
 
277
- def get_http_obj
278
- if @http_proxy
279
- http = Net::HTTP::Proxy(@http_proxy[:address],@http_proxy[:port],
280
- @http_proxy[:user],@http_proxy[:password]).new(@url.host,@url.port)
306
+ #api_call
307
+ #This is the main function for performing api requests
308
+ #method is a string denoting the method to call
309
+ #options is a hash of options to be passed to the function
310
+ def api_call(method,options={})
311
+ debug(6,:msg=>"Method",:var=>method)
312
+ debug(6,:msg=>"Options",:var=>options)
313
+
314
+ obj=json_obj(method,options)
315
+ result=do_request(obj)
316
+ if @returntype==:result
317
+ result["result"]
318
+ else
319
+ result.merge!({:method=>method, :params=>options})
320
+ @returntype.new(result)
321
+ end
322
+ end
323
+
324
+ private
325
+
326
+ #Select the http object to be used.
327
+ def select_http_obj
328
+ if @proxy_server
329
+ http = Net::HTTP::Proxy(@proxy_server[:address],@proxy_server[:port],
330
+ @proxy_server[:user],@proxy_server[:password]).new(@url.host,@url.port)
281
331
  else
282
332
  http = Net::HTTP.new(@url.host, @url.port)
283
333
  end
284
334
  http.use_ssl=true if @url.class==URI::HTTPS
285
- if ! @verify_ssl
335
+ if !@verify_ssl
286
336
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @url.class==URI::HTTPS
287
337
  end
288
338
  http
@@ -294,8 +344,9 @@ class ZabbixAPI
294
344
  def do_request(json_obj,truncate_length=5000)
295
345
  redirects=0
296
346
  begin # This is here for redirects
297
- http=get_http_obj
347
+ http=select_http_obj
298
348
  response = nil
349
+ # http.set_debug_output($stderr) #Uncomment to see low level HTTP debug
299
350
  headers={'Content-Type'=>'application/json-rpc',
300
351
  'User-Agent'=>'Zbx Ruby CLI'}
301
352
  debug(4,:msg=>"Sending: #{json_obj}")
@@ -310,7 +361,6 @@ class ZabbixAPI
310
361
  when 500
311
362
  raise ZbxAPI_GeneralError.new("Zabbix server returned an internal error\n Call: #{json_obj}", :retry=>true)
312
363
  end
313
- # end
314
364
 
315
365
  @id+=1 # increment the ID value for the API call
316
366
 
@@ -335,13 +385,11 @@ class ZabbixAPI
335
385
  redirects+=1
336
386
  retry if redirects<=5
337
387
  raise ZbxAPI_GeneralError, "Too many redirects"
338
- rescue NoMethodError => e
339
- raise ZbxAPI_GeneralError.new("Unable to connect to #{@url.host} : \"#{e}\"", :retry=>false)
388
+ rescue NoMethodError
389
+ raise ZbxAPI_GeneralError.new("Unable to connect to #{@url.host}: \"#{e}\"", :retry=>false)
340
390
  end
341
391
  end
342
392
 
343
- private
344
-
345
393
  def setup_connection
346
394
  @http=Net::HTTP.new(@url.host, @url.port)
347
395
  http.use_ssl=true if @url.class==URI::HTTPS
@@ -352,54 +400,11 @@ end
352
400
 
353
401
 
354
402
  if __FILE__ == $0
403
+ require 'pp'
355
404
 
356
- puts "Performing login"
357
- zbx_api = ZabbixAPI.new('http://localhost')
358
- zbx_api.login('apitest','test')
359
-
360
- puts
361
- puts "Getting user groups"
362
- p zbx_api.usergroup.get
363
-
364
- puts
365
- puts "testing user.get"
366
- zbx_api.debug_level=8
367
- p zbx_api.user.get()
368
- p zbx_api.user.get({"extendoutput"=>true})
369
- zbx_api.debug_level=0
370
-
371
-
372
- puts
373
- puts "Getting by username, admin, number should be seen"
374
- p zbx_api.user.getid('admin')
375
- puts "Trying a bogus username"
376
- p zbx_api.user.getid('bogus')
377
-
378
- puts
379
- puts "adding the user 'test' to Zabbix"
380
- uid= zbx_api.user.create(
381
- [{ "name"=>"test",
382
- "alias"=>"testapiuser",
383
- "password"=>"test",
384
- "url"=>"",
385
- "autologin"=>0,
386
- "autologout"=>900,
387
- "theme"=>"default.css",
388
- "refresh"=>60,
389
- "rows_per_page"=>50,
390
- "lang"=>"en_GB",
391
- "type"=>3}])
392
- p uid
393
- puts "Deleting userid #{uid.keys[0]}"
394
- p zbx_api.user.delete(uid.values[0])
395
-
396
- puts
397
- puts "getting items"
398
- p zbx_api.item.get
399
-
400
- puts
401
- puts "getting items by host"
402
- puts "host: #{hosts.values[0]}"
403
- p items=zbx_api.item.get({'hostids'=>hosts.values[0]})
405
+ zbx=ZabbixAPI.new("http://zabbix.example.com/")
406
+ #zbx.set_proxy("localhost",3128)
407
+ zbx.login("user","password")
408
+ pp zbx.host.get("output"=>"extend")
404
409
 
405
410
  end