oxidized 0.20.0 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +135 -865
  5. data/docs/Configuration.md +186 -0
  6. data/docs/Hooks.md +143 -0
  7. data/docs/Outputs.md +190 -0
  8. data/docs/Ruby-API.md +115 -0
  9. data/docs/Sources.md +110 -0
  10. data/docs/Supported-OS-Types.md +149 -0
  11. data/docs/VRP-Huawei.md +27 -0
  12. data/extra/oxidized-report-git-commits +21 -40
  13. data/extra/oxidized-ubuntu.haproxy +45 -0
  14. data/extra/oxidized.service +4 -0
  15. data/lib/oxidized/hook.rb +1 -0
  16. data/lib/oxidized/hook/exec.rb +0 -1
  17. data/lib/oxidized/input/ssh.rb +11 -8
  18. data/lib/oxidized/model/acsw.rb +67 -0
  19. data/lib/oxidized/model/aen.rb +20 -0
  20. data/lib/oxidized/model/alteonos.rb +60 -0
  21. data/lib/oxidized/model/asa.rb +53 -18
  22. data/lib/oxidized/model/asyncos.rb +49 -0
  23. data/lib/oxidized/model/audiocodes.rb +32 -0
  24. data/lib/oxidized/model/boss.rb +76 -0
  25. data/lib/oxidized/model/ciscosma.rb +45 -0
  26. data/lib/oxidized/model/ciscosmb.rb +6 -1
  27. data/lib/oxidized/model/coriantgroove.rb +30 -0
  28. data/lib/oxidized/model/dlink.rb +1 -0
  29. data/lib/oxidized/model/enterasys.rb +30 -0
  30. data/lib/oxidized/model/fiberdriver.rb +1 -1
  31. data/lib/oxidized/model/fortios.rb +3 -1
  32. data/lib/oxidized/model/ftos.rb +2 -0
  33. data/lib/oxidized/model/hirschmann.rb +41 -0
  34. data/lib/oxidized/model/hpemsa.rb +13 -0
  35. data/lib/oxidized/model/ios.rb +2 -2
  36. data/lib/oxidized/model/iosxr.rb +1 -0
  37. data/lib/oxidized/model/ipos.rb +7 -1
  38. data/lib/oxidized/model/ironware.rb +4 -1
  39. data/lib/oxidized/model/netgear.rb +12 -4
  40. data/lib/oxidized/model/panos.rb +1 -1
  41. data/lib/oxidized/model/planet.rb +2 -1
  42. data/lib/oxidized/model/powerconnect.rb +5 -0
  43. data/lib/oxidized/model/procurve.rb +13 -0
  44. data/lib/oxidized/model/routeros.rb +12 -5
  45. data/lib/oxidized/model/sgos.rb +46 -0
  46. data/lib/oxidized/model/ucs.rb +31 -0
  47. data/lib/oxidized/model/voss.rb +12 -3
  48. data/lib/oxidized/model/vrp.rb +6 -0
  49. data/lib/oxidized/model/weos.rb +22 -0
  50. data/lib/oxidized/model/xos.rb +4 -0
  51. data/lib/oxidized/node.rb +4 -2
  52. data/lib/oxidized/nodes.rb +1 -0
  53. data/lib/oxidized/version.rb +1 -1
  54. data/lib/oxidized/worker.rb +23 -2
  55. data/oxidized.gemspec +1 -1
  56. metadata +54 -46
