zabbixapi 0.5.0b → 0.5.0b2

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.
data/README.md CHANGED
@@ -225,13 +225,35 @@ zbx.usergroups.add_user(
225
225
  :userids => [zbx.users.get_id(:name => "Some user")]
226
226
  )
227
227
  # set write and read permissions for UserGroup on all hostgroups
228
- zbx.usergroups.set_perm_read(
228
+ zbx.usergroups.set_perm(
229
229
  :usrgrpid => zbx.usergroups.get_or_create(:name => "Some user group"),
230
- :hostgroupids => zbx.hostgroups.all.values,
230
+ :hostgroupids => zbx.hostgroups.all.values, # kind_of Array
231
231
  :permission => 3 # 2- read (by default) and 3 - write and read
232
232
  )
233
233
  ```
234
234
 
235
+ ### Create MediaType and add it to user ###
236
+ ```ruby
237
+ zbx.mediatypes.create_or_update(
238
+ :description => "mediatype",
239
+ :type => 0,
240
+ :smtp_server => "127.0.0.1",
241
+ :smtp_email => "zabbix@test.com"
242
+ )
243
+ zbx.users.add_medias(
244
+ :userids => [zbx.users.get_id(:name => "user")],
245
+ :media => [
246
+ {
247
+ :mediatypeid => zbx.mediatypes.get_id(:description => "mediatype"),
248
+ :sendto => "test@test",
249
+ :active => 0,
250
+ :period => "1-7,00:00-24:00",
251
+ :severity => "56"
252
+ }
253
+ ]
254
+ )
255
+ ```
256
+
235
257
  ### Custom queries
236
258
  ```ruby
237
259
  zbx.query(
data/lib/zabbixapi.rb CHANGED
@@ -11,6 +11,7 @@ require "zabbixapi/items"
11
11
  require "zabbixapi/graphs"
12
12
  require "zabbixapi/screens"
13
13
  require "zabbixapi/usergroups"
14
+ require "zabbixapi/mediatypes"
14
15
 
15
16
  class ZabbixApi
16
17
 
@@ -26,6 +27,7 @@ class ZabbixApi
26
27
  attr :graphs
27
28
  attr :screens
28
29
  attr :usergroups
30
+ attr :mediatypes
29
31
 
30
32
  def self.connect(options = {})
31
33
  new(options)
@@ -52,6 +54,7 @@ class ZabbixApi
52
54
  @graphs = Graphs.new(options)
53
55
  @screens = Screens.new(options)
54
56
  @usergroups = Usergroups.new(options)
57
+ @mediatypes = Mediatypes.new(options)
55
58
  end
56
59
 
57
60
  end
@@ -0,0 +1,110 @@
1
+ class ZabbixApi
2
+ class Mediatypes
3
+
4
+ def initialize(options = {})
5
+ @client = Client.new(options)
6
+ @options = options
7
+ @default_mediatype_options = {
8
+ :description => "", #Name
9
+ :type => 0, #0 - Email, 1 - External script, 2 - SMS, 3 - Jabber, 100 - EzTexting
10
+ :smtp_server => "",
11
+ :smtp_helo => "",
12
+ :smtp_email => "", #Email address of Zabbix server
13
+ :exec_path => "", #Name of external script
14
+ :gsm_modem => "", #Serial device name of GSM modem
15
+ :username => "", #Jabber user name used by Zabbix server
16
+ :passwd => "" #Jabber password used by Zabbix server
17
+ }
18
+ end
19
+
20
+ # Create MediaType
21
+ #
22
+ # * *Args* :
23
+ # - +data+ -> Hash with :description => "MediaGroup" and mediatype options
24
+ # * *Returns* :
25
+ # - Nil or Integer
26
+ def create(data)
27
+ result = @client.api_request(:method => "mediatype.create", :params => data)
28
+ result ? result['mediatypeids'][0].to_i : nil
29
+ end
30
+
31
+ # Add MediaType
32
+ # Synonym create
33
+ def add(data)
34
+ create(data)
35
+ end
36
+
37
+ # Delete MediaType
38
+ #
39
+ # * *Args* :
40
+ # - +data+ -> Array with mediatypeids
41
+ # * *Returns* :
42
+ # - Nil or Integer
43
+ def delete(data)
44
+ result = @client.api_request(:method => "mediatype.delete", :params => [data])
45
+ result ? result['mediatypeids'][0].to_i : nil
46
+ end
47
+
48
+ # Destroy MediaType
49
+ # Synonym delete
50
+ def destroy(data)
51
+ delete(data)
52
+ end
53
+
54
+ # Get MediaType info
55
+ #
56
+ # * *Args* :
57
+ # - +data+ -> Hash with :description => "MediaType"
58
+ # * *Returns* :
59
+ # - Nil or Integer
60
+ def get_full_data(data)
61
+ @client.api_request(
62
+ :method => "mediatype.get",
63
+ :params => {
64
+ :search => {:description => data[:description]},
65
+ :output => "extend"
66
+ }
67
+ )
68
+ end
69
+
70
+ def get(data)
71
+ get_full_data(data)
72
+ end
73
+
74
+ # Return MediaTypeid
75
+ #
76
+ # * *Args* :
77
+ # - +data+ -> Hash with :description => "MediaType"
78
+ # * *Returns* :
79
+ # - Nil or Integer
80
+ def get_id(data)
81
+ result = get_full_data(data)
82
+ mediatypeid = nil
83
+ result.each { |mt| mediatypeid = mt['mediatypeid'].to_i if mt['description'] == data[:description] }
84
+ mediatypeid
85
+ end
86
+
87
+ # Return MediaTypeid
88
+ #
89
+ # * *Args* :
90
+ # - +data+ -> Hash with :description => "MediaType"
91
+ # * *Returns* :
92
+ # - Nil or Integer
93
+ def update(data)
94
+ result = @client.api_request(:method => "mediatype.update", :params => data)
95
+ result.empty? ? nil : result['mediatypeids'][0].to_i
96
+ end
97
+
98
+ # Return MediaTypeid
99
+ #
100
+ # * *Args* :
101
+ # - +data+ -> Hash with :name => "UserGroup"
102
+ # * *Returns* :
103
+ # - Integer
104
+ def create_or_update(data)
105
+ mediatypeid = get_id(:description => data[:description], :mediatypeid => data[:mediatypeid])
106
+ mediatypeid ? update(data.merge(:mediatypeid => mediatypeid)) : create(data)
107
+ end
108
+
109
+ end
110
+ end
@@ -93,7 +93,7 @@ class ZabbixApi
93
93
  # - +data+ -> Hash with :usrgrpids => id, :hostgroupids => [], :permission => 2,3 (read and read write)
94
94
  # * *Returns* :
95
95
  # - Integer
96
- def set_perm(data)
96
+ def set_perms(data)
97
97
  permission = data[:permission] || 2
98
98
  result = @client.api_request(
99
99
  :method => "usergroup.massAdd",
@@ -36,6 +36,22 @@ class ZabbixApi
36
36
  get_full_data(data)
37
37
  end
38
38
 
39
+ def create_or_update(data)
40
+ userid = get_id(:name => data[:name])
41
+ userid ? update(data.merge(:userid => userid)) : create(data)
42
+ end
43
+
44
+ def add_medias(data)
45
+ result = @client.api_request(
46
+ :method => "user.addMedia",
47
+ :params => {
48
+ :users => data[:userids].map { |t| {:userid => t} },
49
+ :medias => data[:media]
50
+ }
51
+ )
52
+ result ? result['userids'][0].to_i : nil
53
+ end
54
+
39
55
  def get_id(data)
40
56
  result = get_full_data(data)
41
57
  userid = nil
@@ -49,4 +65,4 @@ class ZabbixApi
49
65
  end
50
66
 
51
67
  end
52
- end
68
+ end
@@ -1,3 +1,3 @@
1
1
  class ZabbixApi
2
- VERSION = "0.5.0b"
2
+ VERSION = "0.5.0b2"
3
3
  end
data/spec/localhost.rb CHANGED
@@ -11,7 +11,7 @@ zbx = ZabbixApi.connect(
11
11
  :url => api_url,
12
12
  :user => api_login,
13
13
  :password => api_password,
14
- :debug => true
14
+ :debug => false
15
15
  )
16
16
 
17
17
  hostgroup = "hostgroup______1"
@@ -24,6 +24,7 @@ user = "user____1"
24
24
  user2 = "user____2"
25
25
  usergroup = "SomeUserGroup"
26
26
  graph = "graph___a"
27
+ mediatype = "somemediatype"
27
28
 
28
29
 
29
30
  puts "### Zabbix API server version #{zbx.server.version} ###"
@@ -346,6 +347,15 @@ describe ZabbixApi, "test_api" do
346
347
  ).should be_kind_of(Integer)
347
348
  end
348
349
 
350
+ it "USER: Create or update" do
351
+ zbx.users.create_or_update(
352
+ :alias => "Test #{user}",
353
+ :name => user,
354
+ :surname => user,
355
+ :passwd => user
356
+ ).should be_kind_of(Integer)
357
+ end
358
+
349
359
  it "USER: Find" do
350
360
  zbx.users.get_full_data(:name => user)[0]['name'].should be_kind_of(String)
351
361
  end
@@ -374,11 +384,48 @@ describe ZabbixApi, "test_api" do
374
384
  end
375
385
 
376
386
  it "USERGROUPS: Set UserGroup read & write perm" do
377
- puts zbx.usergroups.set_perm(
387
+ zbx.usergroups.set_perms(
378
388
  :usrgrpid => zbx.usergroups.get_or_create(:name => usergroup).to_s,
379
389
  :hostgroupids => zbx.hostgroups.all.values,
380
390
  :permission => 3
381
- )
391
+ ).should be_kind_of(Integer)
392
+ end
393
+
394
+ it "MEDIATYPE: Create" do
395
+ zbx.mediatypes.create(
396
+ :description => mediatype,
397
+ :type => 0,
398
+ :smtp_server => "127.0.0.1",
399
+ :smtp_email => "zabbix@test.com"
400
+ ).should be_kind_of(Integer)
401
+ end
402
+
403
+ it "MEDIATYPE: Update or create" do
404
+ zbx.mediatypes.create_or_update(
405
+ :description => mediatype,
406
+ :smtp_email => "zabbix2@test.com"
407
+ ).should be_kind_of(Integer)
408
+ end
409
+
410
+ it "USER: Add mediatype" do
411
+ zbx.users.add_medias(
412
+ :userids => [zbx.users.get_id(:name => user2)],
413
+ :media => [
414
+ {
415
+ :mediatypeid => zbx.mediatypes.get_id(:description => mediatype),
416
+ :sendto => "test@test",
417
+ :active => 0,
418
+ :period => "1-7,00:00-24:00",
419
+ :severity => "56"
420
+ }
421
+ ]
422
+ ).should be_kind_of(Integer)
423
+ end
424
+
425
+ it "MEDIATYPE: Delete" do
426
+ zbx.mediatypes.delete(
427
+ zbx.mediatypes.get_id(:description => mediatype)
428
+ ).should be_kind_of(Integer)
382
429
  end
383
430
 
384
431
  it "USER: Delete" do
data/spec/run.rb CHANGED
@@ -22,6 +22,7 @@ user = "user"
22
22
  user2 = "user2"
23
23
  usergroup = "SomeUserGroup"
24
24
  graph = "graph"
25
+ mediatype = "somemediatype"
25
26
 
26
27
  puts "### Zabbix API server version #{zbx.server.version} ###"
27
28
 
@@ -343,6 +344,15 @@ describe ZabbixApi, "test_api" do
343
344
  ).should be_kind_of(Integer)
344
345
  end
345
346
 
347
+ it "USER: Create or update" do
348
+ zbx.users.create_or_update(
349
+ :alias => "Test #{user}",
350
+ :name => user,
351
+ :surname => user,
352
+ :passwd => user
353
+ ).should be_kind_of(Integer)
354
+ end
355
+
346
356
  it "USER: Find" do
347
357
  zbx.users.get_full_data(:name => user)[0]['name'].should be_kind_of(String)
348
358
  end
@@ -371,11 +381,48 @@ describe ZabbixApi, "test_api" do
371
381
  end
372
382
 
373
383
  it "USERGROUPS: Set UserGroup read & write perm" do
374
- puts zbx.usergroups.set_perm(
384
+ zbx.usergroups.set_perms(
375
385
  :usrgrpid => zbx.usergroups.get_or_create(:name => usergroup).to_s,
376
386
  :hostgroupids => zbx.hostgroups.all.values,
377
387
  :permission => 3
378
- )
388
+ ).should be_kind_of(Integer)
389
+ end
390
+
391
+ it "MEDIATYPE: Create" do
392
+ zbx.mediatypes.create(
393
+ :description => mediatype,
394
+ :type => 0,
395
+ :smtp_server => "127.0.0.1",
396
+ :smtp_email => "zabbix@test.com"
397
+ ).should be_kind_of(Integer)
398
+ end
399
+
400
+ it "MEDIATYPE: Update or create" do
401
+ zbx.mediatypes.create_or_update(
402
+ :description => mediatype,
403
+ :smtp_email => "zabbix2@test.com"
404
+ ).should be_kind_of(Integer)
405
+ end
406
+
407
+ it "USER: Add mediatype" do
408
+ zbx.users.add_medias(
409
+ :userids => [zbx.users.get_id(:name => user2)],
410
+ :media => [
411
+ {
412
+ :mediatypeid => zbx.mediatypes.get_id(:description => mediatype),
413
+ :sendto => "test@test",
414
+ :active => 0,
415
+ :period => "1-7,00:00-24:00",
416
+ :severity => "56"
417
+ }
418
+ ]
419
+ ).should be_kind_of(Integer)
420
+ end
421
+
422
+ it "MEDIATYPE: Delete" do
423
+ zbx.mediatypes.delete(
424
+ zbx.mediatypes.get_id(:description => mediatype)
425
+ ).should be_kind_of(Integer)
379
426
  end
380
427
 
381
428
  it "USER: Delete" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zabbixapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0b
4
+ version: 0.5.0b2
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -33,6 +33,7 @@ files:
33
33
  - lib/zabbixapi/hostgroups.rb
34
34
  - lib/zabbixapi/hosts.rb
35
35
  - lib/zabbixapi/items.rb
36
+ - lib/zabbixapi/mediatypes.rb
36
37
  - lib/zabbixapi/screens.rb
37
38
  - lib/zabbixapi/server.rb
38
39
  - lib/zabbixapi/templates.rb
@@ -58,7 +59,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
59
  version: '0'
59
60
  segments:
60
61
  - 0
61
- hash: 3354477705725061225
62
+ hash: -4429484017589887978
62
63
  required_rubygems_version: !ruby/object:Gem::Requirement
63
64
  none: false
64
65
  requirements: