ams-zapix3 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,26 @@
1
+ require_relative 'base'
2
+
3
+ class Actions < Base
4
+ def exists?(options)
5
+ result = client.action_get('filter' => { 'name' => options['name'] })
6
+ if result.nil? || result.empty?
7
+ return false
8
+ else
9
+ return true
10
+ end
11
+ end
12
+
13
+ def create(options)
14
+ client.action_create(options) unless exists?(options)
15
+ end
16
+
17
+ def get_id(options)
18
+ result = client.action_get('filter' => { 'name' => options['name'] })
19
+
20
+ result.first['actionid']
21
+ end
22
+
23
+ def delete(*action_ids)
24
+ client.action_delete(action_ids)
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ require_relative 'base'
2
+
3
+ class Applications < Base
4
+ def create(options)
5
+ client.application_create(options) unless exists?(options)
6
+ end
7
+
8
+ def exists?(options)
9
+ result = client.application_get('filter' => { 'name' => options['name'] })
10
+ if result.nil? || result.empty?
11
+ false
12
+ else
13
+ true
14
+ end
15
+ end
16
+
17
+ def get_id(options)
18
+ if exists?(options)
19
+ client.application_get('filter' => { 'name' => options['name'],
20
+ 'hostid' => options['hostid'] }).first['applicationid']
21
+ else
22
+ raise NonExistingApplication, "Application #{options['name']} does not exist !"
23
+ end
24
+ end
25
+
26
+ class NonExistingApplication < StandardError; end
27
+ end
@@ -0,0 +1,7 @@
1
+ class Base
2
+ attr_reader :client
3
+
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'base'
2
+
3
+ class Graphs < Base
4
+ def get_all_graph_ids_for(options)
5
+ graphs_with_names_and_ids = []
6
+ graphs = client.graph_get(options)
7
+
8
+ graphs.each do |g|
9
+ graphs_with_names_and_ids <<
10
+ {
11
+ 'name' => g['name'],
12
+ 'id' => g['graphid']
13
+ }
14
+ end
15
+
16
+ graphs_with_names_and_ids
17
+ end
18
+ end
@@ -0,0 +1,97 @@
1
+ require_relative 'base'
2
+
3
+ class HostGroups < Base
4
+ def mass_create(*names)
5
+ names.each do |group_name|
6
+ create(group_name)
7
+ end
8
+ end
9
+
10
+ def create(name)
11
+ client.hostgroup_create('name' => name) unless exists?(name)
12
+ end
13
+
14
+ def create_or_update(name)
15
+ if exists?(name)
16
+ id = get_id(name)
17
+ client.hostgroup_update('groupid' => id, 'name' => name)
18
+ else
19
+ create(name)
20
+ end
21
+ end
22
+
23
+ def exists?(name)
24
+ result = client.hostgroup_get('filter' => { 'name' => [name] })
25
+ if result.nil? || result.empty?
26
+ return false
27
+ else
28
+ return true
29
+ end
30
+ end
31
+
32
+ def get_id(name)
33
+ if exists?(name)
34
+ result = client.hostgroup_get('filter' => { 'name' => [name] })
35
+ result[0]['groupid']
36
+ else
37
+ raise NonExistingHostgroup, "Hostgroup #{name} does not exist !"
38
+ end
39
+ end
40
+
41
+ def mass_delete(*names)
42
+ names.each do |group_name|
43
+ delete(group_name)
44
+ end
45
+ end
46
+
47
+ def get_host_ids_of(hostgroup)
48
+ result = client.hostgroup_get('filter' => { 'name' => [hostgroup] }, 'selectHosts' => 'refer')
49
+ extract_host_ids(result)
50
+ end
51
+
52
+ def any_hosts?(hostgroup)
53
+ raise NonExistingHostgroup, "Hostgroup #{hostgroup} does not exist !" unless exists?(hostgroup)
54
+ result = client.hostgroup_get('filter' => { 'name' => [hostgroup] }, 'selectHosts' => 'count').first['hosts'].to_i
55
+ # result = client.hostgroup_get('countOutput' => 'true', 'filter' => {'name' => [hostgroup]}, 'selectHosts' => 'count').to_i
56
+ result >= 1 ? true : false
57
+ end
58
+
59
+ def delete(name)
60
+ if exists?(name)
61
+ # host cannot exist without a hostgroup, so we need to delete
62
+ # the attached hosts also
63
+ if any_hosts?(name)
64
+ # delete all hosts attached to a hostgroup
65
+ host_ids = get_host_ids_of(name)
66
+ host_ids.each do |id|
67
+ client.host_delete([id])
68
+ end
69
+ # now it is ok to delete the group
70
+ client.hostgroup_delete([get_id(name)])
71
+ else
72
+ client.hostgroup_delete([get_id(name)])
73
+ end
74
+ else
75
+ raise NonExistingHostgroup, "Hostgroup #{name} does not exist !"
76
+ end
77
+ end
78
+
79
+ def get_all
80
+ # the fucking API also returns the ids and that's
81
+ # why we need to extract the names
82
+ host_groups_with_ids = client.hostgroup_get('output' => ['name'])
83
+ extract_host_groups(host_groups_with_ids)
84
+ end
85
+
86
+ def extract_host_ids(query_result)
87
+ query_result.first['hosts'].map { |host| host['hostid'] }
88
+ end
89
+
90
+ def extract_host_groups(group_names_and_ids)
91
+ group_names_and_ids.map do |hostgroup|
92
+ hostgroup['name']
93
+ end
94
+ end
95
+
96
+ class NonExistingHostgroup < StandardError; end
97
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'base'
2
+
3
+ class Hostinterfaces < Base
4
+ def create(options)
5
+ client.hostinterface_create(options) unless exists?(options)
6
+ end
7
+
8
+ def exists?(options)
9
+ get(options).empty? ? false : true
10
+ end
11
+
12
+ def get(options)
13
+ client.hostinterface_get(
14
+ 'filter' => { 'hostid' => options['hostid'],
15
+ 'port' => options['port'],
16
+ 'type' => options['type'] },
17
+ 'output' => 'extend'
18
+ )
19
+ end
20
+ end
@@ -0,0 +1,80 @@
1
+ require_relative 'base'
2
+ class Hosts < Base
3
+ def get_id(name)
4
+ if exists?(name)
5
+ client.host_get('filter' => { 'host' => name }).first['hostid']
6
+ else
7
+ raise NonExistingHost, "Host #{name} does not exist !"
8
+ end
9
+ end
10
+
11
+ def get_hosts_for_hostgroup(group_id)
12
+ client.host_get('groupids' => [group_id])
13
+ end
14
+
15
+ def create(options = {})
16
+ client.host_create(options) unless exists?(options['host'])
17
+ end
18
+
19
+ def create_or_update(options = {})
20
+ raise EmptyHostname, 'Host name cannot be empty !' if options['host'].nil?
21
+ if exists?(options['host'])
22
+ id = get_id(options['host'])
23
+ options['hostid'] = id
24
+ client.host_update(options)
25
+ else
26
+ create(options)
27
+ end
28
+ end
29
+
30
+ def unlink_and_clear_templates(options = {})
31
+ template_ids = options['template_ids'].map { |id| { 'templateid' => id } }
32
+ client.host_update('hostid' => options['host_id'], 'templates_clear' => template_ids)
33
+ end
34
+
35
+ def update_templates(options = {})
36
+ template_ids = options['template_ids'].map { |id| { 'templateid' => id } }
37
+ client.host_update('hostid' => options['host_id'], 'templates' => template_ids)
38
+ end
39
+
40
+ def update_macros(options = {})
41
+ client.host_update('hostid' => options['host_id'], 'macros' => options['macros'])
42
+ end
43
+
44
+ def exists?(name)
45
+ result = client.host_get('filter' => { 'host' => name })
46
+ if result.nil? || result.empty?
47
+ false
48
+ else
49
+ true
50
+ end
51
+ end
52
+
53
+ def get_all
54
+ host_names_and_ids = client.host_get('output' => ['name'])
55
+
56
+ # the fucking api ALWAYS returns the ids and that's
57
+ # why we need to extract the names separately
58
+
59
+ extract_host_names(host_names_and_ids)
60
+ end
61
+
62
+ def delete(name)
63
+ if exists?(name)
64
+ client.host_delete([get_id(name)])
65
+ else
66
+ raise NonExistingHost, "Host #{name} cannot be deleted because it does not exist !"
67
+ end
68
+ end
69
+
70
+ class NonExistingHost < StandardError; end
71
+ class EmptyHostname < StandardError; end
72
+
73
+ private
74
+
75
+ def extract_host_names(hosts_and_ids)
76
+ hosts_and_ids.map do |current_host|
77
+ current_host['name']
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,9 @@
1
+ require_relative 'base'
2
+
3
+ class Proxies < Base
4
+ def get_id(proxy_name)
5
+ result = client.proxy_get('filter' => { 'host' => proxy_name })
6
+
7
+ result.first['proxyid']
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ require_relative 'base'
2
+
3
+ class Scenarios < Base
4
+ def create(options)
5
+ client.httptest_create(options) unless exists?(options)
6
+ end
7
+
8
+ def get_id(options)
9
+ client.httptest_get('filter' => { 'name' => options['name'], 'hostid' => options['hostid'] }).first['httptestid']
10
+ end
11
+
12
+ def delete(options)
13
+ client.httptest_delete(options)
14
+ end
15
+
16
+ def exists?(options)
17
+ result = client.httptest_get('countOutput' => true,
18
+ 'filter' => { 'name' => options['name'],
19
+ 'hostid' => options['hostid'] })
20
+
21
+ result.to_i >= 1 ? true : false
22
+ end
23
+
24
+ def get_all
25
+ scenarios = client.httptest_get('output' => 'extend')
26
+ names = extract_names(scenarios)
27
+ end
28
+
29
+ def extract_names(scenarios)
30
+ scenarios.map { |scenario| scenario['name'] }
31
+ end
32
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'base'
2
+
3
+ class ScreenItems < Base
4
+ def create(options)
5
+ client.screenitem_create(options)
6
+ end
7
+
8
+ def delete(*screen_items_ids)
9
+ client.screenitem_delete(screen_items_ids)
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ require_relative 'base'
2
+
3
+ class Screens < Base
4
+ def get_id(options)
5
+ result = client.screen_get('filter' => { 'name' => options['name'] })
6
+
7
+ result.first['screenid']
8
+ end
9
+
10
+ def create(options)
11
+ client.screen_create(options) unless exists?(options)
12
+ end
13
+
14
+ def delete(*screen_ids)
15
+ client.screen_delete(screen_ids)
16
+ end
17
+
18
+ def exists?(options)
19
+ result = client.screen_get('filter' => { 'name' => options['name'] })
20
+ if result.nil? || result.empty?
21
+ false
22
+ else
23
+ true
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'base'
2
+ class Templates < Base
3
+ def exists?(name)
4
+ result = client.template_get('filter' => { 'name' => name })
5
+ if result.nil? || result.empty?
6
+ false
7
+ else
8
+ true
9
+ end
10
+ end
11
+
12
+ def create(options)
13
+ client.template_create(options) unless exists?(options['host'])
14
+ end
15
+
16
+ def get_id(name)
17
+ if exists?(name)
18
+ client.template_get('filter' => { 'name' => name }).first['templateid']
19
+ else
20
+ raise NonExistingTemplate, "Template #{name} does not exist !"
21
+ end
22
+ end
23
+
24
+ def get_templates_for_host(id)
25
+ client.template_get('hostids' => [id]).map { |result_set| result_set['templateid'] }
26
+ end
27
+
28
+ class NonExistingTemplate < StandardError; end
29
+ end
@@ -0,0 +1,50 @@
1
+ require_relative 'base'
2
+ class Triggers < Base
3
+ def create(options)
4
+ client.trigger_create(options) unless exists?(options)
5
+ end
6
+
7
+ def delete(*trigger_ids)
8
+ client.trigger_delete(trigger_ids)
9
+ end
10
+
11
+ # this is very unefficient
12
+ # but there is no other way to verify that a trigger exists..
13
+ def exists?(options)
14
+ result = client.trigger_get('output' => 'extend',
15
+ 'expandExpression' => true)
16
+
17
+ id = extract_id(result, options['expression'])
18
+ if id.nil?
19
+ false
20
+ else
21
+ true
22
+ end
23
+ end
24
+
25
+ def get_id(options)
26
+ result = client.trigger_get('output' => 'extend',
27
+ 'expandExpression' => true)
28
+ id = extract_id(result, options['expression'])
29
+ if id.nil?
30
+ raise NonExistingTrigger, "Trigger with expression #{options['expression']} not found."
31
+ else
32
+ id
33
+ end
34
+ end
35
+
36
+ class NonExistingTrigger < StandardError; end
37
+
38
+ private
39
+
40
+ def extract_id(triggers, expression)
41
+ result = nil
42
+ triggers.each do |trigger|
43
+ if trigger['expression'] == expression
44
+ result = trigger['triggerid']
45
+ break
46
+ end
47
+ end
48
+ result
49
+ end
50
+ end