oxidized 0.19.0 → 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|