zabcon 0.0.5 → 0.0.6

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.
@@ -18,8 +18,8 @@
18
18
 
19
19
  ##########################################
20
20
  # Subversion information
21
- # $Id: argument_processor.rb 266 2010-12-30 11:03:54Z richlv $
22
- # $Revision: 266 $
21
+ # $Id: argument_processor.rb 281 2011-04-06 18:10:16Z nelsonab $
22
+ # $Revision: 281 $
23
23
  ##########################################
24
24
 
25
25
  require 'libs/zdebug'
@@ -315,7 +315,7 @@ class ArgumentProcessor
315
315
  debug(7,args,"default helper")
316
316
  api_params = args
317
317
  show_params = {}
318
- if !args["show"].nil?
318
+ if args.class!=Array && !args["show"].nil?
319
319
  show_params={:show=>args["show"]}
320
320
  api_params.delete("show")
321
321
  api_params.merge({"extendoutput"=>true})
@@ -328,28 +328,52 @@ class ArgumentProcessor
328
328
  # The default processor also checks the incoming parameters against a list of valid arguments, and merges
329
329
  # the user variables with the inbound arguments with the inbound arguments taking precedence, raises an
330
330
  # exception if there is an error
331
+ # If :use_array_processor is passed as an option the array processor will be used
332
+ # In :num_args is passed with a value, and error will be returned if more than that many args are passed
333
+
331
334
  def default_processor(help_func,valid_args,args,user_vars,*options)
332
- debug(7,args,"default argument processor")
335
+ debug(5,args,"default_processor args")
336
+ debug(5,options,"default_processor options")
333
337
 
334
- args=substitute_vars(args)
335
- args=params_to_hash(args)
336
- if !(invalid=check_parameters(args, valid_args)).empty?
337
- msg="Invalid parameters:\n"
338
- msg+=invalid.join(", ")
339
- raise ParameterError_Invalid.new(msg,:retry=>true, :help_func=>help_func)
338
+ #if the intersection of options and [:array] is not empty then we will return an array
339
+ return_array = !(options[0] & [:use_array_processor]).empty?
340
+ check_not_empty = !(options[0] & [:not_empty]).empty?
341
+
342
+ num_args=options[0].map { |i|
343
+ i[:num_args] if i.class==Hash
344
+ }.compact[0] # will be nil if :num_args not found
345
+
346
+ if check_not_empty
347
+ raise ParameterError.new("No arguments",:retry=>true, :help_func=>help_func) if args==""
340
348
  end
341
349
 
342
- valid_user_vars = {}
350
+ if return_array
351
+ args=safe_split(args)
352
+ else
353
+ args=substitute_vars(args)
354
+ args=params_to_hash(args)
355
+ if !(invalid=check_parameters(args, valid_args)).empty?
356
+ msg="Invalid parameters:\n"
357
+ msg+=invalid.join(", ")
358
+ raise ParameterError_Invalid.new(msg,:retry=>true, :help_func=>help_func)
359
+ end
343
360
 
344
- if !valid_args.nil?
345
- valid_args.each {|item|
346
- valid_user_vars[item]=user_vars[item] if !user_vars[item].nil?
347
- }
361
+ valid_user_vars = {}
362
+
363
+ if !valid_args.nil?
364
+ valid_args.each {|item|
365
+ valid_user_vars[item]=user_vars[item] if !user_vars[item].nil?
366
+ }
367
+ end
368
+ args = valid_user_vars.merge(args)
369
+ end
370
+
371
+ if !num_args.nil?
372
+ eval_exp="#{args.length}#{num_args}"
373
+ raise ParameterError.new("Too many arguments (#{args.length})",:retry=>true, :help_func=>help_func) if !eval(eval_exp)
348
374
  end
349
- args = valid_user_vars.merge(args)
350
-
351
- default_helper(args)
352
375
 
376
+ default_helper(args)
353
377
  end
354
378
 
355
379
  # This processor does not do anything fancy. All items passed in via args are passed back in api_params
@@ -437,15 +461,6 @@ class ArgumentProcessor
437
461
  end
438
462
  end
