1
0
mirror of https://github.com/OpenNebula/one.git synced 2024-12-25 23:21:29 +03:00

B #5569: manage onedb live errors (#1512)

This commit is contained in:
Alejandro Huertas Herrero 2021-10-08 09:49:06 +02:00 committed by GitHub
parent 2e2f145507
commit 59cd0e1a66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 68 additions and 17 deletions

View File

@ -261,6 +261,8 @@ module OpenNebula
size = OpenNebula.pool_page_size if (!size || size == 0)
rc = @client.call(method, @user_id, current, -size, state)
return rc if OpenNebula.is_error?(rc)
initialize_xml(rc, @pool_name)
else
rc = info
@ -276,11 +278,11 @@ module OpenNebula
page = OpenNebula::XMLElement.new
loop do
page.initialize_xml(get_page(size,
current,
extended,
state),
@pool_name)
rc = get_page(size, current, extended, state)
break rc if OpenNebula.is_error?(rc)
page.initialize_xml(rc, @pool_name)
break if page["//#{element}"].nil?

View File

@ -561,7 +561,12 @@ CommandParser::CmdParser.new(ARGV) do
:options => [START_TIME, END_TIME] do
begin
action = OneDBLive.new
action.purge_history(options)
rc = action.purge_history(options)
if OpenNebula.is_error?(rc)
STDERR.puts "ERROR: #{rc.message}"
exit(-1)
end
rescue StandardError => e
puts e.message
pp e.backtrace
@ -584,7 +589,12 @@ CommandParser::CmdParser.new(ARGV) do
:options => [START_TIME, END_TIME, PAGES] do
begin
action = OneDBLive.new
action.purge_done_vm(options)
rc = action.purge_done_vm(options)
if OpenNebula.is_error?(rc)
STDERR.puts "ERROR: #{rc.message}"
exit(-1)
end
rescue StandardError => e
puts e.name
pp e.backtrace
@ -649,7 +659,12 @@ CommandParser::CmdParser.new(ARGV) do
OpenNebulaHelper::APPEND] do
begin
action = OneDBLive.new
action.change_body(args[0], args[1], args[2], options)
rc = action.change_body(args[0], args[1], args[2], options)
if OpenNebula.is_error?(rc)
STDERR.puts "ERROR: #{rc.message}"
exit(-1)
end
rescue StandardError => e
puts e.message
[-1, e.message]
@ -688,7 +703,12 @@ CommandParser::CmdParser.new(ARGV) do
end
action = OneDBLive.new
action.change_history(vid, seq, args[0], args[1], options)
rc = action.change_history(vid, seq, args[0], args[1], options)
if OpenNebula.is_error?(rc)
STDERR.puts "ERROR: #{rc.message}"
exit(-1)
end
rescue StandardError => e
puts e.message
[-1, e.message]
@ -721,7 +741,12 @@ CommandParser::CmdParser.new(ARGV) do
end
action = OneDBLive.new
action.update_body_cli(args[0], options[:id])
rc = action.update_body_cli(args[0], options[:id])
if OpenNebula.is_error?(rc)
STDERR.puts "ERROR: #{rc.message}"
exit(-1)
end
rescue StandardError => e
puts e.message
[-1, e.message]
@ -754,7 +779,12 @@ CommandParser::CmdParser.new(ARGV) do
end
action = OneDBLive.new
action.update_history_cli(options[:id], options[:seq])
rc = action.update_history_cli(options[:id], options[:seq])
if OpenNebula.is_error?(rc)
STDERR.puts "ERROR: #{rc.message}"
exit(-1)
end
rescue StandardError => e
puts e.message
[-1, e.message]
@ -787,7 +817,14 @@ CommandParser::CmdParser.new(ARGV) do
end
action = OneDBLive.new
STDOUT.puts action.show_body_cli(args[0], options[:id])
rc = action.show_body_cli(args[0], options[:id])
if OpenNebula.is_error?(rc)
STDERR.puts "ERROR: #{rc.message}"
exit(-1)
else
puts rc if rc
end
rescue StandardError => e
puts e.message
[-1, e.message]
@ -820,7 +857,14 @@ CommandParser::CmdParser.new(ARGV) do
end
action = OneDBLive.new
STDOUT.puts action.show_history_cli(options[:id], options[:seq])
rc = action.show_history_cli(options[:id], options[:seq])
if OpenNebula.is_error?(rc)
STDERR.puts "ERROR: #{rc.message}"
exit(-1)
else
puts rc if rc
end
rescue StandardError => e
puts e.message
[-1, e.message]

View File

@ -118,7 +118,9 @@ class OneDBLive
def purge_history(options = {})
vmpool = OpenNebula::VirtualMachinePool.new(client)
vmpool.info_all
rc = vmpool.info_all
return rc if OpenNebula.is_error?(rc)
ops = {
:start_time => 0,
@ -217,7 +219,7 @@ class OneDBLive
end_time = ops[:end_time].to_i
done = OpenNebula::VirtualMachine::VM_STATE.index('DONE')
vmpool.each_page_delete(ops[:pages], done, false) do |obj|
rc = vmpool.each_page_delete(ops[:pages], done, false) do |obj|
time = obj['ETIME'].to_i
# return false because the VM wasn't deleted
@ -230,6 +232,8 @@ class OneDBLive
true
end
return rc if OpenNebula.is_error?(rc)
end
def check_expr(object, expr)
@ -409,7 +413,7 @@ class OneDBLive
rescue StandardError => e
STDERR.puts "Error getting object id #{o.id}"
STDERR.puts e.message
next
return
end
row = db_data.first
@ -555,6 +559,7 @@ class OneDBLive
rescue StandardError => e
STDERR.puts "Error getting object id #{id}"
STDERR.puts e.message
return
end
row = db_data.first
@ -582,7 +587,7 @@ class OneDBLive
begin
db_data = select('history', "vid = #{vid} and seq = #{seq}")
rescue StandardError => e
error_str = "Error getting history record #{seq} for VM #{vid}"
error_str = "Error getting history record #{seq} for VM #{vid}\n"
error_str << e.message
raise error_str