oxidized-web 0.13.1 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of oxidized-web might be problematic. Click here for more details.

Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.github/PULL_REQUEST_TEMPLATE.md +12 -0
  3. data/.github/dependabot.yml +25 -0
  4. data/.github/workflows/codeql.yml +76 -0
  5. data/.github/workflows/ruby.yml +41 -0
  6. data/.github/workflows/stale.yml +20 -0
  7. data/.gitignore +3 -0
  8. data/.rubocop.yml +38 -3
  9. data/.rubocop_todo.yml +27 -211
  10. data/CHANGELOG.md +46 -0
  11. data/README.md +8 -5
  12. data/Rakefile +49 -5
  13. data/docs/development.md +182 -0
  14. data/lib/oxidized/web/public/css/oxidized.css +59 -0
  15. data/lib/oxidized/web/public/scripts/oxidized.js +1 -48
  16. data/lib/oxidized/web/public/weblibs/bootstrap-icons.css +2078 -0
  17. data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js +6314 -0
  18. data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js.map +1 -0
  19. data/lib/oxidized/web/public/weblibs/bootstrap.css +12057 -0
  20. data/lib/oxidized/web/public/weblibs/bootstrap.css.map +1 -0
  21. data/lib/oxidized/web/public/weblibs/bootstrap.js +4494 -0
  22. data/lib/oxidized/web/public/weblibs/bootstrap.js.map +1 -0
  23. data/lib/oxidized/web/public/weblibs/buttons.bootstrap5.css +395 -0
  24. data/lib/oxidized/web/public/weblibs/buttons.bootstrap5.js +114 -0
  25. data/lib/oxidized/web/public/weblibs/buttons.colVis.js +256 -0
  26. data/lib/oxidized/web/public/weblibs/dataTables.bootstrap5.css +517 -0
  27. data/lib/oxidized/web/public/weblibs/dataTables.bootstrap5.js +122 -0
  28. data/lib/oxidized/web/public/weblibs/dataTables.buttons.js +2936 -0
  29. data/lib/oxidized/web/public/weblibs/dataTables.js +13843 -0
  30. data/lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff +0 -0
  31. data/lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff2 +0 -0
  32. data/lib/oxidized/web/public/weblibs/jquery.js +10716 -0
  33. data/lib/oxidized/web/version.rb +7 -0
  34. data/lib/oxidized/web/views/conf_search.haml +14 -13
  35. data/lib/oxidized/web/views/diffs.haml +5 -5
  36. data/lib/oxidized/web/views/footer.haml +5 -4
  37. data/lib/oxidized/web/views/head.haml +21 -7
  38. data/lib/oxidized/web/views/layout.haml +25 -34
  39. data/lib/oxidized/web/views/node.haml +10 -8
  40. data/lib/oxidized/web/views/nodes.haml +45 -35
  41. data/lib/oxidized/web/views/stats.haml +32 -24
  42. data/lib/oxidized/web/views/version.haml +8 -6
  43. data/lib/oxidized/web/views/versions.haml +23 -24
  44. data/lib/oxidized/web/webapp.rb +117 -113
  45. data/lib/oxidized/web.rb +10 -7
  46. data/oxidized-web.gemspec +32 -18
  47. data/package-lock.json +104 -0
  48. data/package.json +21 -0
  49. data/spec/node_spec.rb +99 -0
  50. data/spec/node_version_spec.rb +102 -0
  51. data/spec/nodes_spec.rb +57 -0
  52. data/spec/root_spec.rb +18 -0
  53. data/spec/spec_helper.rb +11 -0
  54. data/spec/webapp_spec.rb +28 -0
  55. metadata +183 -74
  56. data/lib/oxidized/web/mig.rb +0 -150
  57. data/lib/oxidized/web/public/css/bootstrap.min.css +0 -5
  58. data/lib/oxidized/web/public/css/buttons.bootstrap.min.css +0 -1
  59. data/lib/oxidized/web/public/css/dataTables.bootstrap.css +0 -299
  60. data/lib/oxidized/web/public/css/dataTables.colVis.css +0 -171
  61. data/lib/oxidized/web/public/css/oxidized_custom.css +0 -19
  62. data/lib/oxidized/web/public/fonts/glyphicons-halflings-regular.eot +0 -0
  63. data/lib/oxidized/web/public/fonts/glyphicons-halflings-regular.svg +0 -229
  64. data/lib/oxidized/web/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  65. data/lib/oxidized/web/public/fonts/glyphicons-halflings-regular.woff +0 -0
  66. data/lib/oxidized/web/public/images/diff_15x17.png +0 -0
  67. data/lib/oxidized/web/public/images/sort_asc.png +0 -0
  68. data/lib/oxidized/web/public/images/sort_asc_disabled.png +0 -0
  69. data/lib/oxidized/web/public/images/sort_both.png +0 -0
  70. data/lib/oxidized/web/public/images/sort_desc.png +0 -0
  71. data/lib/oxidized/web/public/images/sort_desc_disabled.png +0 -0
  72. data/lib/oxidized/web/public/images/versioning_18px.png +0 -0
  73. data/lib/oxidized/web/public/scripts/bootstrap.min.js +0 -6
  74. data/lib/oxidized/web/public/scripts/dataTables.bootstrap.js +0 -186
  75. data/lib/oxidized/web/public/scripts/dataTables.colVis.js +0 -1123
  76. data/lib/oxidized/web/public/scripts/jquery-2.1.1.min.js +0 -4
  77. data/lib/oxidized/web/public/scripts/jquery.dataTables.min.js +0 -157
  78. data/lib/oxidized/web/public/scripts/jquery.min.js +0 -6
  79. data/lib/oxidized/web/public/scripts/script-migration.js +0 -15
  80. data/lib/oxidized/web/views/migration.haml +0 -46
  81. data/lib/oxidized/web/views/sass/oxidized.sass +0 -113
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxidized-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saku Ytti
8
8
  - Samer Abdel-Hafez
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-03-04 00:00:00.000000000 Z
12
+ date: 2025-02-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: charlock_holmes
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '5.0'
48
+ version: '6.0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '5.0'
55
+ version: '6.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: htmlentities
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -68,54 +68,65 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '4.3'
70
70
  - !ruby/object:Gem::Dependency
