zbxapi 0.1.1 → 0.1.291

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.
@@ -97,6 +97,10 @@ end
97
97
  #------------------------------------------------------------------------------
98
98
 
99
99
  class ZbxAPI_ExceptionLoginPermission < ZError
100
+ def initialize(message=nil, params=nil)
101
+ super(message, params)
102
+ @local_msg="This is also a general Zabbix API error number (Your error may not be a login error).\nTell the Zabbix devs to honor section 5.1 of the JSON-RPC 2.0 Spec."
103
+ end
100
104
  end
101
105
 
102
106
  #------------------------------------------------------------------------------
data/libs/exceptions.rb CHANGED
@@ -34,14 +34,12 @@ class ZError < RuntimeError
34
34
 
35
35
  include ZDebug
36
36
 
37
- attr_reader :help_func, :message, :retry
37
+ attr_accessor :help_func, :message, :retry
38
38
 
39
39
  # list of valid params
40
40
  # :help_func, the help function with more information for the exception
41
41
  # : retry, is the exception eligable for retry?
42
42
  def initialize(message=nil, params=nil)
43
- debug(2,self.class,"Exception raised")
44
- debug(2,params,"params")
45
43
  raise "Exception not called correctly" if params.class!=Hash if !params.nil?
46
44
  params={} if params.nil?
47
45
  @help_func=params[:help_func]
@@ -117,3 +115,7 @@ class ParseError < ZError
117
115
  @local_msg="Parse Error"
118
116
  end
119
117
  end
118
+
119
+ class ReturnError < ZError
120
+
121
+ end
data/libs/zdebug.rb CHANGED
@@ -17,8 +17,8 @@
17
17
 
18
18
  ##########################################
19
19
  # Subversion information
20
- # $Id: zdebug.rb 222 2010-10-07 14:25:08Z nelsonab $
21
- # $Revision: 222 $
20
+ # $Id: zdebug.rb 281 2011-04-06 18:10:16Z nelsonab $
21
+ # $Revision: 281 $
22
22
  ##########################################
23
23
 
24
24
  module ZDebug
data/zbxapi.rb CHANGED
@@ -19,11 +19,13 @@
19
19
  #--
20
20
  ##########################################
21
21
  # Subversion information
22
- # $Id: zbxapi.rb 268 2011-01-02 18:52:37Z nelsonab $
23
- # $Revision: 268 $
22
+ # $Id: zbxapi.rb 290 2011-07-08 04:58:15Z nelsonab $
23
+ # $Revision: 290 $
24
24
  ##########################################
25
25
  #++
26
26
 
27
+ #TODO Create class to capture resultant data
28
+
27
29
  #setup our search path or libraries
28
30
  $: << File.expand_path(File.join(File.dirname(__FILE__), '.'))
29
31
 
@@ -35,6 +37,16 @@ require 'net/https'
35
37
  require 'rubygems'
36
38
  require 'json'
37
39
 
40
+ require "api_classes/application"
41
+ require "api_classes/history"
42
+ require "api_classes/host"
43
+ require "api_classes/host_group"
44
+ require "api_classes/item"
45
+ require "api_classes/sysmap"
46
+ require "api_classes/trigger"
47
+ require "api_classes/user"
48
+ require "api_classes/user_group"
49
+
38
50
 
39
51
 
40
52
  #------------------------------------------------------------------------------
@@ -267,6 +279,7 @@ class ZabbixAPI
267
279
 
268
280
  # check return code and throw exception for error checking
269
281
  resp = JSON.parse(response.body) #parse the JSON Object so we can use it
282
+ raise
270
283
  if !resp["error"].nil?
271
284
  errcode=resp["error"]["code"].to_i
272
285
  case errcode
@@ -299,605 +312,6 @@ class ZabbixAPI
299
312
  end
300
313
  end
301
314
 
