zabbixapi 0.4.8 → 0.4.9
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 +15 -1
- data/lib/zabbixapi/hostgroups.rb +13 -1
- data/lib/zabbixapi/usergroups.rb +125 -0
- data/lib/zabbixapi/version.rb +1 -1
- data/lib/zabbixapi.rb +3 -0
- data/spec/localhost.rb +33 -2
- data/spec/run.rb +31 -0
- metadata +3 -2
data/README.md
CHANGED
|
@@ -212,11 +212,25 @@ zbx.graphs.delete(zbx.graphs.get_id(:name => "graph"))
|
|
|
212
212
|
### Create screen for host ###
|
|
213
213
|
```ruby
|
|
214
214
|
zbx.screens.get_or_create_for_host(
|
|
215
|
-
:
|
|
215
|
+
:host => "hostname",
|
|
216
216
|
:graphids => zbx.graphs.get_ids_by_host(:host => "hostname")
|
|
217
217
|
)
|
|
218
218
|
```
|
|
219
219
|
|
|
220
|
+
### Create UserGroup, add user and add rights ###
|
|
221
|
+
```ruby
|
|
222
|
+
zbx.usergroups.add(:name => "Some user group")
|
|
223
|
+
zbx.usergroups.add_user(
|
|
224
|
+
:usrgrpids => [zbx.usergroups.get_id(:name => "Some user group")],
|
|
225
|
+
:userids => [zbx.users.get_id(:name => "Some user")]
|
|
226
|
+
)
|
|
227
|
+
# get read permissions for UserGroup on all hostgroup
|
|
228
|
+
zbx.usergroups.set_perm_read(
|
|
229
|
+
:usrgrpids => zbx.usergroups.get_or_create(:name => "Some user group"),
|
|
230
|
+
:hostgroupids => zbx.hostgroups.all.values
|
|
231
|
+
)
|
|
232
|
+
```
|
|
233
|
+
|
|
220
234
|
### Custom queries
|
|
221
235
|
```ruby
|
|
222
236
|
zbx.query(
|
data/lib/zabbixapi/hostgroups.rb
CHANGED
|
@@ -40,6 +40,18 @@ class ZabbixApi
|
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
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
|
+
|
|
43
55
|
def get_id(data)
|
|
44
56
|
result = get_full_data(data)
|
|
45
57
|
hostgroupid = nil
|
|
@@ -48,4 +60,4 @@ class ZabbixApi
|
|
|
48
60
|
end
|
|
49
61
|
|
|
50
62
|
end
|
|
51
|
-
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
class ZabbixApi
|
|
2
|
+
class Usergroups
|
|
3
|
+
|
|
4
|
+
def initialize(options = {})
|
|
5
|
+
@client = Client.new(options)
|
|
6
|
+
@options = options
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Create UserGroup
|
|
10
|
+
#
|
|
11
|
+
# * *Args* :
|
|
12
|
+
# - +data+ -> Hash with :name => "UserGroup"
|
|
13
|
+
# * *Returns* :
|
|
14
|
+
# - Nil or Integer
|
|
15
|
+
def create(data)
|
|
16
|
+
result = @client.api_request(:method => "usergroup.create", :params => data)
|
|
17
|
+
result ? result['usrgrpids'][0].to_i : nil
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Add UserGroup
|
|
21
|
+
# Synonym create
|
|
22
|
+
def add(data)
|
|
23
|
+
create(data)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Delete UserGroup
|
|
27
|
+
#
|
|
28
|
+
# * *Args* :
|
|
29
|
+
# - +data+ -> Array with usrgrpids
|
|
30
|
+
# * *Returns* :
|
|
31
|
+
# - Nil or Integer
|
|
32
|
+
def delete(data)
|
|
33
|
+
result = @client.api_request(:method => "usergroup.delete", :params => data)
|
|
34
|
+
result ? result['usrgrpids'][0].to_i : nil
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Destroy UserGroup
|
|
38
|
+
# Synonym delete
|
|
39
|
+
def destroy(data)
|
|
40
|
+
delete(data)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Get UserGroup info
|
|
44
|
+
#
|
|
45
|
+
# * *Args* :
|
|
46
|
+
# - +data+ -> Hash with :name => "UserGroup"
|
|
47
|
+
# * *Returns* :
|
|
48
|
+
# - Nil or Integer
|
|
49
|
+
def get_full_data(data)
|
|
50
|
+
@client.api_request(
|
|
51
|
+
:method => "usergroup.get",
|
|
52
|
+
:params => {
|
|
53
|
+
:filter => [data[:name]],
|
|
54
|
+
:output => "extend"
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def get(data)
|
|
60
|
+
get_full_data(data)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Return usrgrpid
|
|
64
|
+
#
|
|
65
|
+
# * *Args* :
|
|
66
|
+
# - +data+ -> Hash with :name => "UserGroup"
|
|
67
|
+
# * *Returns* :
|
|
68
|
+
# - Nil or Integer
|
|
69
|
+
def get_id(data)
|
|
70
|
+
result = get_full_data(data)
|
|
71
|
+
usrgrpid = nil
|
|
72
|
+
result.each { |usr| usrgrpid = usr['usrgrpid'].to_i if usr['name'] == data[:name] }
|
|
73
|
+
usrgrpid
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Return usrgrpid
|
|
77
|
+
#
|
|
78
|
+
# * *Args* :
|
|
79
|
+
# - +data+ -> Hash with :name => "UserGroup"
|
|
80
|
+
# * *Returns* :
|
|
81
|
+
# - Integer
|
|
82
|
+
def get_or_create(data)
|
|
83
|
+
usrgrpid = get_id(data)
|
|
84
|
+
if usrgrpid.nil?
|
|
85
|
+
usrgrpid = create(data)
|
|
86
|
+
end
|
|
87
|
+
usrgrpid
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Set read permisssion for usrgrp on some hostgroup
|
|
91
|
+
#
|
|
92
|
+
# * *Args* :
|
|
93
|
+
# - +data+ -> Hash with :usrgrpids => id, :hostgroupids => []
|
|
94
|
+
# * *Returns* :
|
|
95
|
+
# - Integer
|
|
96
|
+
def set_perm_read(data)
|
|
97
|
+
result = @client.api_request(
|
|
98
|
+
:method => "usergroup.massAdd",
|
|
99
|
+
:params => {
|
|
100
|
+
:usrgrpids => [data[:usrgrpids]],
|
|
101
|
+
:rights => data[:hostgroupids].map { |t| {:permission => 2, :id => t} }
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
result ? result['usrgrpids'][0].to_i : nil
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Update usergroup, add user
|
|
108
|
+
#
|
|
109
|
+
# * *Args* :
|
|
110
|
+
# - +data+ -> Hash with :usrgrpids => id, :userids => []
|
|
111
|
+
# * *Returns* :
|
|
112
|
+
# - Integer
|
|
113
|
+
def add_user(data)
|
|
114
|
+
result = @client.api_request(
|
|
115
|
+
:method => "usergroup.massAdd",
|
|
116
|
+
:params => {
|
|
117
|
+
:usrgrpids => data[:usrgrpids],
|
|
118
|
+
:userids => data[:userids]
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
result ? result['usrgrpids'][0].to_i : nil
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
end
|
data/lib/zabbixapi/version.rb
CHANGED
data/lib/zabbixapi.rb
CHANGED
|
@@ -10,6 +10,7 @@ require "zabbixapi/triggers"
|
|
|
10
10
|
require "zabbixapi/items"
|
|
11
11
|
require "zabbixapi/graphs"
|
|
12
12
|
require "zabbixapi/screens"
|
|
13
|
+
require "zabbixapi/usergroups"
|
|
13
14
|
|
|
14
15
|
class ZabbixApi
|
|
15
16
|
|
|
@@ -24,6 +25,7 @@ class ZabbixApi
|
|
|
24
25
|
attr :triggers
|
|
25
26
|
attr :graphs
|
|
26
27
|
attr :screens
|
|
28
|
+
attr :usergroups
|
|
27
29
|
|
|
28
30
|
def self.connect(options = {})
|
|
29
31
|
new(options)
|
|
@@ -49,6 +51,7 @@ class ZabbixApi
|
|
|
49
51
|
@triggers = Triggers.new(options)
|
|
50
52
|
@graphs = Graphs.new(options)
|
|
51
53
|
@screens = Screens.new(options)
|
|
54
|
+
@usergroups = Usergroups.new(options)
|
|
52
55
|
end
|
|
53
56
|
|
|
54
57
|
end
|
data/spec/localhost.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require 'zabbixapi'
|
|
2
2
|
|
|
3
3
|
# settings
|
|
4
|
-
#api_url = 'http://zabbix/zabbix12/api_jsonrpc.php'
|
|
5
4
|
api_url = 'http://zabbix/api_jsonrpc.php'
|
|
6
5
|
#api_url = 'http://zabbix/zabbix20/api_jsonrpc.php'
|
|
7
6
|
|
|
@@ -12,7 +11,7 @@ zbx = ZabbixApi.connect(
|
|
|
12
11
|
:url => api_url,
|
|
13
12
|
:user => api_login,
|
|
14
13
|
:password => api_password,
|
|
15
|
-
:debug =>
|
|
14
|
+
:debug => true
|
|
16
15
|
)
|
|
17
16
|
|
|
18
17
|
hostgroup = "hostgroup______1"
|
|
@@ -23,8 +22,10 @@ host = "hostname____1"
|
|
|
23
22
|
trigger = "trigger____1"
|
|
24
23
|
user = "user____1"
|
|
25
24
|
user2 = "user____2"
|
|
25
|
+
usergroup = "SomeUserGroup"
|
|
26
26
|
graph = "graph___a"
|
|
27
27
|
|
|
28
|
+
|
|
28
29
|
puts "### Zabbix API server version #{zbx.server.version} ###"
|
|
29
30
|
|
|
30
31
|
describe ZabbixApi, "test_api" do
|
|
@@ -49,6 +50,10 @@ describe ZabbixApi, "test_api" do
|
|
|
49
50
|
zbx.hostgroups.get_or_create(:name => hostgroup).should be_kind_of(Integer)
|
|
50
51
|
end
|
|
51
52
|
|
|
53
|
+
it "HOSTGROUP: Get all" do
|
|
54
|
+
zbx.hostgroups.all.should be_kind_of(Hash)
|
|
55
|
+
end
|
|
56
|
+
|
|
52
57
|
it "TEMPLATE: Create" do
|
|
53
58
|
zbx.templates.create(
|
|
54
59
|
:host => template,
|
|
@@ -353,10 +358,36 @@ describe ZabbixApi, "test_api" do
|
|
|
353
358
|
zbx.users.get_id(:name => "#{user}_____")
|
|
354
359
|
end
|
|
355
360
|
|
|
361
|
+
it "USERGROUPS: Create" do
|
|
362
|
+
zbx.usergroups.create(:name => usergroup).should be_kind_of(Integer)
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
it "USERGROUPS: Create or update" do
|
|
366
|
+
zbx.usergroups.get_or_create(:name => usergroup).should be_kind_of(Integer)
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
it "USERGROUPS: Add user" do
|
|
370
|
+
zbx.usergroups.add_user(
|
|
371
|
+
:usrgrpids => [zbx.usergroups.get_id(:name => usergroup)],
|
|
372
|
+
:userids => [zbx.users.get_id(:name => user2)]
|
|
373
|
+
).should be_kind_of(Integer)
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
it "USERGROUPS: Set UserGroup read perm" do
|
|
377
|
+
puts zbx.usergroups.set_perm_read(
|
|
378
|
+
:usrgrpids => zbx.usergroups.get_or_create(:name => usergroup).to_s,
|
|
379
|
+
:hostgroupids => zbx.hostgroups.all.values
|
|
380
|
+
)
|
|
381
|
+
end
|
|
382
|
+
|
|
356
383
|
it "USER: Delete" do
|
|
357
384
|
zbx.users.delete(zbx.users.get_id(:name => user2)).should be_kind_of(Integer)
|
|
358
385
|
end
|
|
359
386
|
|
|
387
|
+
it "USERGROUPS: Delete" do
|
|
388
|
+
zbx.usergroups.delete([zbx.usergroups.get_id(:name => usergroup)]).should be_kind_of(Integer)
|
|
389
|
+
end
|
|
390
|
+
|
|
360
391
|
it "QUERY" do
|
|
361
392
|
zbx.query(
|
|
362
393
|
:method => "apiinfo.version",
|
data/spec/run.rb
CHANGED
|
@@ -20,6 +20,7 @@ host = "hostname"
|
|
|
20
20
|
trigger = "trigger"
|
|
21
21
|
user = "user"
|
|
22
22
|
user2 = "user2"
|
|
23
|
+
usergroup = "SomeUserGroup"
|
|
23
24
|
graph = "graph"
|
|
24
25
|
|
|
25
26
|
puts "### Zabbix API server version #{zbx.server.version} ###"
|
|
@@ -46,6 +47,10 @@ describe ZabbixApi, "test_api" do
|
|
|
46
47
|
zbx.hostgroups.get_or_create(:name => hostgroup).should be_kind_of(Integer)
|
|
47
48
|
end
|
|
48
49
|
|
|
50
|
+
it "HOSTGROUP: Get all" do
|
|
51
|
+
zbx.hostgroups.all.should be_kind_of(Hash)
|
|
52
|
+
end
|
|
53
|
+
|
|
49
54
|
it "TEMPLATE: Create" do
|
|
50
55
|
zbx.templates.create(
|
|
51
56
|
:host => template,
|
|
@@ -350,10 +355,36 @@ describe ZabbixApi, "test_api" do
|
|
|
350
355
|
zbx.users.get_id(:name => "#{user}_____")
|
|
351
356
|
end
|
|
352
357
|
|
|
358
|
+
it "USERGROUPS: Create" do
|
|
359
|
+
zbx.usergroups.create(:name => usergroup).should be_kind_of(Integer)
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
it "USERGROUPS: Create or update" do
|
|
363
|
+
zbx.usergroups.get_or_create(:name => usergroup).should be_kind_of(Integer)
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
it "USERGROUPS: Add user" do
|
|
367
|
+
zbx.usergroups.add_user(
|
|
368
|
+
:usrgrpids => [zbx.usergroups.get_id(:name => usergroup)],
|
|
369
|
+
:userids => [zbx.users.get_id(:name => user2)]
|
|
370
|
+
).should be_kind_of(Integer)
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
it "USERGROUPS: Set UserGroup read perm" do
|
|
374
|
+
puts zbx.usergroups.set_perm_read(
|
|
375
|
+
:usrgrpids => zbx.usergroups.get_or_create(:name => usergroup).to_s,
|
|
376
|
+
:hostgroupids => zbx.hostgroups.all.values
|
|
377
|
+
)
|
|
378
|
+
end
|
|
379
|
+
|
|
353
380
|
it "USER: Delete" do
|
|
354
381
|
zbx.users.delete(zbx.users.get_id(:name => user2)).should be_kind_of(Integer)
|
|
355
382
|
end
|
|
356
383
|
|
|
384
|
+
it "USERGROUPS: Delete" do
|
|
385
|
+
zbx.usergroups.delete([zbx.usergroups.get_id(:name => usergroup)]).should be_kind_of(Integer)
|
|
386
|
+
end
|
|
387
|
+
|
|
357
388
|
it "QUERY" do
|
|
358
389
|
zbx.query(
|
|
359
390
|
:method => "apiinfo.version",
|
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.4.
|
|
4
|
+
version: 0.4.9
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -37,6 +37,7 @@ files:
|
|
|
37
37
|
- lib/zabbixapi/server.rb
|
|
38
38
|
- lib/zabbixapi/templates.rb
|
|
39
39
|
- lib/zabbixapi/triggers.rb
|
|
40
|
+
- lib/zabbixapi/usergroups.rb
|
|
40
41
|
- lib/zabbixapi/users.rb
|
|
41
42
|
- lib/zabbixapi/version.rb
|
|
42
43
|
- spec/localhost.rb
|
|
@@ -57,7 +58,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
57
58
|
version: '0'
|
|
58
59
|
segments:
|
|
59
60
|
- 0
|
|
60
|
-
hash:
|
|
61
|
+
hash: 772966212321473365
|
|
61
62
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
63
|
none: false
|
|
63
64
|
requirements:
|