zapix 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,21 @@
1
+ require_relative 'basic'
2
+
3
+ class Actions < Basic
4
+ def exists?(options)
5
+ @client.action_exists(options)
6
+ end
7
+
8
+ def create(options)
9
+ @client.action_create(options) unless exists?(options)
10
+ end
11
+
12
+ def get_id(options)
13
+ result = @client.action_get({
14
+ 'filter' => {'name' => options['name']}})
15
+ result.first['actionid']
16
+ end
17
+
18
+ def delete(*action_ids)
19
+ @client.action_delete(action_ids)
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'basic'
2
+
3
+ class Usergroups < Basic
4
+
5
+ def create(options)
6
+ @client.usergroup_create(options) unless exists?(options)
7
+ end
8
+
9
+ def exists?(options)
10
+ @client.usergroup_exists(options)
11
+ end
12
+
13
+ def get_id(options)
14
+ if(exists?(options))
15
+ result = @client.usergroup_get({
16
+ 'filter' => {'name' => options['name']}})
17
+ result.first['usrgrpid']
18
+ else
19
+ raise NonExistingUsergroup, "Usergroup #{options['name']} does not exist !"
20
+ end
21
+ end
22
+
23
+ def delete(*group_ids)
24
+ @client.usergroup_delete(group_ids)
25
+ end
26
+
27
+ class NonExistingUsergroup < StandardError; end
28
+
29
+ end
@@ -0,0 +1,32 @@
1
+ require_relative 'basic'
2
+
3
+ class Users < Basic
4
+ def create(options)
5
+ @client.user_create(options) unless exists?(options)
6
+ end
7
+
8
+ def exists?(options)
9
+ result = @client.user_get({'filter' => {'alias' => options['alias']}})
10
+ if result.empty?
11
+ false
12
+ else
13
+ true
14
+ end
15
+ end
16
+
17
+ def get_id(options)
18
+ if(exists?(options))
19
+ @client.user_get({'filter' => {'alias' => options['alias']}}).first['userid']
20
+ else
21
+ raise NonExistingUser, "User #{options['alias']} does not exist !"
22
+ end
23
+ end
24
+
25
+ def delete(usergroup_ids)
26
+ @client.user_delete(usergroup_ids)
27
+ end
28
+
29
+ class NonExistingUser < StandardError; end
30
+ end
31
+
32
+
data/lib/zapix/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Zapix
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/zapix.rb CHANGED
@@ -42,4 +42,16 @@ class ZabbixAPI
42
42
  @hostinterfaces ||= Hostinterfaces.new(@client)
43
43
  end
44
44
 
45
+ def actions
46
+ @actions ||= Actions.new(@client)
47
+ end
48
+
49
+ def usergroups
50
+ @usergroups ||= Usergroups.new(@client)
51
+ end
52
+
53
+ def users
54
+ @users ||= Users.new(@client)
55
+ end
56
+
45
57
  end
data/spec/zapix_specs.rb CHANGED
@@ -18,6 +18,15 @@ scenario = 'scenario'
18
18
  trigger_description = 'Webpage failed on {HOST.NAME}'
19
19
  trigger_expression = "{#{host}:web.test.fail[#{scenario}].max(#3)}#0"
20
20
  non_existing_trigger_expression = '{vfs.file.cksum[/etc/passwd].diff(0)}>0'
21
+ existing_action_name = 'Report problems to Zabbix administrators'
22
+ non_existing_action_name = 'No action defined'
23
+ test_usergroup = 'Operation managers test'
24
+ existing_usergroup = 'Admins'
25
+ non_existing_usergroup = 'Smurfs'
26
+ existing_user = 'Admin'
27
+ non_existing_user = 'Tweegle'
28
+ test_user = 'Jim'
29
+ test_action = 'Test Action'
21
30
 
22
31
  describe ZabbixAPI do
23
32
 
@@ -69,7 +78,7 @@ describe ZabbixAPI do
69
78
  (zrc.hostgroups.get_all).should include(hostgroup, another_hostgroup)
70
79
  end
71
80
  end
72
-
81
+ existing_action_name
73
82
  context 'complex hostgroup consisting hosts' do
74
83
  before(:each) do
