zapix 0.1.1 → 0.1.2
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/lib/zapix/proxies/actions.rb +6 -6
- data/lib/zapix/proxies/applications.rb +5 -5
- data/lib/zapix/proxies/hostgroups.rb +13 -17
- data/lib/zapix/proxies/hostinterfaces.rb +5 -9
- data/lib/zapix/proxies/hosts.rb +12 -12
- data/lib/zapix/proxies/scenarios.rb +8 -11
- data/lib/zapix/proxies/templates.rb +5 -6
- data/lib/zapix/proxies/triggers.rb +7 -7
- data/lib/zapix/proxies/usergroups.rb +6 -6
- data/lib/zapix/proxies/users.rb +7 -11
- data/lib/zapix/version.rb +1 -1
- data/lib/zapix.rb +11 -11
- data/spec/zapix_specs.rb +1 -1
- metadata +4 -5
- data/lib/zapix/proxies/basic.rb +0 -5
@@ -1,21 +1,21 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'base'
|
2
2
|
|
3
|
-
class Actions <
|
3
|
+
class Actions < Base
|
4
4
|
def exists?(options)
|
5
|
-
|
5
|
+
client.action_exists(options)
|
6
6
|
end
|
7
7
|
|
8
8
|
def create(options)
|
9
|
-
|
9
|
+
client.action_create(options) unless exists?(options)
|
10
10
|
end
|
11
11
|
|
12
12
|
def get_id(options)
|
13
|
-
result =
|
13
|
+
result = client.action_get({
|
14
14
|
'filter' => {'name' => options['name']}})
|
15
15
|
result.first['actionid']
|
16
16
|
end
|
17
17
|
|
18
18
|
def delete(*action_ids)
|
19
|
-
|
19
|
+
client.action_delete(action_ids)
|
20
20
|
end
|
21
21
|
end
|
@@ -1,18 +1,18 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'base'
|
2
2
|
|
3
|
-
class Applications <
|
3
|
+
class Applications < Base
|
4
4
|
|
5
5
|
def create(options)
|
6
|
-
|
6
|
+
client.application_create(options) unless exists?(options)
|
7
7
|
end
|
8
8
|
|
9
9
|
def exists?(options)
|
10
|
-
|
10
|
+
client.application_exists(options)
|
11
11
|
end
|
12
12
|
|
13
13
|
def get_id(options)
|
14
14
|
if exists?(options)
|
15
|
-
|
15
|
+
client.application_get({
|
16
16
|
'filter' => {'name' => options['name'],
|
17
17
|
'hostid' => options['hostid']}}).first['applicationid']
|
18
18
|
else
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'base'
|
2
2
|
|
3
|
-
class HostGroups <
|
3
|
+
class HostGroups < Base
|
4
4
|
|
5
5
|
def mass_create(*names)
|
6
6
|
names.each do |group_name|
|
@@ -9,25 +9,25 @@ class HostGroups < Basic
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def create(name)
|
12
|
-
|
12
|
+
client.hostgroup_create({'name' => name}) unless exists?(name)
|
13
13
|
end
|
14
14
|
|
15
15
|
def create_or_update(name)
|
16
16
|
if(exists?(name))
|
17
17
|
id = get_id(name)
|
18
|
-
|
18
|
+
client.hostgroup_update({'groupid' => id,'name' => name})
|
19
19
|
else
|
20
20
|
create(name)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
def exists?(name)
|
25
|
-
|
25
|
+
client.hostgroup_exists({'name' => name})
|
26
26
|
end
|
27
27
|
|
28
28
|
def get_id(name)
|
29
29
|
if(exists?(name))
|
30
|
-
result =
|
30
|
+
result = client.hostgroup_get({'filter' => {'name' => [name]}})
|
31
31
|
result[0]['groupid']
|
32
32
|
else
|
33
33
|
raise NonExistingHostgroup, "Hostgroup #{name} does not exist !"
|
@@ -41,18 +41,14 @@ class HostGroups < Basic
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def get_host_ids_of(hostgroup)
|
44
|
-
result =
|
44
|
+
result = client.hostgroup_get('filter' => {'name' => [hostgroup]}, 'selectHosts' => 'refer')
|
45
45
|
extract_host_ids(result)
|
46
46
|
end
|
47
47
|
|
48
48
|
def any_hosts?(hostgroup)
|
49
49
|
raise NonExistingHostgroup, "Hostgroup #{hostgroup} does not exist !" unless exists?(hostgroup)
|
50
|
-
result =
|
51
|
-
|
52
|
-
true
|
53
|
-
else
|
54
|
-
false
|
55
|
-
end
|
50
|
+
result = client.hostgroup_get('filter' => {'name' => [hostgroup]}, 'selectHosts' => 'count').first['hosts'].to_i
|
51
|
+
result >= 1 ? true : false
|
56
52
|
end
|
57
53
|
|
58
54
|
def delete(name)
|
@@ -63,12 +59,12 @@ class HostGroups < Basic
|
|
63
59
|
# delete all hosts attached to a hostgroup
|
64
60
|
host_ids = get_host_ids_of(name)
|
65
61
|
host_ids.each do |id|
|
66
|
-
|
62
|
+
client.host_delete(['hostid' => id])
|
67
63
|
end
|
68
64
|
# now it is ok to delete the group
|
69
|
-
|
65
|
+
client.hostgroup_delete([get_id(name)])
|
70
66
|
else
|
71
|
-
|
67
|
+
client.hostgroup_delete([get_id(name)])
|
72
68
|
end
|
73
69
|
else
|
74
70
|
raise NonExistingHostgroup, "Hostgroup #{name} does not exist !"
|
@@ -78,7 +74,7 @@ class HostGroups < Basic
|
|
78
74
|
def get_all
|
79
75
|
# the fucking API also returns the ids and that's
|
80
76
|
# why we need to extract the names
|
81
|
-
host_groups_with_ids =
|
77
|
+
host_groups_with_ids = client.hostgroup_get({'output' => ['name']})
|
82
78
|
extract_host_groups(host_groups_with_ids)
|
83
79
|
end
|
84
80
|
|
@@ -1,21 +1,17 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'base'
|
2
2
|
|
3
|
-
class Hostinterfaces <
|
3
|
+
class Hostinterfaces < Base
|
4
4
|
|
5
5
|
def create(options)
|
6
|
-
|
6
|
+
client.hostinterface_create(options) unless exists?(options)
|
7
7
|
end
|
8
8
|
|
9
9
|
def exists?(options)
|
10
|
-
|
11
|
-
false
|
12
|
-
else
|
13
|
-
true
|
14
|
-
end
|
10
|
+
get(options).empty? ? false : true
|
15
11
|
end
|
16
12
|
|
17
13
|
def get(options)
|
18
|
-
|
14
|
+
client.hostinterface_get(
|
19
15
|
{'filter' => {'hostid' => options['hostid'],
|
20
16
|
'port' => options['port'],
|
21
17
|
'type' => options['type']},
|
data/lib/zapix/proxies/hosts.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
require_relative '
|
2
|
-
class Hosts <
|
1
|
+
require_relative 'base'
|
2
|
+
class Hosts < Base
|
3
3
|
|
4
4
|
def get_id(name)
|
5
5
|
if(exists?(name))
|
6
|
-
|
6
|
+
client.host_get({'filter' => {'host' => name}}).first['hostid']
|
7
7
|
else
|
8
8
|
raise NonExistingHost, "Host #{name} does not exist !"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
def create(options={})
|
13
|
-
|
13
|
+
client.host_create(options) unless exists?(options["host"])
|
14
14
|
end
|
15
15
|
|
16
16
|
def create_or_update(options={})
|
@@ -18,7 +18,7 @@ class Hosts < Basic
|
|
18
18
|
if exists?(options['host'])
|
19
19
|
id = get_id(options['host'])
|
20
20
|
options.merge!('hostid' => id)
|
21
|
-
|
21
|
+
client.host_update(options)
|
22
22
|
else
|
23
23
|
create(options)
|
24
24
|
end
|
@@ -26,24 +26,24 @@ class Hosts < Basic
|
|
26
26
|
|
27
27
|
def unlink_and_clear_templates(options={})
|
28
28
|
template_ids = options['template_ids'].map { |id| {'templateid' => id}}
|
29
|
-
|
29
|
+
client.host_update({'hostid' => options['host_id'], 'templates_clear' => template_ids})
|
30
30
|
end
|
31
31
|
|
32
32
|
def update_templates(options={})
|
33
33
|
template_ids = options['template_ids'].map { |id| {'templateid' => id}}
|
34
|
-
|
34
|
+
client.host_update({'hostid' => options['host_id'], 'templates' => template_ids})
|
35
35
|
end
|
36
36
|
|
37
37
|
def update_macros(options={})
|
38
|
-
|
38
|
+
client.host_update('hostid' => options['host_id'], 'macros' => options['macros'])
|
39
39
|
end
|
40
40
|
|
41
41
|
def exists?(name)
|
42
|
-
|
42
|
+
client.host_exists({'host' => name})
|
43
43
|
end
|
44
44
|
|
45
45
|
def get_all
|
46
|
-
host_names_and_ids =
|
46
|
+
host_names_and_ids = client.host_get({'output' => ['name']})
|
47
47
|
|
48
48
|
# the fucking api ALWAYS returns the ids and that's
|
49
49
|
# why we need to extract the names separately
|
@@ -53,7 +53,7 @@ class Hosts < Basic
|
|
53
53
|
|
54
54
|
def delete(name)
|
55
55
|
if exists?(name)
|
56
|
-
|
56
|
+
client.host_delete(['hostid' => get_id(name)])
|
57
57
|
else
|
58
58
|
raise NonExistingHost, "Host #{name} cannot be deleted because it does not exist !"
|
59
59
|
end
|
@@ -62,7 +62,7 @@ class Hosts < Basic
|
|
62
62
|
class NonExistingHost < StandardError; end
|
63
63
|
class EmptyHostname < StandardError; end
|
64
64
|
|
65
|
-
private
|
65
|
+
private
|
66
66
|
|
67
67
|
def extract_host_names(hosts_and_ids)
|
68
68
|
hosts_and_ids.map do |current_host|
|
@@ -1,29 +1,26 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'base'
|
2
2
|
|
3
|
-
class Scenarios <
|
3
|
+
class Scenarios < Base
|
4
4
|
def create(options)
|
5
|
-
|
5
|
+
client.webcheck_create(options) unless exists?(options)
|
6
6
|
end
|
7
7
|
|
8
8
|
def get_id(options)
|
9
|
-
|
9
|
+
client.webcheck_get({
|
10
10
|
'filter' => {'name' => options['name'],
|
11
11
|
'hostid' => options['hostid']}})
|
12
12
|
end
|
13
13
|
|
14
14
|
def delete(options)
|
15
|
-
|
15
|
+
client.webcheck_delete(options)
|
16
16
|
end
|
17
17
|
|
18
18
|
def exists?(options)
|
19
|
-
result =
|
19
|
+
result = client.webcheck_get({
|
20
20
|
'countOutput' => true,
|
21
21
|
'filter' => {'name' => options['name'],
|
22
22
|
'hostid' => options['hostid']}})
|
23
|
-
|
24
|
-
|
25
|
-
else
|
26
|
-
false
|
27
|
-
end
|
23
|
+
|
24
|
+
result.to_i >= 1 ? true : false
|
28
25
|
end
|
29
26
|
end
|
@@ -1,22 +1,21 @@
|
|
1
|
-
require_relative '
|
2
|
-
class Templates <
|
1
|
+
require_relative 'base'
|
2
|
+
class Templates < Base
|
3
3
|
|
4
4
|
def exists?(name)
|
5
|
-
|
5
|
+
client.template_exists({'name' => name})
|
6
6
|
end
|
7
7
|
|
8
8
|
def get_id(name)
|
9
9
|
if(exists?(name))
|
10
|
-
|
10
|
+
client.template_get({'filter' => {'name' => name}}).first['templateid']
|
11
11
|
else
|
12
12
|
raise NonExistingTemplate, "Template #{name} does not exist !"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
def get_templates_for_host(id)
|
17
|
-
|
17
|
+
client.template_get({'hostids' => [id]}).map { |result_set| result_set['templateid'] }
|
18
18
|
end
|
19
19
|
|
20
20
|
class NonExistingTemplate < StandardError; end
|
21
|
-
|
22
21
|
end
|
@@ -1,20 +1,20 @@
|
|
1
|
-
require_relative '
|
2
|
-
class Triggers <
|
1
|
+
require_relative 'base'
|
2
|
+
class Triggers < Base
|
3
3
|
|
4
4
|
def exists?(options)
|
5
|
-
|
5
|
+
client.trigger_exists(options)
|
6
6
|
end
|
7
7
|
|
8
8
|
def create(options)
|
9
|
-
|
9
|
+
client.trigger_create(options) unless exists?(options)
|
10
10
|
end
|
11
11
|
|
12
12
|
def delete(*trigger_ids)
|
13
|
-
|
13
|
+
client.trigger_delete(trigger_ids)
|
14
14
|
end
|
15
15
|
|
16
16
|
def get_id(options)
|
17
|
-
result =
|
17
|
+
result = client.trigger_get({'output' => 'extend',
|
18
18
|
'expandExpression' => true})
|
19
19
|
id = extract_id(result, options['expression'])
|
20
20
|
unless id.nil?
|
@@ -26,7 +26,7 @@ class Triggers < Basic
|
|
26
26
|
|
27
27
|
class NonExistingTrigger < StandardError; end
|
28
28
|
|
29
|
-
private
|
29
|
+
private
|
30
30
|
|
31
31
|
def extract_id(triggers, expression)
|
32
32
|
result = nil
|
@@ -1,18 +1,18 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'base'
|
2
2
|
|
3
|
-
class Usergroups <
|
3
|
+
class Usergroups < Base
|
4
4
|
|
5
5
|
def create(options)
|
6
|
-
|
6
|
+
client.usergroup_create(options) unless exists?(options)
|
7
7
|
end
|
8
8
|
|
9
9
|
def exists?(options)
|
10
|
-
|
10
|
+
client.usergroup_exists(options)
|
11
11
|
end
|
12
12
|
|
13
13
|
def get_id(options)
|
14
14
|
if(exists?(options))
|
15
|
-
result =
|
15
|
+
result = client.usergroup_get({
|
16
16
|
'filter' => {'name' => options['name']}})
|
17
17
|
result.first['usrgrpid']
|
18
18
|
else
|
@@ -21,7 +21,7 @@ class Usergroups < Basic
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def delete(*group_ids)
|
24
|
-
|
24
|
+
client.usergroup_delete(group_ids)
|
25
25
|
end
|
26
26
|
|
27
27
|
class NonExistingUsergroup < StandardError; end
|
data/lib/zapix/proxies/users.rb
CHANGED
@@ -1,29 +1,25 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'base'
|
2
2
|
|
3
|
-
class Users <
|
3
|
+
class Users < Base
|
4
4
|
def create(options)
|
5
|
-
|
5
|
+
client.user_create(options) unless exists?(options)
|
6
6
|
end
|
7
7
|
|
8
8
|
def exists?(options)
|
9
|
-
result =
|
10
|
-
|
11
|
-
false
|
12
|
-
else
|
13
|
-
true
|
14
|
-
end
|
9
|
+
result = client.user_get({'filter' => {'alias' => options['alias']}})
|
10
|
+
result.empty? ? false : true
|
15
11
|
end
|
16
12
|
|
17
13
|
def get_id(options)
|
18
14
|
if(exists?(options))
|
19
|
-
|
15
|
+
client.user_get({'filter' => {'alias' => options['alias']}}).first['userid']
|
20
16
|
else
|
21
17
|
raise NonExistingUser, "User #{options['alias']} does not exist !"
|
22
18
|
end
|
23
19
|
end
|
24
20
|
|
25
21
|
def delete(usergroup_ids)
|
26
|
-
|
22
|
+
client.user_delete(usergroup_ids)
|
27
23
|
end
|
28
24
|
|
29
25
|
class NonExistingUser < StandardError; end
|
data/lib/zapix/version.rb
CHANGED
data/lib/zapix.rb
CHANGED
@@ -2,7 +2,7 @@ require 'zapix/version'
|
|
2
2
|
require_relative 'zapix/zabbix_rpc_client'
|
3
3
|
|
4
4
|
class ZabbixAPI
|
5
|
-
|
5
|
+
attr_reader :client
|
6
6
|
|
7
7
|
def self.connect(options = {})
|
8
8
|
new(options)
|
@@ -15,43 +15,43 @@ class ZabbixAPI
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def hostgroups
|
18
|
-
@hostgroups ||= HostGroups.new(
|
18
|
+
@hostgroups ||= HostGroups.new(client)
|
19
19
|
end
|
20
20
|
|
21
21
|
def hosts
|
22
|
-
@hosts ||= Hosts.new(
|
22
|
+
@hosts ||= Hosts.new(client)
|
23
23
|
end
|
24
24
|
|
25
25
|
def templates
|
26
|
-
@templates ||= Templates.new(
|
26
|
+
@templates ||= Templates.new(client)
|
27
27
|
end
|
28
28
|
|
29
29
|
def applications
|
30
|
-
@applications ||= Applications.new(
|
30
|
+
@applications ||= Applications.new(client)
|
31
31
|
end
|
32
32
|
|
33
33
|
def scenarios
|
34
|
-
@scenarios ||= Scenarios.new(
|
34
|
+
@scenarios ||= Scenarios.new(client)
|
35
35
|
end
|
36
36
|
|
37
37
|
def triggers
|
38
|
-
@triggers ||= Triggers.new(
|
38
|
+
@triggers ||= Triggers.new(client)
|
39
39
|
end
|
40
40
|
|
41
41
|
def hostinterfaces
|
42
|
-
@hostinterfaces ||= Hostinterfaces.new(
|
42
|
+
@hostinterfaces ||= Hostinterfaces.new(client)
|
43
43
|
end
|
44
44
|
|
45
45
|
def actions
|
46
|
-
@actions ||= Actions.new(
|
46
|
+
@actions ||= Actions.new(client)
|
47
47
|
end
|
48
48
|
|
49
49
|
def usergroups
|
50
|
-
@usergroups ||= Usergroups.new(
|
50
|
+
@usergroups ||= Usergroups.new(client)
|
51
51
|
end
|
52
52
|
|
53
53
|
def users
|
54
|
-
@users ||= Users.new(
|
54
|
+
@users ||= Users.new(client)
|
55
55
|
end
|
56
56
|
|
57
57
|
end
|
data/spec/zapix_specs.rb
CHANGED
@@ -21,7 +21,7 @@ non_existing_trigger_expression = '{vfs.file.cksum[/etc/passwd].diff(0)}>0'
|
|
21
21
|
existing_action_name = 'Report problems to Zabbix administrators'
|
22
22
|
non_existing_action_name = 'No action defined'
|
23
23
|
test_usergroup = 'Operation managers test'
|
24
|
-
existing_usergroup = '
|
24
|
+
existing_usergroup = 'Zabbix administrators'
|
25
25
|
non_existing_usergroup = 'Smurfs'
|
26
26
|
existing_user = 'Admin'
|
27
27
|
non_existing_user = 'Tweegle'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zapix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -107,7 +107,6 @@ files:
|
|
107
107
|
- lib/zapix.rb
|
108
108
|
- lib/zapix/proxies/actions.rb
|
109
109
|
- lib/zapix/proxies/applications.rb
|
110
|
-
- lib/zapix/proxies/basic.rb
|
111
110
|
- lib/zapix/proxies/hostgroups.rb
|
112
111
|
- lib/zapix/proxies/hostinterfaces.rb
|
113
112
|
- lib/zapix/proxies/hosts.rb
|
@@ -138,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
137
|
version: '0'
|
139
138
|
segments:
|
140
139
|
- 0
|
141
|
-
hash:
|
140
|
+
hash: -3541308116562665514
|
142
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
142
|
none: false
|
144
143
|
requirements:
|
@@ -147,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
146
|
version: '0'
|
148
147
|
segments:
|
149
148
|
- 0
|
150
|
-
hash:
|
149
|
+
hash: -3541308116562665514
|
151
150
|
requirements: []
|
152
151
|
rubyforge_project:
|
153
152
|
rubygems_version: 1.8.24
|