zbxapi 0.3.9 → 0.3.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38a9412b166183c0bd43d087a9aaa9a5ad87b81e
4
- data.tar.gz: 5fcd9d06059a7c9c66fc67e4c7daf6dde306e57a
3
+ metadata.gz: da5d57c042b37dff4802268848d2d82d54ad42f5
4
+ data.tar.gz: a66f80df000a511614d832c579c9f5652f882c34
5
5
  SHA512:
6
- metadata.gz: 31ff6131737c3746f8f02e5a4f189407d459070c307a7d5a5abdb7f7a24bb3ca3321222e4d36c8bc2c55c59e9ef496d07f0fdd4f079b6f50d9958a1706a3ef44
7
- data.tar.gz: 6ec95b61956ef2f18a08a3b03c5fb9395bb9f70bc77e7910d0e96b3b61a98e74ba8a3c1769b92c43adef615ff7e6edcc86e4caa710331c9e2da90e3a9f250d4e
6
+ metadata.gz: 2fb0555b68e9adc08accb98ec5ac3ce75a574d5223f97026e5e03464fa6069943533836756fbe624f04a6b803dfe4ccbf0c8b2e10d2aaf61300dc3397c2872bd
7
+ data.tar.gz: 86dc9f211ece6963fcc2f8c1397b5ff4ccf1d6876b73a26fd6e28a1e69f9d239d6bb591940b23032f4d21b5ca35ba065fdb41d746d4ab000ed1bc9b79276cda6
@@ -29,6 +29,9 @@ require "zbxapi/exceptions"
29
29
  require "pp"
30
30
 
31
31
  class ZabbixAPI_ParametersDSL
32
+ class InvalidRequiredParameter<RuntimeError
33
+ end
34
+
32
35
  attr_reader :valid_params, :required_params
33
36
 
34
37
  def initialize(other_validparams,other_requiredparams)
@@ -38,27 +41,70 @@ class ZabbixAPI_ParametersDSL
38
41
  @required_params=[]
39
42
  end
40
43
 
44
+ #Inherit the valid and required parameters from the version string ver
41
45
  def inherit(ver)
42
46
  @valid_params=@other_valid_parameters[ver] || []
43
47
  @required_params=@other_required_parameters[ver] || []
44
48
  end
45
49
 
46
50
  def add(*params)
51
+ location=caller.select {|i| i=~/api_classes\/dsl/}.first.split(":")[0..1].join(":")
52
+ #Iterate through the parameters and check to see if it's in the valid parameters list
53
+ #and check to see if it's been given before.
54
+ params.delete_if do |param|
55
+ if @valid_params.include? param
56
+ warn("Parameter '#{param}' is already a valid parameter, skipping: #{location}")
57
+ true
58
+ else
59
+ false
60
+ end
61
+ end
47
62
  @valid_params+=params
48
63
  @valid_params.flatten!
49
64
  end
50
65
 
51
66
  def remove(*params)
52
- #TODO Add sanity checking to ensure that a removed parameter is also removed from the required list
53
67
  @valid_params-=params
68
+ @required_params-=params
54
69
  end
55
70
 
71
+ #Function to provide some syntactic sugar for the DSL
56
72
  def from(var)
57
73
  var
58
74
  end
59
75
 
76
+ #Set the list of required parameters to the parameter list
77
+ def set_requires(*params)
78
+ location=caller.select {|i| i=~/api_classes\/dsl/}.first.split(":")[0..1].join(":")
79
+ #Iterate through the parameters and check to see if it's in the valid parameters list
80
+ #and check to see if it's been given before.
81
+ params.each do |param|
82
+ if !@valid_params.include? param
83
+ raise InvalidRequiredParameter.new("Parameter '#{param}' is not in the valid list of parameters: #{location}")
84
+ end
85
+ end
86
+
87
+ @required_params=params
88
+ @required_params.flatten!
89
+ end
90
+
91
+ #Append the parameters given to the required parameters list.
60
92
  def requires(*params)
