oxidized 0.30.1 → 0.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +3 -4
  3. data/.github/workflows/stale.yml +4 -2
  4. data/.rubocop.yml +18 -3
  5. data/.rubocop_todo.yml +4 -11
  6. data/CHANGELOG.md +93 -1
  7. data/CONTRIBUTING.md +5 -0
  8. data/Dockerfile +84 -20
  9. data/README.md +5 -21
  10. data/Rakefile +31 -2
  11. data/docs/Configuration.md +50 -14
  12. data/docs/Creating-Models.md +75 -4
  13. data/docs/DeviceSimulation.md +184 -0
  14. data/docs/Hooks.md +39 -5
  15. data/docs/Issues.md +97 -0
  16. data/docs/Model-Notes/APC_AOS.md +29 -16
  17. data/docs/Model-Notes/Cumulus.md +5 -0
  18. data/docs/Model-Notes/FSOS.md +6 -0
  19. data/docs/Model-Notes/FortiOS.md +21 -5
  20. data/docs/Model-Notes/HPEAruba.md +31 -0
  21. data/docs/Model-Notes/OS6.md +10 -0
  22. data/docs/Model-Notes/RouterOS.md +15 -0
  23. data/docs/Model-Notes/SikluMHTG.md +7 -0
  24. data/docs/ModelUnitTests.md +186 -0
  25. data/docs/Outputs.md +2 -0
  26. data/docs/Release.md +18 -15
  27. data/docs/Sources.md +21 -0
  28. data/docs/Supported-OS-Types.md +14 -7
  29. data/docs/Troubleshooting.md +35 -0
  30. data/examples/podman-compose/Makefile +59 -17
  31. data/examples/podman-compose/README.md +63 -27
  32. data/examples/podman-compose/docker-compose.yml +11 -2
  33. data/examples/podman-compose/gitserver/.gitignore +1 -0
  34. data/examples/podman-compose/gitserver/Dockerfile +14 -0
  35. data/examples/podman-compose/model-simulation/Dockerfile-model +1 -1
  36. data/examples/podman-compose/model-simulation/asternos.sh +2 -0
  37. data/examples/podman-compose/oxidized-config/.gitignore +2 -0
  38. data/examples/podman-compose/oxidized-config/config +1 -1
  39. data/examples/podman-compose/oxidized-config/config_csv-file +46 -0
  40. data/examples/podman-compose/oxidized-config/config_csv-gitserver +56 -0
  41. data/examples/podman-compose/oxidized-ssh/.gitignore +1 -0
  42. data/extra/device2yaml.rb +245 -0
  43. data/extra/gitdiff-msteams.sh +32 -5
  44. data/extra/nagios_check_failing_nodes.rb +1 -1
  45. data/extra/rest_client.rb +1 -1
  46. data/lib/oxidized/config.rb +8 -2
  47. data/lib/oxidized/hook/githubrepo.rb +37 -7
  48. data/lib/oxidized/hook/slackdiff.rb +29 -7
  49. data/lib/oxidized/input/http.rb +1 -0
  50. data/lib/oxidized/input/ssh.rb +13 -5
  51. data/lib/oxidized/input/telnet.rb +1 -1
  52. data/lib/oxidized/manager.rb +17 -16
  53. data/lib/oxidized/model/aos7.rb +2 -0
  54. data/lib/oxidized/model/aoscx.rb +16 -2
  55. data/lib/oxidized/model/aosw.rb +8 -2
  56. data/lib/oxidized/model/apc_aos.rb +1 -1
  57. data/lib/oxidized/model/arubainstant.rb +90 -0
  58. data/lib/oxidized/model/asa.rb +2 -1
  59. data/lib/oxidized/model/asyncos.rb +1 -1
  60. data/lib/oxidized/model/audiocodes.rb +2 -2
  61. data/lib/oxidized/model/cnos.rb +13 -10
  62. data/lib/oxidized/model/cumulus.rb +19 -2
  63. data/lib/oxidized/model/dlink.rb +1 -0
  64. data/lib/oxidized/model/dlinknextgen.rb +3 -0
  65. data/lib/oxidized/model/edgecos.rb +2 -1
  66. data/lib/oxidized/model/enterprise_sonic.rb +46 -0
  67. data/lib/oxidized/model/eos.rb +2 -0
  68. data/lib/oxidized/model/f5os.rb +17 -0
  69. data/lib/oxidized/model/firewareos.rb +10 -1
  70. data/lib/oxidized/model/fortios.rb +24 -1
  71. data/lib/oxidized/model/fsos.rb +5 -1
  72. data/lib/oxidized/model/garderos.rb +43 -0
  73. data/lib/oxidized/model/h3c.rb +1 -1
  74. data/lib/oxidized/model/ibos.rb +1 -0
  75. data/lib/oxidized/model/ios.rb +20 -12
  76. data/lib/oxidized/model/iosxr.rb +1 -1
  77. data/lib/oxidized/model/junos.rb +1 -1
  78. data/lib/oxidized/model/kornfeldos.rb +33 -0
  79. data/lib/oxidized/model/lenovonos.rb +2 -0
  80. data/lib/oxidized/model/linuxgeneric.rb +1 -1
  81. data/lib/oxidized/model/model.rb +2 -2
  82. data/lib/oxidized/model/netgear.rb +1 -1
  83. data/lib/oxidized/model/nodegrid.rb +1 -1
  84. data/lib/oxidized/model/nsxdfw.rb +30 -0
  85. data/lib/oxidized/model/nxos.rb +2 -1
  86. data/lib/oxidized/model/os6.rb +48 -0
  87. data/lib/oxidized/model/rgos.rb +1 -1
  88. data/lib/oxidized/model/riverbed.rb +104 -0
  89. data/lib/oxidized/model/routeros.rb +2 -2
  90. data/lib/oxidized/model/saos.rb +18 -1
  91. data/lib/oxidized/model/siklumhtg.rb +22 -0
  92. data/lib/oxidized/model/sonicos.rb +8 -2
  93. data/lib/oxidized/model/tplink.rb +1 -0
  94. data/lib/oxidized/model/uplinkolt.rb +46 -0
  95. data/lib/oxidized/model/vyatta.rb +2 -2
  96. data/lib/oxidized/model/xos.rb +7 -0
  97. data/lib/oxidized/node.rb +30 -18
  98. data/lib/oxidized/nodes.rb +13 -5
  99. data/lib/oxidized/output/file.rb +45 -42
  100. data/lib/oxidized/output/git.rb +185 -160
  101. data/lib/oxidized/output/gitcrypt.rb +188 -186
  102. data/lib/oxidized/output/http.rb +53 -51
  103. data/lib/oxidized/output/output.rb +6 -4
  104. data/lib/oxidized/source/csv.rb +44 -49
  105. data/lib/oxidized/source/http.rb +63 -81
  106. data/lib/oxidized/source/jsonfile.rb +63 -0
  107. data/lib/oxidized/source/source.rb +73 -18
  108. data/lib/oxidized/source/sql.rb +66 -59
  109. data/lib/oxidized/version.rb +2 -2
  110. data/oxidized.gemspec +25 -18
  111. metadata +115 -21
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.30.1
4
+ version: 0.32.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: 2024-04-12 00:00:00.000000000 Z
13
+ date: 2025-02-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: asetus
@@ -68,34 +68,48 @@ dependencies:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0.2'
71
+ - !ruby/object:Gem::Dependency
72
+ name: net-http-digest_auth
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.4'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '1.4'
71
85
  - !ruby/object:Gem::Dependency
