oxidized 0.31.0 → 0.32.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +2 -9
  3. data/.rubocop.yml +8 -7
  4. data/.rubocop_todo.yml +6 -6
  5. data/CHANGELOG.md +40 -0
  6. data/Dockerfile +5 -2
  7. data/Rakefile +28 -0
  8. data/docs/Configuration.md +14 -2
  9. data/docs/Creating-Models.md +52 -22
  10. data/docs/DeviceSimulation.md +184 -0
  11. data/docs/Hooks.md +5 -5
  12. data/docs/Issues.md +15 -9
  13. data/docs/Model-Notes/APC_AOS.md +29 -16
  14. data/docs/Model-Notes/FSOS.md +1 -0
  15. data/docs/ModelUnitTests.md +186 -0
  16. data/docs/Release.md +18 -2
  17. data/docs/Supported-OS-Types.md +3 -2
  18. data/examples/podman-compose/Makefile +1 -2
  19. data/{examples/device-simulation → extra}/device2yaml.rb +32 -12
  20. data/extra/gitdiff-msteams.sh +32 -5
  21. data/extra/nagios_check_failing_nodes.rb +1 -1
  22. data/extra/rest_client.rb +1 -1
  23. data/lib/oxidized/config.rb +1 -1
  24. data/lib/oxidized/input/ssh.rb +13 -5
  25. data/lib/oxidized/model/aos7.rb +2 -0
  26. data/lib/oxidized/model/aosw.rb +1 -1
  27. data/lib/oxidized/model/apc_aos.rb +1 -1
  28. data/lib/oxidized/model/arubainstant.rb +1 -1
  29. data/lib/oxidized/model/asa.rb +2 -1
  30. data/lib/oxidized/model/asyncos.rb +1 -1
  31. data/lib/oxidized/model/cumulus.rb +16 -2
  32. data/lib/oxidized/model/enterprise_sonic.rb +46 -0
  33. data/lib/oxidized/model/fsos.rb +5 -1
  34. data/lib/oxidized/model/garderos.rb +4 -4
  35. data/lib/oxidized/model/junos.rb +1 -1
  36. data/lib/oxidized/model/kornfeldos.rb +33 -0
  37. data/lib/oxidized/model/model.rb +2 -2
  38. data/lib/oxidized/model/powerconnect.rb +1 -1
  39. data/lib/oxidized/model/sonicos.rb +8 -2
  40. data/lib/oxidized/model/tplink.rb +1 -0
  41. data/lib/oxidized/model/xos.rb +1 -1
  42. data/lib/oxidized/source/source.rb +32 -2
  43. data/lib/oxidized/version.rb +2 -2
  44. data/oxidized.gemspec +21 -11
  45. metadata +47 -71
  46. data/examples/device-simulation/README.md +0 -173
  47. data/examples/device-simulation/cmdsets/aoscx +0 -9
  48. data/examples/device-simulation/cmdsets/arubainstant +0 -5
  49. data/examples/device-simulation/cmdsets/asa +0 -7
  50. data/examples/device-simulation/cmdsets/ios +0 -7
  51. data/examples/device-simulation/cmdsets/nxos +0 -5
  52. data/examples/device-simulation/cmdsets/routeros +0 -5
  53. data/examples/device-simulation/cmdsets/srosmd +0 -11
  54. data/examples/device-simulation/yaml/aoscx_R0X25A-6410_FL.10.10.1100.yaml +0 -2281
  55. data/examples/device-simulation/yaml/aoscx_R8N85A-C6000-48G-CL4_PL.10.08.1010.yaml +0 -451
  56. data/examples/device-simulation/yaml/arubainstant_IAP515_8.10.0.6_VWLC.yaml +0 -213
  57. data/examples/device-simulation/yaml/asa_5512_9.12-4-67_single-context.yaml +0 -531
  58. data/examples/device-simulation/yaml/asr920_16.8.1b.yaml +0 -1122
  59. data/examples/device-simulation/yaml/garderos_R7709_003_006_068.yaml +0 -101
  60. data/examples/device-simulation/yaml/iosxe_C9200L-24P-4G_17.09.04a.yaml +0 -514
  61. data/examples/device-simulation/yaml/iosxe_C9800-L-F-K9_17.06.05.yaml +0 -417
  62. data/examples/device-simulation/yaml/riverbed_915.yaml +0 -123
  63. data/examples/device-simulation/yaml/routeros_CHR_7.10.1.yaml +0 -145
  64. data/examples/device-simulation/yaml/routeros_CHR_7.16.yaml +0 -79
  65. data/examples/device-simulation/yaml/routeros_L009UiGS_7.15.2.yaml +0 -353
