rbZabbix 0.1.4 → 0.1.5

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.
@@ -0,0 +1,8 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Author:: Farzad FARID (<ffarid@pragmatic-source.com>)
3
+ # Copyright:: Copyright (c) 2011-2012 Farzad FARID
4
+ # License:: Simplified BSD License
5
+
6
+ module Zabby
7
+ VERSION = "0.1.5"
8
+ end
@@ -0,0 +1,316 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Author:: Farzad FARID (<ffarid@pragmatic-source.com>)
3
+ # Copyright:: Copyright (c) 2011-2012 Farzad FARID
4
+ # License:: Simplified BSD License
5
+
6
+ module Zabby
7
+ # Create Zabbix classes as provided by the Zabbix API
8
+ module ZClass
9
+ # List of available Zabbix classes
10
+ @zabbix_classes = []
11
+
12
+ def self.included(base)
13
+ base.extend(ClassMethods)
14
+ # Keep a list of Zabbix classes
15
+ @zabbix_classes << base.name.gsub(/^.*::/, '')
16
+ end
17
+
18
+ # Return the list of Zabbix classes
19
+ # @return [Array] List of Zabbix classes
20
+ def self.zabbix_classes
21
+ @zabbix_classes
22
+ end
23
+
24
+ module ClassMethods
25
+ # List of valid Web Service methods for the current Zabbix Object
26
+ attr_reader :zmethods
27
+ # The id field name for the model ("actionid", "hostid", etc.)
28
+ attr_reader :id
29
+
30
+ # Name of the current class without the namespace
31
+ # @return [String]
32
+ # @example
33
+ # Zabby::Host.object_name => "Host"
34
+ def class_name
35
+ @class_name ||= self.name.split(/::/).last.downcase
36
+ end
37
+
38
+ # Human representation of the Zabbix Class
39
+ # @return [String] Class representation
40
+ # @example
41
+ # Host.inspect => "<Zabby::Host methods=(create, delete, exists, get, update)>"
42
+ def inspect
43
+ "<#{name} methods=(#{@zmethods.join(', ')})>"
44
+ end
45
+
46
+ private
47
+
48
+ # Set the name of the primary key
49
+ # @param key [String] Primary key name
50
+ def primary_key(key)
51
+ @id = key.to_sym
52
+ end
53
+
54
+ # Add the list of Web Service methods to the current class.
55
+ # @param [Array] zmethods Method names
56
+ # @example
57
+ # class Host
58
+ # include ZClass
59
+ # add_zmethods :create, :delete, :exists, :get, :update
60
+ # end
61
+ def add_zmethods(*zmethods)
62
+ @zmethods = zmethods.map { |f| f.to_sym }
63
+ end
64
+
65
+ # Simulate methods on the object and call the Zabbix Web Service ("host.get", "item.create", etc.).
66
+ # See http://www.zabbix.com/documentation/1.8/api for the API documentation.
67
+ # @param [String] zmethod Name of the Web Service methods
68
+ # @param [Array] args Method arguments
69
+ # @param [Proc] block Unused
70
+ # @raise [NoMethodError] Raised on invalid method names.
71
+ def method_missing(zmethod, *args, &block)
72
+ if @zmethods.include? zmethod
73
+ Zabby::Runner.instance.connection.perform_request(class_name, zmethod, args.first)
74
+ else
75
+ super
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ # Create all Zabbix object types and theirs methods.
82
+
83
+ class Action
84
+ include ZClass
85
+ primary_key :actionid
86
+ add_zmethods :create, :delete, :exists, :get, :update
87
+ end
88
+
89
+ class Alert
90
+ include ZClass
91
+ primary_key :alertid
92
+ add_zmethods :create, :delete, :get
93
+ end
94
+
95
+ class APIInfo
96
+ include ZClass
97
+ add_zmethods :version
98
+ end
99
+
100
+ class Application
101
+ include ZClass
102
+ primary_key :applicationid
103
+ add_zmethods :create, :delete, :exists, :get, :massAdd, :update
104
+ end
105
+
106
+ class Configuration
107
+ include ZClass
108
+ add_zmethods :import, :export
109
+ end
110
+
111
+ class DHost
112
+ include ZClass
113
+ add_zmethods :exists, :get
114
+ end
115
+
116
+ class DService
117
+ include ZClass
118
+ add_zmethods :exists, :get
119
+ end
120
+
121
+ class DCheck
122
+ include ZClass
123
+ add_zmethods :get
124
+ end
125
+
126
+ class DRule
127
+ include ZClass
128
+ add_zmethods :create, :delete, :exists, :get, :isReadable, :isWritable, :update
129
+ end
130
+
131
+ class Event
132
+ include ZClass
133
+ primary_key :eventid
134
+ add_zmethods :acknowledge, :create, :delete, :get
135
+ end
136
+
137
+ class Graph
138
+ include ZClass
139
+ primary_key :graphid
140
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :update
141
+ end
142
+
143
+ class Graphitem
144
+ include ZClass
145
+ primary_key :gitemid
146
+ add_zmethods :get
147
+ end
148
+
149
+ class GraphPrototype
150
+ include ZClass
151
+ primary_key :graphid
152
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :update
153
+ end
154
+
155
+ class History
156
+ include ZClass
157
+ primary_key :id # TODO Verify. The online documentation is not clear.
158
+ add_zmethods :delete, :get
159
+ end
160
+
161
+ class HTTPTest
162
+ include ZClass
163
+ primary_key :httptestid
164
+ add_zmethods :create, :delete, :get, :isReadable, :isWritable, :update
165
+ end
166
+
167
+ class Host
168
+ include ZClass
169
+ primary_key :hostid
170
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :isReadable, :isWritable, :massAdd, :massRemove, :massUpdate, :update
171
+ end
172
+
173
+ class Hostgroup
174
+ include ZClass
175
+ primary_key :groupid
176
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :isReadable, :isWritable, :massAdd, :massRemove, :massUpdate, :update
177
+ end
178
+
179
+ class Hostinterface
180
+ include ZClass
181
+ primary_key :interfaceid
182
+ add_zmethods :create, :delete, :exists, :get, :massAdd, :massRemove, :replaceHostInterfaces, :update
183
+ end
184
+
185
+ class HostPrototype
186
+ include ZClass
187
+ primary_key :hostid
188
+ add_zmethods :create, :delete, :get, :isReadable, :isWritable, :update
189
+ end
190
+
191
+
192
+ class Image
193
+ include ZClass
194
+ primary_key :imageid
195
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :update
196
+ end
197
+
198
+ class Item
199
+ include ZClass
200
+ primary_key :itemid
201
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :isReadable, :isWritable, :update
202
+ end
203
+
204
+ class ItemPrototype
205
+ include ZClass
206
+ primary_key :itemid
207
+ add_zmethods :create, :delete, :exists, :get, :isReadable, :isWritable, :update
208
+ end
209
+
210
+ class Service
211
+ include ZClass
212
+ primary_key :serviceid
213
+ add_zmethods :addDependencies, :addTimes, :create, :delete, :deleteDependencies, :deleteTimes, :get, :getSLA, :isReadable, :isWritable, :update
214
+ end
215
+
216
+ class DiscoveryRule
217
+ include ZClass
218
+ primary_key :itemid
219
+ add_zmethods :copy, :create, :delete, :exists, :get, :isReadable, :isWritable, :update
220
+ end
221
+
222
+ class Maintenance
223
+ include ZClass
224
+ primary_key :maintenanceid
225
+ add_zmethods :create, :delete, :exists, :get, :update
226
+ end
227
+
228
+ class Map
229
+ include ZClass
230
+ primary_key :sysmapid
231
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :isReadable, :isWritable, :update
232
+ end
233
+
234
+ class Mediatype
235
+ include ZClass
236
+ primary_key :mediatypeid
237
+ add_zmethods :create, :delete, :get, :update
238
+ end
239
+
240
+ class Proxy
241
+ include ZClass
242
+ primary_key :proxyid
243
+ add_zmethods :create, :delete, :get, :isReadable, :isWritable, :update
244
+ end
245
+
246
+ class Screen
247
+ include ZClass
248
+ primary_key :screenid
249
+ add_zmethods :create, :delete, :exists, :get, :update
250
+ end
251
+
252
+ class ScreenItem
253
+ include ZClass
254
+ primary_key :screenitemid
255
+ add_zmethods :create, :delete, :get, :isReadable, :isWritable, :update, :updateByPosition
256
+ end
257
+
258
+ class Script
259
+ include ZClass
260
+ primary_key :scriptid
261
+ add_zmethods :create, :delete, :execute, :get, :getScriptsByHost, :update
262
+ end
263
+
264
+ class Template
265
+ include ZClass
266
+ primary_key :templateid
267
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :isReadable, :isWritable, :massAdd, :massRemove, :massUpdate, :update
268
+ end
269
+
270
+ class TemplateScreen
271
+ include ZClass
272
+ add_zmethods :copy, :create, :delete, :exists, :get, :isReadable, :isWritable, :update
273
+ end
274
+
275
+ class TemplateScreenItem
276
+ include ZClass
277
+ primary_key :templateid
278
+ add_zmethods :get
279
+ end
280
+
281
+ class Trigger
282
+ include ZClass
283
+ primary_key :triggerid
284
+ add_zmethods :addDependencies, :create, :delete, :deleteDependencies, :exists, :get, :getObjects, :isReadable, :isWritable, :update
285
+ end
286
+
287
+ class TriggerPrototype
288
+ include ZClass
289
+ add_zmethods :create, :delete, :get, :update
290
+ end
291
+
292
+ class User
293
+ include ZClass
294
+ primary_key :userid
295
+ add_zmethods :addMedia, :authenticate, :create, :delete, :deleteMedia, :get, :isReadable, :isWritable, :login, :logout, :update, :updateMedia, :updateProfile
296
+ end
297
+
298
+ class Usergroup
299
+ include ZClass
300
+ primary_key :usrgrpid
301
+ add_zmethods :create, :delete, :exists, :get, :getObjects, :isReadable, :isWritable, :massAdd, :massRemove, :massUpdate, :update
302
+ end
303
+
304
+ class Usermacro
305
+ include ZClass
306
+ primary_key :hostmacroid
307
+ add_zmethods :create, :createGlobal, :delete, :deleteGlobal, :deleteHostMacro, :get, :massAdd, :massRemove, :massUpdate, :update, :updateGlobal
308
+ end
309
+
310
+ class Usermedia
311
+ include ZClass
312
+ primary_key :mediatypeid
313
+ add_zmethods :get
314
+ end
315
+
316
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Author:: Farzad FARID (<ffarid@pragmatic-source.com>)
3
+ # Copyright:: Copyright (c) 2011-2012 Farzad FARID
4
+ # License:: Simplified BSD License
5
+
6
+ $:.push File.expand_path("../lib", __FILE__)
7
+ require "rbZabbix/version"
8
+
9
+ Gem::Specification.new do |s|
10
+ s.name = "rbZabbix"
11
+ s.version = Zabby::VERSION
12
+ s.platform = Gem::Platform::RUBY
13
+ s.authors = ["Levi Jarick"]
14
+ s.email = ["Levi.Jarick@ubeek.net"]
15
+ s.homepage = "http://github.com/ubeek/rbZabbix/"
16
+ s.summary = %q{Ruby Zabbix API, scripting language and command line interface}
17
+ s.description = %q{rbZabbix is a Zabby API and CLI. It provides a provisioning tool for
18
+ creating, updating and querying Zabbix objects (hosts, items, triggers, etc.) through the web
19
+ service based on the Zabby gem by Farzad Farid.}
20
+ s.license = "Simplified BSD"
21
+
22
+ s.files = `git ls-files`.split("\n")
23
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
+ s.require_paths = ["lib"]
26
+ s.extra_rdoc_files = [ "TODO.rdoc", "ChangeLog.rdoc" ]
27
+ s.add_runtime_dependency "json"
28
+ s.add_development_dependency "bundler", ">= 1.0.0"
29
+ s.add_development_dependency "rspec", ">= 2.0.0"
30
+ s.add_development_dependency "rake", ">= 0.8.7"
31
+ s.add_development_dependency "yard"
32
+ end
@@ -0,0 +1,5 @@
1
+ require 'rspec'
2
+
3
+ RSpec.configure do |c|
4
+ c.mock_with :rspec
5
+ end
metadata CHANGED
@@ -1,121 +1,167 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rbZabbix
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.4
3
+ version: !ruby/object:Gem::Version
4
+ hash: 17
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 5
10
+ version: 0.1.5
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Levi Jarick
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2015-03-31 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2015-04-01 00:00:00 +08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
14
22
  name: json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