71
- name: oxidized
71
+ name: json
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '0.26'
76
+ version: '2.3'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '0.26'
83
+ version: '2.3'
84
84
  - !ruby/object:Gem::Dependency
85
- name: puma
85
+ name: ostruct
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 3.11.4
90
+ version: '0.6'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 3.11.4
97
+ version: '0.6'
98
98
  - !ruby/object:Gem::Dependency
99
- name: sass
99
+ name: oxidized
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '3.3'
104
+ version: '0.31'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '3.3'
111
+ version: '0.31'
112
112
  - !ruby/object:Gem::Dependency
113
- name: sinatra
113
+ name: puma
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - "~>"
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 3.11.4
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
117
124
  - !ruby/object:Gem::Version
118
- version: '1.4'
125
+ version: 3.11.4
126
+ - !ruby/object:Gem::Dependency
127
+ name: sinatra
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
119
130
  - - ">="
120
131
  - !ruby/object:Gem::Version
121
132
  version: 1.4.6
@@ -123,9 +134,6 @@ dependencies:
123
134
  prerelease: false
124
135
  version_requirements: !ruby/object:Gem::Requirement
125
136
  requirements:
126
- - - "~>"
127
- - !ruby/object:Gem::Version
128
- version: '1.4'
129
137
  - - ">="
130
138
  - !ruby/object:Gem::Version
131
139
  version: 1.4.6
@@ -133,9 +141,6 @@ dependencies:
133
141
  name: sinatra-contrib
134
142
  requirement: !ruby/object:Gem::Requirement
135
143
  requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '1.4'
139
144
  - - ">="
140
145
  - !ruby/object:Gem::Version
141
146
  version: 1.4.6
@@ -143,54 +148,65 @@ dependencies:
143
148
  prerelease: false
144
149
  version_requirements: !ruby/object:Gem::Requirement
145
150
  requirements:
146
- - - "~>"
147
- - !ruby/object:Gem::Version
148
- version: '1.4'
149
151
  - - ">="