302
- # Class: Zbx_API_Sub
303
- # Wrapper class to ensure all class calls goes to the parent object not the
304
- # currently instantiated object.
305
- # Also ensures class specific variable sanity for global functions
306
- class ZbxAPI_Sub < ZabbixAPI #:nodoc: all
307
- attr_accessor :parent
308
-
309
- def initialize(parent)
310
- @parent=parent
311
- end
312
-
313
- def checkauth
314
- @parent.checkauth
315
- end
316
-
317
- def checkversion(major,minor,options=nil)
318
- @parent.checkversion(major,minor,options)
319
- end
320
-
321
- def do_request(req)
322
- return @parent.do_request(req)
323
- end
324
-
325
- def json_obj(method, param)
326
- return @parent.json_obj(method, param)
327
- end
328
-
329
- def debug(level,param="",message=nil)
330
- @parent.debug(level,param,message)
331
- end
332
- end
333
-
334
- # Class ZbxAPI_User
335
- #
336
- # Class encapsulating User functions
337
- #
338
- # API Function Status
339
- # [get] Implemented, need error checking
340
- # [authenticate] Will not implement here, belongs in ZabbixAPI main class
341
- # [checkauth] Will not implement here, belongs in ZabbixAPI main class
342
- # [getid] Implemented
343
- # [create] Implemented, need to test more to find fewest items
344
- # needed, input value testing needed
345
- # [update]
346
- #
347
- # [addmedia]
348
- #
349
- # [deletemedia]
350
- #
351
- # [updatemedia]
352
- # [delete] Implemented, checking of input values needed
353
- #
354
- # All functions expect a hash of options to add.
355
- # If multiple users need to be manipulated it must be broken out into different calls
356
-
357
- class ZbxAPI_User < ZbxAPI_Sub
358
- def get(options={})
359
- checkauth
360
- checkversion(1,1)
361
-
362
- obj=do_request(json_obj('user.get',options))
363
- return obj['result']
364
- end
365
-
366
- def getid(username)
367
- raise ZbxAPI_ExceptionArgumentError, "String argument expected" if username.class != String
368
-
369
- checkauth
370
- checkversion(1,1)
371
-
372
- obj=do_request(json_obj('user.getid',{'alias'=>username}))
373
- return obj['result']
374
- end
375
-
376
- def create(options)
377
- checkauth
378
- checkversion(1,1)
379
-
380
- #Check input parameters
381
-
382
- raise ZbxAPI_ParameterError, "Missing 'name' argument", "User.create" if options["name"].nil?
383
- raise ZbxAPI_ParameterError, "Missing 'alias' argument", "User.create" if options["alias"].nil?
384
- raise ZbxAPI_ParameterError, "Missing 'passwd' argument", "User.create" if options["passwd"].nil?
385
-
386
- obj=do_request(json_obj('user.create',options))
387
- return obj['result']
388
- end
389
-
390
- # Alias function name for code written to work against 1.0 API
391
- # may be removed in future versions
392
-
393
- def add(options)
394
- puts "WARNING API Function User.add is deprecated and will be removed in the future without further warning"
395
- create(options)
396
- end
397
-
398
- def delete(userid)
399
- checkauth
400
- checkversion(1,1)
401
-
402
- obj=do_request(json_obj('user.delete',[userid]))
403
- return obj['result']
404
- end
405
-
406
- def update(options)
407
- checkauth
408
- checkversion(1,1)
409
-
410
- obj=do_request(json_obj('user.update',options))
411
- return obj['result']
412
- end
413
-
414
- # addmedia expects a hash of the following variables
415
- # userid, mediatypeid, sendto, severity, active, period
416
- def addmedia(options)
417
- debug(8, "User.addmedia Start")
418
- checkauth
419
- checkversion(1,1)
420
-
421
- # p options
422
-
423
- raise ZbxAPI_ParameterError, "Missing 'userid' argument", "User.addmedia" if options["userid"].nil?
424
- raise ZbxAPI_ParameterError, "Missing 'mediatypeid' argument", "User.addmedia" if options["mediatypeid"].nil?
425
- raise ZbxAPI_ParameterError, "Missing 'severity' argument", "User.addmedia" if options["severity"].nil?
426
- raise ZbxAPI_ParameterError, "Missing 'active' argument", "User.addmedia" if options["active"].nil?
427
- raise ZbxAPI_ParameterError, "Missing 'period' argument", "User.addmedia" if options["period"].nil?
428
-
429
- args = {}
430
- args["userid"]=options["userid"]
431
- args["medias"]={}
432
- args["medias"]["mediatypeid"]=options["mediatypeid"]
433
- args["medias"]["sendto"]=options["sendto"]
434
- args["medias"]["severity"]=options["severity"]
435
- args["medias"]["active"]=options["active"]
436
- args["medias"]["period"]=options["period"]
437
-
438
- # p args
439
-
440
- obj=do_request(json_obj('user.addMedia',args))
441
- return obj['result']
442
- end
443
- end
444
-
445
- #******************************************************************************
446
- #
447
- # Class ZbxAPI_Host
448
- #
449
- # Class encapsulating Host and template functions
450
- #
451
- # API Function Status
452
- # get Basic function implemented
453
- # getid
454
- # create Basic function implemented 20091020
455
- # update
456
- # massupdate
457
- # delete Implimented
458
- #
459
- # template.create implemented as host.create_template
460
- # template.get implemented as host.get_template
461
- # template.delete implemented as host.delete_template
462
- #
463
- #******************************************************************************
464
-
465
- class ZbxAPI_Host < ZbxAPI_Sub
466
- def get(options={})
467
- checkauth
468
- checkversion(1,1)
469
-
470
- obj=do_request(json_obj('host.get',options))
471
- obj['result']
472
- end
473
-
474
- def get_template(options={})
475
- checkauth
476
- checkversion(1,3)
477
-
478
- obj=do_request(json_obj('template.get',options))
479
- obj['result']
480
- end
481
-
482
- def create(options={})
483
- checkauth
484
- checkversion(1,1)
485
-
486
- obj=do_request(json_obj('host.create',options))
487
- obj['result']
488
- end
489
-
490
- def create_template(options={})
491
- checkauth
492
- checkversion(1,3)
493
-
494
- obj=do_request(json_obj('template.create',options))
495
- obj['result']
496
- end
497
-
498
- # http://www.zabbix.com/documentation/1.8/api/objects/host#hostdelete
499
- #Accepts a single host id or an array of host id's to be deleted
500
- def delete(ids)
501
- checkauth
502
- checkversion(1,3)
503
-
504
- obj=do_request(json_obj('host.delete',delete_helper("hostid",ids)))
505
- obj['result']
506
- end
507
-
508
- def delete_template(ids)
509
- checkauth
510
- checkversion(1,3)
511
-
512
- obj=do_request(json_obj('template.delete',delete_helper("templateid",ids)))
513
- obj['result']
514
- end
515
-
516
- private
517
-
518
- def delete_helper(id_type,ids)
519
- if ids.class==Fixnum
520
- ids=[ids]
521
- elsif ids.class==Array
522
- ids=ids
523
- else
524
- raise ZbxAPI_ParameterError, "ids parameter must be number or array"
525
- end
526
-
527
- ids.map do |id|
528
- {id_type=>id}
529
- end
530
- end
531
-
532
- end
533
-
534
- #******************************************************************************
535
- #
536
- # Class ZbxAPI_Item
537
- #
538
- # Class encapsulating Item functions
539
- #
540
- # API Function Status
541
- # get Basic Function working
542
- # getid Function implemented
543
- # create Function implemented
544
- # update
545
- # delete Function implemented - need to add type checking to input
546
- #
547
- #******************************************************************************
548
-
549
- class ZbxAPI_Item < ZbxAPI_Sub
550
- def get(options={})
551
- checkauth
552
- checkversion(1,1)
553
-
554
- obj=do_request(json_obj('item.get',options))
555
- return obj['result']
556
- end
557
-
558
- def getid(options)
559
- checkauth
560
- checkversion(1,1)
561
-
562
- obj=do_request(json_obj('item.getid', options))
563
- return obj['result']
564
- end
565
-
566
- def create(options)
567
- debug(8,options)
568
- checkauth
569
- checkversion(1,1)
570
-
571
- obj=do_request(json_obj('item.create', options))
572
- return obj['result']
573
- end
574
-
575
- # Alias function for code written against 1.0 API
576
- def add(options)
577
- puts "WARNING API Function Item.add is deprecated and will be removed in the future without further warning"
578
- create(options)
579
- end
580
-
581
- def delete(ids)
582
- checkauth
583
- checkversion(1,1)
584
-
585
- obj=do_request(json_obj('item.delete', ids))
586
- return obj['result']
587
- end
588
- end
589
-
590
- #******************************************************************************
591
- #
592
- # Class ZbxAPI_UserGroup
593
- #
594
- # Class encapsulating User Group functions
595
- #
596
- # API Function Status
597
- # get Basic function implemented
598
- # getid
599
- # create
600
- # update
601
- # updaterights
602
- # addrights
603
- # addusers
604
- # removeusers
605
- # delete
606
- #
607
- #******************************************************************************
608
-
609
- class ZbxAPI_UserGroup < ZbxAPI_Sub
610
- def get(options={})
611
- checkauth
612
- checkversion(1,1)
613
-
614
- obj=do_request(json_obj('usergroup.get',options))
615
- return obj['result']
616
- end
617
- end
618
-
619
- #******************************************************************************
620
- #
621
- # Class ZbxAPI_HostGroup
622
- #
623
- # Class encapsulating User Group functions
624
- #
625
- # API Function Status
626
- # get Basic function implemented
627
- # getid
628
- # create
629
- # update
630
- # delete
631
- # addhosts
632
- # removehost
633
- # addgroupstohost
634
- # updategroupstohost
635
- #
636
- #******************************************************************************
637
-
638
- class ZbxAPI_HostGroup < ZbxAPI_Sub
639
- def create(options={})
640
- debug(8, "HostGroup.create Start")
641
- checkauth
642
- checkversion(1,1)
643
-
644
- obj=do_request(json_obj('hostgroup.create',options))
645
- return obj['result']
646
- end
647
-
648
- # alias function for code written against 1.0 API
649
- def add(options={})
650
- puts "WARNING API Function HostGroup.add is deprecated and will be removed in the future without further warning"
651
- create(options)
652
- end
653
-
654
- def get(options={})
655
- debug(8, "HostGroup.get Start")
656
- checkauth
657
- checkversion(1,1)
658
-
659
- obj=do_request(json_obj('hostgroup.get',options))
660
- return obj['result']
661
- end
662
-
663
- def getId(name)
664
- puts "WARNING API Function HostGroup.getId is deprecated and will be removed in the future without further warning"
665
- getObjects(name)
666
- end
667
-
668
- def getObjects(name)
669
- debug(8, "HostGroup.getId Start")
670
- checkauth
671
- checkversion(1,1)
672
-
673
- begin
674
- if name.class==String
675
- do_request(json_obj('hostgroup.getObjects',{"name"=>name}))['result']
676
- elsif name.class==Array
677
- valid = name.map {|item| item.class==String ? nil : false} # create a validation array of nils or false
678
- valid.compact! # remove nils
679
- raise ZbxAPI_ParameterError, "Expected a string or an array of strings" if !valid.empty?
680
-
681
- results=[]
682
- name.each do |item|
683
- response=do_request(json_obj('hostgroup.getObjects',{"name"=>item}))
684
- response['result'].each {|result| results << result } # Just in case the server returns an array
685
- end
686
- results
687
- else
688
- raise ZbxAPI_ParameterError, "Expected a string or an array of strings"
689
- end
690
- rescue ZbxAPI_GeneralError => e
691
- if e.message["code"]==-32602
692
- return 0
693
- else
694
- raise e
695
- end
696
- end
697
- end
698
- end
699
-
700
- #******************************************************************************
701
-
702
- #
703
- # Class ZbxAPI_Application
704
- #
705
- # Class encapsulating application functions
706
- #
707
- # API Function Status
708
- # get Not implemented
709
- # getById Implemented
710
- # getId Not implemented
711
- # create Not implemented
712
- # update Not implemented
713
- # delete Not implemented
714
- #
715
- #******************************************************************************
716
-
717
-
718
- class ZbxAPI_Application < ZbxAPI_Sub
719
- def get(options={})
720
- debug(8, "Application.get Start")
721
- checkauth
722
- checkversion(1,1)
723
-
724
- obj=do_request(json_obj('application.get',options))
725
- return obj['result']
726
- end
727
-
728
- def create(options={})
729
- debug(8, "Application.create Start")
730
- checkauth
731
- checkversion(1,1)
732
-
733
- obj=do_request(json_obj('application.create',options))
734
- return obj['result']
735
- end
736
-
737
- # Alias function for code written against 1.0 API
738
- def add(options={})
739
- puts "WARNING API Function Application.add is deprecated and will be removed in the future without further warning"
740
- create(options)
741
- end
742
-
743
- def getid(options={})
744
- debug(8, "Application.getid Start")
745
- checkauth
746
- checkversion(1,1)
747
-
748
- begin
749
- obj=do_request(json_obj('application.getid',options))
750
- rescue ZbxAPI_GeneralError => e
751
- if e.message["code"]==-32400
752
- return 0
753
- else
754
- raise e
755
- end
756
- end
757
- return obj['result']
758
- end
759
- end
760
-
761
- #******************************************************************************
762
- #
763
- # Class ZbxAPI_Trigger
764
- #
765
- # Class encapsulating trigger functions
766
- #
767
- # get Implemented
768
- # getById Not implemented
769
- # getId Not implemented
770
- # create Implemented
771
- # update Not implemented
772
- # delete Not implemented
773
- # addDependency Not implemented
774
- #
775
- #******************************************************************************
776
-
777
-
778
- class ZbxAPI_Trigger < ZbxAPI_Sub
779
- def get(options={})
780
- debug(8, "Trigger.get Start")
781
- checkauth
782
- checkversion(1,1)
783
-
784
- obj=do_request(json_obj('trigger.get',options))
785
- return obj['result']
786
- end
787
-
788
- # Function name changed to reflect 1.1 API changes
789
- def create(options={})
790
- debug(8, "Trigger.create Start")
791
- checkauth
792
- checkversion(1,1)
793
-
794
- obj=do_request(json_obj('trigger.create',options))
795
- return obj['result']
796
- end
797
-
798
- # Alias function for code written against 1.0 api
799
- def add(options={})
800
- puts "WARNING API Function Trigger.add is deprecated and will be removed in the future without further warning"
801
- create(options)
802
- end
803
- end
804
-
805
- #******************************************************************************
806
- #
807
- # Class ZbxAPI_Sysmap
808
- #
809
- # Class encapsulating sysmap functions
810
- #
811
- # get Not implemented
812
- # cr eate Basic implementation
813
- #
814
- #******************************************************************************
815
-
816
- class ZbxAPI_Sysmap < ZbxAPI_Sub
817
- def create(options={})
818
- debug(8, "Sysmap.create Start")
819
- checkauth
820
- checkversion(1,1)
821
-
822
- obj=do_request(json_obj('map.create',options))
823
- return obj['result']
824
- end
825
-
826
- # Alias function for code written against 1.0 API
827
- def add(options={})
828
- puts "WARNING API Function Sysmap.add is deprecated and will be removed in the future without further warning"
829
- create(options)
830
- end
831
-
832
- def addelement(options={})
833
- debug(8, "Sysmap.addelement Start")
834
- checkauth
835
- checkversion(1,1)
836
-
837
- obj=do_request(json_obj('map.addelement',options))
838
- return obj['result']
839
- end
840
-
841
- def addlink(options={})
842
- debug(8, "Sysmap.addlink Start")
843
- checkauth
844
- checkversion(1,1)
845
-
846
- obj=do_request(json_obj('map.addlink',options))
847
- return obj['result']
848
- end
849
-
850
- def getseid(options={})
851
- debug(8, "Sysmap.getseid Start")
852
- checkauth
853
- checkversion(1,1)
854
-
855
- obj=do_request(json_obj('map.getseid',options))
856
- return obj['result']
857
- end
858
-
859
- def addlinktrigger(options={})
860
- debug(8, "Sysmap.addlinktrigger Start")
861
- checkauth
862
- checkversion(1,1)
863
-
864
- obj=do_request(json_obj('map.addlinktrigger',options))
865
- return obj['result']
866
- end
867
- end
868
-
869
- #******************************************************************************
870
- #
871
- # Class ZbxAPI_History
872
- #
873
- # Class encapsulating history functions
874
- #
875
- # get
876
- #
877
- #******************************************************************************
878
-
879
- class ZbxAPI_History
880
-
881
- def initialize(server)
882
- @server=server
883
- end
884
-
885
- #Get the history for an item.
886
- # itemids is a required option
887
- # example: get({"itemids"=>12345})
888
- def get(options)
889
- @server.checkauth
890
- @server.checkversion(1,3)
891
-
892
- raise ZbxAPI_ParameterError, "Missing 'itemid'", "History.get" if options["itemids"].nil?
893
-
894
- p obj=@server.raw_api("history.get",options)
895
- return obj['result']
896
- end
897
-
898
- end
899
-
900
-
901
315
  #******************************************************************************
902
316
 
903
317
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zbxapi
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 605
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 291
10
+ version: 0.1.291
11
11
  platform: ruby
12
12
  authors:
13
13
  - A. Nelson
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-06 00:00:00 -04:00
18
+ date: 2011-07-08 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency