1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-02-05 21:57:24 +03:00

M #: improve error management for one_hm driver (#679)

This commit is contained in:
Christian González 2021-01-20 11:24:41 +01:00 committed by GitHub
parent f1c8b3d404
commit 25a8383b1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -84,30 +84,38 @@ class HookManagerDriver < OpenNebulaDriver
end
def action_execute(_not_used, *arguments)
arg_xml = Nokogiri::XML(Base64.decode64(arguments.flatten[0]))
type = arg_xml.xpath('//HOOK_TYPE').text
begin
arg_xml = Nokogiri::XML(Base64.decode64(arguments.flatten[0]))
type = arg_xml.xpath('//HOOK_TYPE').text
key(type, arg_xml).each do |key|
m_key = "EVENT #{key}"
key(type, arg_xml).each do |key|
m_key = "EVENT #{key}"
# Using envelopes for splitting key/val
# http://zguide.zeromq.org/page:all#Pub-Sub-Message-Envelopes
@publisher.send_string m_key, ZMQ::SNDMORE
@publisher.send_string arguments.flatten[0]
# Using envelopes for splitting key/val
# http://zguide.zeromq.org/page:all#Pub-Sub-Message-Envelopes
send_string(@publisher, m_key, ZMQ::SNDMORE)
send_string(@publisher, arguments.flatten[0])
end
rescue StandardError => e
log(0, "ERROR: #{e.message}")
end
end
def action_retry(_not_used, *arguments)
arguments.flatten!
begin
arguments.flatten!
command = arguments[0]
params = arguments[1]
command = arguments[0]
params = arguments[1]
m_key = 'RETRY'
m_val = "#{command} #{params}"
m_key = 'RETRY'
m_val = "#{command} #{params}"
@publisher.send_string m_key, ZMQ::SNDMORE
@publisher.send_string m_val
send_string(@publisher, m_key, ZMQ::SNDMORE)
send_string(@publisher, m_val)
rescue StandardError => e
log(0, "ERROR: #{e.message}")
end
end
def receiver_thread
@ -133,8 +141,9 @@ class HookManagerDriver < OpenNebulaDriver
end
#---------------------------------------------------------------------------
# Helpers to build key and message values
# Helpers
#---------------------------------------------------------------------------
def key(type, xml)
case type.to_sym
when :API
@ -161,6 +170,22 @@ class HookManagerDriver < OpenNebulaDriver
end
end
def send_string(socket, content, flag = nil)
rc = 0
if flag.nil?
rc = socket.send_string(content)
else
rc = socket.send_string(content, flag)
end
return unless rc < 0
msg = "ERROR: failure sending string: #{ZMQ::Util.error_string}" \
" (#{ZMQ::Util.errno})"
log(0, msg)
end
end
#-------------------------------------------------------------------------------