zabbixapi 0.5.0b2 → 0.5.0b3

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
@@ -3,6 +3,7 @@
3
3
  Simple and lightweight ruby module for work with zabbix api
4
4
 
5
5
  [![Build Status](https://travis-ci.org/vadv/zabbixapi.png)](https://travis-ci.org/vadv/zabbixapi)
6
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/vadv/zabbixapi)
6
7
 
7
8
  #####Now worked with zabbix
8
9
  * 1.8.2 (api version 1.2)
@@ -236,7 +237,7 @@ zbx.usergroups.set_perm(
236
237
  ```ruby
237
238
  zbx.mediatypes.create_or_update(
238
239
  :description => "mediatype",
239
- :type => 0,
240
+ :type => 0, # 0 - Email, 1 - External script, 2 - SMS, 3 - Jabber, 100 - EzTexting,
240
241
  :smtp_server => "127.0.0.1",
241
242
  :smtp_email => "zabbix@test.com"
242
243
  )
@@ -247,7 +248,7 @@ zbx.users.add_medias(
247
248
  :mediatypeid => zbx.mediatypes.get_id(:description => "mediatype"),
248
249
  :sendto => "test@test",
249
250
  :active => 0,
250
- :period => "1-7,00:00-24:00",
251
+ :period => "1-7,00:00-24:00", # 1-7 days and 00:00-24:00 hours
251
252
  :severity => "56"
252
253
  }
253
254
  ]
data/lib/zabbixapi.rb CHANGED
@@ -1,5 +1,6 @@
1
- require "zabbixapi/version"
1
+ require "zabbixapi/basic"
2
2
  require "zabbixapi/client"
3
+ require "zabbixapi/version"
3
4
  require "zabbixapi/server"
4
5
  require "zabbixapi/applications"
5
6
  require "zabbixapi/templates"
@@ -16,45 +17,65 @@ require "zabbixapi/mediatypes"
16
17
  class ZabbixApi
17
18
 
18
19
  attr :client
19
- attr :server
20
- attr :users
21
- attr :items
22
- attr :applications
23
- attr :templates
24
- attr :hostgroups
25
- attr :hosts
26
- attr :triggers
27
- attr :graphs
28
- attr :screens
29
- attr :usergroups
30
- attr :mediatypes
31
20
 
32
21
  def self.connect(options = {})
33
22
  new(options)
34
23
  end
35
24
 
36
- def self.current
37
- @current ||= ZabbixApi.new
38
- end
39
-
40
25
  def query(data)
41
26
  @client.api_request(:method => data[:method], :params => data[:params])
42
27
  end
43
28
 
44
29
  def initialize(options = {})
45
30
  @client = Client.new(options)
46
- @server = Server.new(options)
47
- @users = Users.new(options)
48
- @items = Items.new(options)
49
- @hosts = Hosts.new(options)
50
- @applications = Applications.new(options)
51
- @templates = Templates.new(options)
52
- @hostgroups = HostGroups.new(options)
53
- @triggers = Triggers.new(options)
54
- @graphs = Graphs.new(options)
55
- @screens = Screens.new(options)
56
- @usergroups = Usergroups.new(options)
57
- @mediatypes = Mediatypes.new(options)
31
+ end
32
+
33
+ def server
34
+ @server ||= Server.new(@client)
35
+ end
36
+
37
+ def users
38
+ @users ||= Users.new(@client)
39
+ end
40
+
41
+ def items
42
+ @items ||= Items.new(@client)
43
+ end
44
+
45
+ def hosts
46
+ @hosts ||= Hosts.new(@client)
47
+ end
48
+
49
+ def applications
50
+ @applications ||= Applications.new(@client)
51
+ end
52
+
53
+ def templates
54
+ @templates ||= Templates.new(@client)
55
+ end
56
+
57
+ def hostgroups
58
+ @hostgroups ||= HostGroups.new(@client)
59
+ end
60
+
61
+ def triggers
62
+ @triggers ||= Triggers.new(@client)
63
+ end
64
+
65
+ def graphs
66
+ @graphs ||= Graphs.new(@client)
67
+ end
68
+
69
+ def screens
70
+ @screens ||= Screens.new(@client)
71
+ end
72
+
73
+ def usergroups
74
+ @usergroups ||= Usergroups.new(@client)
75
+ end
76
+
77
+ def mediatypes
78
+ @mediatypes ||= Mediatypes.new(@client)
58
79
  end
59
80
 
60
81
  end
@@ -1,46 +1,25 @@
1
1
  class ZabbixApi
2
- class Applications
2
+ class Applications < Basic
3
3
 
4
- def initialize(options = {})
5
- @client = Client.new(options)
6
- @options = options
4
+ def api_method_name
5
+ "application"
7
6
  end
8
7
 
9
- def create(data)
10
- result = @client.api_request(:method => "application.create", :params => [data])
11
- result.empty? ? nil : result['applicationids'][0].to_i
8
+ def api_identify
9
+ "name"
12
10
  end
13
11
 
14
- def add(data)
15
- create(data)
12
+ def create(data)
13
+ create_array(data)
16
14
  end
17
15
 
18
16
  def delete(data)
19
- result = @client.api_request(:method => "application.delete", :params => [data])
20
- result.empty? ? nil : result['applicationids'][0].to_i
21
- end
22
-
23
- def get_or_create(data)
24
- unless appid = get_id(data)
25
- appid = create(data)
26
- end
27
- appid
28
- end
29
-
30
- def destroy(data)
31
- delete(data)
17
+ delete_array(data)
32
18
  end
33
19
 
34
20
  def get_full_data(data)
35
- @client.api_request(:method => "application.get", :params => {:filter => data, :output => "extend"})
36
- end
37
-
38
- def get_id(data)
39
- result = get_full_data(data)
40
- applicationid = nil
41
- result.each { |app| applicationid = app['applicationid'].to_i if app['name'] == data[:name] }
42
- applicationid
21
+ get_full_data_filter(data)
43
22
  end
44
23
 
45
24
  end
46
- end
25
+ end
@@ -0,0 +1,109 @@
1
+ class ZabbixApi
2
+ class Basic
3
+
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+
8
+ ####### Synonyms #########
9
+ def add(data)
10
+ create(data)
11
+ end
12
+
13
+ def destroy(data)
14
+ delete(data)
15
+ end
16
+
17
+ def dump(data)
18
+ get_full_data(data)
19
+ end
20
+
21
+ ##########################
22
+
23
+ ####### Methods ##########
24
+ def create_array(data)
25
+ result = @client.api_request(:method => "#{api_method_name}.create", :params => [data])
26
+ result.empty? ? nil : result[api_keys][0].to_i
27
+ end
28
+
29
+ def create(data)
30
+ result = @client.api_request(:method => "#{api_method_name}.create", :params => data)
31
+ result.empty? ? nil : result[api_keys][0].to_i
32
+ end
33
+
34
+ def delete_array(data)
35
+ result = @client.api_request(:method => "#{api_method_name}.delete", :params => [data])
36
+ result.empty? ? nil : result[api_keys][0].to_i
37
+ end
38
+
39
+ def delete_array_sym(data)
40
+ result = @client.api_request(:method => "#{api_method_name}.delete", :params => [api_key.to_sym => data])
41
+ result.empty? ? nil : result[api_keys][0].to_i
42
+ end
43
+
44
+ def delete(data)
45
+ result = @client.api_request(:method => "#{api_method_name}.delete", :params => data)
46
+ result.empty? ? nil : result[api_keys][0].to_i
47
+ end
48
+
49
+ def update(data)
50
+ result = @client.api_request(:method => "#{api_method_name}.update", :params => data)
51
+ result.empty? ? nil : result[api_keys][0].to_i
52
+ end
53
+
54
+ def get_full_data_filter(data)
55
+ @client.api_request(:method => "#{api_method_name}.get", :params => {:filter => data, :output => "extend"})
56
+ end
57
+
58
+ def get_full_data_filter_array(data)
59
+ @client.api_request(:method => "#{api_method_name}.get", :params => {:filter => [data[api_identify.to_sym]], :output => "extend"})
60
+ end
61
+
62
+ def get_id(data)
63
+ result = get_full_data(data)
64
+ id = nil
65
+ result.each { |tmpl| id = tmpl[api_key].to_i if tmpl[api_identify] == data[api_identify.to_sym] }
66
+ id
67
+ end
68
+
69
+ def get_or_create(data)
70
+ id = get_id(data)
71
+ if id.nil?
72
+ id = create(data)
73
+ end
74
+ id
75
+ end
76
+
77
+ def create_or_update(data)
78
+ id = get_id(api_identify.to_sym => data[api_identify.to_sym], :templateid => data[:templateid])
79
+ id ? update(data.merge(api_key.to_sym => id)) : create(data)
80
+ end
81
+
82
+ def all
83
+ result = {}
84
+ @client.api_request(:method => "#{api_method_name}.get", :params => {:output => "extend"}).each do |tmpl|
85
+ result[tmpl[api_identify]] = tmpl[api_key]
86
+ end
87
+ result
88
+ end
89
+
90
+ ##########################
91
+
92
+ def api_method_name
93
+ raise "Can't call here api_method_name"
94
+ end
95
+
96
+ def api_identify
97
+ raise "Can't call here api_identify"
98
+ end
99
+
100
+ def api_keys
101
+ api_key + "s"
102
+ end
103
+
104
+ def api_key
105
+ api_method_name + "id"
106
+ end
107
+
108
+ end
109
+ end
@@ -46,10 +46,10 @@ class ZabbixApi
46
46
 
47
47
  def http_request(body)
48
48
  uri = URI.parse(@options[:url])
49
- unless @proxy_uri.nil?
50
- http = Net::HTTP.new(uri.host, uri.port)
51
- else
49
+ if @proxy_uri.nil?
52
50
  http = Net::HTTP.Proxy(@proxy_host, @proxy_port, @proxy_user, @proxy_pass).new(uri.host, uri.port)
51
+ else
52
+ http = Net::HTTP.new(uri.host, uri.port)
53
53
  end
54
54
  request = Net::HTTP::Post.new(uri.request_uri)
55
55
  request.add_field('Content-Type', 'application/json-rpc')
@@ -1,18 +1,17 @@
1
1
  class ZabbixApi
2
- class Graphs
2
+ class Graphs < Basic
3
3
 
4
- def initialize(options = {})
5
- @client = Client.new(options)
6
- @options = options
4
+
5
+ def api_method_name
6
+ "graph"
7
7
  end
8
8
 
9
- def create(data)
10
- result = @client.api_request(:method => "graph.create", :params => [data])
11
- result.empty? ? nil : result['graphids'][0].to_i
9
+ def api_identify
10
+ "name"
12
11
  end
13
12
 
14
- def add(data)
15
- create(data)
13
+ def create(data)
14
+ create_array(data)
16
15
  end
17
16
 
18
17
  def delete(data)
@@ -25,12 +24,8 @@ class ZabbixApi
25
24
  end
26
25
  end
27
26
 
28
- def destroy(data)
29
- delete(data)
30
- end
31
-
32
27
  def get_full_data(data)
33
- @client.api_request(:method => "graph.get", :params => {:search => {:name => data}, :output => "extend"})
28
+ get_full_data_filter()
34
29
  end
35
30
 
36
31
  def get_ids_by_host(data)
@@ -1,62 +1,28 @@
1
1
  class ZabbixApi
2
- class HostGroups
2
+ class HostGroups < Basic
3
3
 
4
- def initialize(options = {})
5
- @client = Client.new(options)
6
- @options = options
4
+ def api_method_name
5
+ "hostgroup"
7
6
  end
8
7
 
9
- def create(data)
10
- result = @client.api_request(:method => "hostgroup.create", :params => [data])
11
- result.empty? ? nil : result['groupids'][0].to_i
8
+ def api_identify
9
+ "name"
12
10
  end
13
11
 
14
- def add(data)
15
- create(data)
12
+ def api_key
13
+ "groupid"
16
14
  end
17
15
 
18
- def delete(data)
19
- result = @client.api_request(:method => "hostgroup.delete", :params => [:groupid => data])
20
- result.empty? ? nil : result['groupids'][0].to_i
21
- end
22
-
23
- def destroy(data)
24
- delete(data)
16
+ def create(data)
17
+ create_array(data)
25
18
  end
26
19
 
27
- def get_or_create(data)
28
- unless hostgroupid = get_id(data)
29
- hostgroupid = update(data)
30
- end
31
- hostgroupid
20
+ def delete(data)
21
+ delete_array_sym(data)
32
22
  end
33
23
 
34
24
  def get_full_data(data)
35
- case @client.api_version
36
- when "1.2"
37
- @client.api_request(:method => "hostgroup.get", :params => {:filter => data, :output => "extend"})
38
- else
39
- @client.api_request(:method => "hostgroup.get", :params => {:filter => data, :output => "extend"})
40
- end
41
- end
42
-
43
- # Return all hostgroups
44
- #
45
- # * *Returns* :
46
- # - Hash with {"Hostgroup1" => "id1", "Hostgroup2" => "id2"}
47
- def all
48
- result = {}
49
- @client.api_request(:method => "hostgroup.get", :params => {:output => "extend"}).each do |hostgrp|
50
- result[hostgrp['name']] = hostgrp['groupid']
51
- end
52
- result
53
- end
54
-
55
- def get_id(data)
56
- result = get_full_data(data)
57
- hostgroupid = nil
58
- result.each { |hgroup| hostgroupid = hgroup['groupid'].to_i if hgroup['name'] == data[:name] }
59
- hostgroupid
25
+ get_full_data_filter(data)
60
26
  end
61
27
 
62
28
  end
@@ -1,9 +1,16 @@
1
1
  class ZabbixApi
2
- class Hosts
2
+ class Hosts < Basic
3
3
 
4
- def initialize(options = {})
5
- @client = Client.new(options)
6
- @options = options
4
+ def api_method_name
5
+ "host"
6
+ end
7
+
8
+ def api_identify
9
+ "host"
10
+ end
11
+
12
+ def initialize(client)
13
+ @client = client
7
14
  @host_default_options = {
8
15
  :host => nil,
9
16
  :port => 10050,
@@ -33,10 +40,6 @@ class ZabbixApi
33
40
  result.empty? ? nil : result['hostids'][0].to_i
34
41
  end
35
42
 
36
- def add(data)
37
- create(data)
38
- end
39
-
40
43
  def unlink_templates(data)
41
44
  result = @client.api_request(
42
45
  :method => "host.massRemove",
@@ -54,33 +57,12 @@ class ZabbixApi
54
57
  end
55
58
 
56
59
  def delete(data)
57
- result = @client.api_request(:method => "host.delete", :params => [:hostid => data])
58
- result.empty? ? nil : result['hostids'][0].to_i
60
+ delete_array_sym(data)
59
61
  end
60
62
 
61
- def destroy(data)
62
- delete(data)
63
- end
64
-
65
- def update(data)
66
- result = @client.api_request(:method => "host.update", :params => data)
67
- result.empty? ? nil : result['hostids'][0].to_i
68
- end
69
63
 
70
64
  def get_full_data(data)
71
- @client.api_request(:method => "host.get", :params => {:filter => data, :output => "extend"})
72
- end
73
-
74
- def create_or_update(data)
75
- hostid = get_id(:host => data[:host])
76
- hostid ? update(data.merge(:hostid => hostid)) : create(data)
77
- end
78
-
79
- def get_id(data)
80
- result = get_full_data(data)
81
- hostid = nil
82
- result.each { |host| hostid = host['hostid'].to_i if host['host'] == data[:host] }
83
- hostid
65
+ get_full_data_filter(data)
84
66
  end
85
67
 
86
68
  end