oxidized 0.29.1 → 0.30.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/codeql.yml +4 -4
- data/.github/workflows/publishdocker.yml +3 -0
- data/.github/workflows/ruby.yml +1 -1
- data/.github/workflows/stale.yml +4 -1
- data/.rubocop.yml +6 -3
- data/.rubocop_todo.yml +10 -93
- data/CHANGELOG.md +66 -4
- data/CONTRIBUTING.md +174 -0
- data/Dockerfile +12 -1
- data/README.md +18 -36
- data/bin/oxidized +2 -5
- data/docs/Hooks.md +37 -1
- data/docs/Model-Notes/APC_AOS.md +52 -0
- data/docs/Model-Notes/FSOS.md +11 -0
- data/docs/Model-Notes/FortiOS.md +28 -0
- data/docs/Model-Notes/README.md +1 -20
- data/docs/Model-Notes/XGS4600-Zyxel.md +5 -0
- data/docs/Ruby-API.md +1 -1
- data/docs/Sources.md +13 -0
- data/docs/Supported-OS-Types.md +178 -270
- data/docs/Troubleshooting.md +16 -0
- data/examples/podman-compose/Makefile +61 -0
- data/examples/podman-compose/README.md +58 -0
- data/examples/podman-compose/docker-compose.yml +21 -0
- data/examples/podman-compose/model-simulation/Dockerfile-model +13 -0
- data/examples/podman-compose/model-simulation/asternos.sh +34 -0
- data/examples/podman-compose/oxidized-config/.gitignore +8 -0
- data/examples/podman-compose/oxidized-config/config +46 -0
- data/examples/podman-compose/oxidized-config/router.db +1 -0
- data/examples/podman-compose/oxidized-ssh/README.md +14 -0
- data/extra/rest_client.rb +2 -2
- data/extra/syslog.rb +2 -2
- data/lib/oxidized/cli.rb +6 -4
- data/lib/oxidized/config.rb +17 -14
- data/lib/oxidized/core.rb +22 -3
- data/lib/oxidized/hook.rb +3 -3
- data/lib/oxidized/input/exec.rb +1 -1
- data/lib/oxidized/input/ftp.rb +2 -2
- data/lib/oxidized/input/http.rb +32 -8
- data/lib/oxidized/input/input.rb +1 -1
- data/lib/oxidized/input/scp.rb +52 -0
- data/lib/oxidized/input/ssh.rb +10 -7
- data/lib/oxidized/input/telnet.rb +3 -2
- data/lib/oxidized/input/tftp.rb +1 -1
- data/lib/oxidized/jobs.rb +11 -1
- data/lib/oxidized/manager.rb +6 -6
- data/lib/oxidized/model/acos.rb +1 -1
- data/lib/oxidized/model/addpack.rb +26 -0
- data/lib/oxidized/model/adtran.rb +5 -1
- data/lib/oxidized/model/adva.rb +2 -2
- data/lib/oxidized/model/aoscx.rb +2 -1
- data/lib/oxidized/model/apc_aos.rb +2 -1
- data/lib/oxidized/model/aricentiss.rb +7 -0
- data/lib/oxidized/model/asternos.rb +22 -0
- data/lib/oxidized/model/asyncos.rb +2 -2
- data/lib/oxidized/model/awplus.rb +2 -2
- data/lib/oxidized/model/bdcom.rb +1 -0
- data/lib/oxidized/model/c4cmts.rb +1 -2
- data/lib/oxidized/model/ciscosma.rb +1 -1
- data/lib/oxidized/model/ciscosmb.rb +6 -1
- data/lib/oxidized/model/comware.rb +2 -2
- data/lib/oxidized/model/cumulus.rb +1 -1
- data/lib/oxidized/model/dellx.rb +1 -1
- data/lib/oxidized/model/dlink.rb +4 -2
- data/lib/oxidized/model/dlinknextgen.rb +51 -0
- data/lib/oxidized/model/dnos.rb +3 -0
- data/lib/oxidized/model/edgecos.rb +1 -1
- data/lib/oxidized/model/eltex.rb +2 -0
- data/lib/oxidized/model/enterasys800.rb +1 -1
- data/lib/oxidized/model/eos.rb +1 -1
- data/lib/oxidized/model/firebrick.rb +2 -2
- data/lib/oxidized/model/firewareos.rb +1 -1
- data/lib/oxidized/model/fortios.rb +9 -2
- data/lib/oxidized/model/fsos.rb +44 -0
- data/lib/oxidized/model/ios.rb +1 -1
- data/lib/oxidized/model/iosxr.rb +2 -2
- data/lib/oxidized/model/junos.rb +3 -2
- data/lib/oxidized/model/mimosab11.rb +34 -0
- data/lib/oxidized/model/ml66.rb +33 -0
- data/lib/oxidized/model/model.rb +3 -3
- data/lib/oxidized/model/netgear.rb +1 -1
- data/lib/oxidized/model/netscaler.rb +1 -1
- data/lib/oxidized/model/nxos.rb +4 -3
- data/lib/oxidized/model/ocnos.rb +42 -0
- data/lib/oxidized/model/onefinity.rb +18 -0
- data/lib/oxidized/model/openbsd.rb +1 -1
- data/lib/oxidized/model/opengear.rb +36 -1
- data/lib/oxidized/model/opnsense.rb +1 -1
- data/lib/oxidized/model/panos.rb +2 -0
- data/lib/oxidized/model/pfsense.rb +1 -0
- data/lib/oxidized/model/procurve.rb +3 -1
- data/lib/oxidized/model/rgos.rb +33 -0
- data/lib/oxidized/model/routeros.rb +10 -8
- data/lib/oxidized/model/slxos.rb +2 -2
- data/lib/oxidized/model/sonicos.rb +18 -17
- data/lib/oxidized/model/sros.rb +3 -3
- data/lib/oxidized/model/tplink.rb +4 -3
- data/lib/oxidized/model/truenas.rb +2 -1
- data/lib/oxidized/model/vrp.rb +3 -1
- data/lib/oxidized/model/vyatta.rb +6 -0
- data/lib/oxidized/model/zynos.rb +67 -3
- data/lib/oxidized/model/zynosadsl.rb +14 -0
- data/lib/oxidized/model/zynosgs.rb +2 -0
- data/lib/oxidized/model/zynosmgs.rb +32 -0
- data/lib/oxidized/node.rb +7 -7
- data/lib/oxidized/nodes.rb +17 -12
- data/lib/oxidized/output/file.rb +1 -1
- data/lib/oxidized/output/git.rb +5 -3
- data/lib/oxidized/output/gitcrypt.rb +4 -3
- data/lib/oxidized/signals.rb +44 -0
- data/lib/oxidized/source/csv.rb +1 -1
- data/lib/oxidized/source/http.rb +26 -5
- data/lib/oxidized/source/source.rb +2 -2
- data/lib/oxidized/source/sql.rb +3 -3
- data/lib/oxidized/version.rb +2 -2
- data/lib/oxidized/worker.rb +8 -1
- data/lib/oxidized.rb +3 -2
- data/lib/refinements.rb +1 -1
- data/oxidized.gemspec +6 -3
- metadata +77 -9
data/lib/oxidized/output/file.rb
CHANGED
@@ -12,7 +12,7 @@ module Oxidized
|
|
12
12
|
def setup
|
13
13
|
return unless @cfg.empty?
|
14
14
|
|
15
|
-
Oxidized.asetus.user.output.file.directory = File.join(Config::
|
15
|
+
Oxidized.asetus.user.output.file.directory = File.join(Config::ROOT, 'configs')
|
16
16
|
Oxidized.asetus.save :user
|
17
17
|
raise NoConfig, 'no output file config, edit ~/.config/oxidized/config'
|
18
18
|
end
|
data/lib/oxidized/output/git.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module Oxidized
|
2
2
|
class Git < Output
|
3
|
+
using Refinements
|
4
|
+
|
3
5
|
class GitError < OxidizedError; end
|
4
6
|
begin
|
5
7
|
require 'rugged'
|
@@ -18,7 +20,7 @@ module Oxidized
|
|
18
20
|
if @cfg.empty?
|
19
21
|
Oxidized.asetus.user.output.git.user = 'Oxidized'
|
20
22
|
Oxidized.asetus.user.output.git.email = 'o@example.com'
|
21
|
-
Oxidized.asetus.user.output.git.repo = File.join(Config::
|
23
|
+
Oxidized.asetus.user.output.git.repo = File.join(Config::ROOT, 'oxidized.git')
|
22
24
|
Oxidized.asetus.save :user
|
23
25
|
raise NoConfig, 'no output git config, edit ~/.config/oxidized/config'
|
24
26
|
end
|
@@ -34,8 +36,8 @@ module Oxidized
|
|
34
36
|
|
35
37
|
def store(file, outputs, opt = {})
|
36
38
|
@msg = opt[:msg]
|
37
|
-
@user =
|
38
|
-
@email =
|
39
|
+
@user = opt[:user] || @cfg.user
|
40
|
+
@email = opt[:email] || @cfg.email
|
39
41
|
@opt = opt
|
40
42
|
@commitref = nil
|
41
43
|
repo = @cfg.repo
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Oxidized
|
2
2
|
class GitCrypt < Output
|
3
|
+
using Refinements
|
3
4
|
class GitCryptError < OxidizedError; end
|
4
5
|
begin
|
5
6
|
require 'git'
|
@@ -23,7 +24,7 @@ module Oxidized
|
|
23
24
|
if @cfg.empty?
|
24
25
|
Oxidized.asetus.user.output.gitcrypt.user = 'Oxidized'
|
25
26
|
Oxidized.asetus.user.output.gitcrypt.email = 'o@example.com'
|
26
|
-
Oxidized.asetus.user.output.gitcrypt.repo = File.join(Config::
|
27
|
+
Oxidized.asetus.user.output.gitcrypt.repo = File.join(Config::ROOT, 'oxidized.git')
|
27
28
|
Oxidized.asetus.save :user
|
28
29
|
raise NoConfig, 'no output git config, edit ~/.config/oxidized/config'
|
29
30
|
end
|
@@ -63,8 +64,8 @@ module Oxidized
|
|
63
64
|
|
64
65
|
def store(file, outputs, opt = {})
|
65
66
|
@msg = opt[:msg]
|
66
|
-
@user =
|
67
|
-
@email =
|
67
|
+
@user = opt[:user] || @cfg.user
|
68
|
+
@email = opt[:email] || @cfg.email
|
68
69
|
@opt = opt
|
69
70
|
@commitref = nil
|
70
71
|
repo = @cfg.repo
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# Monkey patch Signal.trap for Puma to keep it from overriding our handlers
|
2
|
+
# Also prevent Puma from registering its own SIGHUP handler
|
3
|
+
module Puma
|
4
|
+
class Signal
|
5
|
+
class << self
|
6
|
+
alias os_trap trap
|
7
|
+
def Signal.trap(sig, &block)
|
8
|
+
sigshortname = sig.gsub "SIG", ''
|
9
|
+
Oxidized::Signals.register_signal(sig, block) unless sigshortname.eql? 'HUP'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module Oxidized
|
16
|
+
class Signals
|
17
|
+
@handlers = Hash.new { |h, k| h[k] = [] }
|
18
|
+
class << self
|
19
|
+
attr_accessor :handlers
|
20
|
+
|
21
|
+
def register_signal(sig, procobj)
|
22
|
+
# Compute short name of the signal (without SIG prefix)
|
23
|
+
sigshortname = sig.gsub "SIG", ''
|
24
|
+
signum = Signal.list[sigshortname]
|
25
|
+
|
26
|
+
# Register the handler with OS
|
27
|
+
Signal.trap signum do
|
28
|
+
Oxidized::Signals.handle_signal(signum)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Add the proc to the handler list for the requested signal
|
32
|
+
@handlers[signum].push(procobj)
|
33
|
+
end
|
34
|
+
|
35
|
+
def handle_signal(signum)
|
36
|
+
return unless handlers.has_key?(signum)
|
37
|
+
|
38
|
+
@handlers[signum].each do |handler|
|
39
|
+
handler.call
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/oxidized/source/csv.rb
CHANGED
@@ -7,7 +7,7 @@ module Oxidized
|
|
7
7
|
|
8
8
|
def setup
|
9
9
|
if @cfg.empty?
|
10
|
-
Oxidized.asetus.user.source.csv.file = File.join(Config::
|
10
|
+
Oxidized.asetus.user.source.csv.file = File.join(Config::ROOT, 'router.db')
|
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
|
data/lib/oxidized/source/http.rb
CHANGED
@@ -6,6 +6,7 @@ module Oxidized
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def setup
|
9
|
+
Oxidized.setup_logger
|
9
10
|
return unless @cfg.url.empty?
|
10
11
|
|
11
12
|
raise NoConfig, 'no source http url config, edit ~/.config/oxidized/config'
|
@@ -18,9 +19,14 @@ module Oxidized
|
|
18
19
|
|
19
20
|
def load(node_want = nil)
|
20
21
|
nodes = []
|
21
|
-
|
22
|
-
data =
|
23
|
-
|
22
|
+
uri = URI.parse(@cfg.url)
|
23
|
+
data = JSON.parse(read_http(uri, node_want))
|
24
|
+
node_data = data
|
25
|
+
node_data = string_navigate(data, @cfg.hosts_location) if @cfg.hosts_location?
|
26
|
+
node_data = pagination(data, node_want) if @cfg.pagination?
|
27
|
+
|
28
|
+
# at this point we have all the nodes; pagination or not
|
29
|
+
node_data.each do |node|
|
24
30
|
next if node.empty?
|
25
31
|
|
26
32
|
# map node parameters
|
@@ -56,8 +62,23 @@ module Oxidized
|
|
56
62
|
object
|
57
63
|
end
|
58
64
|
|
59
|
-
def
|
60
|
-
|
65
|
+
def pagination(data, node_want)
|
66
|
+
node_data = []
|
67
|
+
raise Oxidized::OxidizedError, "if using pagination, 'pagination_key_name' setting must be set" unless @cfg.pagination_key_name?
|
68
|
+
|
69
|
+
next_key = @cfg.pagination_key_name
|
70
|
+
loop do
|
71
|
+
node_data += string_navigate(data, @cfg.hosts_location) if @cfg.hosts_location?
|
72
|
+
break if data[next_key].nil?
|
73
|
+
|
74
|
+
new_uri = URI.parse(data[next_key]) if data.has_key?(next_key)
|
75
|
+
data = JSON.parse(read_http(new_uri, node_want))
|
76
|
+
node_data += string_navigate(data, @cfg.hosts_location) if @cfg.hosts_location?
|
77
|
+
end
|
78
|
+
node_data
|
79
|
+
end
|
80
|
+
|
81
|
+
def read_http(uri, node_want)
|
61
82
|
http = Net::HTTP.new(uri.host, uri.port)
|
62
83
|
http.use_ssl = true if uri.scheme == 'https'
|
63
84
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @cfg.secure
|
@@ -3,8 +3,8 @@ module Oxidized
|
|
3
3
|
class NoConfig < OxidizedError; end
|
4
4
|
|
5
5
|
def initialize
|
6
|
-
@model_map =
|
7
|
-
@group_map =
|
6
|
+
@model_map = Oxidized.config.model_map || {}
|
7
|
+
@group_map = Oxidized.config.group_map || {}
|
8
8
|
end
|
9
9
|
|
10
10
|
def map_model(model)
|
data/lib/oxidized/source/sql.rb
CHANGED
@@ -10,7 +10,7 @@ module Oxidized
|
|
10
10
|
return unless @cfg.empty?
|
11
11
|
|
12
12
|
Oxidized.asetus.user.source.sql.adapter = 'sqlite'
|
13
|
-
Oxidized.asetus.user.source.sql.database = File.join(Config::
|
13
|
+
Oxidized.asetus.user.source.sql.database = File.join(Config::ROOT, 'sqlite.db')
|
14
14
|
Oxidized.asetus.user.source.sql.table = 'devices'
|
15
15
|
Oxidized.asetus.user.source.sql.map.name = 'name'
|
16
16
|
Oxidized.asetus.user.source.sql.map.model = 'rancid'
|
@@ -68,8 +68,8 @@ module Oxidized
|
|
68
68
|
sslkey: @cfg.ssl_key?)
|
69
69
|
end
|
70
70
|
Sequel.connect(options)
|
71
|
-
rescue Sequel::AdapterNotFound =>
|
72
|
-
raise OxidizedError, "SQL adapter gem not installed: " +
|
71
|
+
rescue Sequel::AdapterNotFound => e
|
72
|
+
raise OxidizedError, "SQL adapter gem not installed: " + e.message
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
data/lib/oxidized/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Oxidized
|
2
|
-
VERSION = '0.
|
3
|
-
VERSION_FULL = '0.
|
2
|
+
VERSION = '0.30.0'.freeze
|
3
|
+
VERSION_FULL = '0.30.0'.freeze
|
4
4
|
def self.version_set
|
5
5
|
version_full = %x(git describe --tags).chop rescue ""
|
6
6
|
version = %x(git describe --tags --abbrev=0).chop rescue ""
|
data/lib/oxidized/worker.rb
CHANGED
@@ -33,7 +33,10 @@ module Oxidized
|
|
33
33
|
Oxidized.logger.debug "lib/oxidized/worker.rb: Added #{node.group}/#{node.name} to the job queue"
|
34
34
|
end
|
35
35
|
|
36
|
-
|
36
|
+
if cycle_finished?
|
37
|
+
run_done_hook
|
38
|
+
exit 0 if Oxidized.config.run_once
|
39
|
+
end
|
37
40
|
Oxidized.logger.debug("lib/oxidized/worker.rb: #{@jobs.size} jobs running in parallel") unless @jobs.empty?
|
38
41
|
end
|
39
42
|
|
@@ -52,6 +55,10 @@ module Oxidized
|
|
52
55
|
Oxidized.logger.warn "#{node.group}/#{node.name} not found, removed while collecting?"
|
53
56
|
end
|
54
57
|
|
58
|
+
def reload
|
59
|
+
@nodes.load
|
60
|
+
end
|
61
|
+
|
55
62
|
private
|
56
63
|
|
57
64
|
def process_success(node, job)
|
data/lib/oxidized.rb
CHANGED
@@ -13,6 +13,7 @@ module Oxidized
|
|
13
13
|
require 'oxidized/nodes'
|
14
14
|
require 'oxidized/manager'
|
15
15
|
require 'oxidized/hook'
|
16
|
+
require 'oxidized/signals'
|
16
17
|
require 'oxidized/core'
|
17
18
|
|
18
19
|
def self.asetus
|
@@ -36,7 +37,7 @@ module Oxidized
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def self.setup_logger
|
39
|
-
FileUtils.mkdir_p(Config::
|
40
|
+
FileUtils.mkdir_p(Config::LOG) unless File.directory?(Config::LOG)
|
40
41
|
self.logger = if config.has_key?('use_syslog') && config.use_syslog
|
41
42
|
require 'syslog/logger'
|
42
43
|
Syslog::Logger.new('oxidized')
|
@@ -45,7 +46,7 @@ module Oxidized
|
|
45
46
|
if config.has_key?('log')
|
46
47
|
Logger.new(File.expand_path(config.log))
|
47
48
|
else
|
48
|
-
Logger.new(
|
49
|
+
Logger.new($stderr)
|
49
50
|
end
|
50
51
|
end
|
51
52
|
logger.level = Logger::INFO unless config.debug
|
data/lib/refinements.rb
CHANGED
data/oxidized.gemspec
CHANGED
@@ -24,19 +24,22 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_runtime_dependency 'asetus', '~> 0.1'
|
25
25
|
s.add_runtime_dependency 'bcrypt_pbkdf', '~> 1.0'
|
26
26
|
s.add_runtime_dependency 'ed25519', '~> 1.2'
|
27
|
+
s.add_runtime_dependency 'net-ftp', '~> 0.2'
|
28
|
+
s.add_runtime_dependency 'net-scp', '~> 4.0'
|
27
29
|
s.add_runtime_dependency 'net-ssh', '~> 7.1'
|
28
30
|
s.add_runtime_dependency 'net-telnet', '~> 0.2'
|
31
|
+
s.add_runtime_dependency 'psych', '~> 3.3.2'
|
29
32
|
s.add_runtime_dependency 'rugged', '~> 1.6'
|
30
33
|
s.add_runtime_dependency 'slop', '~> 4.6'
|
31
34
|
|
32
35
|
s.add_development_dependency 'bundler', '~> 2.2'
|
33
36
|
s.add_development_dependency 'git', '~> 1'
|
34
37
|
s.add_development_dependency 'minitest', '~> 5.18'
|
35
|
-
s.add_development_dependency 'mocha', '~> 1
|
38
|
+
s.add_development_dependency 'mocha', '~> 2.1'
|
36
39
|
s.add_development_dependency 'pry', '~> 0.14.2'
|
37
40
|
s.add_development_dependency 'rake', '~> 13.0'
|
38
|
-
s.add_development_dependency 'rubocop', '~> 1.
|
39
|
-
s.add_development_dependency 'rubocop-minitest', '~> 0.
|
41
|
+
s.add_development_dependency 'rubocop', '~> 1.62.0'
|
42
|
+
s.add_development_dependency 'rubocop-minitest', '~> 0.35.0'
|
40
43
|
s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
|
41
44
|
s.add_development_dependency 'simplecov', '~> 0.22.0'
|
42
45
|
s.add_development_dependency 'simplecov-cobertura', '~> 2.1.0'
|
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.30.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: 2024-04-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: asetus
|
@@ -54,6 +54,34 @@ dependencies:
|
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '1.2'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: net-ftp
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0.2'
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0.2'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: net-scp
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '4.0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '4.0'
|
57
85
|
- !ruby/object:Gem::Dependency
|
58
86
|
name: net-ssh
|
59
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,6 +110,20 @@ dependencies:
|
|
82
110
|
- - "~>"
|
83
111
|
- !ruby/object:Gem::Version
|
84
112
|
version: '0.2'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: psych
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 3.3.2
|
120
|
+
type: :runtime
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 3.3.2
|
85
127
|
- !ruby/object:Gem::Dependency
|
86
128
|
name: rugged
|
87
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,14 +200,14 @@ dependencies:
|
|
158
200
|
requirements:
|
159
201
|
- - "~>"
|
160
202
|
- !ruby/object:Gem::Version
|
161
|
-
version: '1
|
203
|
+
version: '2.1'
|
162
204
|
type: :development
|
163
205
|
prerelease: false
|
164
206
|
version_requirements: !ruby/object:Gem::Requirement
|
165
207
|
requirements:
|
166
208
|
- - "~>"
|
167
209
|
- !ruby/object:Gem::Version
|
168
|
-
version: '1
|
210
|
+
version: '2.1'
|
169
211
|
- !ruby/object:Gem::Dependency
|
170
212
|
name: pry
|
171
213
|
requirement: !ruby/object:Gem::Requirement
|
@@ -200,28 +242,28 @@ dependencies:
|
|
200
242
|
requirements:
|
201
243
|
- - "~>"
|
202
244
|
- !ruby/object:Gem::Version
|
203
|
-
version: 1.
|
245
|
+
version: 1.62.0
|
204
246
|
type: :development
|
205
247
|
prerelease: false
|
206
248
|
version_requirements: !ruby/object:Gem::Requirement
|
207
249
|
requirements:
|
208
250
|
- - "~>"
|
209
251
|
- !ruby/object:Gem::Version
|
210
|
-
version: 1.
|
252
|
+
version: 1.62.0
|
211
253
|
- !ruby/object:Gem::Dependency
|
212
254
|
name: rubocop-minitest
|
213
255
|
requirement: !ruby/object:Gem::Requirement
|
214
256
|
requirements:
|
215
257
|
- - "~>"
|
216
258
|
- !ruby/object:Gem::Version
|
217
|
-
version: 0.
|
259
|
+
version: 0.35.0
|
218
260
|
type: :development
|
219
261
|
prerelease: false
|
220
262
|
version_requirements: !ruby/object:Gem::Requirement
|
221
263
|
requirements:
|
222
264
|
- - "~>"
|
223
265
|
- !ruby/object:Gem::Version
|
224
|
-
version: 0.
|
266
|
+
version: 0.35.0
|
225
267
|
- !ruby/object:Gem::Dependency
|
226
268
|
name: rubocop-rake
|
227
269
|
requirement: !ruby/object:Gem::Requirement
|
@@ -299,6 +341,7 @@ files:
|
|
299
341
|
- ".rubocop.yml"
|
300
342
|
- ".rubocop_todo.yml"
|
301
343
|
- CHANGELOG.md
|
344
|
+
- CONTRIBUTING.md
|
302
345
|
- Dockerfile
|
303
346
|
- Gemfile
|
304
347
|
- LICENSE
|
@@ -311,11 +354,14 @@ files:
|
|
311
354
|
- docs/Creating-Models.md
|
312
355
|
- docs/Hooks.md
|
313
356
|
- docs/Model-Notes/ADVA.md
|
357
|
+
- docs/Model-Notes/APC_AOS.md
|
314
358
|
- docs/Model-Notes/AireOS.md
|
315
359
|
- docs/Model-Notes/ArbOS.md
|
316
360
|
- docs/Model-Notes/Comware.md
|
317
361
|
- docs/Model-Notes/Cumulus.md
|
318
362
|
- docs/Model-Notes/EOS.md
|
363
|
+
- docs/Model-Notes/FSOS.md
|
364
|
+
- docs/Model-Notes/FortiOS.md
|
319
365
|
- docs/Model-Notes/IOS.md
|
320
366
|
- docs/Model-Notes/JunOS.md
|
321
367
|
- docs/Model-Notes/LenovoNOS.md
|
@@ -335,6 +381,15 @@ files:
|
|
335
381
|
- docs/Sources.md
|
336
382
|
- docs/Supported-OS-Types.md
|
337
383
|
- docs/Troubleshooting.md
|
384
|
+
- examples/podman-compose/Makefile
|
385
|
+
- examples/podman-compose/README.md
|
386
|
+
- examples/podman-compose/docker-compose.yml
|
387
|
+
- examples/podman-compose/model-simulation/Dockerfile-model
|
388
|
+
- examples/podman-compose/model-simulation/asternos.sh
|
389
|
+
- examples/podman-compose/oxidized-config/.gitignore
|
390
|
+
- examples/podman-compose/oxidized-config/config
|
391
|
+
- examples/podman-compose/oxidized-config/router.db
|
392
|
+
- examples/podman-compose/oxidized-ssh/README.md
|
338
393
|
- extra/auto-reload-config.runit
|
339
394
|
- extra/gitdiff-msteams.sh
|
340
395
|
- extra/nagios_check_failing_nodes.rb
|
@@ -371,6 +426,7 @@ files:
|
|
371
426
|
- lib/oxidized/input/ftp.rb
|
372
427
|
- lib/oxidized/input/http.rb
|
373
428
|
- lib/oxidized/input/input.rb
|
429
|
+
- lib/oxidized/input/scp.rb
|
374
430
|
- lib/oxidized/input/ssh.rb
|
375
431
|
- lib/oxidized/input/telnet.rb
|
376
432
|
- lib/oxidized/input/tftp.rb
|
@@ -380,6 +436,7 @@ files:
|
|
380
436
|
- lib/oxidized/model/acmepacket.rb
|
381
437
|
- lib/oxidized/model/acos.rb
|
382
438
|
- lib/oxidized/model/acsw.rb
|
439
|
+
- lib/oxidized/model/addpack.rb
|
383
440
|
- lib/oxidized/model/adtran.rb
|
384
441
|
- lib/oxidized/model/adva.rb
|
385
442
|
- lib/oxidized/model/aen.rb
|
@@ -396,6 +453,7 @@ files:
|
|
396
453
|
- lib/oxidized/model/arbos.rb
|
397
454
|
- lib/oxidized/model/aricentiss.rb
|
398
455
|
- lib/oxidized/model/asa.rb
|
456
|
+
- lib/oxidized/model/asternos.rb
|
399
457
|
- lib/oxidized/model/asyncos.rb
|
400
458
|
- lib/oxidized/model/audiocodes.rb
|
401
459
|
- lib/oxidized/model/audiocodesmp.rb
|
@@ -426,6 +484,7 @@ files:
|
|
426
484
|
- lib/oxidized/model/dcnos.rb
|
427
485
|
- lib/oxidized/model/dellx.rb
|
428
486
|
- lib/oxidized/model/dlink.rb
|
487
|
+
- lib/oxidized/model/dlinknextgen.rb
|
429
488
|
- lib/oxidized/model/dnos.rb
|
430
489
|
- lib/oxidized/model/eciapollo.rb
|
431
490
|
- lib/oxidized/model/edgecos.rb
|
@@ -443,6 +502,7 @@ files:
|
|
443
502
|
- lib/oxidized/model/firewareos.rb
|
444
503
|
- lib/oxidized/model/fortios.rb
|
445
504
|
- lib/oxidized/model/fortiwlc.rb
|
505
|
+
- lib/oxidized/model/fsos.rb
|
446
506
|
- lib/oxidized/model/ftos.rb
|
447
507
|
- lib/oxidized/model/fujitsupy.rb
|
448
508
|
- lib/oxidized/model/gaiaos.rb
|
@@ -469,6 +529,8 @@ files:
|
|
469
529
|
- lib/oxidized/model/linksyssrw.rb
|
470
530
|
- lib/oxidized/model/linuxgeneric.rb
|
471
531
|
- lib/oxidized/model/masteros.rb
|
532
|
+
- lib/oxidized/model/mimosab11.rb
|
533
|
+
- lib/oxidized/model/ml66.rb
|
472
534
|
- lib/oxidized/model/mlnxos.rb
|
473
535
|
- lib/oxidized/model/model.rb
|
474
536
|
- lib/oxidized/model/mtrlrfs.rb
|
@@ -482,6 +544,8 @@ files:
|
|
482
544
|
- lib/oxidized/model/nsxconfig.rb
|
483
545
|
- lib/oxidized/model/nsxfirewall.rb
|
484
546
|
- lib/oxidized/model/nxos.rb
|
547
|
+
- lib/oxidized/model/ocnos.rb
|
548
|
+
- lib/oxidized/model/onefinity.rb
|
485
549
|
- lib/oxidized/model/oneos.rb
|
486
550
|
- lib/oxidized/model/openbsd.rb
|
487
551
|
- lib/oxidized/model/opengear.rb
|
@@ -499,6 +563,7 @@ files:
|
|
499
563
|
- lib/oxidized/model/qtech.rb
|
500
564
|
- lib/oxidized/model/quantaos.rb
|
501
565
|
- lib/oxidized/model/raisecom.rb
|
566
|
+
- lib/oxidized/model/rgos.rb
|
502
567
|
- lib/oxidized/model/routeros.rb
|
503
568
|
- lib/oxidized/model/saos.rb
|
504
569
|
- lib/oxidized/model/screenos.rb
|
@@ -534,8 +599,10 @@ files:
|
|
534
599
|
- lib/oxidized/model/zteolt.rb
|
535
600
|
- lib/oxidized/model/zy1308.rb
|
536
601
|
- lib/oxidized/model/zynos.rb
|
602
|
+
- lib/oxidized/model/zynosadsl.rb
|
537
603
|
- lib/oxidized/model/zynoscli.rb
|
538
604
|
- lib/oxidized/model/zynosgs.rb
|
605
|
+
- lib/oxidized/model/zynosmgs.rb
|
539
606
|
- lib/oxidized/node.rb
|
540
607
|
- lib/oxidized/node/stats.rb
|
541
608
|
- lib/oxidized/nodes.rb
|
@@ -544,6 +611,7 @@ files:
|
|
544
611
|
- lib/oxidized/output/gitcrypt.rb
|
545
612
|
- lib/oxidized/output/http.rb
|
546
613
|
- lib/oxidized/output/output.rb
|
614
|
+
- lib/oxidized/signals.rb
|
547
615
|
- lib/oxidized/source/csv.rb
|
548
616
|
- lib/oxidized/source/http.rb
|
549
617
|
- lib/oxidized/source/source.rb
|
@@ -572,7 +640,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
572
640
|
- !ruby/object:Gem::Version
|
573
641
|
version: '0'
|
574
642
|
requirements: []
|
575
|
-
rubygems_version: 3.
|
643
|
+
rubygems_version: 3.3.15
|
576
644
|
signing_key:
|
577
645
|
specification_version: 4
|
578
646
|
summary: feeble attempt at rancid
|