zabbixapi 0.5.0 → 0.5.1a
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 +1 -1
- data/Gemfile +2 -1
- data/Gemfile.lock +2 -0
- data/README.md +8 -0
- data/lib/zabbixapi.rb +6 -12
- data/lib/zabbixapi/basic/basic_alias.rb +17 -0
- data/lib/zabbixapi/basic/basic_func.rb +41 -0
- data/lib/zabbixapi/basic/basic_init.rb +33 -0
- data/lib/zabbixapi/basic/basic_logic.rb +70 -0
- data/lib/zabbixapi/{applications.rb → classes/applications.rb} +0 -0
- data/lib/zabbixapi/{errors.rb → classes/errors.rb} +0 -0
- data/lib/zabbixapi/classes/graphs.rb +40 -0
- data/lib/zabbixapi/classes/hostgroups.rb +26 -0
- data/lib/zabbixapi/classes/hosts.rb +58 -0
- data/lib/zabbixapi/classes/items.rb +54 -0
- data/lib/zabbixapi/classes/mediatypes.rb +31 -0
- data/lib/zabbixapi/classes/screens.rb +68 -0
- data/lib/zabbixapi/{server.rb → classes/server.rb} +0 -0
- data/lib/zabbixapi/{templates.rb → classes/templates.rb} +8 -70
- data/lib/zabbixapi/classes/triggers.rb +17 -0
- data/lib/zabbixapi/{usergroups.rb → classes/usergroups.rb} +11 -54
- data/lib/zabbixapi/classes/users.rb +32 -0
- data/lib/zabbixapi/client.rb +4 -2
- data/lib/zabbixapi/version.rb +1 -1
- data/spec/localhost.rb +1 -1
- metadata +23 -19
- data/lib/zabbixapi/graphs.rb +0 -83
- data/lib/zabbixapi/hostgroups.rb +0 -72
- data/lib/zabbixapi/hosts.rb +0 -86
- data/lib/zabbixapi/items.rb +0 -87
- data/lib/zabbixapi/mediatypes.rb +0 -109
- data/lib/zabbixapi/screens.rb +0 -132
- data/lib/zabbixapi/triggers.rb +0 -48
- data/lib/zabbixapi/users.rb +0 -67
data/lib/zabbixapi/hostgroups.rb
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
class ZabbixApi
|
2
|
-
class HostGroups
|
3
|
-
|
4
|
-
def initialize(client)
|
5
|
-
@client = client
|
6
|
-
end
|
7
|
-
|
8
|
-
def create(data)
|
9
|
-
result = @client.api_request(:method => "hostgroup.create", :params => [data])
|
10
|
-
result.empty? ? nil : result['groupids'][0].to_i
|
11
|
-
end
|
12
|
-
|
13
|
-
def add(data)
|
14
|
-
create(data)
|
15
|
-
end
|
16
|
-
|
17
|
-
def delete(data)
|
18
|
-
result = @client.api_request(:method => "hostgroup.delete", :params => [:groupid => data])
|
19
|
-
result.empty? ? nil : result['groupids'][0].to_i
|
20
|
-
end
|
21
|
-
|
22
|
-
def destroy(data)
|
23
|
-
delete(data)
|
24
|
-
end
|
25
|
-
|
26
|
-
def create_or_update(data)
|
27
|
-
userid = get_id(:name => data[:name])
|
28
|
-
userid ? update(data.merge(:groupid => userid)) : create(data)
|
29
|
-
end
|
30
|
-
|
31
|
-
def update(data)
|
32
|
-
result = @client.api_request(:method => "hostgroup.update", :params => data)
|
33
|
-
result ? result['groupids'][0].to_i : nil
|
34
|
-
end
|
35
|
-
|
36
|
-
def get_or_create(data)
|
37
|
-
unless hostgroupid = get_id(data)
|
38
|
-
hostgroupid = create(data)
|
39
|
-
end
|
40
|
-
hostgroupid
|
41
|
-
end
|
42
|
-
|
43
|
-
def get_full_data(data)
|
44
|
-
case @client.api_version
|
45
|
-
when "1.2"
|
46
|
-
@client.api_request(:method => "hostgroup.get", :params => {:filter => data, :output => "extend"})
|
47
|
-
else
|
48
|
-
@client.api_request(:method => "hostgroup.get", :params => {:filter => data, :output => "extend"})
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# Return all hostgroups
|
53
|
-
#
|
54
|
-
# * *Returns* :
|
55
|
-
# - Hash with {"Hostgroup1" => "id1", "Hostgroup2" => "id2"}
|
56
|
-
def all
|
57
|
-
result = {}
|
58
|
-
@client.api_request(:method => "hostgroup.get", :params => {:output => "extend"}).each do |hostgrp|
|
59
|
-
result[hostgrp['name']] = hostgrp['groupid']
|
60
|
-
end
|
61
|
-
result
|
62
|
-
end
|
63
|
-
|
64
|
-
def get_id(data)
|
65
|
-
result = get_full_data(data)
|
66
|
-
hostgroupid = nil
|
67
|
-
result.each { |hgroup| hostgroupid = hgroup['groupid'].to_i if hgroup['name'] == data[:name] }
|
68
|
-
hostgroupid
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
end
|
data/lib/zabbixapi/hosts.rb
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
class ZabbixApi
|
2
|
-
class Hosts
|
3
|
-
|
4
|
-
def initialize(client)
|
5
|
-
@client = client
|
6
|
-
@host_default_options = {
|
7
|
-
:host => nil,
|
8
|
-
:port => 10050,
|
9
|
-
:status => 1,
|
10
|
-
:useip => 1,
|
11
|
-
:dns => '',
|
12
|
-
:ip => '0.0.0.0',
|
13
|
-
:proxy_hostid => 0,
|
14
|
-
:groups => [],
|
15
|
-
:useipmi => 0,
|
16
|
-
:ipmi_ip => '',
|
17
|
-
:ipmi_port => 623,
|
18
|
-
:ipmi_authtype => 0,
|
19
|
-
:ipmi_privilege => 0,
|
20
|
-
:ipmi_username => '',
|
21
|
-
:ipmi_password => ''
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
|
-
def merge_params(params)
|
26
|
-
result = JSON.generate(@host_default_options).to_s + "," + JSON.generate(params).to_s
|
27
|
-
JSON.parse(result.gsub('},{', ','))
|
28
|
-
end
|
29
|
-
|
30
|
-
def create(data)
|
31
|
-
result = @client.api_request(:method => "host.create", :params => [merge_params(data)])
|
32
|
-
result.empty? ? nil : result['hostids'][0].to_i
|
33
|
-
end
|
34
|
-
|
35
|
-
def add(data)
|
36
|
-
create(data)
|
37
|
-
end
|
38
|
-
|
39
|
-
def unlink_templates(data)
|
40
|
-
result = @client.api_request(
|
41
|
-
:method => "host.massRemove",
|
42
|
-
:params => {
|
43
|
-
:hostids => data[:hosts_id],
|
44
|
-
:templates => data[:templates_id]
|
45
|
-
}
|
46
|
-
)
|
47
|
-
case @client.api_version
|
48
|
-
when "1.2"
|
49
|
-
result ? true : false
|
50
|
-
else
|
51
|
-
result.empty? ? false : true
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def delete(data)
|
56
|
-
result = @client.api_request(:method => "host.delete", :params => [:hostid => data])
|
57
|
-
result.empty? ? nil : result['hostids'][0].to_i
|
58
|
-
end
|
59
|
-
|
60
|
-
def destroy(data)
|
61
|
-
delete(data)
|
62
|
-
end
|
63
|
-
|
64
|
-
def update(data)
|
65
|
-
result = @client.api_request(:method => "host.update", :params => data)
|
66
|
-
result.empty? ? nil : result['hostids'][0].to_i
|
67
|
-
end
|
68
|
-
|
69
|
-
def get_full_data(data)
|
70
|
-
@client.api_request(:method => "host.get", :params => {:filter => data, :output => "extend"})
|
71
|
-
end
|
72
|
-
|
73
|
-
def create_or_update(data)
|
74
|
-
hostid = get_id(:host => data[:host])
|
75
|
-
hostid ? update(data.merge(:hostid => hostid)) : create(data)
|
76
|
-
end
|
77
|
-
|
78
|
-
def get_id(data)
|
79
|
-
result = get_full_data(data)
|
80
|
-
hostid = nil
|
81
|
-
result.each { |host| hostid = host['hostid'].to_i if host['host'] == data[:host] }
|
82
|
-
hostid
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
end
|
data/lib/zabbixapi/items.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
class ZabbixApi
|
2
|
-
class Items
|
3
|
-
|
4
|
-
def initialize(client)
|
5
|
-
@client = client
|
6
|
-
@item_default_options = {
|
7
|
-
:description => nil,
|
8
|
-
:key_ => nil,
|
9
|
-
:hostid => nil,
|
10
|
-
:delay => 60,
|
11
|
-
:history => 60,
|
12
|
-
:status => 0,
|
13
|
-
:type => 7,
|
14
|
-
:snmp_community => '',
|
15
|
-
:snmp_oid => '',
|
16
|
-
:value_type => 3,
|
17
|
-
:data_type => 0,
|
18
|
-
:trapper_hosts => 'localhost',
|
19
|
-
:snmp_port => 161,
|
20
|
-
:units => '',
|
21
|
-
:multiplier => 0,
|
22
|
-
:delta => 0,
|
23
|
-
:snmpv3_securityname => '',
|
24
|
-
:snmpv3_securitylevel => 0,
|
25
|
-
:snmpv3_authpassphrase => '',
|
26
|
-
:snmpv3_privpassphrase => '',
|
27
|
-
:formula => 0,
|
28
|
-
:trends => 365,
|
29
|
-
:logtimefmt => '',
|
30
|
-
:valuemapid => 0,
|
31
|
-
:delay_flex => '',
|
32
|
-
:authtype => 0,
|
33
|
-
:username => '',
|
34
|
-
:password => '',
|
35
|
-
:publickey => '',
|
36
|
-
:privatekey => '',
|
37
|
-
:params => '',
|
38
|
-
:ipmi_sensor => ''
|
39
|
-
}
|
40
|
-
end
|
41
|
-
|
42
|
-
def merge_params(params)
|
43
|
-
result = JSON.generate(@item_default_options).to_s + "," + JSON.generate(params).to_s
|
44
|
-
JSON.parse(result.gsub('},{', ','))
|
45
|
-
end
|
46
|
-
|
47
|
-
def create(data)
|
48
|
-
result = @client.api_request(:method => "item.create", :params => [merge_params(data)] )
|
49
|
-
result.empty? ? nil : result['itemids'][0].to_i
|
50
|
-
end
|
51
|
-
|
52
|
-
def add(data)
|
53
|
-
create(data)
|
54
|
-
end
|
55
|
-
|
56
|
-
def get_full_data(data)
|
57
|
-
@client.api_request(:method => "item.get", :params => {:filter => data, :output => "extend"})
|
58
|
-
end
|
59
|
-
|
60
|
-
def get_id(data)
|
61
|
-
result = get_full_data(data)
|
62
|
-
itemid = nil
|
63
|
-
result.each { |item| itemid = item['itemid'].to_i if item['name'] == data[:name] }
|
64
|
-
itemid
|
65
|
-
end
|
66
|
-
|
67
|
-
def create_or_update(data)
|
68
|
-
itemid = get_id(:description => data[:description], :hostid => data[:hostid])
|
69
|
-
itemid ? update(data.merge(:itemid => itemid)) : create(data)
|
70
|
-
end
|
71
|
-
|
72
|
-
def update(data)
|
73
|
-
result = @client.api_request(:method => "item.update", :params => data)
|
74
|
-
result.empty? ? nil : result['itemids'][0].to_i
|
75
|
-
end
|
76
|
-
|
77
|
-
def delete(data)
|
78
|
-
result = @client.api_request(:method => "item.delete", :params => [data])
|
79
|
-
result.empty? ? nil : result['itemids'][0].to_i
|
80
|
-
end
|
81
|
-
|
82
|
-
def destroy(data)
|
83
|
-
delete(data)
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
end
|
data/lib/zabbixapi/mediatypes.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
class ZabbixApi
|
2
|
-
class Mediatypes
|
3
|
-
|
4
|
-
def initialize(client)
|
5
|
-
@client = client
|
6
|
-
@default_mediatype_options = {
|
7
|
-
:description => "", #Name
|
8
|
-
:type => 0, #0 - Email, 1 - External script, 2 - SMS, 3 - Jabber, 100 - EzTexting
|
9
|
-
:smtp_server => "",
|
10
|
-
:smtp_helo => "",
|
11
|
-
:smtp_email => "", #Email address of Zabbix server
|
12
|
-
:exec_path => "", #Name of external script
|
13
|
-
:gsm_modem => "", #Serial device name of GSM modem
|
14
|
-
:username => "", #Jabber user name used by Zabbix server
|
15
|
-
:passwd => "" #Jabber password used by Zabbix server
|
16
|
-
}
|
17
|
-
end
|
18
|
-
|
19
|
-
# Create MediaType
|
20
|
-
#
|
21
|
-
# * *Args* :
|
22
|
-
# - +data+ -> Hash with :description => "MediaGroup" and mediatype options
|
23
|
-
# * *Returns* :
|
24
|
-
# - Nil or Integer
|
25
|
-
def create(data)
|
26
|
-
result = @client.api_request(:method => "mediatype.create", :params => data)
|
27
|
-
result ? result['mediatypeids'][0].to_i : nil
|
28
|
-
end
|
29
|
-
|
30
|
-
# Add MediaType
|
31
|
-
# Synonym create
|
32
|
-
def add(data)
|
33
|
-
create(data)
|
34
|
-
end
|
35
|
-
|
36
|
-
# Delete MediaType
|
37
|
-
#
|
38
|
-
# * *Args* :
|
39
|
-
# - +data+ -> Array with mediatypeids
|
40
|
-
# * *Returns* :
|
41
|
-
# - Nil or Integer
|
42
|
-
def delete(data)
|
43
|
-
result = @client.api_request(:method => "mediatype.delete", :params => [data])
|
44
|
-
result ? result['mediatypeids'][0].to_i : nil
|
45
|
-
end
|
46
|
-
|
47
|
-
# Destroy MediaType
|
48
|
-
# Synonym delete
|
49
|
-
def destroy(data)
|
50
|
-
delete(data)
|
51
|
-
end
|
52
|
-
|
53
|
-
# Get MediaType info
|
54
|
-
#
|
55
|
-
# * *Args* :
|
56
|
-
# - +data+ -> Hash with :description => "MediaType"
|
57
|
-
# * *Returns* :
|
58
|
-
# - Nil or Integer
|
59
|
-
def get_full_data(data)
|
60
|
-
@client.api_request(
|
61
|
-
:method => "mediatype.get",
|
62
|
-
:params => {
|
63
|
-
:search => {:description => data[:description]},
|
64
|
-
:output => "extend"
|
65
|
-
}
|
66
|
-
)
|
67
|
-
end
|
68
|
-
|
69
|
-
def get(data)
|
70
|
-
get_full_data(data)
|
71
|
-
end
|
72
|
-
|
73
|
-
# Return MediaTypeid
|
74
|
-
#
|
75
|
-
# * *Args* :
|
76
|
-
# - +data+ -> Hash with :description => "MediaType"
|
77
|
-
# * *Returns* :
|
78
|
-
# - Nil or Integer
|
79
|
-
def get_id(data)
|
80
|
-
result = get_full_data(data)
|
81
|
-
mediatypeid = nil
|
82
|
-
result.each { |mt| mediatypeid = mt['mediatypeid'].to_i if mt['description'] == data[:description] }
|
83
|
-
mediatypeid
|
84
|
-
end
|
85
|
-
|
86
|
-
# Return MediaTypeid
|
87
|
-
#
|
88
|
-
# * *Args* :
|
89
|
-
# - +data+ -> Hash with :description => "MediaType"
|
90
|
-
# * *Returns* :
|
91
|
-
# - Nil or Integer
|
92
|
-
def update(data)
|
93
|
-
result = @client.api_request(:method => "mediatype.update", :params => data)
|
94
|
-
result.empty? ? nil : result['mediatypeids'][0].to_i
|
95
|
-
end
|
96
|
-
|
97
|
-
# Return MediaTypeid
|
98
|
-
#
|
99
|
-
# * *Args* :
|
100
|
-
# - +data+ -> Hash with :name => "UserGroup"
|
101
|
-
# * *Returns* :
|
102
|
-
# - Integer
|
103
|
-
def create_or_update(data)
|
104
|
-
mediatypeid = get_id(:description => data[:description], :mediatypeid => data[:mediatypeid])
|
105
|
-
mediatypeid ? update(data.merge(:mediatypeid => mediatypeid)) : create(data)
|
106
|
-
end
|
107
|
-
|
108
|
-
end
|
109
|
-
end
|
data/lib/zabbixapi/screens.rb
DELETED
@@ -1,132 +0,0 @@
|
|
1
|
-
class ZabbixApi
|
2
|
-
class Screens
|
3
|
-
|
4
|
-
# extracted from frontends/php/include/defines.inc.php
|
5
|
-
#SCREEN_RESOURCE_GRAPH => 0,
|
6
|
-
#SCREEN_RESOURCE_SIMPLE_GRAPH => 1,
|
7
|
-
#SCREEN_RESOURCE_MAP => 2,
|
8
|
-
#SCREEN_RESOURCE_PLAIN_TEXT => 3,
|
9
|
-
#SCREEN_RESOURCE_HOSTS_INFO => 4,
|
10
|
-
#SCREEN_RESOURCE_TRIGGERS_INFO => 5,
|
11
|
-
#SCREEN_RESOURCE_SERVER_INFO => 6,
|
12
|
-
#SCREEN_RESOURCE_CLOCK => 7,
|
13
|
-
#SCREEN_RESOURCE_SCREEN => 8,
|
14
|
-
#SCREEN_RESOURCE_TRIGGERS_OVERVIEW => 9,
|
15
|
-
#SCREEN_RESOURCE_DATA_OVERVIEW => 10,
|
16
|
-
#SCREEN_RESOURCE_URL => 11,
|
17
|
-
#SCREEN_RESOURCE_ACTIONS => 12,
|
18
|
-
#SCREEN_RESOURCE_EVENTS => 13,
|
19
|
-
#SCREEN_RESOURCE_HOSTGROUP_TRIGGERS => 14,
|
20
|
-
#SCREEN_RESOURCE_SYSTEM_STATUS => 15,
|
21
|
-
#SCREEN_RESOURCE_HOST_TRIGGERS => 16
|
22
|
-
|
23
|
-
def initialize(client)
|
24
|
-
@client = client
|
25
|
-
@screen_default_options = {
|
26
|
-
:vsize => 3
|
27
|
-
}
|
28
|
-
end
|
29
|
-
|
30
|
-
# Create screen
|
31
|
-
#
|
32
|
-
# * *Args* :
|
33
|
-
# - +data+ -> Hash with :name => "Screen name", hsize (rows) and vsize (columns) and array :screenitems => []
|
34
|
-
# screenitems contains :resourcetype (0 - graph), :resourcetypeid (id item) and :x and :y position
|
35
|
-
# * *Returns* :
|
36
|
-
# - Nil or Integer
|
37
|
-
def create(data)
|
38
|
-
result = @client.api_request(:method => "screen.create", :params => data)
|
39
|
-
result ? result['screenids'][0].to_i : nil
|
40
|
-
end
|
41
|
-
|
42
|
-
# Create screen
|
43
|
-
# Synonym create
|
44
|
-
def add(data)
|
45
|
-
create(data)
|
46
|
-
end
|
47
|
-
|
48
|
-
# Update screen
|
49
|
-
#
|
50
|
-
# * *Args* :
|
51
|
-
# - +data+ -> Hash with :screenid => [ "screenid" ]
|
52
|
-
# * *Returns* :
|
53
|
-
# - Nil or Integer
|
54
|
-
def update(data)
|
55
|
-
result = @client.api_request(:method => "screen.update", :params => data)
|
56
|
-
result ? result['screenids'][0].to_i : nil
|
57
|
-
end
|
58
|
-
|
59
|
-
# Return info about screen
|
60
|
-
#
|
61
|
-
# * *Args* :
|
62
|
-
# - +data+ -> Hash with :name => "Screen name"
|
63
|
-
# * *Returns* :
|
64
|
-
# - Hash with screen info
|
65
|
-
def get_full_data(data)
|
66
|
-
result = @client.api_request(:method => "screen.get", :params => {:search => data, :output => "extend"})
|
67
|
-
result.empty? ? [] : result
|
68
|
-
end
|
69
|
-
|
70
|
-
# Return screenid
|
71
|
-
#
|
72
|
-
# * *Args* :
|
73
|
-
# - +data+ -> Hash with :name => "Screen name"
|
74
|
-
# * *Returns* :
|
75
|
-
# - Nil or Integer
|
76
|
-
def get_id(data)
|
77
|
-
result = get_full_data(data)
|
78
|
-
screenid = nil
|
79
|
-
result.each { |screen| screenid = screen['screenid'].to_i if screen['name'] == data[:name] }
|
80
|
-
screenid
|
81
|
-
end
|
82
|
-
|
83
|
-
# Delete screen
|
84
|
-
#
|
85
|
-
# * *Args* :
|
86
|
-
# - +data+ -> Hash with :params => [screenid]
|
87
|
-
# * *Returns* :
|
88
|
-
# - Nil or Integer
|
89
|
-
def delete(data)
|
90
|
-
result = @client.api_request(:method => "screen.delete", :params => data)
|
91
|
-
result.empty? ? nil : result['screenids'][0].to_i
|
92
|
-
end
|
93
|
-
|
94
|
-
# Create screen all graphs for host
|
95
|
-
#
|
96
|
-
# * *Args* :
|
97
|
-
# - +data+ -> Hash with :host=> "hostname", :graphsid => [], [:hsize, :vsize, :valign, :halign]
|
98
|
-
# * *Returns* :
|
99
|
-
# - Nil or Integer
|
100
|
-
def get_or_create_for_host(data)
|
101
|
-
screen_name = data[:host].to_s + "_graphs"
|
102
|
-
graphids = data[:graphids]
|
103
|
-
screenitems = []
|
104
|
-
hsize = data[:hsize] || 3
|
105
|
-
valign = data[:valign] || 2
|
106
|
-
halign = data[:halign] || 2
|
107
|
-
vsize = data[:vsize] || ((graphids.size/hsize) + 1).to_i
|
108
|
-
screenid = get_id(:name => screen_name)
|
109
|
-
unless screenid
|
110
|
-
# Create screen
|
111
|
-
graphids.each_with_index do |graphid, index|
|
112
|
-
screenitems << {
|
113
|
-
:resourcetype => 0,
|
114
|
-
:resourceid => graphid,
|
115
|
-
:x => (index % hsize).to_i,
|
116
|
-
:y => (index % graphids.size/hsize).to_i,
|
117
|
-
:valign =>valign,
|
118
|
-
:halign =>halign
|
119
|
-
}
|
120
|
-
end
|
121
|
-
screenid = create(
|
122
|
-
:name => screen_name,
|
123
|
-
:hsize => hsize,
|
124
|
-
:vsize => vsize,
|
125
|
-
:screenitems => screenitems
|
126
|
-
)
|
127
|
-
end
|
128
|
-
screenid
|
129
|
-
end
|
130
|
-
|
131
|
-
end
|
132
|
-
end
|