oxidized 0.19.0 → 0.20.0
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/CHANGELOG.md +17 -0
- data/Dockerfile +17 -2
- data/Gemfile +0 -1
- data/Gemfile.lock +10 -9
- data/README.md +205 -10
- data/extra/auto-reload-config.runit +1 -1
- data/extra/oxidized.init +3 -3
- data/extra/update-ca-certificates.runit +7 -0
- data/lib/oxidized/config.rb +4 -2
- data/lib/oxidized/config/vars.rb +5 -1
- data/lib/oxidized/hook/exec.rb +1 -0
- data/lib/oxidized/hook/slackdiff.rb +34 -0
- data/lib/oxidized/input/ssh.rb +4 -1
- data/lib/oxidized/model/aireos.rb +1 -1
- data/lib/oxidized/model/airos.rb +9 -4
- data/lib/oxidized/model/alvarion.rb +3 -1
- data/lib/oxidized/model/aosw.rb +22 -6
- data/lib/oxidized/model/asa.rb +3 -2
- data/lib/oxidized/model/cisconga.rb +19 -0
- data/lib/oxidized/model/comware.rb +6 -0
- data/lib/oxidized/model/cumulus.rb +15 -3
- data/lib/oxidized/model/fabricos.rb +2 -1
- data/lib/oxidized/model/fiberdriver.rb +4 -0
- data/lib/oxidized/model/firewareos.rb +7 -1
- data/lib/oxidized/model/fortios.rb +15 -4
- data/lib/oxidized/model/ios.rb +83 -8
- data/lib/oxidized/model/ironware.rb +5 -6
- data/lib/oxidized/model/junos.rb +3 -0
- data/lib/oxidized/model/mlnxos.rb +5 -1
- data/lib/oxidized/model/netgear.rb +32 -0
- data/lib/oxidized/model/nxos.rb +14 -1
- data/lib/oxidized/model/oneos.rb +58 -0
- data/lib/oxidized/model/opengear.rb +2 -0
- data/lib/oxidized/model/pfsense.rb +3 -2
- data/lib/oxidized/model/powerconnect.rb +1 -0
- data/lib/oxidized/model/procurve.rb +8 -3
- data/lib/oxidized/model/quantaos.rb +1 -1
- data/lib/oxidized/model/routeros.rb +8 -0
- data/lib/oxidized/model/saos.rb +3 -1
- data/lib/oxidized/model/siklu.rb +19 -0
- data/lib/oxidized/model/timos.rb +16 -0
- data/lib/oxidized/model/tplink.rb +65 -0
- data/lib/oxidized/model/voltaire.rb +56 -0
- data/lib/oxidized/model/voss.rb +33 -0
- data/lib/oxidized/model/zhoneolt.rb +52 -0
- data/lib/oxidized/node.rb +39 -10
- data/lib/oxidized/nodes.rb +2 -1
- data/lib/oxidized/output/gitcrypt.rb +244 -0
- data/lib/oxidized/source/csv.rb +10 -1
- data/lib/oxidized/source/http.rb +24 -7
- data/lib/oxidized/version.rb +1 -1
- data/lib/oxidized/worker.rb +3 -2
- data/oxidized.gemspec +2 -1
- metadata +29 -4
data/lib/oxidized/source/csv.rb
CHANGED
@@ -11,14 +11,23 @@ class CSV < Source
|
|
11
11
|
Oxidized.asetus.user.source.csv.delimiter = /:/
|
12
12
|
Oxidized.asetus.user.source.csv.map.name = 0
|
13
13
|
Oxidized.asetus.user.source.csv.map.model = 1
|
14
|
+
Oxidized.asetus.user.source.csv.gpg = false
|
14
15
|
Oxidized.asetus.save :user
|
15
16
|
raise NoConfig, 'no source csv config, edit ~/.config/oxidized/config'
|
16
17
|
end
|
18
|
+
require 'gpgme' if @cfg.gpg?
|
17
19
|
end
|
18
20
|
|
19
21
|
def load
|
20
22
|
nodes = []
|
21
|
-
|
23
|
+
file = File.expand_path(@cfg.file)
|
24
|
+
file = if @cfg.gpg?
|
25
|
+
crypto = GPGME::Crypto.new password: @cfg.gpg_password
|
26
|
+
crypto.decrypt(file).to_s
|
27
|
+
else
|
28
|
+
open(file)
|
29
|
+
end
|
30
|
+
file.each_line do |line|
|
22
31
|
next if line.match(/^\s*#/)
|
23
32
|
data = line.chomp.split(@cfg.delimiter, -1)
|
24
33
|
next if data.empty?
|
data/lib/oxidized/source/http.rb
CHANGED
@@ -29,25 +29,27 @@ class HTTP < Source
|
|
29
29
|
end
|
30
30
|
|
31
31
|
request = Net::HTTP::Get.new(uri.request_uri, headers)
|
32
|
-
if (@cfg.user && @cfg.pass)
|
32
|
+
if (@cfg.user? && @cfg.pass?)
|
33
33
|
request.basic_auth(@cfg.user,@cfg.pass)
|
34
34
|
end
|
35
35
|
|
36
36
|
response = http.request(request)
|
37
37
|
data = JSON.parse(response.body)
|
38
|
-
data.each do |
|
39
|
-
next if
|
38
|
+
data.each do |node|
|
39
|
+
next if node.empty?
|
40
40
|
# map node parameters
|
41
41
|
keys = {}
|
42
|
-
@cfg.map.each do |key,
|
43
|
-
|
42
|
+
@cfg.map.each do |key, want_position|
|
43
|
+
want_positions = want_position.split('.')
|
44
|
+
keys[key.to_sym] = node_var_interpolate node.dig(*want_positions)
|
44
45
|
end
|
45
46
|
keys[:model] = map_model keys[:model] if keys.key? :model
|
46
47
|
|
47
48
|
# map node specific vars
|
48
49
|
vars = {}
|
49
|
-
@cfg.vars_map.each do |key,
|
50
|
-
|
50
|
+
@cfg.vars_map.each do |key, want_position|
|
51
|
+
want_positions = want_position.split('.')
|
52
|
+
vars[key.to_sym] = node_var_interpolate node.dig(*want_positions)
|
51
53
|
end
|
52
54
|
keys[:vars] = vars unless vars.empty?
|
53
55
|
|
@@ -58,3 +60,18 @@ class HTTP < Source
|
|
58
60
|
|
59
61
|
end
|
60
62
|
end
|
63
|
+
|
64
|
+
if RUBY_VERSION < '2.3'
|
65
|
+
class Hash
|
66
|
+
def dig(key, *rest)
|
67
|
+
value = self[key]
|
68
|
+
if value.nil? || rest.empty?
|
69
|
+
value
|
70
|
+
elsif value.respond_to?(:dig)
|
71
|
+
value.dig(*rest)
|
72
|
+
else # foo.bar.baz (bar exist but is not hash)
|
73
|
+
return nil
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/oxidized/version.rb
CHANGED
data/lib/oxidized/worker.rb
CHANGED
@@ -3,8 +3,9 @@ module Oxidized
|
|
3
3
|
require 'oxidized/jobs'
|
4
4
|
class Worker
|
5
5
|
def initialize nodes
|
6
|
-
@nodes
|
7
|
-
@jobs
|
6
|
+
@nodes = nodes
|
7
|
+
@jobs = Jobs.new(Oxidized.config.threads, Oxidized.config.interval, @nodes)
|
8
|
+
@nodes.jobs = @jobs
|
8
9
|
Thread.abort_on_exception = true
|
9
10
|
end
|
10
11
|
|
data/oxidized.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_runtime_dependency 'rugged', '~> 0.21', '>= 0.21.4'
|
26
26
|
|
27
27
|
if defined?(RUBY_VERSION) && RUBY_VERSION > '2.3'
|
28
|
-
s.add_runtime_dependency 'net-telnet'
|
28
|
+
s.add_runtime_dependency 'net-telnet', '~> 0'
|
29
29
|
end
|
30
30
|
|
31
31
|
s.add_development_dependency 'pry', '~> 0'
|
@@ -33,4 +33,5 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.add_development_dependency 'rake', '~> 10.0'
|
34
34
|
s.add_development_dependency 'minitest', '~> 5.8'
|
35
35
|
s.add_development_dependency 'mocha', '~> 1.1'
|
36
|
+
s.add_development_dependency 'git', '~> 1'
|
36
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oxidized
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saku Ytti
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2017-05-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: asetus
|
@@ -78,14 +78,14 @@ dependencies:
|
|
78
78
|
name: net-telnet
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
type: :runtime
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0'
|
91
91
|
- !ruby/object:Gem::Dependency
|
@@ -158,6 +158,20 @@ dependencies:
|
|
158
158
|
- - "~>"
|
159
159
|
- !ruby/object:Gem::Version
|
160
160
|
version: '1.1'
|
161
|
+
- !ruby/object:Gem::Dependency
|
162
|
+
name: git
|
163
|
+
requirement: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - "~>"
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '1'
|
168
|
+
type: :development
|
169
|
+
prerelease: false
|
170
|
+
version_requirements: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - "~>"
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '1'
|
161
175
|
description: software to fetch configuration from network devices and store them
|
162
176
|
email:
|
163
177
|
- saku@ytti.fi
|
@@ -194,6 +208,7 @@ files:
|
|
194
208
|
- extra/rest_client.rb
|
195
209
|
- extra/rvm.oxidized.upstart
|
196
210
|
- extra/syslog.rb
|
211
|
+
- extra/update-ca-certificates.runit
|
197
212
|
- lib/oxidized.rb
|
198
213
|
- lib/oxidized/cli.rb
|
199
214
|
- lib/oxidized/config.rb
|
@@ -204,6 +219,7 @@ files:
|
|
204
219
|
- lib/oxidized/hook/exec.rb
|
205
220
|
- lib/oxidized/hook/githubrepo.rb
|
206
221
|
- lib/oxidized/hook/noophook.rb
|
222
|
+
- lib/oxidized/hook/slackdiff.rb
|
207
223
|
- lib/oxidized/input/cli.rb
|
208
224
|
- lib/oxidized/input/ftp.rb
|
209
225
|
- lib/oxidized/input/input.rb
|
@@ -226,6 +242,7 @@ files:
|
|
226
242
|
- lib/oxidized/model/c4cmts.rb
|
227
243
|
- lib/oxidized/model/casa.rb
|
228
244
|
- lib/oxidized/model/catos.rb
|
245
|
+
- lib/oxidized/model/cisconga.rb
|
229
246
|
- lib/oxidized/model/ciscosmb.rb
|
230
247
|
- lib/oxidized/model/comware.rb
|
231
248
|
- lib/oxidized/model/coriant8600.rb
|
@@ -256,10 +273,12 @@ files:
|
|
256
273
|
- lib/oxidized/model/mlnxos.rb
|
257
274
|
- lib/oxidized/model/model.rb
|
258
275
|
- lib/oxidized/model/mtrlrfs.rb
|
276
|
+
- lib/oxidized/model/netgear.rb
|
259
277
|
- lib/oxidized/model/netonix.rb
|
260
278
|
- lib/oxidized/model/netscaler.rb
|
261
279
|
- lib/oxidized/model/nos.rb
|
262
280
|
- lib/oxidized/model/nxos.rb
|
281
|
+
- lib/oxidized/model/oneos.rb
|
263
282
|
- lib/oxidized/model/opengear.rb
|
264
283
|
- lib/oxidized/model/outputs.rb
|
265
284
|
- lib/oxidized/model/panos.rb
|
@@ -271,19 +290,25 @@ files:
|
|
271
290
|
- lib/oxidized/model/routeros.rb
|
272
291
|
- lib/oxidized/model/saos.rb
|
273
292
|
- lib/oxidized/model/screenos.rb
|
293
|
+
- lib/oxidized/model/siklu.rb
|
274
294
|
- lib/oxidized/model/supermicro.rb
|
275
295
|
- lib/oxidized/model/timos.rb
|
276
296
|
- lib/oxidized/model/tmos.rb
|
297
|
+
- lib/oxidized/model/tplink.rb
|
277
298
|
- lib/oxidized/model/trango.rb
|
299
|
+
- lib/oxidized/model/voltaire.rb
|
300
|
+
- lib/oxidized/model/voss.rb
|
278
301
|
- lib/oxidized/model/vrp.rb
|
279
302
|
- lib/oxidized/model/vyatta.rb
|
280
303
|
- lib/oxidized/model/xos.rb
|
304
|
+
- lib/oxidized/model/zhoneolt.rb
|
281
305
|
- lib/oxidized/model/zynos.rb
|
282
306
|
- lib/oxidized/node.rb
|
283
307
|
- lib/oxidized/node/stats.rb
|
284
308
|
- lib/oxidized/nodes.rb
|
285
309
|
- lib/oxidized/output/file.rb
|
286
310
|
- lib/oxidized/output/git.rb
|
311
|
+
- lib/oxidized/output/gitcrypt.rb
|
287
312
|
- lib/oxidized/output/http.rb
|
288
313
|
- lib/oxidized/output/output.rb
|
289
314
|
- lib/oxidized/source/csv.rb
|