oxidized 0.33.0 → 0.34.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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +4 -1
  3. data/.github/ISSUE_TEMPLATE/support-request.md +4 -1
  4. data/.github/workflows/ruby.yml +4 -2
  5. data/.gitignore +1 -0
  6. data/.rubocop.yml +29 -6
  7. data/.rubocop_todo.yml +2 -35
  8. data/CHANGELOG.md +49 -0
  9. data/CONTRIBUTING.md +10 -3
  10. data/Dockerfile +4 -4
  11. data/README.md +52 -55
  12. data/Rakefile +2 -3
  13. data/docs/Configuration.md +97 -0
  14. data/docs/DeviceSimulation.md +19 -7
  15. data/docs/Docker.md +9 -4
  16. data/docs/Issues.md +11 -2
  17. data/docs/ModelUnitTests.md +35 -25
  18. data/docs/Outputs.md +83 -2
  19. data/docs/Release.md +30 -22
  20. data/docs/Supported-OS-Types.md +4 -0
  21. data/docs/Troubleshooting.md +4 -18
  22. data/extra/device2yaml.rb +24 -9
  23. data/extra/rest_client.rb +2 -1
  24. data/extra/syslog.rb +8 -3
  25. data/lib/oxidized/cli.rb +7 -3
  26. data/lib/oxidized/config/vars.rb +7 -3
  27. data/lib/oxidized/config.rb +0 -1
  28. data/lib/oxidized/core.rb +5 -4
  29. data/lib/oxidized/hook/ciscosparkdiff.rb +11 -9
  30. data/lib/oxidized/hook/exec.rb +5 -4
  31. data/lib/oxidized/hook/githubrepo.rb +23 -17
  32. data/lib/oxidized/hook/noophook.rb +2 -2
  33. data/lib/oxidized/hook/slackdiff.rb +9 -8
  34. data/lib/oxidized/hook/xmppdiff.rb +9 -9
  35. data/lib/oxidized/hook.rb +10 -8
  36. data/lib/oxidized/input/cli.rb +8 -3
  37. data/lib/oxidized/input/exec.rb +1 -1
  38. data/lib/oxidized/input/ftp.rb +2 -2
  39. data/lib/oxidized/input/http.rb +5 -5
  40. data/lib/oxidized/input/input.rb +1 -0
  41. data/lib/oxidized/input/scp.rb +2 -2
  42. data/lib/oxidized/input/ssh.rb +21 -14
  43. data/lib/oxidized/input/telnet.rb +3 -3
  44. data/lib/oxidized/input/tftp.rb +1 -1
  45. data/lib/oxidized/job.rb +7 -4
  46. data/lib/oxidized/logger.rb +51 -0
  47. data/lib/oxidized/model/acos.rb +1 -0
  48. data/lib/oxidized/model/aos7.rb +6 -0
  49. data/lib/oxidized/model/aoscx.rb +2 -0
  50. data/lib/oxidized/model/aosw.rb +22 -17
  51. data/lib/oxidized/model/aricentiss.rb +2 -2
  52. data/lib/oxidized/model/asa.rb +3 -3
  53. data/lib/oxidized/model/awplus.rb +13 -10
  54. data/lib/oxidized/model/edgecos.rb +2 -1
  55. data/lib/oxidized/model/edgeos.rb +7 -6
  56. data/lib/oxidized/model/edgeswitch.rb +3 -1
  57. data/lib/oxidized/model/efos.rb +41 -0
  58. data/lib/oxidized/model/eltex.rb +1 -1
  59. data/lib/oxidized/model/fabricos.rb +1 -1
  60. data/lib/oxidized/model/fastiron.rb +3 -1
  61. data/lib/oxidized/model/firelinuxos.rb +12 -3
  62. data/lib/oxidized/model/fortios.rb +2 -1
  63. data/lib/oxidized/model/gaiaos.rb +4 -4
  64. data/lib/oxidized/model/ios.rb +15 -5
  65. data/lib/oxidized/model/ironware.rb +1 -1
  66. data/lib/oxidized/model/junos.rb +4 -0
  67. data/lib/oxidized/model/linksyssrw.rb +3 -3
  68. data/lib/oxidized/model/mlnxos.rb +14 -7
  69. data/lib/oxidized/model/model.rb +4 -3
  70. data/lib/oxidized/model/netgear.rb +2 -0
  71. data/lib/oxidized/model/nsxdfw.rb +2 -1
  72. data/lib/oxidized/model/nsxfirewall.rb +2 -1
  73. data/lib/oxidized/model/nxos.rb +2 -2
  74. data/lib/oxidized/model/openwrt.rb +6 -6
  75. data/lib/oxidized/model/procurve.rb +3 -1
  76. data/lib/oxidized/model/qtech.rb +3 -1
  77. data/lib/oxidized/model/quantaos.rb +8 -6
  78. data/lib/oxidized/model/routeros.rb +3 -2
  79. data/lib/oxidized/model/saos10.rb +38 -0
  80. data/lib/oxidized/model/sixwind.rb +28 -0
  81. data/lib/oxidized/model/sonicos.rb +1 -1
  82. data/lib/oxidized/model/supermicro.rb +1 -1
  83. data/lib/oxidized/model/timos.rb +1 -1
  84. data/lib/oxidized/model/tmos.rb +1 -0
  85. data/lib/oxidized/model/tnsr.rb +53 -0
  86. data/lib/oxidized/model/trango.rb +3 -1
  87. data/lib/oxidized/model/unifiap.rb +7 -5
  88. data/lib/oxidized/model/vrp.rb +3 -1
  89. data/lib/oxidized/model/xos.rb +3 -1
  90. data/lib/oxidized/model/zhoneolt.rb +3 -1
  91. data/lib/oxidized/model/zynos.rb +3 -3
  92. data/lib/oxidized/node.rb +44 -27
  93. data/lib/oxidized/nodes.rb +8 -4
  94. data/lib/oxidized/output/file.rb +28 -0
  95. data/lib/oxidized/output/git.rb +66 -9
  96. data/lib/oxidized/output/gitcrypt.rb +15 -13
  97. data/lib/oxidized/output/http.rb +5 -4
  98. data/lib/oxidized/output/output.rb +14 -0
  99. data/lib/oxidized/source/http.rb +4 -2
  100. data/lib/oxidized/version.rb +2 -2
  101. data/lib/oxidized/worker.rb +11 -8
  102. data/lib/oxidized.rb +3 -24
  103. data/oxidized.gemspec +8 -5
  104. metadata +54 -21
