zabbixapi 3.1.0 → 3.2.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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -0
  3. data/CHANGELOG.md +5 -0
  4. data/{LICENSE → LICENSE.md} +1 -1
  5. data/README.md +53 -569
  6. data/lib/zabbixapi.rb +102 -65
  7. data/lib/zabbixapi/basic/basic_alias.rb +21 -4
  8. data/lib/zabbixapi/basic/basic_func.rb +56 -23
  9. data/lib/zabbixapi/basic/basic_init.rb +21 -4
  10. data/lib/zabbixapi/basic/basic_logic.rb +75 -18
  11. data/lib/zabbixapi/classes/actions.rb +8 -4
  12. data/lib/zabbixapi/classes/applications.rb +20 -6
  13. data/lib/zabbixapi/classes/configurations.rb +23 -17
  14. data/lib/zabbixapi/classes/errors.rb +2 -4
  15. data/lib/zabbixapi/classes/graphs.rb +65 -15
  16. data/lib/zabbixapi/classes/hostgroups.rb +12 -4
  17. data/lib/zabbixapi/classes/hosts.rb +36 -10
  18. data/lib/zabbixapi/classes/httptests.rb +24 -4
  19. data/lib/zabbixapi/classes/items.rb +24 -5
  20. data/lib/zabbixapi/classes/maintenance.rb +8 -4
  21. data/lib/zabbixapi/classes/mediatypes.rb +20 -13
  22. data/lib/zabbixapi/classes/proxies.rb +29 -8
  23. data/lib/zabbixapi/classes/screens.rb +41 -25
  24. data/lib/zabbixapi/classes/server.rb +8 -4
  25. data/lib/zabbixapi/classes/templates.rb +46 -43
  26. data/lib/zabbixapi/classes/triggers.rb +43 -16
  27. data/lib/zabbixapi/classes/unusable.rb +0 -2
  28. data/lib/zabbixapi/classes/usergroups.rb +33 -26
  29. data/lib/zabbixapi/classes/usermacros.rb +137 -31
  30. data/lib/zabbixapi/classes/users.rb +32 -10
  31. data/lib/zabbixapi/classes/valuemaps.rb +50 -0
  32. data/lib/zabbixapi/client.rb +61 -22
  33. data/lib/zabbixapi/version.rb +1 -1
  34. data/zabbixapi.gemspec +26 -23
  35. metadata +25 -73
  36. data/.gitignore +0 -7
  37. data/.rspec +0 -1
  38. data/.travis.yml +0 -41
  39. data/Gemfile +0 -3
  40. data/Gemfile.lock +0 -36
  41. data/Rakefile +0 -1
  42. data/json-1.x.Gemfile +0 -4
  43. data/json-1.x.Gemfile.lock +0 -28
  44. data/spec/action.rb +0 -89
  45. data/spec/application.rb +0 -83
  46. data/spec/basic_func.rb +0 -4
  47. data/spec/configuration.rb +0 -122
  48. data/spec/graph.rb +0 -135
  49. data/spec/host.rb +0 -176
  50. data/spec/hostgroup.rb +0 -55
  51. data/spec/httptest.rb +0 -136
  52. data/spec/item.rb +0 -134
  53. data/spec/maintenance.rb +0 -81
  54. data/spec/mediatype.rb +0 -50
  55. data/spec/query.rb +0 -18
  56. data/spec/screen.rb +0 -88
  57. data/spec/script.rb +0 -123
  58. data/spec/server.rb +0 -15
  59. data/spec/spec_helper.rb +0 -21
  60. data/spec/template.rb +0 -148
  61. data/spec/trigger.rb +0 -103
  62. data/spec/user.rb +0 -116
  63. data/spec/usergroup.rb +0 -85
  64. data/spec/usermacro.rb +0 -190
@@ -1,13 +1,17 @@
1
1
  class ZabbixApi
2
2
  class Actions < Basic
3
-
3
+ # The method name used for interacting with Actions via Zabbix API
4
+ #
5
+ # @return [String]
4
6
  def method_name
5
- "action"
7
+ 'action'
6
8
  end
7
9
 
10
+ # The id field name used for identifying specific Action objects via Zabbix API
11
+ #
12
+ # @return [String]
8
13
  def indentify
9
- "name"
14
+ 'name'
10
15
  end
11
-
12
16
  end
13
17
  end
@@ -1,16 +1,25 @@
1
1
  class ZabbixApi
2
2
  class Applications < Basic
3
-
4
- API_PARAMETERS = %w(applicationids groupids hostids inherited itemids templated templateids selectItems)
5
-
3
+ # The method name used for interacting with Applications via Zabbix API
4
+ #
5
+ # @return [String]
6
6
  def method_name