72
86
  name: net-scp
73
87
  requirement: !ruby/object:Gem::Requirement
74
88
  requirements:
75
89
  - - "~>"
76
90
  - !ruby/object:Gem::Version
77
- version: '4.0'
91
+ version: '4.1'
78
92
  type: :runtime
79
93
  prerelease: false
80
94
  version_requirements: !ruby/object:Gem::Requirement
81
95
  requirements:
82
96
  - - "~>"
83
97
  - !ruby/object:Gem::Version
84
- version: '4.0'
98
+ version: '4.1'
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: net-ssh
87
101
  requirement: !ruby/object:Gem::Requirement
88
102
  requirements:
89
103
  - - "~>"
90
104
  - !ruby/object:Gem::Version
91
- version: '7.1'
105
+ version: '7.3'
92
106
  type: :runtime
93
107
  prerelease: false
94
108
  version_requirements: !ruby/object:Gem::Requirement
95
109
  requirements:
96
110
  - - "~>"
97
111
  - !ruby/object:Gem::Version
98
- version: '7.1'
112
+ version: '7.3'
99
113
  - !ruby/object:Gem::Dependency
100
114
  name: net-telnet
101
115
  requirement: !ruby/object:Gem::Requirement
@@ -110,20 +124,34 @@ dependencies:
110
124
  - - "~>"
111
125
  - !ruby/object:Gem::Version
112
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'
113
141
  - !ruby/object:Gem::Dependency
114
142
  name: psych
115
143
  requirement: !ruby/object:Gem::Requirement
116
144
  requirements:
117
145
  - - "~>"
118
146
  - !ruby/object:Gem::Version
