zabbixapi 0.1.6 → 0.1.6.1

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.
@@ -3,21 +3,35 @@
3
3
  Simple and lightweight ruby module for work with zabbix api version 1.8.x
4
4
 
5
5
  You can:
6
- * Create host/template/application/items/triggers and screens;
6
+ * Create and delete host/template/application/items/triggers and screens;
7
7
  * Get info about all zabbix essences;
8
8
 
9
9
  == Installation
10
10
 
11
11
  gem install zabbixapi
12
12
 
13
- == Get Start.
13
+ == Get Start
14
14
 
15
- * Get hostid from zabbix api:
15
+ * Create host and get hostid from zabbix api:
16
16
 
17
- zbx = Zabbix::ZabbixApi.new('https://zabbix.example.com', 'login', 'password')
18
- hostid = zbx.get_host_id('my.example.com')
17
+ zbx = Zabbix::ZabbixApi.new('https://zabbix.example.com', 'login', 'password')
18
+ host_options = {
19
+ "ip" => '127.0.0.1',
20
+ "dns" => 'my.example.com',
21
+ "host" => 'my.example.com',
22
+ "useip" => 1,
23
+ "groups" => ['some_group']
24
+ }
25
+ if zbx.create_host(host_options)
26
+ puts zbx.get_host_id('my.example.com')
27
+ end
19
28
 
20
- p hostid
29
+ * Create hostgroup and get hostgroupid from zabbix api:
30
+
31
+ zbx = Zabbix::ZabbixApi.new('https://zabbix.example.com', 'login', 'password')
32
+ if zbx.add_group('some_group')
33
+ puts zbx.get_group_id('some_group')
34
+ end
21
35
 
22
36
  == Dependencies
23
37
 
@@ -11,7 +11,7 @@ mount_point = opt["m"]
11
11
  group_name = opt["g"]
12
12
  zabbix_env = opt["E"]
13
13
 
14
- if ( mount_point == "/" )
14
+ if mount_point == "/"
15
15
  template_name = "TMPL_Filesystem_root"
16
16
  app_name = "Filesystem_root"
17
17
  else
@@ -1,50 +1,33 @@
1
1
  module Zabbix
2
+
2
3
  class ZabbixApi
3
4
  def add_application(app_options)
4
-
5
5
  app_options_default = {
6
- 'hostid' => nil,
7
- 'name' => nil
6
+ 'hostid' => nil,
7
+ 'name' => nil
8
8
  }
9
-
10
9
  application = merge_opt(app_options_default, app_options)
11
10
  message = {
12
- 'method' => 'application.create',
13
- 'params' => application
11
+ 'method' => 'application.create',
12
+ 'params' => application
14
13
  }
15
-
16
14
  responce = send_request(message)
17
-
18
- unless responce.empty? then
19
- result = responce['applicationids'][0].to_i
20
- else
21
- result = nil
22
- end
23
-
24
- return result
15
+ responce.empty? ? nil : responce['applicationids'][0].to_i
25
16
  end
26
17
  end
27
18
 
28
19
  def get_app_id(host_id, app_name)