61
- #TODO Add sanity checking to ensure that required arguments are also valid arguments
93
+ location=caller.select {|i| i=~/api_classes\/dsl/}.first.split(":")[0..1].join(":")
94
+ #Iterate through the parameters and check to see if it's in the valid parameters list
95
+ #and check to see if it's been given before.
96
+ params.delete_if do |param|
97
+ if !@valid_params.include? param
98
+ raise InvalidRequiredParameter.new("Parameter '#{param}' is not in the valid list of parameters: #{location}")
99
+ end
100
+ if @required_params.include? param
101
+ warn("Parameter '#{param}' is already a required parameter, skipping: #{location}")
102
+ true
103
+ else
104
+ false
105
+ end
106
+ end
107
+
62
108
  @required_params+=params
63
109
  @required_params.flatten!
64
110
  end
@@ -376,14 +422,17 @@ class ZabbixAPI_Base
376
422
  @api_aliases
377
423
  end
378
424
 
379
- def self.alias(from,to)
425
+ # Define an alias for an existing method.
426
+ # From: the new method name
427
+ # To: the existing method which the alias "from" will point to
428
+ def self.api_alias(from,to)
380
429
  @api_aliases={} if @api_aliases.nil?
381
430
  @api_aliases[from]=to
382
431
 
383
- @api_methods[to]=@api_methods[from]
432
+ @api_methods[from]=@api_methods[to]
384
433
 
385
- define_method(to) do |params|
386
- self.class.api_methods[to].do(@server,params)
434
+ define_method(from) do |params|
435
+ self.class.api_methods[from].do(@server,params)
387
436
  end
388
437
  end
389
438
 
@@ -90,15 +90,17 @@ class Host < ZabbixAPI_Base
90
90
  end
91
91
 
92
92
  parameters "2.4" do
93
- add "hostid","host","available","description","disable_until","error",
94
- "errors_from","flags","ipmi_authtype","ipmi_available",
95
- "ipmi_disable_until","ipmi_error","ipmi_errors_from","ipmi_password",
96
- "ipmi_privilege","ipmi_username","jmx_available","jmx_disable_until",
97
- "jmx_error","jmx_errors_from","maintenance_from","maintenance_status",
98
- "maintenance_type","maintenanceid","name","proxy_hostid","snmp_available",
99
- "snmp_disable_until","snmp_error","snmp_errors_from","status"
100
- requires "host","groups","interfaces"
93
+ inherit from "2.0"
94
+ add "hostid","available","description","disable_until","error","errors_from",
95
+ "flags","inventory","ipmi_available","ipmi_disable_until","ipmi_error",
96
+ "ipmi_errors_from","jmx_available","jmx_disable_until","jmx_error",
97
+ "jmx_errors_from","maintenance_from","maintenance_status",
98
+ "maintenance_type","maintenanceid","snmp_available","snmp_disable_until",
99
+ "snmp_error","snmp_errors_from"
100
+ remove "dns","ip","ipmi_ip","port","useip","useipmi"
101
+ requires "host"
101
102
  end
103
+
102
104
  end
103
105
 
104
106
  action :delete do
@@ -131,7 +133,7 @@ class Host < ZabbixAPI_Base
131
133
 
132
134
  action :update do
133
135
  parameters "2.4" do
134
- add "hostid","host","available","description","disable_until","error",
136
+ add "host","hostid","host","available","description","disable_until","error",
135
137
  "errors_from","flags","ipmi_authtype","ipmi_available",
136
138
  "ipmi_disable_until","ipmi_error","ipmi_errors_from","ipmi_password",
137
139
  "ipmi_privilege","ipmi_username","jmx_available","jmx_disable_until",
@@ -144,7 +146,7 @@ class Host < ZabbixAPI_Base
144
146
 
145
147
  action :massupdate do
146
148
  parameters "2.4" do
147
- add "hostid","host","available","description","disable_until","error",
149
+ add "hostid","host","hosts","available","description","disable_until","error",
148
150
  "errors_from","flags","ipmi_authtype","ipmi_available",
149
151
  "ipmi_disable_until","ipmi_error","ipmi_errors_from","ipmi_password",