119
- version: 3.3.2
147
+ version: '5.0'
120
148
  type: :runtime
121
149
  prerelease: false
122
150
  version_requirements: !ruby/object:Gem::Requirement
123
151
  requirements:
124
152
  - - "~>"
125
153
  - !ruby/object:Gem::Version
126
- version: 3.3.2
154
+ version: '5.0'
127
155
  - !ruby/object:Gem::Dependency
128
156
  name: rugged
129
157
  requirement: !ruby/object:Gem::Requirement
@@ -172,28 +200,28 @@ dependencies:
172
200
  requirements:
173
201
  - - "~>"
174
202
  - !ruby/object:Gem::Version
175
- version: '1'
203
+ version: '2'
176
204
  type: :development
177
205
  prerelease: false
178
206
  version_requirements: !ruby/object:Gem::Requirement
179
207
  requirements:
180
208
  - - "~>"
181
209
  - !ruby/object:Gem::Version
182
- version: '1'
210
+ version: '2'
183
211
  - !ruby/object:Gem::Dependency
184
212
  name: minitest
185
213
  requirement: !ruby/object:Gem::Requirement
186
214
  requirements:
187
215
  - - "~>"
188
216
  - !ruby/object:Gem::Version
189
- version: '5.18'
217
+ version: 5.25.4
190
218
  type: :development
191
219
  prerelease: false
192
220
  version_requirements: !ruby/object:Gem::Requirement
193
221
  requirements:
194
222
  - - "~>"
195
223
  - !ruby/object:Gem::Version
196
- version: '5.18'
224
+ version: 5.25.4
197
225
  - !ruby/object:Gem::Dependency
198
226
  name: mocha
199
227
  requirement: !ruby/object:Gem::Requirement
@@ -214,14 +242,14 @@ dependencies:
214
242
  requirements:
215
243
  - - "~>"
216
244
  - !ruby/object:Gem::Version
217
- version: 0.14.2
245
+ version: 0.15.0
218
246
  type: :development
219
247
  prerelease: false
220
248
  version_requirements: !ruby/object:Gem::Requirement
221
249
  requirements:
222
250
  - - "~>"
223
251
  - !ruby/object:Gem::Version
224
- version: 0.14.2
252
+ version: 0.15.0
225
253
  - !ruby/object:Gem::Dependency
226
254
  name: rake
227
255
  requirement: !ruby/object:Gem::Requirement
@@ -242,28 +270,28 @@ dependencies:
242
270
  requirements:
243
271
  - - "~>"
244
272
  - !ruby/object:Gem::Version
245
- version: 1.62.0
273
+ version: 1.72.0
246
274
  type: :development
247
275
  prerelease: false
248
276
  version_requirements: !ruby/object:Gem::Requirement
249
277
  requirements:
250
278
  - - "~>"
251
279
  - !ruby/object:Gem::Version
252
- version: 1.62.0
280
+ version: 1.72.0
253
281
  - !ruby/object:Gem::Dependency
254
282
  name: rubocop-minitest
255
283
  requirement: !ruby/object:Gem::Requirement
256
284
  requirements:
257
285
  - - "~>"
258
286
  - !ruby/object:Gem::Version
259
- version: 0.35.0
287
+ version: 0.36.0
260
288
  type: :development
261
289
  prerelease: false
262
290
  version_requirements: !ruby/object:Gem::Requirement
263
291
  requirements:
264
292
  - - "~>"
265
293
  - !ruby/object:Gem::Version
266
- version: 0.35.0
294
+ version: 0.36.0
267
295
  - !ruby/object:Gem::Dependency
268
296
  name: rubocop-rake
269
297
  requirement: !ruby/object:Gem::Requirement
@@ -278,6 +306,20 @@ dependencies:
278
306
  - - "~>"
279
307
  - !ruby/object:Gem::Version
280
308
  version: 0.6.0
309
+ - !ruby/object:Gem::Dependency
310
+ name: rubocop-sequel
311
+ requirement: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - "~>"
314
+ - !ruby/object:Gem::Version
315
+ version: 0.3.3
316
+ type: :development
317
+ prerelease: false
318
+ version_requirements: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - "~>"
321
+ - !ruby/object:Gem::Version
322
+ version: 0.3.3
281
323
  - !ruby/object:Gem::Dependency
282
324
  name: simplecov
283
325
  requirement: !ruby/object:Gem::Requirement
@@ -312,14 +354,42 @@ dependencies:
312
354
  requirements:
313
355
  - - "~>"
314
356
  - !ruby/object:Gem::Version