29
-
30
20
  message = {
31
- 'method' => 'application.get',
32
- 'params' => {
33
- 'filter' => {
34
- 'name' => app_name,
35
- 'hostid' => host_id
21
+ 'method' => 'application.get',
22
+ 'params' => {
23
+ 'filter' => {
24
+ 'name' => app_name,
25
+ 'hostid' => host_id
26
+ }
36
27
  }
37
- }
38
28
  }
39
-
40
29
  responce = send_request(message)
30
+ responce.empty? ? nil : responce[0]['applicationid']
31
+ end
41
32
 
42
- unless responce.empty? then
43
- result = responce[0]['applicationid']
44
- else
45
- result = nil
46
- end
47
-
48
- return result
49
- end
50
33
  end
@@ -25,7 +25,7 @@ module Zabbix
25
25
 
26
26
  attr_accessor :debug
27
27
 
28
- def initialize ( api_url, api_user, api_password )
28
+ def initialize (api_url, api_user, api_password)
29
29
  @api_url = api_url
30
30
  @api_user = api_user
31
31
  @api_password = api_password
@@ -45,7 +45,7 @@ module Zabbix
45
45
  uri = URI.parse(@api_url)
46
46
  http = Net::HTTP.new(uri.host, uri.port)
47
47
 
48
- if ( uri.scheme == "https" ) then
48
+ if uri.scheme == "https"
49
49
  http.use_ssl = true
50
50
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
51
51
  end
@@ -74,6 +74,11 @@ module Zabbix
74
74
 
75
75
  response_body_hash = JSON.parse(response.body)
76
76
 
77
+ if @debug
78
+ puts "[ZBXAPI] : INFO : Response body"
79
+ puts response_body_hash.inspect
80
+ end
81
+
77
82
  if error = response_body_hash['error']
78
83
  error_message = error['message']
79
84
  error_data = error['data']
@@ -82,17 +87,15 @@ module Zabbix
82
87
  e_message = "Code: [" + error_code.to_s + "]. Message: [" + error_message +\
83
88
  "]. Data: [" + error_data + "]."
84
89
 
85
- case error_code.to_s
86
- when '-32602'
87
- raise Zabbix::AlreadyExist.new(e_message)
88
- else
89
- raise Zabbix::ResponseError.new(e_message)
90
+ case error_code.to_s
91
+ when '-32602'
92
+ raise Zabbix::AlreadyExist.new(e_message)
93
+ else
94
+ raise Zabbix::ResponseError.new(e_message)
90
95
  end
91
96
  end
92
97
 
93
- result = response_body_hash['result']
94
-
95
- return result
98
+ return response_body_hash['result']
96
99
  end
97
100
 
98
101
  def send_request(message)
@@ -101,33 +104,29 @@ module Zabbix
101
104
  end
102
105
 
103
106
  def auth()
104
-
105
107
  auth_message = {
106
- 'auth' => nil,
107
- 'method' => 'user.authenticate',
108
- 'params' => {
109
- 'user' => @api_user,
110
- 'password' => @api_password,
111
- '0' => '0'
112
- }
108
+ 'auth' => nil,
109
+ 'method' => 'user.authenticate',
110
+ 'params' => {
111
+ 'user' => @api_user,
112
+ 'password' => @api_password,
113
+ '0' => '0'
114
+ }
113
115
  }
114
-
115
- auth_id = do_request(auth_message)
116
-
117
- return auth_id
116
+ do_request(auth_message)
118
117
  end
119
118
 
120
119
  # Utils.
120
+
121
121
  def merge_opt(a, b)
122
122
  c = {}
123
-
124
123
  b.each_pair do |key, value|
125
124
  if a.has_key?(key) then
126
125
  c[key] = value
127
126
  end
128
- end
129
-
127
+ end
130
128
  return a.merge(c)
131
129
  end
130
+
132
131
  end
133
132
  end
@@ -3,64 +3,50 @@ module Zabbix
3
3
 
4
4
  def add_graph(graph)
5
5
  message = {
6
- 'method' => 'graph.create',
7
- 'params' => graph
6
+ 'method' => 'graph.create',
7
+ 'params' => graph
8
8
  }
9
-
10
9
  response = send_request(message)
11
-
12
10
  return 0
13
11
  end
14
12
 
15
13
  def get_graph_id(host_id, graph_name)
16
-
17
14
  message = {
18
- 'method' => 'graph.get',
19
- 'params' => {
20
- 'filter' => {
21
- 'name' => graph_name,
22
- 'hostid' => host_id
15
+ 'method' => 'graph.get',
16
+ 'params' => {
17
+ 'filter' => {
18
+ 'name' => graph_name,
19
+ 'hostid' => host_id
20
+ }
23
21
  }
24
- }
25
22
  }
26
-
27
23
  response = send_request(message)
28
-
29
- unless ( response.empty? ) then
30
- result = response[0]['graphid']
31
- else
32
- result = nil
33
- end
24
+ response.empty? ? nil : response[0]['graphid']
34
25
  end
35
26
 
36
27
  def get_graphs(host_id)
37
-
38
28
  message = {
39
- 'method' => 'graph.get',
40
- 'params' => {
41
- 'extendoutput' => '1',
42
- 'filter' => {
43
- 'hostid' => host_id
29
+ 'method' => 'graph.get',
30
+ 'params' => {
31
+ 'extendoutput' => '1',
32
+ 'filter' => {
33
+ 'hostid' => host_id
34
+ }
44
35
  }
45
- }
46
36
  }
47
-
48
37
  response = send_request(message)
49
-
50
- unless ( response.empty? ) then
38
+ if response.empty?
39
+ result = nil
40
+ else
51
41
  result = {}
52
-
53
42
  response.each() do |graph|
54
43
  graph_id = graph['graphid']
55
44
  graph_name = graph['name']
56
-
57
45
  result[graph_id] = graph_name
58
46
  end
59
- else
60
- result = nil
61
47
  end
62
-
63
48
  return result
64
49
  end
50
+
65
51
  end
66
52
  end
@@ -1,78 +1,58 @@
1
1
  module Zabbix
2
-
3
2
  class ZabbixApi
4
- def get_group_id(pattern)
5
3
 
4
+ def get_group_id(pattern)
6
5
  message = {
7
- 'method' => 'hostgroup.get',
8
- 'params' => {
9
- 'filter' => {
10
- 'name' => pattern
6
+ 'method' => 'hostgroup.get',
7
+ 'params' => {
8
+ 'filter' => {
9
+ 'name' => pattern
10
+ }
11
11
  }
12
- }
13
12
  }
14
-
15
13
  response = send_request(message)
16
-
17
- if not ( response.empty? ) then
18
- result = response[0]['groupid']
19
- else
20
- result = nil
21
- end
22
-
23
- return result
14
+ response.empty? ? nil : response[0]['groupid']
24
15
  end
25
16
 
26
17
  def group_exist?(pattern)
27
-
28
18
  group_id = get_groups_id(pattern)
29
-
30
- if ( group_id ) then
31
- return true
32
- else
33
- return false
34
- end
19
+ group_id ? true : false
35
20
  end
36
21
 
37
22
  def add_group(groupname)
38
-
39
23
  message = {
40
- 'method' => 'hostgroup.create',
41
- 'params' => {
42
- 'name' => groupname
43
- }
24
+ 'method' => 'hostgroup.create',
25
+ 'params' => {
26
+ 'name' => groupname
27
+ }
44
28
  }
45
-
46
29
  response = send_request(message)
30
+ response ? response['groupids'][0].to_i : nil
31
+ end
47
32
 
48
- if ( response ) then
49
- result = response['groupids'][0].to_i
50
- else
51
- result = nil
52
- end
53
-
54
- return result
33
+ def delete_group(groupname)
34
+ group_id = get_group_id(groupname)
35
+ message = {
36
+ 'method' => 'hostgroup.delete',
37
+ 'params' => {
38
+ 'groupid' => group_id
39
+ }
40
+ }
41
+ response = send_request(message)
42
+ response ? response['groupids'][0].to_i : nil
55
43
  end
56
44
 
57
45
  def add_host_to_group(host_id, group_id)
58
-
59
46
  message = {
60
- 'method' => 'hostgroup.massAdd',
61
- 'params' => {
62
- 'groups' => [ group_id ],
63
- 'hosts' => [ host_id ]
64
- }
47
+ 'method' => 'hostgroup.massAdd',
48
+ 'params' => {
49
+ 'groups' => [group_id],
50
+ 'hosts' => [host_id]
51
+ }
65
52
  }
66
-
67
53
  response = send_request(message)
68
-
69
- if not ( response.empty? ) then
70
- result = true
71
- else
72
- result = false
73
- end
74
-
75
- return result
54
+ response.empty? ? false : true
76
55
  end
56
+
77
57
  end
78
58
  end
@@ -1,86 +1,68 @@
1
1
  module Zabbix
2
-
3
2
  class ZabbixApi
3
+
4
4
  def update_host(host_id, host_options)
5
5
  host = host_options
6
6
  host['hostid'] = host_id
7
-
8
- message = {
9
- 'method' => 'host.update',
10
- 'params' => host
11
- }
12
-
7
+ message = {
8
+ 'method' => 'host.update',
9
+ 'params' => host
10
+ }
13
11
  responce = send_request(message)
14
-
15
- if not ( responce.empty? ) then
16
- result = responce['hostids'][0].to_i
17
- else
18
- result = nil
19
- end
20
-
21
- return result
22
- end
12
+ responce.empty? ? nil : responce['hostids'][0].to_i
13
+ end
23
14
 
24
15
  def add_host(host_options)
25
-
26
16
  host_default = {
27
- 'host' => nil,
28
- 'port' => 10050,
29
- 'status' => 0,
30
- 'useip' => 0,
31
- 'dns' => '',
32
- 'ip' => '0.0.0.0',
33
- 'proxy_hostid' => 0,
34
- 'groups' => [],
35
- 'useipmi' => 0,
36
- 'ipmi_ip' => '',
37
- 'ipmi_port' => 623,
38
- 'ipmi_authtype' => 0,
39
- 'ipmi_privilege' => 0,
40
- 'ipmi_username' => '',
41
- 'ipmi_password' => ''
17
+ 'host' => nil,
18
+ 'port' => 10050,
19
+ 'status' => 0,
20
+ 'useip' => 0,
21
+ 'dns' => '',
22
+ 'ip' => '0.0.0.0',
23
+ 'proxy_hostid' => 0,
24
+ 'groups' => [],
25
+ 'useipmi' => 0,
26
+ 'ipmi_ip' => '',
27
+ 'ipmi_port' => 623,
28
+ 'ipmi_authtype' => 0,
29
+ 'ipmi_privilege' => 0,
30
+ 'ipmi_username' => '',
31
+ 'ipmi_password' => ''
42
32
  }
43
-
44
- host_options['groups'].map! { |group_id| {'groupid' => group_id} }
45
-
33
+ host_options['groups'].nil? || host_options['groups'].map! { |group_id| {'groupid' => get_group_id(group_id)} }
46
34
  host = merge_opt(host_default, host_options)
47
-
48
35
  message = {
49
- 'method' => 'host.create',
50
- 'params' => host
36
+ 'method' => 'host.create',
37
+ 'params' => host
51
38
  }
52
-
53
39
  response = send_request(message)
54
-
55
- unless response.empty? then
56
- result = response['hostids'][0].to_i
57
- else
58
- result = nil
59
- end
60
-
61
- return result
40
+ response.empty? ? nil : response['hostids'][0].to_i
62
41
  end
63
42
 
64
43
  def get_host_id(hostname)
65
-
66
44
  message = {
67
- 'method' => 'host.get',
68
- 'params' => {
69
- 'filter' => {
70
- 'host' => hostname
45
+ 'method' => 'host.get',
46
+ 'params' => {
47
+ 'filter' => {
48
+ 'host' => hostname
49
+ }
71
50
  }
72
- }
73
51
  }
74
-
75
52
  response = send_request(message)
53
+ response.empty? ? nil : response[0]['hostid'].to_i
54
+ end
76
55
 
77
- unless response.empty? then
78
- result = response[0]['hostid'].to_i
79
- else
80
- result = nil
81
- end
82
-
83
- return result
56
+ def delete_host(hostname)
57
+ host_id = get_host_id(hostname)
58
+ message = {
59
+ 'method' => 'host.delete',
60
+ 'params' => {
61
+ 'hostid' => host_id
62
+ }
63
+ }
64
+ send_request(message)
84
65
  end
66
+
85
67
  end
86
68
  end