150
152
  - !ruby/object:Gem::Version
151
153
  version: 1.4.6
152
154
  - !ruby/object:Gem::Dependency
153
- name: json
155
+ name: bundler
154
156
  requirement: !ruby/object:Gem::Requirement
155
157
  requirements:
156
- - - ">="
158
+ - - "~>"
157
159
  - !ruby/object:Gem::Version
158
- version: 1.7.0
159
- type: :runtime
160
+ version: '2.2'
161
+ type: :development
160
162
  prerelease: false
161
163
  version_requirements: !ruby/object:Gem::Requirement
162
164
  requirements:
163
- - - ">="
165
+ - - "~>"
164
166
  - !ruby/object:Gem::Version
165
- version: 1.7.0
167
+ version: '2.2'
166
168
  - !ruby/object:Gem::Dependency
167
- name: rack-test
169
+ name: minitest
168
170
  requirement: !ruby/object:Gem::Requirement
169
171
  requirements:
170
172
  - - "~>"
171
173
  - !ruby/object:Gem::Version
172
- version: 0.7.0
173
- type: :runtime
174
+ version: '5.18'
175
+ type: :development
174
176
  prerelease: false
175
177
  version_requirements: !ruby/object:Gem::Requirement
176
178
  requirements:
177
179
  - - "~>"
178
180
  - !ruby/object:Gem::Version
179
- version: 0.7.0
181
+ version: '5.18'
180
182
  - !ruby/object:Gem::Dependency
181
- name: bundler
183
+ name: mocha
182
184
  requirement: !ruby/object:Gem::Requirement
183
185
  requirements:
184
186
  - - "~>"
185
187
  - !ruby/object:Gem::Version
186
- version: '2.0'
188
+ version: '2.1'
187
189
  type: :development
188
190
  prerelease: false
189
191
  version_requirements: !ruby/object:Gem::Requirement
190
192
  requirements:
191
193
  - - "~>"
192
194
  - !ruby/object:Gem::Version
193
- version: '2.0'
195
+ version: '2.1'
196
+ - !ruby/object:Gem::Dependency
197
+ name: rack-test
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '2.1'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '2.1'
194
210
  - !ruby/object:Gem::Dependency
195
211
  name: rails_best_practices
196
212
  requirement: !ruby/object:Gem::Requirement
@@ -211,28 +227,112 @@ dependencies:
211
227
  requirements:
212
228
  - - "~>"
213
229
  - !ruby/object:Gem::Version
214
- version: '10.0'
230
+ version: '13.0'
215
231
  type: :development
216
232
  prerelease: false
217
233
  version_requirements: !ruby/object:Gem::Requirement
218
234
  requirements:
219
235
  - - "~>"
220
236
  - !ruby/object:Gem::Version
221
- version: '10.0'
237
+ version: '13.0'
222
238
  - !ruby/object:Gem::Dependency
223
239
  name: rubocop
224
240
  requirement: !ruby/object:Gem::Requirement
225
241
  requirements:
226
242
  - - "~>"
227
243
  - !ruby/object:Gem::Version
228
- version: 0.65.0
244
+ version: 1.72.1
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: 1.72.1
252
+ - !ruby/object:Gem::Dependency
253
+ name: rubocop-minitest
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - "~>"
257
+ - !ruby/object:Gem::Version
258
+ version: 0.37.1
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - "~>"
264
+ - !ruby/object:Gem::Version
265
+ version: 0.37.1
266
+ - !ruby/object:Gem::Dependency
267
+ name: rubocop-rails
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: 2.30.0
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: 2.30.0
280
+ - !ruby/object:Gem::Dependency
281
+ name: rubocop-rake
282
+ requirement: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - "~>"
285
+ - !ruby/object:Gem::Version
286
+ version: 0.7.1
287
+ type: :development
288
+ prerelease: false
289
+ version_requirements: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - "~>"
292
+ - !ruby/object:Gem::Version
293
+ version: 0.7.1
294
+ - !ruby/object:Gem::Dependency
295
+ name: simplecov
296
+ requirement: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - "~>"
299
+ - !ruby/object:Gem::Version
300
+ version: 0.22.0
301
+ type: :development
302
+ prerelease: false
303
+ version_requirements: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - "~>"
306
+ - !ruby/object:Gem::Version
307
+ version: 0.22.0
308
+ - !ruby/object:Gem::Dependency
309
+ name: simplecov-cobertura
310
+ requirement: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - "~>"
313
+ - !ruby/object:Gem::Version
314
+ version: 2.1.0
315
+ type: :development
316
+ prerelease: false
317
+ version_requirements: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - "~>"
320
+ - !ruby/object:Gem::Version
321
+ version: 2.1.0
322
+ - !ruby/object:Gem::Dependency
323
+ name: simplecov-html
324
+ requirement: !ruby/object:Gem::Requirement
325
+ requirements:
326
+ - - "~>"
327
+ - !ruby/object:Gem::Version
328
+ version: 0.13.1
229
329
  type: :development
