zbxapi 0.3.9 → 0.3.10

Sign up to get free protection for your applications and to get access to all the features.
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