23
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
24
27
  - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
28
36
  name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.0.0
34
- type: :development
35
37
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
38
41
  - - ">="
39
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
43
+ hash: 23
44
+ segments:
45
+ - 1
46
+ - 0
47
+ - 0
40
48
  version: 1.0.0
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 2.0.0
48
49
  type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: rspec
49
53
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
52
57
  - - ">="
53
- - !ruby/object:Gem::Version
58
+ - !ruby/object:Gem::Version
59
+ hash: 15
60
+ segments:
61
+ - 2
62
+ - 0
63
+ - 0
54
64
  version: 2.0.0
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 0.8.7
62
65
  type: :development
66
+ version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
63
69
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
66
73
  - - ">="
67
- - !ruby/object:Gem::Version
74
+ - !ruby/object:Gem::Version
75
+ hash: 49
76
+ segments:
77
+ - 0
78
+ - 8
79
+ - 7
68
80
  version: 0.8.7
69
- - !ruby/object:Gem::Dependency
70
- name: yard
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
81
  type: :development
82
+ version_requirements: *id004
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
77
85
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
86
+ requirement: &id005 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
80
89
  - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
90
+ - !ruby/object:Gem::Version
91
+ hash: 3
92
+ segments:
93
+ - 0
94
+ version: "0"
95
+ type: :development
96
+ version_requirements: *id005
83
97
  description: |-