data/lib/oxidized.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  require 'fileutils'
2
2
  require 'refinements'
3
+ require 'semantic_logger'
3
4
 
4
5
  module Oxidized
5
6
  class OxidizedError < StandardError; end
7
+ include SemanticLogger::Loggable
6
8
 
7
9
  Directory = File.expand_path(File.join(File.dirname(__FILE__), '../'))
8
10
 
@@ -15,6 +17,7 @@ module Oxidized
15
17
  require 'oxidized/hook'
16
18
  require 'oxidized/signals'
17
19
  require 'oxidized/core'
20
+ require 'oxidized/logger'
18
21
 
19
22
  def self.asetus
20
23
  @@asetus
@@ -27,28 +30,4 @@ module Oxidized
27
30
  def self.config
28
31
  asetus.cfg
29
32
  end
30
-
31
- def self.logger
32
- @@logger
33
- end
34
-
35
- def self.logger=(val)
36
- @@logger = val
37
- end
38
-
39
- def self.setup_logger
40
- FileUtils.mkdir_p(Config::LOG) unless File.directory?(Config::LOG)
41
- self.logger = if config.has_key?('use_syslog') && config.use_syslog
42
- require 'syslog/logger'
43
- Syslog::Logger.new('oxidized')
44
- else
45
- require 'logger'
46
- if config.has_key?('log')
47
- Logger.new(File.expand_path(config.log))
48
- else
49
- Logger.new($stderr)
50
- end
51
- end
52
- logger.level = Logger::INFO unless config.debug
53
- end
54
33
  end
data/oxidized.gemspec CHANGED
@@ -39,24 +39,27 @@ Gem::Specification.new do |s|
39
39
  s.add_dependency 'net-scp', '~> 4.1'
40
40
  s.add_dependency 'net-ssh', '~> 7.3'
41
41
  s.add_dependency 'net-telnet', '~> 0.2'
42
- s.add_dependency 'ostruct', '~> 0.6'
43
42
  s.add_dependency 'psych', '~> 5.0'
44
43
  s.add_dependency 'rugged', '~> 1.6'
44
+ s.add_dependency 'semantic_logger', '~> 4.16'
45
45
  s.add_dependency 'slop', '~> 4.6'
46
+ s.add_dependency 'syslog', '~> 0.3.0'
47
+ s.add_dependency 'syslog_protocol', '~> 0.9.2'
46
48
 