439
463
 
440
- # array_process is a helper function which takes the incoming arguments
441
- # and puts them into an array and returns that result.
442
- # empty input results in an empty array
443
- # does not perform variable substitution
444
- def array_processor(help_func,valid_args,args,user_vars,*options)
445
-
446
- return_helper(safe_split(args))
447
- end
448
-
449
464
  ##############################################################################################
450
465
  # End of default and helper functions
451
466
  ##############################################################################################
data/libs/command_help.rb CHANGED
@@ -18,8 +18,8 @@
18
18
 
19
19
  ##########################################
20
20
  # Subversion information
21
- # $Id: command_help.rb 270 2011-01-04 06:13:31Z nelsonab $
22
- # $Revision: 270 $
21
+ # $Id: command_help.rb 274 2011-01-10 01:01:31Z nelsonab $
22
+ # $Revision: 274 $
23
23
  ##########################################
24
24
 
25
25
  require 'libs/zdebug'
data/libs/command_tree.rb CHANGED
@@ -18,8 +18,8 @@
18
18
 
19
19
  ##########################################
20
20
  # Subversion information
21
- # $Id: command_tree.rb 270 2011-01-04 06:13:31Z nelsonab $
22
- # $Revision: 270 $
21
+ # $Id: command_tree.rb 272 2011-01-06 21:04:22Z nelsonab $
22
+ # $Revision: 272 $
23
23
  ##########################################
24
24
 
25
25
  require 'libs/zdebug'
data/libs/help.xml CHANGED
@@ -21,8 +21,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21
21
 
22
22
  ##########################################
23
23
  Subversion information
24
- $Id: help.xml 243 2010-11-11 15:59:02Z nelsonab $
25
- $Revision: 243 $
24
+ $Id: help.xml 281 2011-04-06 18:10:16Z nelsonab $
25
+ $Revision: 281 $
26
26
  ##########################################
27
27
 
28
28
  Zabcon help file
@@ -246,6 +246,17 @@ syntax: delete item itemid=num
246
246
  itemid must be a number
247
247
  </item>
248
248
 
249
+ <!-- 80 Col Marker ######################################################## -->
250
+
251
+ <item command="import">
252
+ import
253
+ syntax: import &lt;filename&gt;
254
+
255
+ Import an XML file into Zabbix. Requires one file name to be passed.
256
+ An error will be returned for 0 or 2+ arguments passed.
257
+ </item>
258
+
259
+
249
260
  <!-- 80 Col Marker ######################################################## -->
250
261
 
251
262
  <item command="raw_api">
data/libs/input.rb CHANGED
@@ -18,8 +18,8 @@
18
18
 
19
19
  ##########################################
20
20
  # Subversion information
21
- # $Id: input.rb 215 2010-09-25 21:22:37Z richlv $
22
- # $Revision: 215 $
21
+ # $Id: input.rb 272 2011-01-06 21:04:22Z nelsonab $
22
+ # $Revision: 272 $
23
23
  ##########################################
24
24
 
25
25
  require 'readline'
data/libs/printer.rb CHANGED
@@ -19,8 +19,8 @@
19
19
 
20
20
  ##########################################
21
21
  # Subversion information
22
- # $Id: printer.rb 269 2011-01-02 19:14:58Z richlv $
23
- # $Revision: 269 $
22
+ # $Id: printer.rb 272 2011-01-06 21:04:22Z nelsonab $
23
+ # $Revision: 272 $
24
24
  ##########################################
25
25
 
26
26
  require 'libs/zdebug'
data/libs/zabcon_core.rb CHANGED
@@ -21,7 +21,7 @@
21
21
  ##########################################
22
22
  # Subversion information
23
23
  # $Id: $
24
- # $Revision: 270 $
24
+ # $Revision: 281 $
25
25
  ##########################################
26
26
 
27
27
  require 'parseconfig'
@@ -123,16 +123,17 @@ class ZabconCore
123
123
  @commands.insert ["set","pause"], self.method(:set_pause),no_args,no_help,no_verify,:suppress_printer