230
330
  prerelease: false
231
331
  version_requirements: !ruby/object:Gem::Requirement
232
332
  requirements:
233
333
  - - "~>"
234
334
  - !ruby/object:Gem::Version
235
- version: 0.65.0
335
+ version: 0.13.1
236
336
  description: puma+sinatra+haml webUI + REST API for oxidized
237
337
  email:
238
338
  - saku@ytti.fi
@@ -242,61 +342,70 @@ extensions: []
242
342
  extra_rdoc_files: []
243
343
  files:
244
344
  - ".codeclimate.yml"
345
+ - ".github/PULL_REQUEST_TEMPLATE.md"
346
+ - ".github/dependabot.yml"
347
+ - ".github/workflows/codeql.yml"
348
+ - ".github/workflows/ruby.yml"
349
+ - ".github/workflows/stale.yml"
245
350
  - ".gitignore"
246
351
  - ".rubocop.yml"
247
352
  - ".rubocop_todo.yml"
248
353
  - ".travis.yml"
354
+ - CHANGELOG.md
249
355
  - Gemfile
250
356
  - README.md
251
357
  - Rakefile
358
+ - docs/development.md
252
359
  - lib/oxidized/web.rb
253
- - lib/oxidized/web/mig.rb
254
- - lib/oxidized/web/public/css/bootstrap.min.css
255
- - lib/oxidized/web/public/css/buttons.bootstrap.min.css
256
- - lib/oxidized/web/public/css/dataTables.bootstrap.css
257
- - lib/oxidized/web/public/css/dataTables.colVis.css
258
- - lib/oxidized/web/public/css/oxidized_custom.css
259
- - lib/oxidized/web/public/fonts/glyphicons-halflings-regular.eot
260
- - lib/oxidized/web/public/fonts/glyphicons-halflings-regular.svg
261
- - lib/oxidized/web/public/fonts/glyphicons-halflings-regular.ttf
262
- - lib/oxidized/web/public/fonts/glyphicons-halflings-regular.woff
263
- - lib/oxidized/web/public/images/diff_15x17.png
360
+ - lib/oxidized/web/public/css/oxidized.css
264
361
  - lib/oxidized/web/public/images/favicon.ico
265
362
  - lib/oxidized/web/public/images/oxidizing.png
266
363
  - lib/oxidized/web/public/images/oxidizing_40px.png
267
- - lib/oxidized/web/public/images/sort_asc.png
268
- - lib/oxidized/web/public/images/sort_asc_disabled.png
269
- - lib/oxidized/web/public/images/sort_both.png
270
- - lib/oxidized/web/public/images/sort_desc.png
271
- - lib/oxidized/web/public/images/sort_desc_disabled.png
272
- - lib/oxidized/web/public/images/versioning_18px.png
273
- - lib/oxidized/web/public/scripts/bootstrap.min.js
274
- - lib/oxidized/web/public/scripts/dataTables.bootstrap.js
275
- - lib/oxidized/web/public/scripts/dataTables.colVis.js
276
- - lib/oxidized/web/public/scripts/jquery-2.1.1.min.js
277
- - lib/oxidized/web/public/scripts/jquery.dataTables.min.js
278
- - lib/oxidized/web/public/scripts/jquery.min.js
279
364
  - lib/oxidized/web/public/scripts/oxidized.js