@@ -0,0 +1,31 @@
1
+ class UCS < Oxidized::Model
2
+
3
+ prompt /^(\r?[\w.@_()-]+[#]\s?)$/
4
+ comment '! '
5
+
6
+ cmd 'show version brief' do |cfg|
7
+ comment cfg
8
+ end
9
+
10
+ cmd 'show chassis detail' do |cfg|
11
+ comment cfg
12
+ end
13
+
14
+ cmd 'show fabric-interconnect detail' do |cfg|
15
+ comment cfg
16
+ end
17
+
18
+ cmd 'show configuration all | no-more' do |cfg|
19
+ cfg
20
+ end
21
+
22
+ cfg :ssh, :telnet do
23
+ post_login 'terminal length 0'
24
+ pre_logout 'exit'
25
+ end
26
+
27
+ cfg :telnet do
28
+ username /^login:/
29
+ password /^Password:/
30
+ end
31
+ end
@@ -1,22 +1,31 @@
1
1
  class Voss < Oxidized::Model
2
2
  # Avaya VSP Operating System Software(VOSS)
3
3
  # Created by danielcoxman@gmail.com
4
- # May 9, 2017
4
+ # May 25, 2017
5
5
  # This was tested on vsp4k and vsp8k
6
6
 
7
7
  comment '# '
8
8
 
9
9
  prompt /^[^\s#>]+[#>]$/
10
10
 
11
+ # needed for proper formatting after post_login
12
+ cmd('') { |cfg| comment "#{cfg}\n" }
13
+
14
+ # Get sys-info and remove information that changes such has temperature and power
11
15
  cmd 'show sys-info' do |cfg|
12
- comment cfg
16
+ cfg.gsub! /(^((.*)SysUpTime(.*))$)/, 'removed SysUpTime'
17
+ cfg.gsub! /^((.*)Temperature Info \:(.*\r?\n){4})/, 'removed Temperature Info and 3 more lines'
18
+ cfg.gsub! /(^((.*)AmbientTemperature(.*)\:(.*))$)/, 'removed AmbientTemperature'
19
+ cfg.gsub! /(^((.*)Temperature(.*)\:(.*))$)/, 'removed Temperature'
20
+ cfg.gsub! /(^((.*)Total Power Usage(.*)\:(.*))$)/, 'removed Total Power Usage'
21
+ comment "#{cfg}\n"
13
22
  end
14
23
 
15
24
  # more the config rather than doing a show run
16
25
  cmd 'more config.cfg' do |cfg|
17
26
  cfg
18
27
  cfg.gsub! /^[^\s#>]+[#>]$/, ''
19
- cfg.gsub! /^more config.cfg/, ''
28
+ cfg.gsub! /^more config.cfg/, '# more config.cfg'
20
29
  end
21
30
 
22
31
  cfg :telnet do
@@ -4,6 +4,12 @@ class VRP < Oxidized::Model
4
4
  prompt /^(<[\w.-]+>)$/
5
5
  comment '# '
6
6
 
7
+ cmd :secret do |cfg|
8
+ cfg.gsub! /(pin verify (?:auto|)).*/, '\\1 <PIN hidden>'
9
+ cfg.gsub! /(%\^%#.*%\^%#)/, '<secret hidden>'
10
+ cfg
11
+ end
12
+
7
13
  cmd :all do |cfg|
8
14
  cfg.each_line.to_a[1..-2].join
9
15
  end
@@ -0,0 +1,22 @@
1
+ class WEOS < Oxidized::Model
2
+
3
+ #Westell WEOS, works with Westell 8178G, Westell 8266G
4
+
5
+ prompt /^(\s[\w.@-]+[#>]\s?)$/
6
+
7
+ cmd :all do |cfg|
8
+ cfg.each_line.to_a[1..-2].join
9
+ end
10
+
11
+ cmd 'show running-config' do |cfg|
12
+ cfg
13
+ end
14
+
15
+ cfg :telnet do
16
+ username /login:/
17
+ password /assword:/
18
+ post_login 'cli more disable'
19
+ pre_logout 'logout'
20
+ end
21
+
22
+ end
@@ -29,6 +29,10 @@ class XOS < Oxidized::Model
29
29
 
30
30
  cmd 'show configuration'
31
31
 
32
+ cmd 'show policy detail' do |cfg|
33
+ comment cfg
34
+ end
35
+
32
36
  cfg :telnet do
33
37
  username /^login:/
34
38
  password /^\r*password:/
@@ -6,8 +6,9 @@ module Oxidized
6
6
  class ModelNotFound < OxidizedError; end
7
7
  class Node
8
8
  attr_reader :name, :ip, :model, :input, :output, :group, :auth, :prompt, :vars, :last, :repo
9
- attr_accessor :running, :user, :msg, :from, :stats, :retry
9
+ attr_accessor :running, :user, :email, :msg, :from, :stats, :retry
10
10
  alias :running? :running
11
+
11
12
  def initialize opt
12
13
  Oxidized.logger.debug 'resolving DNS for %s...' % opt[:name]
13
14
  # remove the prefix if an IP Address is provided with one as IPAddr converts it to a network address.
@@ -120,7 +121,7 @@ module Oxidized
120
121
  end
121
122
 
122
123
  def reset
123
- @user = @msg = @from = nil
124
+ @user = @email = @msg = @from = nil
124
125
  @retry = 0
125
126
  end
126
127
 
@@ -217,6 +218,7 @@ module Oxidized
217
218
  end
218
219
 
219
220
  #model
221
+ # FIXME: warning: instance variable @model not initialized
220
222
  if Oxidized.config.models.has_key?(@model.class.name.to_s.downcase)
221
223
  if Oxidized.config.models[@model.class.name.to_s.downcase].has_key?(key_str)
222
224
  value = Oxidized.config.models[@model.class.name.to_s.downcase][key_str]
@@ -68,6 +68,7 @@ module Oxidized
68
68
  with_lock do
69
69
  n = del node
70
70
  n.user = opt['user']
71
+ n.email = opt['email']
71
72
  n.msg = opt['msg']
72
73
  n.from = opt['from']
73
74
  # set last job to nil so that the node is picked for immediate update
@@ -1,3 +1,3 @@
1
1
  module Oxidized
2
- VERSION = '0.20.0'
2
+ VERSION = '0.21.0'
3
3
  end
@@ -3,6 +3,7 @@ module Oxidized
3
3
  require 'oxidized/jobs'
4
4
  class Worker
5
5
  def initialize nodes
6
+ @jobs_done = 0
6
7
  @nodes = nodes
7
8
  @jobs = Jobs.new(Oxidized.config.threads, Oxidized.config.interval, @nodes)
8
9
  @nodes.jobs = @jobs
@@ -14,8 +15,9 @@ module Oxidized
14
15
  @jobs.delete_if { |job| ended << job if not job.alive? }
15
16
  ended.each { |job| process job }
16
17
  @jobs.work
18
+
17
19
  while @jobs.size < @jobs.want
18
- Oxidized.logger.debug "lib/oxidized/worker.rb: Jobs #{@jobs.size}, Want: #{@jobs.want}"
20
+ Oxidized.logger.debug "lib/oxidized/worker.rb: Jobs running: #{@jobs.size} of #{@jobs.want} - ended: #{@jobs_done} of #{@nodes.size}"
19
21
  # ask for next node in queue non destructive way
20
22
  nextnode = @nodes.first
21
23
  unless nextnode.last.nil?
@@ -29,6 +31,8 @@ module Oxidized
29
31
  @jobs.push Job.new node
30
32
  Oxidized.logger.debug "lib/oxidized/worker.rb: Added #{node.name} to the job queue"
31
33
  end
34
+
35
+ run_done_hook if is_cycle_finished?
32
36
  Oxidized.logger.debug("lib/oxidized/worker.rb: #{@jobs.size} jobs running in parallel") unless @jobs.empty?
33
37
  end
34
38
 
@@ -38,6 +42,8 @@ module Oxidized
38
42
  node.stats.add job
39
43
  @jobs.duration job.time
40
44
  node.running = false
45
+ @jobs_done += 1 # needed for worker_done event
46
+
41
47
  if job.status == :success
42
48
  Oxidized.Hooks.handle :node_success, :node => node,
43
49
  :job => job
@@ -46,7 +52,7 @@ module Oxidized
46
52
  msg += " with message '#{node.msg}'" if node.msg
47
53
  output = node.output.new
48
54
  if output.store node.name, job.config,
49
- :msg => msg, :user => node.user, :group => node.group
55
+ :msg => msg, :email => node.email, :user => node.user, :group => node.group
50
56
  Oxidized.logger.info "Configuration updated for #{node.group}/#{node.name}"
51
57
  Oxidized.Hooks.handle :post_store, :node => node,
52
58
  :job => job,
@@ -71,5 +77,20 @@ module Oxidized
71
77
  Oxidized.logger.warn "#{node.name} not found, removed while collecting?"
72
78
  end
73
79
 
80
+ private
81
+
82
+ def is_cycle_finished?
83
+ @jobs_done > 0 && @jobs_done % @nodes.count == 0
84
+ end
85
+
86
+ def run_done_hook
87
+ Oxidized.logger.debug "lib/oxidized/worker.rb: Running :nodes_done hook"
88
+ Oxidized.Hooks.handle :nodes_done
89
+ rescue => e
90
+ # swallow the hook erros and continue as normal
91
+ Oxidized.logger.error "lib/oxidized/worker.rb: #{e.message}"
92
+ ensure
93
+ @jobs_done = 0
94
+ end
74
95
  end
75
96
  end
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.required_ruby_version = '>= 2.0.0'
22
22
  s.add_runtime_dependency 'asetus', '~> 0.1'
23
23
  s.add_runtime_dependency 'slop', '~> 3.5'
24
- s.add_runtime_dependency 'net-ssh', '~> 3.0.2'
24
+ s.add_runtime_dependency 'net-ssh', '~> 4.1.0'
25
25
  s.add_runtime_dependency 'rugged', '~> 0.21', '>= 0.21.4'
26
26
 
27
27
  if defined?(RUBY_VERSION) && RUBY_VERSION > '2.3'
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.20.0
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saku Ytti
@@ -10,166 +10,152 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-05-14 00:00:00.000000000 Z
13
+ date: 2017-11-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: asetus
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - "~>"
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0.1'
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
28
  version: '0.1'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: slop
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - "~>"
33
+ - - ~>
34
34
  - !ruby/object:Gem::Version
35
35
  version: '3.5'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "~>"
40
+ - - ~>
41
41
  - !ruby/object:Gem::Version
42
42
  version: '3.5'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: net-ssh
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
47
+ - - ~>
48
48
  - !ruby/object:Gem::Version
49
- version: 3.0.2
49
+ version: 4.1.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - "~>"
54
+ - - ~>
55
55
  - !ruby/object:Gem::Version
56
- version: 3.0.2
56
+ version: 4.1.0
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: rugged
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - "~>"
61
+ - - ~>
62
62
  - !ruby/object:Gem::Version
63
63
  version: '0.21'
64
- - - ">="
64
+ - - '>='
65
65
  - !ruby/object:Gem::Version
66
66
  version: 0.21.4
67
67
  type: :runtime
68
68
  prerelease: false
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - "~>"
71
+ - - ~>
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0.21'
74
- - - ">="
74
+ - - '>='
75
75
  - !ruby/object:Gem::Version
76
76
  version: 0.21.4
77
- - !ruby/object:Gem::Dependency
78
- name: net-telnet
79
- requirement: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- type: :runtime
85
- prerelease: false
86
- version_requirements: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
77
  - !ruby/object:Gem::Dependency
92
78
  name: pry
93
79
  requirement: !ruby/object:Gem::Requirement
94
80
  requirements:
95
- - - "~>"
81
+ - - ~>
96
82
  - !ruby/object:Gem::Version
97
83
  version: '0'
98
84
  type: :development
99
85
  prerelease: false
100
86
  version_requirements: !ruby/object:Gem::Requirement
101
87
  requirements:
102
- - - "~>"
88
+ - - ~>
103
89
  - !ruby/object:Gem::Version
104
90
  version: '0'
105
91
  - !ruby/object:Gem::Dependency
106
92
  name: bundler
107
93
  requirement: !ruby/object:Gem::Requirement
108
94
  requirements:
109
- - - "~>"
95
+ - - ~>
110
96
  - !ruby/object:Gem::Version
111
97
  version: '1.10'
112
98
  type: :development
113
99
  prerelease: false
114
100
  version_requirements: !ruby/object:Gem::Requirement
115
101
  requirements:
116
- - - "~>"
102
+ - - ~>
117
103
  - !ruby/object:Gem::Version
118
104
  version: '1.10'
119
105
  - !ruby/object:Gem::Dependency
120
106
  name: rake
121
107
  requirement: !ruby/object:Gem::Requirement
122
108
  requirements:
123
- - - "~>"
109
+ - - ~>
124
110
  - !ruby/object:Gem::Version
125
111
  version: '10.0'
126
112
  type: :development
127
113
  prerelease: false
128
114
  version_requirements: !ruby/object:Gem::Requirement
129
115
  requirements:
130
- - - "~>"
116
+ - - ~>
131
117
  - !ruby/object:Gem::Version
132
118
  version: '10.0'
133
119
  - !ruby/object:Gem::Dependency
134
120
  name: minitest
135
121
  requirement: !ruby/object:Gem::Requirement
136
122
  requirements:
137
- - - "~>"
123
+ - - ~>
138
124
  - !ruby/object:Gem::Version
139
125
  version: '5.8'
140
126
  type: :development
141
127
  prerelease: false
142
128
  version_requirements: !ruby/object:Gem::Requirement
143
129
  requirements:
144
- - - "~>"
130
+ - - ~>
145
131
  - !ruby/object:Gem::Version
146
132
  version: '5.8'
147
133
  - !ruby/object:Gem::Dependency
148
134
  name: mocha
149
135
  requirement: !ruby/object:Gem::Requirement
150
136
  requirements:
151
- - - "~>"
137
+ - - ~>
152
138
  - !ruby/object:Gem::Version
153
139
  version: '1.1'
154
140
  type: :development
155
141
  prerelease: false
156
142
  version_requirements: !ruby/object:Gem::Requirement
157
143
  requirements:
158
- - - "~>"
144
+ - - ~>
159
145
  - !ruby/object:Gem::Version
160
146
  version: '1.1'
161
147
  - !ruby/object:Gem::Dependency
162
148
  name: git
163
149
  requirement: !ruby/object:Gem::Requirement
164
150
  requirements:
165
- - - "~>"
151
+ - - ~>
166
152
  - !ruby/object:Gem::Version
167
153
  version: '1'
168
154
  type: :development
169
155
  prerelease: false
170
156
  version_requirements: !ruby/object:Gem::Requirement
171
157
  requirements:
172
- - - "~>"
158
+ - - ~>
173
159
  - !ruby/object:Gem::Version
174
160
  version: '1'
175
161
  description: software to fetch configuration from network devices and store them
@@ -182,9 +168,9 @@ executables:
182
168
  extensions: []
183
169
  extra_rdoc_files: []
184
170
  files:
185
- - ".gitignore"
186
- - ".ruby-version"
187
- - ".travis.yml"
171
+ - .gitignore
172
+ - .ruby-version
173
+ - .travis.yml
188
174
  - CHANGELOG.md
189
175
  - Dockerfile
190
176
  - Gemfile
@@ -194,9 +180,17 @@ files:
194
180
  - TODO.md
195
181
  - bin/console
196
182
  - bin/oxidized
183
+ - docs/Configuration.md
184
+ - docs/Hooks.md
185
+ - docs/Outputs.md
186
+ - docs/Ruby-API.md
187
+ - docs/Sources.md
188
+ - docs/Supported-OS-Types.md
189
+ - docs/VRP-Huawei.md
197
190
  - extra/auto-reload-config.runit
198
191
  - extra/nagios_check_failing_nodes.rb
199
192
  - extra/oxidized-report-git-commits
193
+ - extra/oxidized-ubuntu.haproxy
200
194
  - extra/oxidized.apache2
201
195
  - extra/oxidized.init
202
196
  - extra/oxidized.init.d
@@ -230,22 +224,30 @@ files:
230
224
  - lib/oxidized/jobs.rb
231
225
  - lib/oxidized/manager.rb
232
226
  - lib/oxidized/model/acos.rb
227
+ - lib/oxidized/model/acsw.rb
228
+ - lib/oxidized/model/aen.rb
233
229
  - lib/oxidized/model/aireos.rb
234
230
  - lib/oxidized/model/airos.rb
231
+ - lib/oxidized/model/alteonos.rb
235
232
  - lib/oxidized/model/alvarion.rb
236
233
  - lib/oxidized/model/aos.rb
237
234
  - lib/oxidized/model/aos7.rb
238
235
  - lib/oxidized/model/aosw.rb
239
236
  - lib/oxidized/model/apc_aos.rb
240
237
  - lib/oxidized/model/asa.rb
238
+ - lib/oxidized/model/asyncos.rb
239
+ - lib/oxidized/model/audiocodes.rb
240
+ - lib/oxidized/model/boss.rb
241
241
  - lib/oxidized/model/br6910.rb
242
242
  - lib/oxidized/model/c4cmts.rb
243
243
  - lib/oxidized/model/casa.rb
244
244
  - lib/oxidized/model/catos.rb
245
245
  - lib/oxidized/model/cisconga.rb
246
+ - lib/oxidized/model/ciscosma.rb
246
247
  - lib/oxidized/model/ciscosmb.rb
247
248
  - lib/oxidized/model/comware.rb
248
249
  - lib/oxidized/model/coriant8600.rb
250
+ - lib/oxidized/model/coriantgroove.rb
249
251
  - lib/oxidized/model/corianttmos.rb
250
252
  - lib/oxidized/model/cumulus.rb
251
253
  - lib/oxidized/model/datacom.rb
@@ -253,6 +255,7 @@ files:
253
255
  - lib/oxidized/model/dnos.rb
254
256
  - lib/oxidized/model/edgeos.rb
255
257
  - lib/oxidized/model/edgeswitch.rb
258
+ - lib/oxidized/model/enterasys.rb
256
259
  - lib/oxidized/model/eos.rb
257
260
  - lib/oxidized/model/fabricos.rb
258
261
  - lib/oxidized/model/fiberdriver.rb
@@ -262,7 +265,9 @@ files:
262
265
  - lib/oxidized/model/fujitsupy.rb
263
266
  - lib/oxidized/model/gaiaos.rb
264
267
  - lib/oxidized/model/hatteras.rb
268
+ - lib/oxidized/model/hirschmann.rb
265
269
  - lib/oxidized/model/hpebladesystem.rb
270
+ - lib/oxidized/model/hpemsa.rb
266
271
  - lib/oxidized/model/ios.rb
267
272
  - lib/oxidized/model/iosxr.rb
268
273
  - lib/oxidized/model/ipos.rb
@@ -290,16 +295,19 @@ files:
290
295
  - lib/oxidized/model/routeros.rb
291
296
  - lib/oxidized/model/saos.rb
292
297
  - lib/oxidized/model/screenos.rb
298
+ - lib/oxidized/model/sgos.rb
293
299
  - lib/oxidized/model/siklu.rb
294
300
  - lib/oxidized/model/supermicro.rb
295
301
  - lib/oxidized/model/timos.rb
296
302
  - lib/oxidized/model/tmos.rb
297
303
  - lib/oxidized/model/tplink.rb
298
304
  - lib/oxidized/model/trango.rb
305
+ - lib/oxidized/model/ucs.rb
299
306
  - lib/oxidized/model/voltaire.rb
300
307
  - lib/oxidized/model/voss.rb
301
308
  - lib/oxidized/model/vrp.rb
302
309
  - lib/oxidized/model/vyatta.rb
310
+ - lib/oxidized/model/weos.rb
303
311
  - lib/oxidized/model/xos.rb
304
312
  - lib/oxidized/model/zhoneolt.rb
305
313
  - lib/oxidized/model/zynos.rb
@@ -329,17 +337,17 @@ require_paths:
329
337
  - lib
330
338
  required_ruby_version: !ruby/object:Gem::Requirement
331
339
  requirements:
332
- - - ">="
340
+ - - '>='
333
341
  - !ruby/object:Gem::Version
334
342
  version: 2.0.0
335
343
  required_rubygems_version: !ruby/object:Gem::Requirement
336
344
  requirements:
337
- - - ">="
345
+ - - '>='
338
346
  - !ruby/object:Gem::Version
339
347
  version: '0'
340
348
  requirements: []
341
349
  rubyforge_project: oxidized
342
- rubygems_version: 2.5.2
350
+ rubygems_version: 2.0.14.1
343
351
  signing_key:
344
352
  specification_version: 4
345
353
  summary: feeble attempt at rancid