150
152
  "ipmi_privilege","ipmi_username","jmx_available","jmx_disable_until",
@@ -155,7 +157,7 @@ class Host < ZabbixAPI_Base
155
157
  end
156
158
  end
157
159
 
158
- alias :massAdd :massadd
159
- alias :massRemove :massremove
160
- alias :massUpdate :massupdate
160
+ api_alias :massAdd, :massadd
161
+ api_alias :massRemove, :massremove
162
+ api_alias :massUpdate, :massupdate
161
163
  end
data/zbxapi.rb CHANGED
@@ -195,10 +195,15 @@ class ZabbixAPI
195
195
  'id'=>@id
196
196
  }
197
197
 
198
+ # https://www.zabbix.com/documentation/2.4/manual/api/reference/apiinfo/version
199
+ # https://www.zabbix.com/documentation/2.4/manual/api/reference/user/login
198
200
  # Zabbix Doc(2.4): This method is available to unauthenticated
199
201
  # users and must be called without the auth parameter
200
202
  # in the JSON-RPC request.
201
- obj.delete("auth") if method =~ /APIInfo/i
203
+ debug(4, :var => method,:msg => "Method:")
204
+ obj.delete("auth") if ["apiinfo.version",
205
+ "user.login",
206
+ ].any? { |str| method =~ /#{str}/i }
202
207
 
203
208
  debug(10, :msg=>"json_obj: #{obj}")
204
209
  return obj.to_json
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zbxapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - A. Nelson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-03 00:00:00.000000000 Z
11
+ date: 2014-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -39,29 +39,29 @@ files:
39
39
  - zbxapi/utils.rb
40
40
  - zbxapi/result.rb
41
41
  - api_classes/api_dsl.rb
42
- - api_classes/dsl_alert.rb
43
- - api_classes/dsl_dhost.rb
42
+ - api_classes/dsl_action.rb
44
43
  - api_classes/dsl_event.rb
45
- - api_classes/dsl_graph.rb
44
+ - api_classes/dsl_alert.rb
46
45
  - api_classes/dsl_user.rb
47
46
  - api_classes/dsl_drule.rb
47
+ - api_classes/dsl_host.rb
48
+ - api_classes/dsl_trigger.rb
49
+ - api_classes/dsl_dcheck.rb
50
+ - api_classes/dsl_history.rb
51
+ - api_classes/dsl_mediatype.rb
48
52
  - api_classes/dsl_hostgroup.rb
53
+ - api_classes/dsl_usermedia.rb
49
54
  - api_classes/dsl_dservice.rb
50
- - api_classes/dsl_usergroup.rb
51
- - api_classes/dsl_template.rb
55
+ - api_classes/dsl_item.rb
52
56
  - api_classes/dsl_proxy.rb
53
- - api_classes/dsl_usermedia.rb
54
- - api_classes/dsl_hostinterface.rb
55
- - api_classes/dsl_action.rb
57
+ - api_classes/dsl_template.rb
56
58
  - api_classes/dsl_maintenance.rb
57
- - api_classes/dsl_item.rb
58
- - api_classes/dsl_history.rb
59
- - api_classes/dsl_dcheck.rb
60
- - api_classes/dsl_trigger.rb
59
+ - api_classes/dsl_dhost.rb
61
60
  - api_classes/dsl_configuration.rb
61
+ - api_classes/dsl_usergroup.rb
62
+ - api_classes/dsl_hostinterface.rb
62
63
  - api_classes/dsl_usermacro.rb
63
- - api_classes/dsl_mediatype.rb
64
- - api_classes/dsl_host.rb
64
+ - api_classes/dsl_graph.rb
65
65
  homepage: https://github.com/red-tux/zbxapi
66
66
  licenses:
67
67
  - LGPL 2.1
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  requirements:
84
84
  - Requires json
85
85
  rubyforge_project: zbxapi
86
- rubygems_version: 2.0.14
86
+ rubygems_version: 2.1.11
87
87
  signing_key:
88
88
  specification_version: 4
89
89
  summary: Ruby wrapper to the Zabbix API