315
- version: 0.12.3
357
+ version: 0.13.1
358
+ type: :development
359
+ prerelease: false
360
+ version_requirements: !ruby/object:Gem::Requirement
361
+ requirements:
362
+ - - "~>"
363
+ - !ruby/object:Gem::Version
364
+ version: 0.13.1
365
+ - !ruby/object:Gem::Dependency
366
+ name: oxidized-web
367
+ requirement: !ruby/object:Gem::Requirement
368
+ requirements:
369
+ - - ">="
370
+ - !ruby/object:Gem::Version
371
+ version: 0.15.0
372
+ type: :development
373
+ prerelease: false
374
+ version_requirements: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: 0.15.0
379
+ - !ruby/object:Gem::Dependency
380
+ name: sequel
381
+ requirement: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - "~>"
384
+ - !ruby/object:Gem::Version
385
+ version: 5.88.0
316
386
  type: :development
317
387
  prerelease: false
318
388
  version_requirements: !ruby/object:Gem::Requirement
319
389
  requirements:
320
390
  - - "~>"
321
391
  - !ruby/object:Gem::Version
322
- version: 0.12.3
392
+ version: 5.88.0
323
393
  description: software to fetch configuration from network devices and store them
324
394
  email:
325
395
  - saku@ytti.fi
@@ -352,7 +422,9 @@ files:
352
422
  - bin/oxidized
353
423
  - docs/Configuration.md
354
424
  - docs/Creating-Models.md
425
+ - docs/DeviceSimulation.md
355
426
  - docs/Hooks.md
427
+ - docs/Issues.md
356
428
  - docs/Model-Notes/ADVA.md
357
429
  - docs/Model-Notes/APC_AOS.md
358
430
  - docs/Model-Notes/AireOS.md
@@ -362,6 +434,7 @@ files:
362
434
  - docs/Model-Notes/EOS.md
363
435
  - docs/Model-Notes/FSOS.md
364
436
  - docs/Model-Notes/FortiOS.md
437
+ - docs/Model-Notes/HPEAruba.md
365
438
  - docs/Model-Notes/IOS.md
366
439
  - docs/Model-Notes/JunOS.md
367
440
  - docs/Model-Notes/LenovoNOS.md
@@ -370,12 +443,16 @@ files:
370
443
  - docs/Model-Notes/Netgear.md
371
444
  - docs/Model-Notes/Nokia.md
372
445
  - docs/Model-Notes/OS10.md
446
+ - docs/Model-Notes/OS6.md
373
447
  - docs/Model-Notes/PanOS_API.md
374
448
  - docs/Model-Notes/README.md
449
+ - docs/Model-Notes/RouterOS.md
450
+ - docs/Model-Notes/SikluMHTG.md
375
451
  - docs/Model-Notes/SmartAX-Huawei.md
376
452
  - docs/Model-Notes/VRP-Huawei.md
377
453
  - docs/Model-Notes/Viptela.md
378
454
  - docs/Model-Notes/XGS4600-Zyxel.md
455
+ - docs/ModelUnitTests.md
379
456
  - docs/Outputs.md
380
457
  - docs/Release.md
381
458
  - docs/Ruby-API.md
@@ -385,13 +462,19 @@ files:
385
462
  - examples/podman-compose/Makefile
386
463
  - examples/podman-compose/README.md
387
464
  - examples/podman-compose/docker-compose.yml
465
+ - examples/podman-compose/gitserver/.gitignore
466
+ - examples/podman-compose/gitserver/Dockerfile
388
467
  - examples/podman-compose/model-simulation/Dockerfile-model
389
468
  - examples/podman-compose/model-simulation/asternos.sh
390
469
  - examples/podman-compose/oxidized-config/.gitignore
391
470
  - examples/podman-compose/oxidized-config/config
471
+ - examples/podman-compose/oxidized-config/config_csv-file
472
+ - examples/podman-compose/oxidized-config/config_csv-gitserver
392
473
  - examples/podman-compose/oxidized-config/router.db
474
+ - examples/podman-compose/oxidized-ssh/.gitignore
393
475
  - examples/podman-compose/oxidized-ssh/README.md
394
476
  - extra/auto-reload-config.runit
477
+ - extra/device2yaml.rb
395
478
  - extra/gitdiff-msteams.sh
396
479
  - extra/nagios_check_failing_nodes.rb
397
480
  - extra/oxidized-report-git-commits
@@ -453,6 +536,7 @@ files:
453
536
  - lib/oxidized/model/apc_aos.rb
454
537
  - lib/oxidized/model/arbos.rb
455
538
  - lib/oxidized/model/aricentiss.rb
539
+ - lib/oxidized/model/arubainstant.rb
456
540
  - lib/oxidized/model/asa.rb