@@ -0,0 +1,46 @@
1
+ class Enterprise_SONiC < Oxidized::Model # rubocop:disable Naming/ClassAndModuleCamelCase
2
+ using Refinements
3
+
4
+ # Remove ANSI escape codes
5
+ expect /\e\[[0-?]*[ -\/]*[@-~]\r?/ do |data, re|
6
+ data.gsub re, ''
7
+ end
8
+
9
+ # Matches both sonic-cli and linux terminal
10
+ prompt /^(?:[\w.-]+@[\w.-]+:[~\w\/-]+\$|[\w.-]+#)\s*/
11
+ comment "# "
12
+
13
+ def add_comment(comment)
14
+ "\n##### #{comment} #####\n"
15
+ end
16
+
17
+ post do
18
+ cmd 'show running-configuration' do |cfg|
19
+ add_comment('CONFIGURATION') + cfg
20
+ end
21
+ end
22
+
23
+ cmd 'show version' do |cfg|
24
+ cfg = cfg.each_line.reject { |line| line.match /Uptime/ }.join
25
+ add_comment('VERSION') + cfg
26
+ end
27
+
28
+ cmd 'show platform syseeprom' do |cfg|
29
+ add_comment('SYSEEPROM') + cfg
30
+ end
31
+
32
+ cmd :all do |cfg|
33
+ cfg.cut_both
34
+ end
35
+
36
+ cfg :ssh do
37
+ # if user logs in to linux == has admin rights
38
+ if vars(:admin) == true
39
+ post_login do
40
+ cmd "sonic-cli\n"
41
+ end
42
+ end
43
+ post_login 'terminal length 0'
44
+ pre_logout 'exit'
45
+ end
46
+ end
@@ -2,6 +2,7 @@ class FSOS < Oxidized::Model
2
2
  # Fiberstore / fs.com
3
3
  using Refinements
4
4
  comment '! '
5
+ prompt /^([\w.@()-]+[#>]\s?)$/
5
6
 
6
7
  # Handle paging
7
8
  expect /^ --More--.*$/ do |data, re|
@@ -13,6 +14,9 @@ class FSOS < Oxidized::Model
13
14
  cfg.gsub! /(secret \w+) (\S+).*/, '\\1 <secret hidden>'
14
15
  cfg.gsub! /(password \d+) (\S+).*/, '\\1 <secret hidden>'
15
16
  cfg.gsub! /(snmp-server community \d+) (\S+).*/, '\\1 <secret hidden>'
17
+ cfg.gsub! /^(snmp-server host \S+( udp-port \d+)?( permit|deny \d+)?( informs?)?( traps?)?(( version v3 (priv|auth|noauth))|( version (v1|v2c))?)) +\S+( .*)?$*/, '\\1 <secret hidden>'
18
+ cfg.gsub! /^(snmp-server user \S+ \S+ v3( priv (des|aes128|aes256|aes256-c))?( auth (md5|sha|sha256) \d+)) +\S+( .*)?$*/, '\\1 <secret hidden>'
19
+ cfg.gsub! /^(.*key \d+) (\S+).*/, '\\1 <secret hidden>'
16
20
  cfg
17
21
  end
18
22
 
@@ -37,7 +41,7 @@ class FSOS < Oxidized::Model
37
41
  cfg :telnet, :ssh do
38
42
  post_login 'enable'
39
43
  post_login 'terminal length 0'
40
- post_login 'terminal width 256'
44
+ post_login 'terminal width 512'
41
45
  pre_logout 'exit'
42
46
  pre_logout 'exit'
43
47
  end
@@ -4,12 +4,12 @@ class Garderos < Oxidized::Model
4
4
  # Routers for harsh environments
5
5
  # grs = Garderos Router Software
6
6
 
7
- # remove all ANSI escape codes, as GRS uses them :-(
8
- # the prompt does not need to match escape codes, as they have been removed
9
- expect /\e\[\d*m\r?/ do |data, re|
7
+ # Remove ANSI escape codes
8
+ expect /\e\[[0-?]*[ -\/]*[@-~]\r?/ do |data, re|
10
9
  data.gsub re, ''
11
10
  end
12
11
 
12
+ # the prompt does not need to match escape codes, as they have been removed above
13
13
  prompt /[\w-]+# /
14
14
  comment '# '
15
15
 
@@ -29,7 +29,7 @@ class Garderos < Oxidized::Model
29
29
  # If we have a radio modem installed, we'd like to list the SIM Card
30
30
  cmd 'show hardware wwan wwan0 sim' do |cfg|
31
31
  if cfg.start_with? 'Unknown command'
32
- ''
32
+ String.new('')
33
33
  else
34
34
  comment "#{cfg}\n"
35
35
  end
@@ -26,7 +26,7 @@ class JunOS < Oxidized::Model
26
26
  end
27
27
 
28
28
  post do
29
- out = ''
29
+ out = String.new('')
30
30
  case @model
31
31
  when 'mx960'
32
32
  out << cmd('show chassis fabric reachability') { |cfg| comment cfg }
@@ -0,0 +1,33 @@
1
+ class KornfeldOS < Oxidized::Model
2
+ using Refinements
3
+
4
+ # For switches running Kornfeld OS
5
+ #
6
+ # Tested with : Kornfeld D1156 and Kornfeld D2132
7
+
8
+ comment '# '
9
+
10
+ cmd :all do |cfg|
11
+ cfg.gsub! /^% Invalid input detected at '\^' marker\.$|^\s+\^$/, ''
12
+ cfg.each_line.to_a[2..-2].join
13
+ end
14
+
15
+ cmd 'show version | except REPOSITORY | except docker | except Uptime' do |cfg|
16
+ comment cfg
17
+ end
18
+
19
+ cmd 'show platform firmware' do |cfg|
20
+ comment cfg
21
+ end
22
+
23
+ cmd 'show running-configuration' do |cfg|
24
+ cfg.each_line.to_a[0..-1].join
25
+ end
26
+
27
+ cfg :ssh do
28
+ username /^Login:/
29
+ password /^Password:/
30
+ post_login 'terminal length 0'
31
+ pre_logout 'exit'
32
+ end
33
+ end
@@ -184,7 +184,7 @@ module Oxidized
184
184
  end
185
185
 
186
186
  def comment(str)
187
- data = ''
187
+ data = String.new('')
188
188
  str.each_line do |line|
189
189
  data << self.class.comment << line
190
190
  end
@@ -202,7 +202,7 @@ module Oxidized
202
202
  # Also, XML Comments must not contain --. So we put a space between
203
203
  # any double hyphens, by replacing any - that is followed by another -
204
204
  # with '- '
205
- data = ''
205
+ data = String.new('')
206
206
  str.each_line do |_line|
207
207
  data << '<!-- ' << str.gsub(/-(?=-)/, '- ').chomp << " -->\n"
208
208
  end
@@ -15,7 +15,7 @@ class PowerConnect < Oxidized::Model
15
15
  end
16
16
 
17
17
  cmd :secret do |cfg|
18
- cfg.gsub! /^(username \S+ password (?:encrypted )?)\S+(.*)/, '\1<hidden>\2'
18
+ cfg.gsub! /^((?:enable |username \S+ )?password (?:level\s\d{1,2} |encrypted ){,2})\S+(.*)/, '\1<hidden>\2'
19
19
  cfg.gsub! /^(tacacs-server key) \S+/, '\\1 <secret hidden>'
20
20
  cfg
21
21
  end
@@ -3,8 +3,14 @@ class SonicOS < Oxidized::Model
3
3
 
4
4
  # Applies to Sonicwall NSA series firewalls
5
5
 
6
- prompt /^\w+@\w+[>]\(?.+\)?\s?/
7
- comment '! '
6
+ prompt /^\w+@[\w\-]+[>]\(?.+\)?\s?/
7
+ comment '! '
8
+
9
+ # Accept policiy message (see Issue #3339). Tested on 6.5 and 7.1
10
+ expect /Accept The Policy Banner \(yes\)\?\r\nyes: $/ do |data, re|
11
+ send "yes\n"
12
+ data.sub re, ''
13
+ end
8
14
 
9
15
  cmd :all do |cfg|
10
16
  cfg.each_line.to_a[1..-2].join
@@ -58,6 +58,7 @@ class TPLink < Oxidized::Model
58
58
  if vars(:enable) == true
59
59
  cmd "enable"
60
60
  elsif vars(:enable)
61
+ cmd "enable", /^[pP]assword:/
61
62
  cmd vars(:enable)
62
63
  end
63
64
  end
@@ -13,7 +13,7 @@ class XOS < Oxidized::Model
13
13
  end
14
14
 
15
15
  cmd :secret do |cfg|
16
- cfg.gsub! /^(configure radius (netlogin|mgmt-access) (primary|secondary) shared-secret encrypted).+/, '\\1 <secret hidden>'
16
+ cfg.gsub! /^(configure (radius|radius-accounting) (netlogin|mgmt-access) (primary|secondary) shared-secret encrypted).+/, '\\1 <secret hidden>'
17
17
  cfg.gsub! /^(configure account admin encrypted).+/, '\\1 <secret hidden>'
18
18
  cfg.gsub! /^(create account (admin|user) (.+) encrypted).+/, '\\1 <secret hidden>'
19
19
  cfg
@@ -8,12 +8,42 @@ module Oxidized
8
8
  @group_map = Oxidized.config.group_map || {}
9
9
  end
10
10
 
11
+ # common code of #map_model and #map_group
12
+ def map_value(map_hash, original_value)
13
+ map_hash.each do |key, new_value|
14
+ mthd = key.instance_of?(Regexp) ? :match : :eql?
15
+ return new_value if original_value.send(mthd, key)
16
+ end
17
+ original_value
18
+ end
19
+
20
+ # search a match for model in the configuration and returns it.
21
+ # If no match is found, return model
22
+ #
23
+ # model can be matched against a string or a regexp:
24
+ #
25
+ # model_map:
26
+ # cisco: ios
27
+ # juniper: junos
28
+ # !ruby/regexp /procurve/: procurve
11
29
  def map_model(model)
12
- @model_map.has_key?(model) ? @model_map[model] : model
30
+ map_value(@model_map, model)
13
31
  end
14
32
 
33
+ # search a match for group in the configuration and returns it.
34
+ # If no match is found, return group
35
+ #
36
+ # group can be matched against a string or a regexp:
37
+ #
38
+ # group_map:
39
+ # alias1: groupA
40
+ # alias2: groupA
41
+ # alias3: groupB
42
+ # alias4: groupB
43
+ # !ruby/regexp /specialgroup/: groupS
44
+ # aliasN: groupZ
15
45
  def map_group(group)
16
- @group_map.has_key?(group) ? @group_map[group] : group
46
+ map_value(@group_map, group)
17
47
  end
18
48
 
19
49
  def node_var_interpolate(var)
@@ -1,6 +1,6 @@
1
1
  module Oxidized
2
- VERSION = '0.31.0'.freeze
3
- VERSION_FULL = '0.31.0'.freeze
2
+ VERSION = '0.32.1'.freeze
3
+ VERSION_FULL = '0.32.1'.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/oxidized.gemspec CHANGED
@@ -21,33 +21,43 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.required_ruby_version = '>= 3.1'
23
23
 
24
- s.add_dependency 'asetus', '~> 0.1'
24
+ # Gemspec strategy
25
+ #
26
+ # For dependency and optional dependencies, we try to set the minimal
27
+ # dependency lower than the Ubuntu Noble or Debian Bookworm package version,
28
+ # so that native packages can be used.
29
+ # We limit the maximal version so that dependabot can warn about new versions
30
+ # and we can test them before activating them in Oxidized.
31
+ #
32
+ # development dependencies are set to the latest minor version of a library
33
+ # and updated after having tested them
34
+
35
+ s.add_dependency 'asetus', '~> 0.4'
25
36
  s.add_dependency 'bcrypt_pbkdf', '~> 1.0'
26
37
  s.add_dependency 'ed25519', '~> 1.2'
27
38
  s.add_dependency 'net-ftp', '~> 0.2'
28
39
  s.add_dependency 'net-http-digest_auth', '~> 1.4'
29
- s.add_dependency 'net-scp', '~> 4.0'
40
+ s.add_dependency 'net-scp', '~> 4.1'
30
41
  s.add_dependency 'net-ssh', '~> 7.3'
31
42
  s.add_dependency 'net-telnet', '~> 0.2'
43
+ s.add_dependency 'ostruct', '~> 0.6'
32
44
  s.add_dependency 'psych', '~> 5.0'
33
45
  s.add_dependency 'rugged', '~> 1.6'
34
46
  s.add_dependency 'slop', '~> 4.6'
35
47
 
36
48
  s.add_development_dependency 'bundler', '~> 2.2'
37
49
  s.add_development_dependency 'git', '~> 2'
38
- s.add_development_dependency 'minitest', '~> 5.18'
50
+ s.add_development_dependency 'minitest', '~> 5.25.4'
39
51
  s.add_development_dependency 'mocha', '~> 2.1'
40
- s.add_development_dependency 'pry', '~> 0.14.2'
52
+ s.add_development_dependency 'pry', '~> 0.15.0'
41
53
  s.add_development_dependency 'rake', '~> 13.0'
42
- s.add_development_dependency 'rubocop', '~> 1.68.0'
43
- s.add_development_dependency 'rubocop-minitest', '~> 0.36.0'
44
- s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
54
+ s.add_development_dependency 'rubocop', '~> 1.72.0'
55
+ s.add_development_dependency 'rubocop-minitest', '~> 0.37.0'
56
+ s.add_development_dependency 'rubocop-rake', '~> 0.7.0'
45
57
  s.add_development_dependency 'rubocop-sequel', '~> 0.3.3'
46
58
  s.add_development_dependency 'simplecov', '~> 0.22.0'
47
- s.add_development_dependency 'simplecov-cobertura', '~> 2.1.0'
48
- s.add_development_dependency 'simplecov-html', '~> 0.13.1'
49
59
 
50
60
  # Dependencies on optional libraries, used for unit tests & development
51
- s.add_development_dependency 'oxidized-web', '>= 0.14.0'
52
- s.add_development_dependency 'sequel', '~> 5.63'
61
+ s.add_development_dependency 'oxidized-web', '>= 0.15.0'
62
+ s.add_development_dependency 'sequel', '>= 5.63.0', '<= 5.89.0'
53
63
  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.31.0
4
+ version: 0.32.1
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: 2024-11-29 00:00:00.000000000 Z
13
+ date: 2025-02-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: asetus
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '0.1'
21
+ version: '0.4'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '0.1'
28
+ version: '0.4'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: bcrypt_pbkdf
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -88,14 +88,14 @@ dependencies:
88
88
  requirements:
89
89
  - - "~>"
90
90
  - !ruby/object:Gem::Version
91
- version: '4.0'
91
+ version: '4.1'
92
92
  type: :runtime
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - "~>"
97
97
  - !ruby/object:Gem::Version
98
- version: '4.0'
98
+ version: '4.1'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: net-ssh
101
101
  requirement: !ruby/object:Gem::Requirement
@@ -124,6 +124,20 @@ dependencies:
124
124
  - - "~>"
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0.2'
127
+ - !ruby/object:Gem::Dependency
128
+ name: ostruct
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '0.6'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '0.6'
127
141
  - !ruby/object:Gem::Dependency
128
142
  name: psych
129
143
  requirement: !ruby/object:Gem::Requirement
@@ -200,14 +214,14 @@ dependencies:
200
214
  requirements:
201
215
  - - "~>"
202
216
  - !ruby/object:Gem::Version
203
- version: '5.18'
217
+ version: 5.25.4
204
218
  type: :development
205
219
  prerelease: false
206
220
  version_requirements: !ruby/object:Gem::Requirement
207
221
  requirements:
208
222
  - - "~>"
209
223
  - !ruby/object:Gem::Version
210
- version: '5.18'
224
+ version: 5.25.4
211
225
  - !ruby/object:Gem::Dependency
212
226
  name: mocha
213
227
  requirement: !ruby/object:Gem::Requirement
@@ -228,14 +242,14 @@ dependencies:
228
242
  requirements:
229
243
  - - "~>"
230
244
  - !ruby/object:Gem::Version
231
- version: 0.14.2
245
+ version: 0.15.0
232
246
  type: :development
233
247
  prerelease: false
234
248
  version_requirements: !ruby/object:Gem::Requirement
235
249
  requirements:
236
250
  - - "~>"
237
251
  - !ruby/object:Gem::Version
238
- version: 0.14.2
252
+ version: 0.15.0
239
253
  - !ruby/object:Gem::Dependency
240
254
  name: rake
241
255
  requirement: !ruby/object:Gem::Requirement
@@ -256,42 +270,42 @@ dependencies:
256
270
  requirements:
257
271
  - - "~>"
258
272
  - !ruby/object:Gem::Version
259
- version: 1.68.0
273
+ version: 1.72.0
260
274
  type: :development
261
275
  prerelease: false
262
276
  version_requirements: !ruby/object:Gem::Requirement
263
277
  requirements:
264
278
  - - "~>"
265
279
  - !ruby/object:Gem::Version
266
- version: 1.68.0
280
+ version: 1.72.0
267
281
  - !ruby/object:Gem::Dependency
268
282
  name: rubocop-minitest
269
283
  requirement: !ruby/object:Gem::Requirement
270
284
  requirements:
271
285
  - - "~>"
272
286
  - !ruby/object:Gem::Version
273
- version: 0.36.0
287
+ version: 0.37.0
274
288
  type: :development
275
289
  prerelease: false
276
290
  version_requirements: !ruby/object:Gem::Requirement
277
291
  requirements:
278
292
  - - "~>"
279
293
  - !ruby/object:Gem::Version
280
- version: 0.36.0
294
+ version: 0.37.0
281
295
  - !ruby/object:Gem::Dependency
282
296
  name: rubocop-rake
283
297
  requirement: !ruby/object:Gem::Requirement
284
298
  requirements:
285
299
  - - "~>"
286
300
  - !ruby/object:Gem::Version
287
- version: 0.6.0
301
+ version: 0.7.0
288
302
  type: :development
289
303
  prerelease: false
290
304
  version_requirements: !ruby/object:Gem::Requirement
291
305
  requirements:
292
306
  - - "~>"
293
307
  - !ruby/object:Gem::Version
294
- version: 0.6.0
308
+ version: 0.7.0
295
309
  - !ruby/object:Gem::Dependency
296
310
  name: rubocop-sequel
297
311
  requirement: !ruby/object:Gem::Requirement
@@ -320,62 +334,40 @@ dependencies:
320
334
  - - "~>"
321
335
  - !ruby/object:Gem::Version
322
336
  version: 0.22.0
323
- - !ruby/object:Gem::Dependency
324
- name: simplecov-cobertura
325
- requirement: !ruby/object:Gem::Requirement
326
- requirements:
327
- - - "~>"
328
- - !ruby/object:Gem::Version
329
- version: 2.1.0
330
- type: :development
331
- prerelease: false
332
- version_requirements: !ruby/object:Gem::Requirement
333
- requirements:
334
- - - "~>"
335
- - !ruby/object:Gem::Version
336
- version: 2.1.0
337
- - !ruby/object:Gem::Dependency
338
- name: simplecov-html
339
- requirement: !ruby/object:Gem::Requirement
340
- requirements:
341
- - - "~>"
342
- - !ruby/object:Gem::Version
343
- version: 0.13.1
344
- type: :development
345
- prerelease: false
346
- version_requirements: !ruby/object:Gem::Requirement
347
- requirements:
348
- - - "~>"
349
- - !ruby/object:Gem::Version
350
- version: 0.13.1
351
337
  - !ruby/object:Gem::Dependency
352
338
  name: oxidized-web
353
339
  requirement: !ruby/object:Gem::Requirement
354
340
  requirements:
355
341
  - - ">="
356
342
  - !ruby/object:Gem::Version
357
- version: 0.14.0
343
+ version: 0.15.0
358
344
  type: :development
359
345
  prerelease: false
360
346
  version_requirements: !ruby/object:Gem::Requirement
361
347
  requirements:
362
348
  - - ">="
363
349
  - !ruby/object:Gem::Version
364
- version: 0.14.0
350
+ version: 0.15.0
365
351
  - !ruby/object:Gem::Dependency
366
352
  name: sequel
367
353
  requirement: !ruby/object:Gem::Requirement
368
354
  requirements:
369
- - - "~>"
355
+ - - ">="
370
356
  - !ruby/object:Gem::Version
371
- version: '5.63'
357
+ version: 5.63.0
358
+ - - "<="
359
+ - !ruby/object:Gem::Version
360
+ version: 5.89.0
372
361
  type: :development
373
362
  prerelease: false
374
363
  version_requirements: !ruby/object:Gem::Requirement
375
364
  requirements:
376
- - - "~>"
365
+ - - ">="
366
+ - !ruby/object:Gem::Version
367
+ version: 5.63.0
368
+ - - "<="
377
369
  - !ruby/object:Gem::Version
378
- version: '5.63'
370
+ version: 5.89.0
379
371
  description: software to fetch configuration from network devices and store them
380
372
  email:
381
373
  - saku@ytti.fi
@@ -408,6 +400,7 @@ files:
408
400
  - bin/oxidized
409
401
  - docs/Configuration.md
410
402
  - docs/Creating-Models.md
403
+ - docs/DeviceSimulation.md
411
404
  - docs/Hooks.md
412
405
  - docs/Issues.md
413
406
  - docs/Model-Notes/ADVA.md
@@ -437,33 +430,13 @@ files:
437
430
  - docs/Model-Notes/VRP-Huawei.md
438
431
  - docs/Model-Notes/Viptela.md
439
432
  - docs/Model-Notes/XGS4600-Zyxel.md
433
+ - docs/ModelUnitTests.md
440
434
  - docs/Outputs.md
441
435
  - docs/Release.md
442
436
  - docs/Ruby-API.md
443
437
  - docs/Sources.md
444
438
  - docs/Supported-OS-Types.md
445
439
  - docs/Troubleshooting.md
446
- - examples/device-simulation/README.md
447
- - examples/device-simulation/cmdsets/aoscx
448
- - examples/device-simulation/cmdsets/arubainstant
449
- - examples/device-simulation/cmdsets/asa
450
- - examples/device-simulation/cmdsets/ios
451
- - examples/device-simulation/cmdsets/nxos
452
- - examples/device-simulation/cmdsets/routeros
453
- - examples/device-simulation/cmdsets/srosmd
454
- - examples/device-simulation/device2yaml.rb
455
- - examples/device-simulation/yaml/aoscx_R0X25A-6410_FL.10.10.1100.yaml
456
- - examples/device-simulation/yaml/aoscx_R8N85A-C6000-48G-CL4_PL.10.08.1010.yaml
457
- - examples/device-simulation/yaml/arubainstant_IAP515_8.10.0.6_VWLC.yaml
458
- - examples/device-simulation/yaml/asa_5512_9.12-4-67_single-context.yaml
459
- - examples/device-simulation/yaml/asr920_16.8.1b.yaml
460
- - examples/device-simulation/yaml/garderos_R7709_003_006_068.yaml
461
- - examples/device-simulation/yaml/iosxe_C9200L-24P-4G_17.09.04a.yaml
462
- - examples/device-simulation/yaml/iosxe_C9800-L-F-K9_17.06.05.yaml
463
- - examples/device-simulation/yaml/riverbed_915.yaml
464
- - examples/device-simulation/yaml/routeros_CHR_7.10.1.yaml
465
- - examples/device-simulation/yaml/routeros_CHR_7.16.yaml
466
- - examples/device-simulation/yaml/routeros_L009UiGS_7.15.2.yaml
467
440
  - examples/podman-compose/Makefile
468
441
  - examples/podman-compose/README.md
469
442
  - examples/podman-compose/docker-compose.yml
@@ -479,6 +452,7 @@ files:
479
452
  - examples/podman-compose/oxidized-ssh/.gitignore
480
453
  - examples/podman-compose/oxidized-ssh/README.md
481
454
  - extra/auto-reload-config.runit
455
+ - extra/device2yaml.rb
482
456
  - extra/gitdiff-msteams.sh
483
457
  - extra/nagios_check_failing_nodes.rb
484
458
  - extra/oxidized-report-git-commits
@@ -582,6 +556,7 @@ files:
582
556
  - lib/oxidized/model/eltex.rb
583
557
  - lib/oxidized/model/enterasys.rb
584
558
  - lib/oxidized/model/enterasys800.rb
559
+ - lib/oxidized/model/enterprise_sonic.rb
585
560
  - lib/oxidized/model/eos.rb
586
561
  - lib/oxidized/model/f5os.rb
587
562
  - lib/oxidized/model/fabricos.rb
@@ -615,6 +590,7 @@ files:
615
590
  - lib/oxidized/model/ironware.rb
616
591
  - lib/oxidized/model/isam.rb
617
592
  - lib/oxidized/model/junos.rb
593
+ - lib/oxidized/model/kornfeldos.rb
618
594
  - lib/oxidized/model/lancom.rb
619
595
  - lib/oxidized/model/lenovonos.rb
620
596
  - lib/oxidized/model/linksyssrw.rb