zabbixapi 2.4.1 → 2.4.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.
- checksums.yaml +4 -4
- data/README.md +31 -1
- data/lib/zabbixapi.rb +6 -1
- data/lib/zabbixapi/classes/applications.rb +7 -1
- data/lib/zabbixapi/classes/configurations.rb +36 -0
- data/lib/zabbixapi/version.rb +1 -1
- data/spec/configuration.rb +122 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8238184f0f09f3d6c538181126166da072a5169e
|
4
|
+
data.tar.gz: 6d4cadbadda8ccaffb3d99aec2234ed26135b727
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ddd92123ebe7bb0164340f8ff08beee81fdfe759b796a43b59c02053884bca9f70308069a6ec00f992fb6c5a2bd08254cefdafe450b1a4dec1a3eb6c377a64b
|
7
|
+
data.tar.gz: bbbe5b33e8da8c79c4cc68537dc327cdf905431baece04a3e4d0c2740ef70ea3de72de68cdfbda0297a243e8b0e7bfecefac93ea90a8b7f9f7ebc045794ef883
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ We support only three last versions of zabbix (2.0, 2.2 and 2.4), so you should
|
|
28
28
|
|
29
29
|
## Installation
|
30
30
|
```
|
31
|
-
gem install zabbixapi -v 2.4.
|
31
|
+
gem install zabbixapi -v 2.4.2
|
32
32
|
```
|
33
33
|
|
34
34
|
## Getting Started
|
@@ -343,6 +343,36 @@ zbx.proxies.create(
|
|
343
343
|
)
|
344
344
|
```
|
345
345
|
|
346
|
+
### Export object
|
347
|
+
|
348
|
+
```ruby
|
349
|
+
zbx.configurations.export(
|
350
|
+
:format => "xml",
|
351
|
+
:options => {
|
352
|
+
:templates => [zbx.templates.get_id(:host => "template")]
|
353
|
+
}
|
354
|
+
)
|
355
|
+
```
|
356
|
+
|
357
|
+
### Import object
|
358
|
+
|
359
|
+
```ruby
|
360
|
+
zbx.configurations.import(
|
361
|
+
:format => "xml",
|
362
|
+
:rules => {
|
363
|
+
:templates => {
|
364
|
+
:createMissing => true,
|
365
|
+
:updateExisting => true
|
366
|
+
},
|
367
|
+
:items => {
|
368
|
+
:createMissing => true,
|
369
|
+
:updateExisting => true
|
370
|
+
}
|
371
|
+
},
|
372
|
+
:source => "<!--?xml version=\"1.0\" encoding=\"UTF-8\"?--><zabbix_export><version>2.0</version><date>2012-04-18T11:20:14Z</date><groups><group><name>Zabbix servers</name></group></groups><hosts><host><host>Export host</host><name>Export host</name><proxyid>0</proxyid><status>0</status><ipmi_authtype>-1</ipmi_authtype><ipmi_privilege>2</ipmi_privilege><ipmi_username></ipmi_username><ipmi_password></ipmi_password><templates></templates><groups><group><name>Zabbix servers</name></group></groups><interfaces><interface><default>1</default><type>1</type><useip>1</useip><ip>127.0.0.1</ip><dns></dns><port>10050</port><interface_ref>if1</interface_ref></interface></interfaces><applications><application><name>Application</name></application></applications><items><item><name>Item</name><type>0</type><snmp_community></snmp_community><multiplier>0</multiplier><snmp_oid></snmp_oid><key>item.key</key><delay>30</delay><history>90</history><trends>365</trends><status>0</status><value_type>3</value_type><allowed_hosts></allowed_hosts><units></units><delta>0</delta><snmpv3_securityname></snmpv3_securityname><snmpv3_securitylevel>0</snmpv3_securitylevel><snmpv3_authpassphrase></snmpv3_authpassphrase><snmpv3_privpassphrase></snmpv3_privpassphrase><formula>1</formula><delay_flex></delay_flex><params></params><ipmi_sensor></ipmi_sensor><data_type>0</data_type><authtype>0</authtype><username></username><password></password><publickey></publickey><privatekey></privatekey><port></port><description></description><inventory_link>0</inventory_link><applications><application><name>Application</name></application></applications><valuemap></valuemap><interface_ref>if1</interface_ref></item></items><discovery_rules></discovery_rules><macros></macros><inventory></inventory></host></hosts><triggers><trigger><expression>{Export host:item.key.last(0)}=0</expression><name>Trigger</name><url></url><status>0</status><priority>2</priority><description>Host trigger</description><type>0</type><dependencies></dependencies></trigger></triggers><graphs><graph><name>Graph</name><width>900</width><height>200</height><yaxismin>0.0000</yaxismin><yaxismax>100.0000</yaxismax><show_work_period>1</show_work_period><show_triggers>1</show_triggers><type>0</type><show_legend>1</show_legend><show_3d>0</show_3d><percent_left>0.0000</percent_left><percent_right>0.0000</percent_right><ymin_type_1>0</ymin_type_1><ymax_type_1>0</ymax_type_1><ymin_item_1>0</ymin_item_1><ymax_item_1>0</ymax_item_1><graph_items><graph_item><sortorder>0</sortorder><drawtype>0</drawtype><color>C80000</color><yaxisside>0</yaxisside><calc_fnc>7</calc_fnc><type>0</type><item><host>Export host</host><key>item.key</key></item></graph_item></graph_items></graph></graphs></zabbix_export>"
|
373
|
+
)
|
374
|
+
```
|
375
|
+
|
346
376
|
### User and global macros
|
347
377
|
```ruby
|
348
378
|
zbx.usermacros.create(
|
data/lib/zabbixapi.rb
CHANGED
@@ -22,6 +22,7 @@ require "zabbixapi/classes/unusable"
|
|
22
22
|
require "zabbixapi/classes/usergroups"
|
23
23
|
require "zabbixapi/classes/usermacros"
|
24
24
|
require "zabbixapi/classes/users"
|
25
|
+
require "zabbixapi/classes/configurations"
|
25
26
|
|
26
27
|
class ZabbixApi
|
27
28
|
|
@@ -85,7 +86,7 @@ class ZabbixApi
|
|
85
86
|
|
86
87
|
def screens
|
87
88
|
@screens ||= Screens.new(@client)
|
88
|
-
end
|
89
|
+
end
|
89
90
|
|
90
91
|
def usergroups
|
91
92
|
@usergroups ||= Usergroups.new(@client)
|
@@ -99,6 +100,10 @@ class ZabbixApi
|
|
99
100
|
@mediatypes ||= Mediatypes.new(@client)
|
100
101
|
end
|
101
102
|
|
103
|
+
def configurations
|
104
|
+
@configurations ||= Configurations.new(@client)
|
105
|
+
end
|
106
|
+
|
102
107
|
end
|
103
108
|
|
104
109
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
class ZabbixApi
|
2
2
|
class Applications
|
3
3
|
|
4
|
+
API_PARAMETERS = %w(applicationids groupids hostids inherited itemids templated templateids expandData selectHosts selectItems)
|
5
|
+
|
4
6
|
def initialize(client)
|
5
7
|
@client = client
|
6
8
|
end
|
@@ -31,7 +33,11 @@ class ZabbixApi
|
|
31
33
|
end
|
32
34
|
|
33
35
|
def get_full_data(data)
|
34
|
-
|
36
|
+
filter_params = {}
|
37
|
+
request_data = data.dup # Duplicate data, as we modify it. Otherwise methods that use data after calling get_full_data (such as get_id) will fail.
|
38
|
+
|
39
|
+
request_data.each { |key, value| filter_params[key] = request_data.delete(key) unless API_PARAMETERS.include?(key) }
|
40
|
+
@client.api_request(:method => "application.get", :params => request_data.merge({:filter => filter_params, :output => "extend"}))
|
35
41
|
end
|
36
42
|
|
37
43
|
def get_id(data)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class ZabbixApi
|
2
|
+
class Configurations < Basic
|
3
|
+
|
4
|
+
def array_flag
|
5
|
+
true
|
6
|
+
end
|
7
|
+
|
8
|
+
def method_name
|
9
|
+
"configuration"
|
10
|
+
end
|
11
|
+
|
12
|
+
def indentify
|
13
|
+
"host"
|
14
|
+
end
|
15
|
+
|
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
|
21
|
+
def export(data)
|
22
|
+
@client.api_request(:method => "configuration.export", :params => data)
|
23
|
+
end
|
24
|
+
|
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
|
30
|
+
def import(data)
|
31
|
+
@client.api_request(:method => "configuration.import", :params => data)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
data/lib/zabbixapi/version.rb
CHANGED
@@ -0,0 +1,122 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe "configuration" do
|
6
|
+
before :all do
|
7
|
+
@hostgroup = gen_name "hostgroup"
|
8
|
+
@hostgroup_id = zbx.hostgroups.create(:name => @hostgroup)
|
9
|
+
@template = gen_name "template"
|
10
|
+
@template_id = zbx.templates.create(
|
11
|
+
:host => @template,
|
12
|
+
:groups => [:groupid => @hostgroup_id]
|
13
|
+
)
|
14
|
+
@source = zbx.configurations.export(
|
15
|
+
:format => "xml",
|
16
|
+
:options => {
|
17
|
+
:templates => [@template_id]
|
18
|
+
}
|
19
|
+
)
|
20
|
+
@item = gen_name "item"
|
21
|
+
@item_id = zbx.items.create(
|
22
|
+
:name => @item,
|
23
|
+
:description => "item",
|
24
|
+
:key_ => "proc.num[aaa]",
|
25
|
+
:type => 0,
|
26
|
+
:value_type => 3,
|
27
|
+
:hostid => zbx.templates.get_id(:host => @template),
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
after :all do
|
32
|
+
zbx.items.delete(zbx.items.get_id(:name => @item))
|
33
|
+
zbx.templates.delete(zbx.templates.get_id(:host => @template))
|
34
|
+
zbx.hostgroups.delete(zbx.hostgroups.get_id(:name => @hostgroup))
|
35
|
+
end
|
36
|
+
|
37
|
+
context "when object not exists" do
|
38
|
+
describe "import with createMissing" do
|
39
|
+
before do
|
40
|
+
zbx.items.delete(@item_id)
|
41
|
+
zbx.templates.delete(@template_id)
|
42
|
+
zbx.hostgroups.delete(@hostgroup_id)
|
43
|
+
zbx.configurations.import(
|
44
|
+
:format => "xml",
|
45
|
+
:rules => {
|
46
|
+
:groups => {
|
47
|
+
:createMissing => true
|
48
|
+
},
|
49
|
+
:templates => {
|
50
|
+
:createMissing => true
|
51
|
+
}
|
52
|
+
},
|
53
|
+
:source => @source
|
54
|
+
)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should create object" do
|
58
|
+
expect(zbx.hostgroups.get_id(:name => @hostgroup)).to be_kind_of(Integer)
|
59
|
+
expect(zbx.templates.get_id(:host => @template)).to be_kind_of(Integer)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "when object exists" do
|
65
|
+
|
66
|
+
describe "export" do
|
67
|
+
before do
|
68
|
+
zbx.items.create(
|
69
|
+
:name => @item,
|
70
|
+
:description => "item",
|
71
|
+
:key_ => "proc.num[aaa]",
|
72
|
+
:type => 0,
|
73
|
+
:value_type => 3,
|
74
|
+
:hostid => zbx.templates.get_id(:host => @template),
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should export updated object" do
|
79
|
+
expect(zbx.configurations.export(
|
80
|
+
:format => "xml",
|
81
|
+
:options => {
|
82
|
+
:templates => [zbx.templates.get_id(:host => @template)]
|
83
|
+
}
|
84
|
+
)).to match(/#{@item}/)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "import with updateExisting" do
|
89
|
+
before do
|
90
|
+
@source_updated = zbx.configurations.export(
|
91
|
+
:format => "xml",
|
92
|
+
:options => {
|
93
|
+
:templates => [zbx.templates.get_id(:host => @template)]
|
94
|
+
}
|
95
|
+
)
|
96
|
+
zbx.items.delete(zbx.items.get_id(:name => @item))
|
97
|
+
zbx.configurations.import(
|
98
|
+
:format => "xml",
|
99
|
+
:rules => {
|
100
|
+
:templates => {
|
101
|
+
:updateExisting => true
|
102
|
+
},
|
103
|
+
:items => {
|
104
|
+
:createMissing => true
|
105
|
+
}
|
106
|
+
},
|
107
|
+
:source => @source_updated
|
108
|
+
)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should update object" do
|
112
|
+
expect(zbx.configurations.export(
|
113
|
+
:format => "xml",
|
114
|
+
:options => {
|
115
|
+
:templates => [zbx.templates.get_id(:host => @template)]
|
116
|
+
}
|
117
|
+
)).to match(/#{@item}/)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
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: 2.4.
|
4
|
+
version: 2.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasiliev D.V.
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-10-
|
12
|
+
date: 2014-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- lib/zabbixapi/basic/basic_init.rb
|
53
53
|
- lib/zabbixapi/basic/basic_logic.rb
|
54
54
|
- lib/zabbixapi/classes/applications.rb
|
55
|
+
- lib/zabbixapi/classes/configurations.rb
|
55
56
|
- lib/zabbixapi/classes/errors.rb
|
56
57
|
- lib/zabbixapi/classes/graphs.rb
|
57
58
|
- lib/zabbixapi/classes/hostgroups.rb
|
@@ -71,6 +72,7 @@ files:
|
|
71
72
|
- lib/zabbixapi/version.rb
|
72
73
|
- spec/application.rb
|
73
74
|
- spec/basic_func.rb
|
75
|
+
- spec/configuration.rb
|
74
76
|
- spec/graph.rb
|
75
77
|
- spec/host.rb
|
76
78
|
- spec/hostgroup.rb
|
@@ -112,6 +114,7 @@ summary: Realization for Zabbix API.
|
|
112
114
|
test_files:
|
113
115
|
- spec/application.rb
|
114
116
|
- spec/basic_func.rb
|
117
|
+
- spec/configuration.rb
|
115
118
|
- spec/graph.rb
|
116
119
|
- spec/host.rb
|
117
120
|
- spec/hostgroup.rb
|