457
541
  - lib/oxidized/model/asternos.rb
458
542
  - lib/oxidized/model/asyncos.rb
@@ -494,7 +578,9 @@ files:
494
578
  - lib/oxidized/model/eltex.rb
495
579
  - lib/oxidized/model/enterasys.rb
496
580
  - lib/oxidized/model/enterasys800.rb
581
+ - lib/oxidized/model/enterprise_sonic.rb
497
582
  - lib/oxidized/model/eos.rb
583
+ - lib/oxidized/model/f5os.rb
498
584
  - lib/oxidized/model/fabricos.rb
499
585
  - lib/oxidized/model/fastiron.rb
500
586
  - lib/oxidized/model/fiberdriver.rb
@@ -507,6 +593,7 @@ files:
507
593
  - lib/oxidized/model/ftos.rb
508
594
  - lib/oxidized/model/fujitsupy.rb
509
595
  - lib/oxidized/model/gaiaos.rb
596
+ - lib/oxidized/model/garderos.rb
510
597
  - lib/oxidized/model/gcombnps.rb
511
598
  - lib/oxidized/model/grandstream.rb
512
599
  - lib/oxidized/model/h3c.rb
@@ -525,6 +612,7 @@ files:
525
612
  - lib/oxidized/model/ironware.rb
526
613
  - lib/oxidized/model/isam.rb
527
614
  - lib/oxidized/model/junos.rb
615
+ - lib/oxidized/model/kornfeldos.rb
528
616
  - lib/oxidized/model/lancom.rb
529
617
  - lib/oxidized/model/lenovonos.rb
530
618
  - lib/oxidized/model/linksyssrw.rb
@@ -543,6 +631,7 @@ files:
543
631
  - lib/oxidized/model/nodegrid.rb
544
632
  - lib/oxidized/model/nos.rb
545
633
  - lib/oxidized/model/nsxconfig.rb
634
+ - lib/oxidized/model/nsxdfw.rb
546
635
  - lib/oxidized/model/nsxfirewall.rb
547
636
  - lib/oxidized/model/nxos.rb
548
637
  - lib/oxidized/model/ocnos.rb
@@ -553,6 +642,7 @@ files:
553
642
  - lib/oxidized/model/openwrt.rb
554
643
  - lib/oxidized/model/opnsense.rb
555
644
  - lib/oxidized/model/os10.rb
645
+ - lib/oxidized/model/os6.rb
556
646
  - lib/oxidized/model/outputs.rb
557
647
  - lib/oxidized/model/panos.rb
558
648
  - lib/oxidized/model/panos_api.rb
@@ -565,11 +655,13 @@ files:
565
655
  - lib/oxidized/model/quantaos.rb
566
656
  - lib/oxidized/model/raisecom.rb
567
657
  - lib/oxidized/model/rgos.rb
658
+ - lib/oxidized/model/riverbed.rb
568
659
  - lib/oxidized/model/routeros.rb
569
660
  - lib/oxidized/model/saos.rb
570
661
  - lib/oxidized/model/screenos.rb
571
662
  - lib/oxidized/model/sgos.rb
572
663
  - lib/oxidized/model/siklu.rb
664
+ - lib/oxidized/model/siklumhtg.rb
573
665
  - lib/oxidized/model/slxos.rb
574
666
  - lib/oxidized/model/smartax.rb
575
667
  - lib/oxidized/model/smartcs.rb
@@ -588,6 +680,7 @@ files:
588
680
  - lib/oxidized/model/trango.rb
589
681
  - lib/oxidized/model/truenas.rb
590
682
  - lib/oxidized/model/ucs.rb
683
+ - lib/oxidized/model/uplinkolt.rb
591
684
  - lib/oxidized/model/viptela.rb
592
685
  - lib/oxidized/model/voltaire.rb
593
686
  - lib/oxidized/model/voss.rb
@@ -615,6 +708,7 @@ files:
615
708
  - lib/oxidized/signals.rb
616
709
  - lib/oxidized/source/csv.rb
617
710
  - lib/oxidized/source/http.rb
711
+ - lib/oxidized/source/jsonfile.rb
618
712
  - lib/oxidized/source/source.rb
619
713
  - lib/oxidized/source/sql.rb
620
714
  - lib/oxidized/version.rb
@@ -634,7 +728,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
634
728
  requirements:
635
729
  - - ">="
636
730
  - !ruby/object:Gem::Version
637
- version: '3.0'
731
+ version: '3.1'
638
732
  required_rubygems_version: !ruby/object:Gem::Requirement
639
733
  requirements:
640
734
  - - ">="