75
84
  zrc.hostgroups.create(hostgroup_with_hosts)
@@ -121,7 +130,7 @@ describe ZabbixAPI do
121
130
  options = {}
122
131
  options['description'] = trigger_description
123
132
  options['expression'] = trigger_expression
124
- options['priority'] = '2' # 2 means Warning
133
+ options['priority'] = 2 # 2 means Warning
125
134
  zrc.triggers.create(options)
126
135
 
127
136
  end
@@ -252,7 +261,7 @@ describe ZabbixAPI do
252
261
  end
253
262
 
254
263
  it 'deletes a web scenario' do
255
- pending 'Not ready'
264
+ pending 'Not implemended'
256
265
  options = {}
257
266
  options['name'] = scenario
258
267
  options['hostid'] = zrc.hosts.get_id(host)
@@ -325,6 +334,152 @@ describe ZabbixAPI do
325
334
  pending 'Not implemented'
326
335
  end
327
336
  end
337
+
338
+ describe 'actions' do
339
+ before(:each) do
340
+ options = {}
341
+ usergroup_options = {}
342
+ usergroup_options['name'] = existing_usergroup
343
+ options['name'] = test_action
344
+ options['eventsource'] = 0
345
+ options['evaltype'] = 1 # AND
346
+ options['status'] = 1 # Disabled
347
+ options['esc_period'] = 3600
348
+ options['def_shortdata'] = '{TRIGGER.NAME}: {TRIGGER.STATUS}'
349
+ options['def_longdata'] = "{TRIGGER.NAME}: {TRIGGER.STATUS}\r\nLast value: {ITEM.LASTVALUE}\r\n\r\n{TRIGGER.URL}"
350
+ options['conditions'] = [{
351
+ 'conditiontype' => 0, # Hostgroup
352
+ 'operator' => 0, # =
353
+ 'value' => zrc.hostgroups.get_id('Templates')
354
+ },
355
+ # not in maintenance
356
+ {
357
+ 'conditiontype' => 16, # Maintenance
358
+ 'operator' => 7, # not in
359
+ 'value' => 'maintenance'
360
+ }]
361
+ options['operations'] = [{
362
+ 'operationtype' => 0,
363
+ 'esc_period' => 0,
364
+ 'esc_step_from' => 1,
365
+ 'esc_step_to' => 1,
366
+ 'evaltype' => 0,
367
+ 'opmessage_grp' => [{
368
+ 'usrgrpid' => zrc.usergroups.get_id(usergroup_options)
369
+ }],
370
+ 'opmessage' => {
371
+ 'default_msg' => 1,
372
+ 'mediatypeid' => 1
373
+ }
374
+ }]
375
+ zrc.actions.create(options)
376
+ end
377
+
378
+ after(:each) do
379
+ options = {}
380
+ options['name'] = test_action
381
+ action_id = zrc.actions.get_id(options)
382
+ zrc.actions.delete(action_id)
383
+ end
384
+
385
+ it 'checks if an action exists' do
386
+ options = {}
387
+ options['name'] = existing_action_name
388
+ zrc.actions.exists?(options).should be_true
389
+ options['name'] = non_existing_action_name
390
+ zrc.actions.exists?(options).should be_false
391
+ end
392
+
393
+ it 'gets an id of an action' do
394
+ options = {}
395
+ options['name'] = test_action
396
+ result = zrc.actions.get_id(options)
397
+ (result.to_i).should >= 0
398
+ end
399
+ end
400
+
401
+ describe 'usergroups' do
402
+ before(:each) do
403
+ options = {}
404
+ options['name'] = test_usergroup
405
+ options['rights'] = {
406
+ 'permission' => 3,
407
+ 'id' => zrc.hostgroups.get_id(hostgroup_with_hosts)
408
+ }
409
+ zrc.usergroups.create(options)
410
+ end
411
+
412
+ after(:each) do
413
+ options = {}
414
+ options['name'] = test_usergroup
415
+ usergroup_id = zrc.usergroups.get_id(options)
416
+ zrc.usergroups.delete(usergroup_id)
417
+ end
418
+
419
+ it 'checks if a usergroup exists' do
420
+ options = {}
421
+ options['name'] = existing_usergroup
422
+ zrc.usergroups.exists?(options).should be_true
423
+ options['name'] = non_existing_usergroup
424
+ zrc.usergroups.exists?(options).should be_false
425
+ end
426
+
427
+ it 'gets the id of a usergroup by name' do
428
+ options = {}
429
+ options['name'] = test_usergroup
430
+ result = zrc.usergroups.get_id(options)
431
+ (result.to_i).should >= 0
432
+ options['name'] = non_existing_usergroup
433
+ expect { zrc.usergroups.get_id(options) }.to raise_error(Usergroups::NonExistingUsergroup)
434
+ end
435
+ end
436
+
437
+ describe 'user' do
438
+ before(:each) do
439
+ user_options = {}
440
+ group_options = {}
441
+ group_options['name'] = existing_usergroup
442
+ group_id = zrc.usergroups.get_id(group_options)
443
+ user_options['alias'] = test_user
444
+ user_options['passwd'] = random_string
445
+ user_options['usrgrps'] = [{
446
+ 'usrgrpid' => group_id
447
+ }]
448
+
449
+ user_options['user_medias'] = [{
450
+ 'mediatypeid' => 1,
451
+ 'sendto' => 'support@company.com',
452
+ 'active' => 0,
453
+ 'severity' => 63,
454
+ 'period' => '1-7,00:00-24:00'
455
+ }]
456
+ zrc.users.create(user_options)
457
+ end
458
+
459
+ after(:each) do
460
+ user_options = {}
461
+ user_options['alias'] = test_user
462
+ user_options['userid'] = zrc.users.get_id(user_options)
463
+ zrc.users.delete(user_options)
464
+ end
465
+
466
+ it 'checks if a user exists' do
467
+ options = {}
468
+ options['alias'] = test_user
469
+ zrc.users.exists?(options).should be_true
470
+ options['alias'] = non_existing_user
471
+ zrc.users.exists?(options).should be_false
472
+ end
473
+
474
+ it 'gets the id of a user' do
475
+ options = {}
476
+ options['alias'] = test_user
477
+ result = zrc.users.get_id(options)
478
+ (result.to_i).should >= 0
479
+ options['alias'] = non_existing_user
480
+ expect { zrc.users.get_id(options) }.to raise_error(Users::NonExistingUser)
481
+ end
482
+ end
328
483
  end