280
- - lib/oxidized/web/public/scripts/script-migration.js
365
+ - lib/oxidized/web/public/weblibs/bootstrap-icons.css
366
+ - lib/oxidized/web/public/weblibs/bootstrap.bundle.js
367
+ - lib/oxidized/web/public/weblibs/bootstrap.bundle.js.map
368
+ - lib/oxidized/web/public/weblibs/bootstrap.css
369
+ - lib/oxidized/web/public/weblibs/bootstrap.css.map
370
+ - lib/oxidized/web/public/weblibs/bootstrap.js
371
+ - lib/oxidized/web/public/weblibs/bootstrap.js.map
372
+ - lib/oxidized/web/public/weblibs/buttons.bootstrap5.css
373
+ - lib/oxidized/web/public/weblibs/buttons.bootstrap5.js
374
+ - lib/oxidized/web/public/weblibs/buttons.colVis.js
375
+ - lib/oxidized/web/public/weblibs/dataTables.bootstrap5.css
376
+ - lib/oxidized/web/public/weblibs/dataTables.bootstrap5.js
377
+ - lib/oxidized/web/public/weblibs/dataTables.buttons.js
378
+ - lib/oxidized/web/public/weblibs/dataTables.js
379
+ - lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff
380
+ - lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff2
381
+ - lib/oxidized/web/public/weblibs/jquery.js
382
+ - lib/oxidized/web/version.rb
281
383
  - lib/oxidized/web/views/conf_search.haml
282
384
  - lib/oxidized/web/views/diffs.haml
283
385
  - lib/oxidized/web/views/footer.haml
284
386
  - lib/oxidized/web/views/head.haml
285
387
  - lib/oxidized/web/views/layout.haml
286
- - lib/oxidized/web/views/migration.haml
287
388
  - lib/oxidized/web/views/node.haml
288
389
  - lib/oxidized/web/views/nodes.haml
289
- - lib/oxidized/web/views/sass/oxidized.sass
290
390
  - lib/oxidized/web/views/stats.haml
291
391
  - lib/oxidized/web/views/version.haml
292
392
  - lib/oxidized/web/views/versions.haml
293
393
  - lib/oxidized/web/webapp.rb
294
394
  - oxidized-web.gemspec
395
+ - package-lock.json
396
+ - package.json
397
+ - spec/node_spec.rb
398
+ - spec/node_version_spec.rb
399
+ - spec/nodes_spec.rb
400
+ - spec/root_spec.rb
401
+ - spec/spec_helper.rb
402
+ - spec/webapp_spec.rb
295
403
  homepage: http://github.com/ytti/oxidized-web
296
404
  licenses:
297
405
  - Apache-2.0
298
- metadata: {}
299
- post_install_message:
406
+ metadata:
407
+ rubygems_mfa_required: 'true'
408
+ post_install_message:
300
409
  rdoc_options: []
301
410
  require_paths:
302
411
  - lib
@@ -304,15 +413,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
304
413
  requirements:
305
414
  - - ">="
306
415
  - !ruby/object:Gem::Version
307
- version: '2.3'
416
+ version: '3.1'
308
417
  required_rubygems_version: !ruby/object:Gem::Requirement
309
418
  requirements:
310
419
  - - ">="
311
420
  - !ruby/object:Gem::Version
312
421
  version: '0'
313
422
  requirements: []
314
- rubygems_version: 3.0.2
315
- signing_key:
423
+ rubygems_version: 3.3.15
424
+ signing_key:
316
425
  specification_version: 4
317
426
  summary: sinatra API + webUI for oxidized
318
427
  test_files: []