7
- "application"
7
+ 'application'
8
8
  end
9
9
 
10
+ # The id field name used for identifying specific Application objects via Zabbix API
11
+ #
12
+ # @return [String]
10
13
  def indentify
11
- "name"
14
+ 'name'
12
15
  end
13
16
 
17
+ # Get or Create Application object using Zabbix API
18
+ #
19
+ # @param data [Hash] Needs to include name and hostid to properly identify Applications via Zabbix API
20
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
21
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
22
+ # @return [Integer] Zabbix object id
14
23
  def get_or_create(data)
15
24
  log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
16
25
 
@@ -20,10 +29,15 @@ class ZabbixApi
20
29
  id
21
30
  end
22
31
 
32
+ # Create or update Application object using Zabbix API
33
+ #
34
+ # @param data [Hash] Needs to include name and hostid to properly identify Applications via Zabbix API
35
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
36
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
37
+ # @return [Integer] Zabbix object id
23
38
  def create_or_update(data)
24
39
  applicationid = get_id(:name => data[:name], :hostid => data[:hostid])
25
40
  applicationid ? update(data.merge(:applicationid => applicationid)) : create(data)
26
41
  end
27
-
28
42
  end
29
43
  end
@@ -1,36 +1,42 @@
1
1
  class ZabbixApi
2
2
  class Configurations < Basic
3
-
3
+ # @return [Boolean]
4
4
  def array_flag
5
5
  true
6
6
  end
7
7
 
8
+ # The method name used for interacting with Configurations via Zabbix API
9
+ #
10
+ # @return [String]
8
11
  def method_name
9
- "configuration"
12
+ 'configuration'
10
13
  end
11
14
 
15
+ # The id field name used for identifying specific Configuration objects via Zabbix API
16
+ #
17
+ # @return [String]
12
18
  def indentify
13
- "host"
19
+ 'host'
14
20
  end
15
21
 
16
- # Export configuration data as a serialized string
17
- # * *Args* :
18
- # see available parameters: https://www.zabbix.com/documentation/2.2/manual/api/reference/configuration/export
19
- # * *Returns* :
20
- # - String
22
+ # Export configuration data using Zabbix API
23
+ #
24
+ # @param data [Hash]
25
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
26
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
27
+ # @return [Hash]
21
28
  def export(data)
22
- @client.api_request(:method => "configuration.export", :params => data)
29
+ @client.api_request(:method => 'configuration.export', :params => data)
23
30
  end
24
31
 
25
- # Import configurations data from a serialized string
26
- # * *Args* :
27
- # see available parameters: https://www.zabbix.com/documentation/2.2/manual/api/reference/configuration/import
28
- # * *Returns* :
29
- # - Boolean
32
+ # Import configuration data using Zabbix API
33
+ #
34
+ # @param data [Hash]
35
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
36
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
37
+ # @return [Hash]
30
38
  def import(data)
31
- @client.api_request(:method => "configuration.import", :params => data)
39
+ @client.api_request(:method => 'configuration.import', :params => data)
32
40
  end
33
-
34
41
  end
35
42
  end
36
-
@@ -1,5 +1,4 @@
1
1
  class ZabbixApi
2
-
3
2
  class BaseError < RuntimeError
4
3
  attr_accessor :response, :error, :error_message
5
4
 
@@ -10,10 +9,10 @@ class ZabbixApi
10
9
  set_error! if @response
11
10
  end
12
11
 
13
- private
12
+ private
14
13
 
15
14
  def set_error!
16
- @error = @response["error"] rescue nil
15
+ @error = @response['error'] rescue nil
17
16
  @error_message = "#{@error['message']}: #{@error['data']}" rescue nil
18
17
  end
19
18
  end
@@ -23,5 +22,4 @@ class ZabbixApi
23
22
 
24
23
  class HttpError < BaseError
25
24
  end
26
-
27
25
  end
@@ -1,14 +1,25 @@
1
1
  class ZabbixApi
2
2
  class Graphs < Basic
3
-
3
+ # The method name used for interacting with Graphs via Zabbix API
4
+ #
5
+ # @return [String]
4
6
  def method_name
5
- "graph"
7
+ 'graph'
6
8
  end
7
9
 
10
+ # The id field name used for identifying specific Graph objects via Zabbix API
11
+ #
12
+ # @return [String]
8
13
  def indentify
9
- "name"
14
+ 'name'
10
15
  end
11
16
 
17
+ # Get full/extended Graph data from Zabbix API
18
+ #
19
+ # @param data [Hash] Should include object's id field name (indentify) and id value
20
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
21
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
22
+ # @return [Hash]
12
23
  def get_full_data(data)