47
49
  s.add_development_dependency 'bundler', '~> 2.2'
48
- s.add_development_dependency 'git', '>= 2.0', '<=3.0'
50
+ # ruby-git 4.0 requests ruby >= 3.2, we stick to >= 3.1 (Ubuntu Noble/Debian Bookworm)
51
+ s.add_development_dependency 'git', '>= 2.0', '< 3.2.0'
49
52
  s.add_development_dependency 'minitest', '~> 5.25.4'
50
53
  s.add_development_dependency 'mocha', '~> 2.1'
51
54
  s.add_development_dependency 'pry', '~> 0.15.0'
52
55
  s.add_development_dependency 'rake', '~> 13.0'
53
- s.add_development_dependency 'rubocop', '~> 1.74.0'
54
- s.add_development_dependency 'rubocop-minitest', '~> 0.37.0'
56
+ s.add_development_dependency 'rubocop', '~> 1.78.0'
57
+ s.add_development_dependency 'rubocop-minitest', '~> 0.38.0'
55
58
  s.add_development_dependency 'rubocop-rake', '~> 0.7.0'
56
59
  s.add_development_dependency 'rubocop-sequel', '~> 0.4.0'
57
60
  s.add_development_dependency 'simplecov', '~> 0.22.0'
58
61
 
59
62
  # Dependencies on optional libraries, used for unit tests & development
60
63
  s.add_development_dependency 'oxidized-web', '~> 0.16'
61
- s.add_development_dependency 'sequel', '>= 5.63.0', '<= 5.90.0'
64
+ s.add_development_dependency 'sequel', '>= 5.63.0', '<= 5.94.0'
62
65
  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.33.0
4
+ version: 0.34.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: 2025-03-26 00:00:00.000000000 Z
13
+ date: 2025-07-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: asetus
@@ -125,47 +125,47 @@ dependencies:
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0.2'
127
127
  - !ruby/object:Gem::Dependency
128
- name: ostruct
128
+ name: psych
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - "~>"
132
132
  - !ruby/object:Gem::Version
133
- version: '0.6'
133
+ version: '5.0'
134
134
  type: :runtime
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  requirements:
138
138
  - - "~>"
139
139
  - !ruby/object:Gem::Version
140
- version: '0.6'
140
+ version: '5.0'
141
141
  - !ruby/object:Gem::Dependency
142
- name: psych
142
+ name: rugged
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
145
  - - "~>"
146
146
  - !ruby/object:Gem::Version
147
- version: '5.0'
147
+ version: '1.6'
148
148
  type: :runtime
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
152
  - - "~>"
153
153
  - !ruby/object:Gem::Version
154
- version: '5.0'
154
+ version: '1.6'
155
155
  - !ruby/object:Gem::Dependency
156
- name: rugged
156
+ name: semantic_logger
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
159
  - - "~>"
160
160
  - !ruby/object:Gem::Version
161
- version: '1.6'
161
+ version: '4.16'
162
162
  type: :runtime
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
165
165
  requirements:
166
166
  - - "~>"
167
167
  - !ruby/object:Gem::Version
168
- version: '1.6'
168
+ version: '4.16'
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: slop
171
171
  requirement: !ruby/object:Gem::Requirement
@@ -180,6 +180,34 @@ dependencies:
180
180
  - - "~>"
181
181
  - !ruby/object:Gem::Version
182
182
  version: '4.6'
183
+ - !ruby/object:Gem::Dependency
184
+ name: syslog
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: 0.3.0
190
+ type: :runtime
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - "~>"
195
+ - !ruby/object:Gem::Version
196
+ version: 0.3.0
197
+ - !ruby/object:Gem::Dependency
198
+ name: syslog_protocol
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: 0.9.2
204
+ type: :runtime
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - "~>"
209
+ - !ruby/object:Gem::Version
210
+ version: 0.9.2
183
211
  - !ruby/object:Gem::Dependency
184
212
  name: bundler
185
213
  requirement: !ruby/object:Gem::Requirement
@@ -201,9 +229,9 @@ dependencies:
201
229
  - - ">="
202
230
  - !ruby/object:Gem::Version
203
231
  version: '2.0'
204
- - - "<="
232
+ - - "<"
205
233
  - !ruby/object:Gem::Version
206
- version: '3.0'
234
+ version: 3.2.0
207
235
  type: :development
208
236
  prerelease: false
209
237
  version_requirements: !ruby/object:Gem::Requirement
@@ -211,9 +239,9 @@ dependencies:
211
239
  - - ">="