124
124
  @commands.insert ["set","var"], self.method(:set_var), no_args, no_help, @arg_processor.method(:simple_processor),:suppress_printer
125
125
  @commands.insert ["set","env"], self.method(:set_env), no_args, no_help, @arg_processor.method(:simple_processor), :suppress_printer
126
- @commands.insert ["show","var"], self.method(:show_var), no_args, no_help, @arg_processor.method(:array_processor), :suppress_printer
127
- @commands.insert ["show","env"], self.method(:show_env), no_args, no_help, @arg_processor.method(:array_processor), :suppress_printer
128
- @commands.insert ["unset","var"], self.method(:unset_var), no_args, no_help, @arg_processor.method(:array_processor), :suppress_printer
126
+ @commands.insert ["show","var"], self.method(:show_var), no_args, no_help, @arg_processor.default, :use_array_processor, :suppress_printer
127
+ @commands.insert ["show","env"], self.method(:show_env), no_args, no_help, @arg_processor.default, :use_array_processor, :suppress_printer
128
+ @commands.insert ["unset","var"], self.method(:unset_var), no_args, no_help, @arg_processor.default, :use_array_processor, :suppress_printer
129
129
 
130
130
 
131
131
  if loggedin then
132
132
  debug(5,"Inserting commands which require login")
133
133
  # This command tree is for a valid login
134
134
  @commands.insert ["get"], no_cmd, no_args, @cmd_help.method(:get)
135
- @commands.insert ["import"], self.method(:do_import),no_args,no_help,no_verify
135
+ #Import commented out until fixed
136
+ #@commands.insert ["import"], self.method(:do_import),no_args,@cmd_help.method(:import),@arg_processor.default,:not_empty, :use_array_processor, :num_args=>"==1"
136
137
 
137
138
  @commands.insert ["add","app"], @server.method(:addapp),no_args,no_help,no_verify
138
139
  @commands.insert ["add","app","id"], @server.method(:getappid),no_args,no_help,no_verify
@@ -265,7 +266,7 @@ class ZabconCore
265
266
  puts "A fatal error occurred."
266
267
  end
267
268
  e.show_message
268
- e.show_backtrace
269
+ # e.show_backtrace
269
270
  retry if e.retry?
270
271
  end #end of exception block
271
272
  end # def
@@ -441,31 +442,29 @@ class ZabconCore
441
442
  # Import config from an XML file:
442
443
  #
443
444
  def do_import(input)
444
- if input.nil?
445
- puts "Run requires a file name as argument."
446
- return
447
- end
445
+ debug(5,input,"args")
446
+
447
+ input=input[0]
448
448
 
449
449
  begin
450
- xml_import = REXML::Document.new File.new(input[:filename])
450
+ xml_import = REXML::Document.new(File.new(input)).root
451
451
  rescue Errno::ENOENT
452
- puts "Failed to open import file #{input[:filename]}."
453
- return
452
+ raise ZabconError.new("Failed to open import file #{input}.",:retry=>true)
454
453
  end
455
454
 
456
455
  if xml_import.nil?
457
- puts "Failed to parse import file #{input[:filename]}."
458
- return
456
+ raise ZabconError.new("Failed to parse import file #{input}.",:retry=>true)
459
457
  end
460
458
 
461
- host=xml_import.elements['import/hosts']
462
- if !host.nil?
463
- host = host[1]
459
+ p hosts=xml_import.elements.to_a("//hosts")[0]
460
+ p hosts = hosts.elements.to_a("//host")
461
+ if !hosts.empty?
462
+ host = hosts[0]
464
463
  end
465
464
 
466
465
  # Loop for the host tags:
467
466
  while !host.nil?