13
24
  log "[DEBUG] Call get_full_data with parametrs: #{data.inspect}"
14
25
 
@@ -16,47 +27,87 @@ class ZabbixApi
16
27
  :method => "#{method_name}.get",
17
28
  :params => {
18
29
  :search => {
19
- indentify.to_sym => data[indentify.to_sym]
30
+ indentify.to_sym => data[indentify.to_sym],
20
31
  },
21
- :output => "extend"
32
+ :output => 'extend',
22
33
  }
23
34
  )
24
35
  end
25
36
 
37
+ # Get Graph ids for Host from Zabbix API
38
+ #
39
+ # @param data [Hash] Should include host value to query for matching graphs
40
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
41
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
42
+ # @return [Array] Returns array of Graph ids
26
43
  def get_ids_by_host(data)
27
44
  ids = []
28
- graphs = Hash.new
29
- result = @client.api_request(:method => "graph.get", :params => {:filter => {:host => data[:host]}, :output => "extend"})
45
+ graphs = {}
46
+
47
+ result = @client.api_request(
48
+ :method => 'graph.get',
49
+ :params => {
50
+ :filter => {
51
+ :host => data[:host],
52
+ },
53
+ :output => 'extend',
54
+ }
55
+ )
56
+
30
57
  result.each do |graph|
31
58
  num = graph['graphid']
32
59
  name = graph['name']
33
60
  graphs[name] = num
34
61
  filter = data[:filter]
35
62
 
36
- unless filter.nil?
37
- if /#{filter}/ =~ name
38
- ids.push(graphs[name])
39
- end
40
- else
41
- ids.push(graphs[name])
63
+ if filter.nil?
64
+ ids.push(graphs[name])
65
+ elsif /#{filter}/ =~ name
66
+ ids.push(graphs[name])
42
67
  end
43
68
  end
69
+
44
70
  ids
45
71
  end
46
72
 
73
+ # Get Graph Item object using Zabbix API
74
+ #
75
+ # @param data [Hash] Needs to include graphids to properly identify Graph Items via Zabbix API
76
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
77
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
78
+ # @return [Hash]
47
79
  def get_items(data)
48
- @client.api_request(:method => "graphitem.get", :params => { :graphids => [data], :output => "extend" } )
80
+ @client.api_request(
81
+ :method => 'graphitem.get',
82
+ :params => {
83
+ :graphids => [data],
84
+ :output => 'extend',
85
+ }
86
+ )
49
87
  end
50
88
 
89
+ # Get or Create Graph object using Zabbix API
90
+ #
91
+ # @param data [Hash] Needs to include name and templateid to properly identify Graphs via Zabbix API
92
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
93
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
94
+ # @return [Integer] Zabbix object id
51
95
  def get_or_create(data)
52
96
  log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
53
97
 
54
98
  unless (id = get_id(:name => data[:name], :templateid => data[:templateid]))
55
99
  id = create(data)
56
100
  end
101
+
57
102
  id
58
103
  end
59
104
 
105
+ # Create or update Graph object using Zabbix API
106
+ #
107
+ # @param data [Hash] Needs to include name and templateid to properly identify Graphs via Zabbix API
108
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
109
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
110
+ # @return [Integer] Zabbix object id
60
111
  def create_or_update(data)
61
112
  graphid = get_id(:name => data[:name], :templateid => data[:templateid])
62
113
  graphid ? _update(data.merge(:graphid => graphid)) : create(data)
@@ -66,6 +117,5 @@ class ZabbixApi
66
117
  data.delete(:name)
67
118
  update(data)
68
119
  end
69
-
70
120
  end
71
121
  end
@@ -1,16 +1,24 @@
1
1
  class ZabbixApi
2
2
  class HostGroups < Basic
3
-
3
+ # The method name used for interacting with HostGroups via Zabbix API
4
+ #
5
+ # @return [String]
4
6
  def method_name
5
- "hostgroup"
7
+ 'hostgroup'
6
8
  end
7
9
 
10
+ # The id field name used for identifying specific HostGroup objects via Zabbix API
11
+ #
12
+ # @return [String]
8
13
  def indentify
9
- "name"
14
+ 'name'
10
15
  end
11
16
 
17
+ # The key field name used for HostGroup objects via Zabbix API
18
+ #
19
+ # @return [String]
12
20
  def key
13
- "groupid"
21
+ 'groupid'
14
22
  end
15
23
  end
16
24
  end
@@ -1,29 +1,43 @@
1
1
  class ZabbixApi
2
2
  class Hosts < Basic