@@ -1,150 +0,0 @@
1
- module Oxidized
2
- module API
3
- class Mig
4
- def initialize(hash_router_db, cloginrc, path_new_router)
5
- @hash_router_db = hash_router_db
6
- @cloginrc = cloginrc
7
- @path_new_router = path_new_router
8
- end
9
-
10
- # read cloginrc and return a hash with node name, which a hash value which contains user,
11
- # password, eventually enable
12
- def cloginrc clogin_file
13
- close_file = clogin_file
14
- file = close_file.read
15
- file = file.gsub('add', '')
16
-
17
- hash = {}
18
- file.each_line do |line|
19
- # stock all device name, and password and enable if there is one
20
- line = line.split(' ')
21
- for i in 0..line.length
22
- if line[i] == 'user'
23
- # add the equipment and user if not exist
24
- unless hash[line[i + 1]]
25
- hash[line[i + 1]] = { user: line[i + 2] }
26
- end
27
- # if the equipment exist, add password and enable password
28
- elsif line[i] == 'password'
29
- if hash[line[i + 1]]
30
- if line.length > i + 2
31
- h = hash[line[i + 1]]
32
- h[:password] = line[i + 2]
33
- if /\s*/.match(line[i + 3])
34
- h[:enable] = line[i + 3]
35
- end
36
- hash[line[i + 1]] = h
37
- elsif line.length = i + 2
38
- h = hash[line[i + 1]]
39
- h[:password] = line[i + 2]
40
- hash[line[i + 1]] = h
41
- end
42
- end
43
- end
44
- end
45
- end
46
- close_file.close
47
- hash
48
- end
49
-
50
- def model_dico model
51
- dico = { 'cisco' => 'ios', 'foundry' => 'ironware' }
52
- model = model.gsub("\n", '')
53
- if dico[model]
54
- model = dico[model]
55
- end
56
- model
57
- end
58
-
59
- # add node and group for an equipment (take a list of router.db)
60
- def rancid_group router_db_list
61
- model = {}
62
- hash = cloginrc @cloginrc
63
- router_db_list.each do |router_db|
64
- group = router_db[:group]
65
- file_close = router_db[:file]
66
- file = file_close.read
67
- file = file.gsub(':up', '')
68
- file.gsub(' ', '')
69
-
70
- file.each_line do |line|
71
- line = line.split(':')
72
- node = line[0]
73
- if hash[node]
74
- h = hash[node]
75
- model = model_dico line[1].to_s
76
- h[:model] = model
77
- h[:group] = group
78
- end
79
- end
80
- file_close.close
81
- end
82
- hash
83
- end
84
-
85
- # write a router.db conf, need the hash and the path of the file we whish create
86
- def write_router_db hash
87
- router_db = File.new(@path_new_router, 'w')
88
- hash.each do |key, value|
89
- line = key.to_s
90
- line += ":#{value[:model]}"
91
- line += ":#{value[:user]}"
92
- line += ":#{value[:password]}"
93
- line += ":#{value[:group]}"
94
- if value[:enable]
95
- line += ":#{value[:enable]}"
96
- end
97
- router_db.puts(line)
98
- end
99
- router_db.close
100
- end
101
-
102
- def edit_conf_file path_conf, router_db_path
103
- file_close = File.open(path_conf, 'r')
104
- file = file_close
105
- file = file.read
106
- source_reached = false
107
- new_file = []
108
- file.each_line do |line|
109
- if source_reached
110
- unless /^\w/.match(line)
111
- next
112
- end
113
-
114
- source_reached = false
115
- end
116
- new_file.push(line)
117
- if /source:/.match(line)
118
- source_reached = true
119
- new_file.push(" default: csv\n")
120
- new_file.push(" csv:\n")
121
- new_file.push(" file: #{router_db_path}\n")
122
- new_file.push(" delimiter: !ruby/regexp /:/\n")
123
- new_file.push(" map:\n")
124
- new_file.push(" name: 0\n")
125
- new_file.push(" model: 1\n")
126
- new_file.push(" username: 2\n")
127
- new_file.push(" password: 3\n")
128
- new_file.push(" group: 4\n")
129
- new_file.push(" vars_map:\n")
130
- new_file.push(" enable: 5\n")
131
- next
132
- end
133
- end
134
- file_close.close
135
-
136
- new_conf = File.new(path_conf, "w")
137
- new_file.each do |line|
138
- new_conf.puts(line)
139
- end
140
- new_conf.close
141
- end
142
-
143
- def go_rancid_migration
144
- hash = rancid_group @hash_router_db
145
- write_router_db hash
146
- edit_conf_file "#{ENV['HOME']}/.config/oxidized/config", @path_new_router
147
- end
148
- end
149
- end
150
- end