oxidized-web
oxidized-web copied to clipboard
conf_search does not work with files output
This works with GIT output but fails when file is selected with the following error and backtrace:
TypeError at /nodes/conf_search no implicit conversion of Regexp into Integer file: webapp.rb location: [] line: 55
/var/lib/gems/2.3.0/gems/oxidized-web-0.7.1/lib/oxidized/web/webapp.rb in []
if config[@to_research]
/var/lib/gems/2.3.0/gems/oxidized-web-0.7.1/lib/oxidized/web/webapp.rb in block (2 levels) in <class:WebApp>
if config[@to_research]
/var/lib/gems/2.3.0/gems/oxidized-web-0.7.1/lib/oxidized/web/webapp.rb in map
nodes_list.each do |n|
/var/lib/gems/2.3.0/gems/oxidized-web-0.7.1/lib/oxidized/web/webapp.rb in each
nodes_list.each do |n|
/var/lib/gems/2.3.0/gems/oxidized-web-0.7.1/lib/oxidized/web/webapp.rb in block in <class:WebApp>
nodes_list.each do |n|
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in call
proc { |a,p| unbound_method.bind(a).call }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block in compile!
proc { |a,p| unbound_method.bind(a).call }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block (3 levels) in route!
route_eval { block[*args] }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in route_eval
throw :halt, yield
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block (2 levels) in route!
route_eval { block[*args] }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block in process_route
block ? block[self, values] : yield(self, values)
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in catch
catch(:pass) do
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in process_route
catch(:pass) do
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block in route!
returned_pass_block = process_route(pattern, keys, conditions) do |*args|
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in each
routes.each do |pattern, keys, conditions, block|
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in route!
routes.each do |pattern, keys, conditions, block|
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block in dispatch!
route!
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block in invoke
res = catch(:halt) { yield }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in catch
res = catch(:halt) { yield }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in invoke
res = catch(:halt) { yield }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in dispatch!
invoke do
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block in call!
invoke { dispatch! }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block in invoke
res = catch(:halt) { yield }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in catch
res = catch(:halt) { yield }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in invoke
res = catch(:halt) { yield }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in call!
invoke { dispatch! }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in call
dup.call!(env)
/var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb in call
status, headers, body = @app.call(env)
/var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb in call
app.call env
/var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb in call
status, headers, body = app.call(env)
/var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb in call
result or app.call(env)
/var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb in call
result or app.call(env)
/var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb in call
status, headers, body = @app.call(env)
/var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/nulllogger.rb in call
@app.call(env)
/var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/head.rb in call
status, headers, body = @app.call(env)
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/show_exceptions.rb in call
@app.call(env)
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in call
result, callback = app.call(env), env['async.callback']
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in call
@stack.call(env)
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in block in call
synchronize { prototype.call(env) }
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in synchronize
yield
/var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb in call
synchronize { prototype.call(env) }
/var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb in block in call
return app.call(env)
/var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb in each
@mapping.each do |host, location, match, app|
/var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb in call
@mapping.each do |host, location, match, app|
/var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb in call
to_app.call(env)
/var/lib/gems/2.3.0/gems/puma-2.16.0/lib/puma/server.rb in handle_request
status, headers, res_body = @app.call(env)
/var/lib/gems/2.3.0/gems/puma-2.16.0/lib/puma/server.rb in process_client
case handle_request(client, buffer)
/var/lib/gems/2.3.0/gems/puma-2.16.0/lib/puma/server.rb in block in run
process_client client, buffer
/var/lib/gems/2.3.0/gems/puma-2.16.0/lib/puma/thread_pool.rb in block in spawn_thread
block.call(work, *extra)
file.rb's fetch
likely is the culprit. It seems fetch may not be returning a string but an array.
When you're doing this, are you also running groups?
Can you try after this change: https://github.com/ytti/oxidized/commit/449522554473f4b9a261ec06ee6961defb30f7bb
Works when all files are where they are suppose to be. However if a node doesn't have a file it errors out. After I created a file for every node with issues the search worked.
Errno::ENOENT at /nodes/conf_search No such file or directory @ rb_sysopen - /etc/oxidized/GROUP/node-name
/var/lib/gems/2.3.0/gems/oxidized-0.16.3/lib/oxidized/output/file.rb in read File.read File.join(cfg_dir, node_name) /var/lib/gems/2.3.0/gems/oxidized-0.16.3/lib/oxidized/output/file.rb in fetch File.read File.join(cfg_dir, node_name) /var/lib/gems/2.3.0/gems/oxidized-0.16.3/lib/oxidized/nodes.rb in block in fetch output.fetch node, group
I changed it to return nil, if file can't be found, I'm not sure that is actually sensible, of perhaps we should raise the ENOENT error, and let consumer (oxidized-web) figure out what to do when file is not found, perhaps complain in the webpage for example.
I'm not sure if this is related, but since I use file output and I'm having issue with search, I thought I'd leave a comment here.
When trying to search in conf files, I get this error:
ArgumentError at /nodes/conf_search
invalid byte sequence in UTF-8
file: webapp.rb location: [] line: 57
Could this be related, or should I open up a new issue?
I have the same error as acederlund above. Is there any solution known?
Thank you.
I have the same error 5 years later :-(