329
484
 
330
485
  def create_interface
@@ -338,7 +493,7 @@ describe ZabbixAPI do
338
493
  'ip' => random_local_ip,
339
494
  'dns' => random_domain,
340
495
  'type' => 4, # JMX
341
- 'main' => 1, # not default
496
+ 'main' => 1, # default jmx interface
342
497
  'port' => 9003)
343
498
  end
344
499
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zapix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-19 00:00:00.000000000 Z
12
+ date: 2013-07-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -105,6 +105,7 @@ files:
105
105
  - README.md
106
106
  - Rakefile
107
107
  - lib/zapix.rb
108
+ - lib/zapix/proxies/actions.rb
108
109
  - lib/zapix/proxies/applications.rb
109
110
  - lib/zapix/proxies/basic.rb
110
111
  - lib/zapix/proxies/hostgroups.rb
@@ -113,6 +114,8 @@ files:
113
114
  - lib/zapix/proxies/scenarios.rb
114
115
  - lib/zapix/proxies/templates.rb
115
116
  - lib/zapix/proxies/triggers.rb
117
+ - lib/zapix/proxies/usergroups.rb
118
+ - lib/zapix/proxies/users.rb
116
119
  - lib/zapix/version.rb
117
120
  - lib/zapix/zabbix_classes/host.rb
118
121
  - lib/zapix/zabbix_classes/interface.rb
@@ -135,7 +138,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
138
  version: '0'
136
139
  segments:
137
140
  - 0
138
- hash: 463225029197809156
141
+ hash: 531610970119711934
139
142
  required_rubygems_version: !ruby/object:Gem::Requirement
140
143
  none: false
141
144
  requirements:
@@ -144,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
147
  version: '0'
145
148
  segments:
146
149
  - 0
147
- hash: 463225029197809156
150
+ hash: 531610970119711934
148
151
  requirements: []
149
152
  rubyforge_project:
150
153
  rubygems_version: 1.8.24