84
98
  rbZabbix is a Zabby API and CLI. It provides a provisioning tool for
85
99
  creating, updating and querying Zabbix objects (hosts, items, triggers, etc.) through the web
86
100
  service based on the Zabby gem by Farzad Farid.
87
- email:
101
+ email:
88
102
  - Levi.Jarick@ubeek.net
89
- executables: []
103
+ executables:
104
+ - zabbyrb
105
+ - zabbysh
90
106
  extensions: []
91
- extra_rdoc_files:
107
+
108
+ extra_rdoc_files:
92
109
  - TODO.rdoc
93
110
  - ChangeLog.rdoc
94
- files:
111
+ files:
112
+ - .gitignore
113
+ - .yardopts
95
114
  - ChangeLog.rdoc
115
+ - Gemfile
116
+ - LICENSE
117
+ - README.rdoc
118
+ - Rakefile
96
119
  - TODO.rdoc
120
+ - bin/zabbyrb
121
+ - bin/zabbysh
122
+ - lib/rbZabbix.rb
123
+ - lib/rbZabbix/config.rb
124
+ - lib/rbZabbix/connection.rb
125
+ - lib/rbZabbix/exceptions.rb
126
+ - lib/rbZabbix/runner.rb
127
+ - lib/rbZabbix/shell_helpers.rb
128
+ - lib/rbZabbix/version.rb
129
+ - lib/rbZabbix/zclass.rb
130
+ - rbZabbix.gemspec
131
+ - spec/spec_helper.rb
132
+ has_rdoc: true
97
133
  homepage: http://github.com/ubeek/rbZabbix/
98
- licenses:
134
+ licenses:
99
135
  - Simplified BSD
100
- metadata: {}
101
136
  post_install_message:
102
137
  rdoc_options: []
103
- require_paths:
138
+
139
+ require_paths:
104
140
  - lib
105
- required_ruby_version: !ruby/object:Gem::Requirement
106
- requirements:
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
107
144
  - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- required_rubygems_version: !ruby/object:Gem::Requirement
111
- requirements:
145
+ - !ruby/object:Gem::Version
146
+ hash: 3
147
+ segments:
148
+ - 0
149
+ version: "0"
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
112
153
  - - ">="
113
- - !ruby/object:Gem::Version
114
- version: '0'
154
+ - !ruby/object:Gem::Version
155
+ hash: 3
156
+ segments:
157
+ - 0
158
+ version: "0"
115
159
  requirements: []
160
+
116
161
  rubyforge_project:
117
- rubygems_version: 2.4.6
162
+ rubygems_version: 1.3.7
118
163
  signing_key:
119
- specification_version: 4
164
+ specification_version: 3
120
165
  summary: Ruby Zabbix API, scripting language and command line interface
121
- test_files: []
166
+ test_files:
167
+ - spec/spec_helper.rb