468
- host_params = { 'host' => host.attributes["name"],
467
+ p host_params = { 'host' => host.attributes["name"],
469
468
  'port' => host.elements["port"].text }
470
469
  if host.elements["useip"].text.to_i == 0 # This is broken in Zabbix export (always 0).
471
470
  host_params['dns']=host.elements["dns"].text
@@ -18,8 +18,8 @@
18
18
 
19
19
  ##########################################
20
20
  # Subversion information
21
- # $Id: zabcon_exceptions.rb 258 2010-12-28 22:49:21Z nelsonab $
22
- # $Revision: 258 $
21
+ # $Id: zabcon_exceptions.rb 272 2011-01-06 21:04:22Z nelsonab $
22
+ # $Revision: 272 $
23
23
  ##########################################
24
24
 
25
25
  #------------------------------------------------------------------------------
@@ -18,8 +18,8 @@
18
18
 
19
19
  ##########################################
20
20
  # Subversion information
21
- # $Id: zabcon_globals.rb 264 2010-12-30 07:21:01Z nelsonab $
22
- # $Revision: 264 $
21
+ # $Id: zabcon_globals.rb 272 2011-01-06 21:04:22Z nelsonab $
22
+ # $Revision: 272 $
23
23
  ##########################################
24
24
 
25
25
  #------------------------------------------------------------------------------
data/libs/zbxcliserver.rb CHANGED
@@ -18,14 +18,29 @@
18
18
 
19
19
  ##########################################
20
20
  # Subversion information
21
- # $Id: zbxcliserver.rb 258 2010-12-28 22:49:21Z nelsonab $
22
- # $Revision: 258 $
21
+ # $Id: zbxcliserver.rb 281 2011-04-06 18:10:16Z nelsonab $
22
+ # $Revision: 281 $
23
23
  ##########################################
24
24
 
25
25
  require 'zbxapi'
26
26
  require 'libs/zdebug'
27
27
  require 'libs/zabcon_globals'
28
28
 
29
+ class ZabbixServer < ZabbixAPI
30
+ alias zbxapi_initialize initialize
31
+ alias zbxapi_do_request do_request
32
+
33
+ def initialize(url,debug_level=0)
34
+ @env = EnvVars.instance
35
+ zbxapi_initialize(url,debug_level)
36
+ end
37
+
38
+ #truncate_length is set to the symbol :not_used as do_request is passed a different variable
39
+ def do_request(json_obj,truncate_length=:not_used)
40
+ zbxapi_do_request(json_obj,@env["truncate_length"])
41
+ end
42
+ end
43
+
29
44
  class ZbxCliServer
30
45
 
31
46
  include ZDebug
@@ -38,7 +53,7 @@ class ZbxCliServer
38
53
  @password=password
39
54
  @debuglevel=debuglevel
40
55
  # *Note* Do not rescue errors here, rescue in function that calls this block
41
- @server=ZabbixAPI.new(@server_url,@debuglevel)
56
+ @server=ZabbixServer.new(@server_url,@debuglevel)
42
57
  @server.login(@user, @password)
43
58
  GlobalVars.instance["auth"]=@server.auth
44
59
  end
data/zabcon.rb CHANGED
@@ -20,8 +20,8 @@
20
20
 
21
21
  ##########################################
22
22
  # Subversion information
23
- # $Id: zabcon.rb 272 2011-01-06 21:04:22Z nelsonab $
24
- # $Revision: 272 $
23
+ # $Id: zabcon.rb 281 2011-04-06 18:10:16Z nelsonab $
24
+ # $Revision: 281 $
25
25
  ##########################################
26
26
 
27
27
 
@@ -122,6 +122,7 @@ class ZabconApp
122
122
  env["echo"]=STDIN.tty? ? true: false
123
123
  env["config_file"]=:default
124
124
  env["load_config"]=true
125
+ env["truncate_length"]=5000
125
126
 
126
127
  #output related environment variables
127
128
  env["table_output"]=STDIN.tty? # Is the output a well formatted table, or csv like?
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zabcon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
9
+ - 6
10
+ version: 0.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - A. Nelson
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: .
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-09 00:00:00 -05:00
18
+ date: 2011-04-06 00:00:00 -04:00
19
19
  default_executable: zabcon
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,11 +26,12 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- hash: 9
29
+ hash: 25
30
30
  segments:
31
31
  - 0
32
32
  - 1
33
- version: "0.1"
33
+ - 1
34
+ version: 0.1.1
34
35
  type: :runtime
35
36
  version_requirements: *id001
36
37
  - !ruby/object:Gem::Dependency