3
-
3
+ # The method name used for interacting with Hosts via Zabbix API
4
+ #
5
+ # @return [String]
4
6
  def method_name
5
- "host"
7
+ 'host'
6
8
  end
7
9
 
10
+ # The id field name used for identifying specific Host objects via Zabbix API
11
+ #
12
+ # @return [String]
8
13
  def indentify
9
- "host"
14
+ 'host'
10
15
  end
11
16
 
17
+ # Dump Host object data by key from Zabbix API
18
+ #
19
+ # @param data [Hash] Should include desired object's key and value
20
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
21
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
22
+ # @return [Hash]
12
23
  def dump_by_id(data)
13
24
  log "[DEBUG] Call dump_by_id with parametrs: #{data.inspect}"
14
25
 
15
26
  @client.api_request(
16
- :method => "host.get",
27
+ :method => 'host.get',
17
28
  :params => {
18
29
  :filter => {
19
- key.to_sym => data[key.to_sym]
30
+ key.to_sym => data[key.to_sym],
20
31
  },
21
- :output => "extend",
22
- :selectGroups => "shorten"
32
+ :output => 'extend',
33
+ :selectGroups => 'shorten',
23
34
  }
24
35
  )
25
36
  end
26
37
 
38
+ # The default options used when creating Host objects via Zabbix API
39
+ #
40
+ # @return [Hash]
27
41
  def default_options
28
42
  {
29
43
  :host => nil,
@@ -31,21 +45,33 @@ class ZabbixApi
31
45
  :status => 0,
32
46
  :available => 1,
33
47
  :groups => [],
34
- :proxy_hostid => nil
48
+ :proxy_hostid => nil,
35
49
  }
36
50
  end
37
51
 
52
+ # Unlink/Remove Templates from Hosts using Zabbix API
53
+ #
54
+ # @param data [Hash] Should include hosts_id array and templates_id array
55
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
56
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
57
+ # @return [Boolean]
38
58
  def unlink_templates(data)
39
59
  result = @client.api_request(
40
- :method => "host.massRemove",
60
+ :method => 'host.massRemove',
41
61
  :params => {
42
62
  :hostids => data[:hosts_id],
43
- :templates => data[:templates_id]
63
+ :templates => data[:templates_id],
44
64
  }
45
65
  )
46
66
  result.empty? ? false : true
47
67
  end
48
68
 
69
+ # Create or update Host object using Zabbix API
70
+ #
71
+ # @param data [Hash] Needs to include host to properly identify Hosts via Zabbix API
72
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
73
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
74
+ # @return [Integer] Zabbix object id
49
75
  def create_or_update(data)
50
76
  hostid = get_id(:host => data[:host])
51
77
  hostid ? update(data.merge(:hostid => hostid)) : create(data)
@@ -1,22 +1,36 @@
1
1
  class ZabbixApi
2
2
  class HttpTests < Basic
3
-
3
+ # The method name used for interacting with HttpTests via Zabbix API
4
+ #
5
+ # @return [String]
4
6
  def method_name
5
- "httptest"
7
+ 'httptest'
6
8
  end
7
9
 
10
+ # The id field name used for identifying specific HttpTest objects via Zabbix API
11
+ #
12
+ # @return [String]
8
13
  def indentify
9
- "name"
14
+ 'name'
10
15
  end
11
16
 
17
+ # The default options used when creating HttpTest objects via Zabbix API
18
+ #
19
+ # @return [Hash]
12
20
  def default_options
13
21
  {
14
22
  :hostid => nil,
15
23
  :name => nil,
16
- :steps => []
24
+ :steps => [],
17
25
  }
18
26
  end
19
27
 
28
+ # Get or Create HttpTest object using Zabbix API
29
+ #
30
+ # @param data [Hash] Needs to include name and hostid to properly identify HttpTests via Zabbix API
31
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
32
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
33
+ # @return [Integer] Zabbix object id
20
34
  def get_or_create(data)
21
35
  log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
22
36
 
@@ -26,6 +40,12 @@ class ZabbixApi
26
40
  id
27
41
  end
28
42
 
43
+ # Create or update HttpTest object using Zabbix API
44
+ #
45
+ # @param data [Hash] Needs to include name and hostid to properly identify HttpTests via Zabbix API
46
+ # @raise [ApiError] Error returned when there is a problem with the Zabbix API call.
47
+ # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
48
+ # @return [Integer] Zabbix object id
29
49
  def create_or_update(data)
30
50
  httptestid = get_id(:name => data[:name], :hostid => data[:hostid])
31
51
  httptestid ? update(data.merge(:httptestid => httptestid)) : create(data)