zabbixapi 0.3.0 → 0.4.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.
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +20 -0
- data/README.md +123 -0
- data/Rakefile +1 -0
- data/lib/zabbixapi/applications.rb +37 -0
- data/lib/zabbixapi/client.rb +65 -0
- data/lib/zabbixapi/errors.rb +12 -0
- data/lib/zabbixapi/graphs.rb +47 -0
- data/lib/zabbixapi/hostgroups.rb +42 -0
- data/lib/zabbixapi/hosts.rb +80 -0
- data/lib/zabbixapi/items.rb +81 -0
- data/lib/zabbixapi/server.rb +12 -0
- data/lib/zabbixapi/templates.rb +78 -0
- data/lib/zabbixapi/triggers.rb +42 -0
- data/lib/zabbixapi/users.rb +59 -0
- data/lib/zabbixapi/version.rb +3 -0
- data/lib/zabbixapi.rb +51 -12
- data/spec/localhost.rb +227 -75
- data/spec/run.rb +265 -0
- data/zabbixapi.gemspec +15 -15
- metadata +35 -57
- data/README.rdoc +0 -65
- data/examples/basic_auth.rb +0 -30
- data/examples/config.yml +0 -4
- data/examples/maintenance-example.rb +0 -55
- data/examples/populate_new_zabbix.sh +0 -84
- data/examples/zabbix_availability +0 -73
- data/examples/zabbix_clear_default +0 -36
- data/examples/zabbix_cpufan-sersor +0 -114
- data/examples/zabbix_cputemp-sersor +0 -112
- data/examples/zabbix_disk_io +0 -152
- data/examples/zabbix_filesystem +0 -249
- data/examples/zabbix_group +0 -25
- data/examples/zabbix_hlsp +0 -100
- data/examples/zabbix_host +0 -37
- data/examples/zabbix_iops +0 -131
- data/examples/zabbix_ipmi-cpufan-sersor +0 -101
- data/examples/zabbix_ipmi_systemp +0 -110
- data/examples/zabbix_la +0 -136
- data/examples/zabbix_mailer +0 -125
- data/examples/zabbix_mdadm +0 -72
- data/examples/zabbix_megaraid +0 -71
- data/examples/zabbix_memory +0 -290
- data/examples/zabbix_named +0 -71
- data/examples/zabbix_net +0 -218
- data/examples/zabbix_nginx +0 -167
- data/examples/zabbix_nginx_500 +0 -112
- data/examples/zabbix_ntp +0 -71
- data/examples/zabbix_nv-gputemp +0 -111
- data/examples/zabbix_pgsql +0 -125
- data/examples/zabbix_server_process +0 -71
- data/examples/zabbix_smart_blade +0 -94
- data/examples/zabbix_ssh +0 -71
- data/examples/zabbix_varnish +0 -71
- data/lib/zabbixapi/application.rb +0 -40
- data/lib/zabbixapi/base.rb +0 -158
- data/lib/zabbixapi/graph.rb +0 -59
- data/lib/zabbixapi/group.rb +0 -66
- data/lib/zabbixapi/host.rb +0 -70
- data/lib/zabbixapi/item.rb +0 -130
- data/lib/zabbixapi/maintenance.rb +0 -78
- data/lib/zabbixapi/mediatype.rb +0 -53
- data/lib/zabbixapi/screen.rb +0 -119
- data/lib/zabbixapi/template.rb +0 -128
- data/lib/zabbixapi/trigger.rb +0 -71
- data/lib/zabbixapi/user.rb +0 -0
- data/lib/zabbixapi/usermacro.rb +0 -46
data/.travis.yml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
language:
|
2
|
+
- ruby
|
3
|
+
rvm:
|
4
|
+
- 1.9.3
|
5
|
+
before_script:
|
6
|
+
- sudo apt-get install mysql-server zabbix-server-mysql zabbix-frontend-php
|
7
|
+
- mysql -u root -e "use zabbix; insert into users_groups(usrgrpid, userid) values(10,1);"
|
8
|
+
- echo "$(curl -fsSL https://raw.github.com/gist/8f0df0d1824ea25a3827/zabbix.php)" | sudo tee /usr/share/zabbix/conf/zabbix.conf.php
|
9
|
+
script: "bundle exec rspec spec/run.rb"
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.1.3)
|
5
|
+
rake (0.9.2.2)
|
6
|
+
rspec (2.12.0)
|
7
|
+
rspec-core (~> 2.12.0)
|
8
|
+
rspec-expectations (~> 2.12.0)
|
9
|
+
rspec-mocks (~> 2.12.0)
|
10
|
+
rspec-core (2.12.0)
|
11
|
+
rspec-expectations (2.12.0)
|
12
|
+
diff-lcs (~> 1.1.3)
|
13
|
+
rspec-mocks (2.12.0)
|
14
|
+
|
15
|
+
PLATFORMS
|
16
|
+
ruby
|
17
|
+
|
18
|
+
DEPENDENCIES
|
19
|
+
rake
|
20
|
+
rspec
|
data/README.md
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
#Ruby Zabbix Api Module
|
2
|
+
|
3
|
+
Simple and lightweight ruby module for work with zabbix api
|
4
|
+
|
5
|
+
[](https://travis-ci.org/vadv/zabbixapi)
|
6
|
+
|
7
|
+
#####Now worked with zabbix
|
8
|
+
* 1.8.2 (api version 1.2)
|
9
|
+
* 1.8.9 (api version 1.3)
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
```
|
13
|
+
gem install zabbixapi
|
14
|
+
```
|
15
|
+
|
16
|
+
## Get Start
|
17
|
+
|
18
|
+
### Connect
|
19
|
+
```ruby
|
20
|
+
zbx = ZabbixApi.connect(
|
21
|
+
:url => 'http://localhost/zabbix/api_jsonrpc.php',
|
22
|
+
:user => 'Admin',
|
23
|
+
:password => 'zabbix'
|
24
|
+
)
|
25
|
+
```
|
26
|
+
### Create Hostgroup
|
27
|
+
```ruby
|
28
|
+
zbx.hostgroups.create(:name => "hostgroup")
|
29
|
+
```
|
30
|
+
|
31
|
+
### Create Template
|
32
|
+
```ruby
|
33
|
+
zbx.templates.create(
|
34
|
+
:host => "template",
|
35
|
+
:groups => [:groupid => zbx.hostgroups.get_id(:name => "hostgroup")]
|
36
|
+
)
|
37
|
+
```
|
38
|
+
|
39
|
+
### Create Application
|
40
|
+
```ruby
|
41
|
+
zbx.applications.create(
|
42
|
+
:name => application,
|
43
|
+
:hostid => zbx.templates.get_id(:host => "template")
|
44
|
+
)
|
45
|
+
```
|
46
|
+
|
47
|
+
### Create Item
|
48
|
+
```ruby
|
49
|
+
zbx.items.create(
|
50
|
+
:description => "item",
|
51
|
+
:key_ => "proc.num[aaa]",
|
52
|
+
:hostid => zbx.templates.get_id(:host => "template"),
|
53
|
+
:applications => [zbx.applications.get_id(:name => "application")]
|
54
|
+
)
|
55
|
+
```
|
56
|
+
|
57
|
+
### Create host
|
58
|
+
```ruby
|
59
|
+
zbx.hosts.add(
|
60
|
+
:host => "hostname",
|
61
|
+
:groups => [ :groupid => zbx.hostgroups.get_id(:name => "hostgroup") ]
|
62
|
+
)
|
63
|
+
```
|
64
|
+
|
65
|
+
### Get all templates linked with host
|
66
|
+
```ruby
|
67
|
+
zbx.templates.get_ids_by_host( :hostids => [zbx.hosts.get_id(:host => "hostname")] )
|
68
|
+
returned hash:
|
69
|
+
{
|
70
|
+
"Templatename" => "10",
|
71
|
+
"Templatename" => "1021"
|
72
|
+
}
|
73
|
+
```
|
74
|
+
|
75
|
+
### Link host with templates
|
76
|
+
```ruby
|
77
|
+
zbx.hosts.unlink_templates(
|
78
|
+
:hosts_id => [zbx.hosts.get_id(:host => "hostname")],
|
79
|
+
:templates_id => [111, 214]
|
80
|
+
)
|
81
|
+
```
|
82
|
+
|
83
|
+
### Create trigger
|
84
|
+
```ruby
|
85
|
+
zbx.triggers.create(
|
86
|
+
:description => "trigger",
|
87
|
+
:expression => "{template:proc.num[aaa].last(0)}<1",
|
88
|
+
:comments => "Bla-bla is faulty (disaster)",
|
89
|
+
:priority => 5,
|
90
|
+
:status => 0,
|
91
|
+
:templateid => 0,
|
92
|
+
:type => 0
|
93
|
+
)
|
94
|
+
````
|
95
|
+
|
96
|
+
### Create user
|
97
|
+
```ruby
|
98
|
+
zbx.users.create(
|
99
|
+
:alias => "Test user",
|
100
|
+
:name => "username",
|
101
|
+
:surname => "usersername",
|
102
|
+
:passwd => "password"
|
103
|
+
)
|
104
|
+
```
|
105
|
+
|
106
|
+
### Custom queries
|
107
|
+
```ruby
|
108
|
+
zbx.query(
|
109
|
+
:method => "apiinfo.version",
|
110
|
+
:params => {}
|
111
|
+
)
|
112
|
+
```
|
113
|
+
|
114
|
+
## Dependencies
|
115
|
+
|
116
|
+
* net/http
|
117
|
+
* net/https
|
118
|
+
* json
|
119
|
+
|
120
|
+
## Zabbix documentation
|
121
|
+
|
122
|
+
* Zabbix Project Homepage -> http://zabbix.com/
|
123
|
+
* Zabbix Api docs -> http://www.zabbix.com/documentation/1.8/api
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Applications
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
@client = Client.new(options)
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(data)
|
10
|
+
result = @client.api_request(:method => "application.create", :params => [data])
|
11
|
+
result.empty? ? nil : result['applicationids'][0].to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def add(data)
|
15
|
+
create(data)
|
16
|
+
end
|
17
|
+
|
18
|
+
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 destroy(data)
|
24
|
+
delete(data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_full_data(data)
|
28
|
+
@client.api_request(:method => "application.get", :params => {:filter => data, :output => "extend"})
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_id(data)
|
32
|
+
result = get_full_data(data)
|
33
|
+
result.empty? ? nil : result[0]['applicationid'].to_i
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
class ZabbixApi
|
5
|
+
class Client
|
6
|
+
|
7
|
+
def id
|
8
|
+
Random.rand(100000)
|
9
|
+
end
|
10
|
+
|
11
|
+
def api_version
|
12
|
+
@version ||= api_request(:method => "apiinfo.version", :params => {})
|
13
|
+
end
|
14
|
+
|
15
|
+
def auth
|
16
|
+
api_request(
|
17
|
+
:method => 'user.authenticate',
|
18
|
+
:params => {
|
19
|
+
:user => @options[:user],
|
20
|
+
:password => @options[:password],
|
21
|
+
}
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize(options = {})
|
26
|
+
@options = options
|
27
|
+
@auth_hash = auth
|
28
|
+
end
|
29
|
+
|
30
|
+
def message_json(body)
|
31
|
+
message = {
|
32
|
+
:method => body[:method],
|
33
|
+
:params => body[:params],
|
34
|
+
:auth => @auth_hash,
|
35
|
+
:id => id,
|
36
|
+
:jsonrpc => '2.0'
|
37
|
+
}
|
38
|
+
JSON.generate(message)
|
39
|
+
end
|
40
|
+
|
41
|
+
def http_request(body)
|
42
|
+
uri = URI.parse(@options[:url])
|
43
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
44
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
45
|
+
request.add_field('Content-Type', 'application/json-rpc')
|
46
|
+
request.body = body
|
47
|
+
response = http.request(request)
|
48
|
+
raise "HTTP Error: #{response.code} on #{@options[:url]}" unless response.code == "200"
|
49
|
+
puts "[DEBUG] Get answer: #{response.body}" if @options[:debug]
|
50
|
+
response.body
|
51
|
+
end
|
52
|
+
|
53
|
+
def _request(body)
|
54
|
+
puts "[DEBUG] Send request: #{body}" if @options[:debug]
|
55
|
+
result = JSON.parse(http_request(body))
|
56
|
+
raise "Server answer API error: #{result['error'].inspect} on request: #{body}" if result['error']
|
57
|
+
result['result']
|
58
|
+
end
|
59
|
+
|
60
|
+
def api_request(body)
|
61
|
+
_request message_json(body)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Graphs
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
@client = Client.new(options)
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(data)
|
10
|
+
result = @client.api_request(:method => "graph.create", :params => [data])
|
11
|
+
result.empty? ? nil : result['graphids'][0].to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def add(data)
|
15
|
+
create(data)
|
16
|
+
end
|
17
|
+
|
18
|
+
def delete(data)
|
19
|
+
result = @client.api_request(:method => "graph.delete", :params => [data])
|
20
|
+
case @client.api_version
|
21
|
+
when "1.3"
|
22
|
+
result ? 1 : 0 #return "true" or "false" for this api version
|
23
|
+
else
|
24
|
+
result.empty? ? nil : result['graphids'][0].to_i
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def destroy(data)
|
29
|
+
delete(data)
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_full_data(data)
|
33
|
+
@client.api_request(:method => "graph.get", :params => {:search => {:name => data}, :output => "extend"})
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_id(data)
|
37
|
+
result = @client.api_request(:method => "graph.get", :params => {:filter => {:name=> data[:name]}, :output => "extend"})
|
38
|
+
result.empty? ? nil : result[0]['graphid'].to_i
|
39
|
+
end
|
40
|
+
|
41
|
+
def update(data)
|
42
|
+
result = @client.api_request(:method => "graph.update", :params => data)
|
43
|
+
result.empty? ? nil : result['graphids'][0].to_i
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class HostGroups
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
@client = Client.new(options)
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(data)
|
10
|
+
result = @client.api_request(:method => "hostgroup.create", :params => [data])
|
11
|
+
result.empty? ? nil : result['groupids'][0].to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def add(data)
|
15
|
+
create(data)
|
16
|
+
end
|
17
|
+
|
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)
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_full_data(data)
|
28
|
+
case @client.api_version
|
29
|
+
when "1.2"
|
30
|
+
@client.api_request(:method => "hostgroup.get", :params => {:filter => data, :output => "extend"})
|
31
|
+
else
|
32
|
+
@client.api_request(:method => "hostgroup.get", :params => {:filter => data, :output => "extend"})
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_id(data)
|
37
|
+
result = get_full_data(data)
|
38
|
+
result.empty? ? nil : result[0]['groupid'].to_i
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Hosts
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
@client = Client.new(options)
|
6
|
+
@options = options
|
7
|
+
@host_default_options = {
|
8
|
+
:host => nil,
|
9
|
+
:port => 10050,
|
10
|
+
:status => 1,
|
11
|
+
:useip => 1,
|
12
|
+
:dns => '',
|
13
|
+
:ip => '0.0.0.0',
|
14
|
+
:proxy_hostid => 0,
|
15
|
+
:groups => [],
|
16
|
+
:useipmi => 0,
|
17
|
+
:ipmi_ip => '',
|
18
|
+
:ipmi_port => 623,
|
19
|
+
:ipmi_authtype => 0,
|
20
|
+
:ipmi_privilege => 0,
|
21
|
+
:ipmi_username => '',
|
22
|
+
:ipmi_password => ''
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def merge_params(params)
|
27
|
+
result = JSON.generate(@host_default_options).to_s + "," + JSON.generate(params).to_s
|
28
|
+
JSON.parse(result.gsub('},{', ','))
|
29
|
+
end
|
30
|
+
|
31
|
+
def create(data)
|
32
|
+
result = @client.api_request(:method => "host.create", :params => [merge_params(data)])
|
33
|
+
result.empty? ? nil : result['hostids'][0].to_i
|
34
|
+
end
|
35
|
+
|
36
|
+
def add(data)
|
37
|
+
create(data)
|
38
|
+
end
|
39
|
+
|
40
|
+
def unlink_templates(data)
|
41
|
+
result = @client.api_request(
|
42
|
+
:method => "host.massRemove",
|
43
|
+
:params => {
|
44
|
+
:hostids => data[:hosts_id],
|
45
|
+
:templates => data[:templates_id]
|
46
|
+
}
|
47
|
+
)
|
48
|
+
case @client.api_version
|
49
|
+
when "1.2"
|
50
|
+
result ? true : false
|
51
|
+
else
|
52
|
+
result.empty? ? false : true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def delete(data)
|
57
|
+
result = @client.api_request(:method => "host.delete", :params => [:hostid => data])
|
58
|
+
result.empty? ? nil : result['hostids'][0].to_i
|
59
|
+
end
|
60
|
+
|
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
|
+
|
70
|
+
def get_full_data(data)
|
71
|
+
@client.api_request(:method => "host.get", :params => {:filter => data, :output => "extend"})
|
72
|
+
end
|
73
|
+
|
74
|
+
def get_id(data)
|
75
|
+
result = get_full_data(data)
|
76
|
+
result.empty? ? nil : result[0]['hostid'].to_i
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Items
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
@client = Client.new(options)
|
6
|
+
@options = options
|
7
|
+
@item_default_options = {
|
8
|
+
:description => nil,
|
9
|
+
:key_ => nil,
|
10
|
+
:hostid => nil,
|
11
|
+
:delay => 60,
|
12
|
+
:history => 60,
|
13
|
+
:status => 0,
|
14
|
+
:type => 7,
|
15
|
+
:snmp_community => '',
|
16
|
+
:snmp_oid => '',
|
17
|
+
:value_type => 3,
|
18
|
+
:data_type => 0,
|
19
|
+
:trapper_hosts => 'localhost',
|
20
|
+
:snmp_port => 161,
|
21
|
+
:units => '',
|
22
|
+
:multiplier => 0,
|
23
|
+
:delta => 0,
|
24
|
+
:snmpv3_securityname => '',
|
25
|
+
:snmpv3_securitylevel => 0,
|
26
|
+
:snmpv3_authpassphrase => '',
|
27
|
+
:snmpv3_privpassphrase => '',
|
28
|
+
:formula => 0,
|
29
|
+
:trends => 365,
|
30
|
+
:logtimefmt => '',
|
31
|
+
:valuemapid => 0,
|
32
|
+
:delay_flex => '',
|
33
|
+
:authtype => 0,
|
34
|
+
:username => '',
|
35
|
+
:password => '',
|
36
|
+
:publickey => '',
|
37
|
+
:privatekey => '',
|
38
|
+
:params => '',
|
39
|
+
:ipmi_sensor => ''
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
def merge_params(params)
|
44
|
+
result = JSON.generate(@item_default_options).to_s + "," + JSON.generate(params).to_s
|
45
|
+
JSON.parse(result.gsub('},{', ','))
|
46
|
+
end
|
47
|
+
|
48
|
+
def create(data)
|
49
|
+
result = @client.api_request(:method => "item.create", :params => [merge_params(data)] )
|
50
|
+
result.empty? ? nil : result['itemids'][0].to_i
|
51
|
+
end
|
52
|
+
|
53
|
+
def add(data)
|
54
|
+
create(data)
|
55
|
+
end
|
56
|
+
|
57
|
+
def get_full_data(data)
|
58
|
+
@client.api_request(:method => "item.get", :params => {:filter => data, :output => "extend"})
|
59
|
+
end
|
60
|
+
|
61
|
+
def get_id(data)
|
62
|
+
result = get_full_data(data)
|
63
|
+
result.empty? ? nil : result[0]['itemid'].to_i
|
64
|
+
end
|
65
|
+
|
66
|
+
def update(data)
|
67
|
+
result = @client.api_request(:method => "item.update", :params => data)
|
68
|
+
result.empty? ? nil : result['itemids'][0].to_i
|
69
|
+
end
|
70
|
+
|
71
|
+
def delete(data)
|
72
|
+
result = @client.api_request(:method => "item.delete", :params => [data])
|
73
|
+
result.empty? ? nil : result['itemids'][0].to_i
|
74
|
+
end
|
75
|
+
|
76
|
+
def destroy(data)
|
77
|
+
delete(data)
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Templates
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
@client = Client.new(options)
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(data)
|
10
|
+
result = @client.api_request(:method => "template.create", :params => [data])
|
11
|
+
result.empty? ? nil : result['templateids'][0].to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def add(data)
|
15
|
+
create(data)
|
16
|
+
end
|
17
|
+
|
18
|
+
def delete(data)
|
19
|
+
result = @client.api_request(:method => "template.delete", :params => [:templateid => data])
|
20
|
+
result.empty? ? nil : result['templateids'][0].to_i
|
21
|
+
end
|
22
|
+
|
23
|
+
def destroy(data)
|
24
|
+
delete(data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_ids_by_host(data)
|
28
|
+
result = []
|
29
|
+
@client.api_request(:method => "template.get", :params => data).each do |tmpl|
|
30
|
+
result << tmpl['templateid']
|
31
|
+
end
|
32
|
+
result
|
33
|
+
end
|
34
|
+
|
35
|
+
def link_with_host(data)
|
36
|
+
result = @client.api_request(
|
37
|
+
:method => "template.massAdd",
|
38
|
+
:params => {
|
39
|
+
:hosts => data[:hosts_id].map { |t| {:hostid => t} },
|
40
|
+
:templates => data[:templates_id].map { |t| {:templateid => t} }
|
41
|
+
}
|
42
|
+
)
|
43
|
+
result.empty? ? false : true
|
44
|
+
end
|
45
|
+
|
46
|
+
def all
|
47
|
+
result = {}
|
48
|
+
case @client.api_version
|
49
|
+
when "1.2"
|
50
|
+
@client.api_request(:method => "template.get", :params => {:output => "extend"}).values.each do |tmpl|
|
51
|
+
result[tmpl['host']] = tmpl['hostid']
|
52
|
+
end
|
53
|
+
else
|
54
|
+
@client.api_request(:method => "template.get", :params => {:output => "extend"}).each do |tmpl|
|
55
|
+
result[tmpl['host']] = tmpl['hostid']
|
56
|
+
end
|
57
|
+
end
|
58
|
+
result
|
59
|
+
end
|
60
|
+
|
61
|
+
def get_full_data(data)
|
62
|
+
case @client.api_version
|
63
|
+
when "1.2"
|
64
|
+
# in this version returned id=>{...}
|
65
|
+
result = @client.api_request(:method => "template.get", :params => {:filter => data, :output => "extend"})
|
66
|
+
result.empty? ? [] : result.values
|
67
|
+
else
|
68
|
+
@client.api_request(:method => "template.get", :params => {:filter => data, :output => "extend"})
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def get_id(data)
|
73
|
+
result = get_full_data(data)
|
74
|
+
result.empty? ? nil : result[0]['templateid'].to_i
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Triggers
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
@client = Client.new(options)
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(data)
|
10
|
+
result = @client.api_request(:method => "trigger.create", :params => [data])
|
11
|
+
result.empty? ? nil : result['triggerids'][0].to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def add(data)
|
15
|
+
create(data)
|
16
|
+
end
|
17
|
+
|
18
|
+
def delete(data)
|
19
|
+
result = @client.api_request(:method => "trigger.delete", :params => [data])
|
20
|
+
result.empty? ? nil : result['triggerids'][0].to_i
|
21
|
+
end
|
22
|
+
|
23
|
+
def destroy(data)
|
24
|
+
delete(data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def update(data)
|
28
|
+
result = @client.api_request(:method => "trigger.update", :params => data)
|
29
|
+
result.empty? ? nil : result['triggerid'][0].to_i
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_full_data(data)
|
33
|
+
@client.api_request(:method => "trigger.get", :params => {:filter => data, :output => "extend"})
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_id(data)
|
37
|
+
result = get_full_data(data)
|
38
|
+
result.empty? ? nil : result[0]['triggerid'].to_i
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|