212
240
  - !ruby/object:Gem::Version
213
241
  version: '2.0'
214
- - - "<="
242
+ - - "<"
215
243
  - !ruby/object:Gem::Version
216
- version: '3.0'
244
+ version: 3.2.0
217
245
  - !ruby/object:Gem::Dependency
218
246
  name: minitest
219
247
  requirement: !ruby/object:Gem::Requirement
@@ -276,28 +304,28 @@ dependencies:
276
304
  requirements:
277
305
  - - "~>"
278
306
  - !ruby/object:Gem::Version
279
- version: 1.74.0
307
+ version: 1.78.0
280
308
  type: :development
281
309
  prerelease: false
282
310
  version_requirements: !ruby/object:Gem::Requirement
283
311
  requirements:
284
312
  - - "~>"
285
313
  - !ruby/object:Gem::Version
286
- version: 1.74.0
314
+ version: 1.78.0
287
315
  - !ruby/object:Gem::Dependency
288
316
  name: rubocop-minitest
289
317
  requirement: !ruby/object:Gem::Requirement
290
318
  requirements:
291
319
  - - "~>"
292
320
  - !ruby/object:Gem::Version
293
- version: 0.37.0
321
+ version: 0.38.0
294
322
  type: :development
295
323
  prerelease: false
296
324
  version_requirements: !ruby/object:Gem::Requirement
297
325
  requirements:
298
326
  - - "~>"
299
327
  - !ruby/object:Gem::Version
300
- version: 0.37.0
328
+ version: 0.38.0
301
329
  - !ruby/object:Gem::Dependency
302
330
  name: rubocop-rake
303
331
  requirement: !ruby/object:Gem::Requirement
@@ -363,7 +391,7 @@ dependencies:
363
391
  version: 5.63.0
364
392
  - - "<="
365
393
  - !ruby/object:Gem::Version
366
- version: 5.90.0
394
+ version: 5.94.0
367
395
  type: :development
368
396
  prerelease: false
369
397
  version_requirements: !ruby/object:Gem::Requirement
@@ -373,7 +401,7 @@ dependencies:
373
401
  version: 5.63.0
374
402
  - - "<="
375
403
  - !ruby/object:Gem::Version
376
- version: 5.90.0
404
+ version: 5.94.0
377
405
  description: software to fetch configuration from network devices and store them
378
406
  email:
379
407
  - saku@ytti.fi
@@ -491,6 +519,7 @@ files:
491
519
  - lib/oxidized/input/tftp.rb
492
520
  - lib/oxidized/job.rb
493
521
  - lib/oxidized/jobs.rb
522
+ - lib/oxidized/logger.rb
494
523
  - lib/oxidized/manager.rb
495
524
  - lib/oxidized/model/acmepacket.rb
496
525
  - lib/oxidized/model/acos.rb
@@ -551,6 +580,7 @@ files:
551
580
  - lib/oxidized/model/edgecos.rb
552
581
  - lib/oxidized/model/edgeos.rb
553
582
  - lib/oxidized/model/edgeswitch.rb
583
+ - lib/oxidized/model/efos.rb
554
584
  - lib/oxidized/model/eltex.rb
555
585
  - lib/oxidized/model/enterasys.rb
556
586
  - lib/oxidized/model/enterasys800.rb
@@ -635,10 +665,12 @@ files:
635
665
  - lib/oxidized/model/riverbed.rb
636
666
  - lib/oxidized/model/routeros.rb
637
667
  - lib/oxidized/model/saos.rb
668
+ - lib/oxidized/model/saos10.rb
638
669
  - lib/oxidized/model/screenos.rb
639
670
  - lib/oxidized/model/sgos.rb
640
671
  - lib/oxidized/model/siklu.rb
641
672
  - lib/oxidized/model/siklumhtg.rb
673
+ - lib/oxidized/model/sixwind.rb
642
674
  - lib/oxidized/model/slxos.rb
643
675
  - lib/oxidized/model/smartax.rb
644
676
  - lib/oxidized/model/smartcs.rb
@@ -653,6 +685,7 @@ files:
653
685
  - lib/oxidized/model/telco.rb
654
686
  - lib/oxidized/model/timos.rb
655
687
  - lib/oxidized/model/tmos.rb
688
+ - lib/oxidized/model/tnsr.rb
656
689
  - lib/oxidized/model/tplink.rb
657
690
  - lib/oxidized/model/trango.rb
658
691
  - lib/oxidized/model/truenas.rb