1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

F #3380: Modify event key structure (#3848)

This commit is contained in:
Christian González 2019-10-17 17:22:10 +02:00 committed by Ruben S. Montero
parent 6e0438526d
commit 36ad5e2823
5 changed files with 25 additions and 65 deletions

View File

@ -526,6 +526,13 @@ class HookExecutionManager
case action
when :EVENT
type, key = key.split(' ')
if type.downcase.to_sym == :state
# rubocop:disable Style/RegexpLiteral
key.gsub!(/(?:.(?!\/))+$/, '')
# rubocop:enable Style/RegexpLiteral
end
content = Base64.decode64(content)
hook = @hooks.get_hook(type, key)

View File

@ -23,32 +23,6 @@
/* Driver ASCII Protocol Implementation */
/* ************************************************************************** */
void HookManagerDriver::execute(
int oid,
const string& hook_name,
const string& command,
const string& arguments ) const
{
ostringstream oss;
oss << "EXECUTE " << oid << " " << hook_name << " LOCAL " << command << " ";
if ( arguments.empty() )
{
oss << "-" << endl;
}
else
{
oss << arguments << endl;
}
write(oss);
}
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
void HookManagerDriver::execute(
const string& message ) const
{
@ -62,33 +36,6 @@ void HookManagerDriver::execute(
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
void HookManagerDriver::execute(
int oid,
const string& hook_name,
const string& host_name,
const string& command,
const string& arguments ) const
{
ostringstream oss;
oss << "EXECUTE " << oid << " " << hook_name << " " << host_name << " "
<< command << " ";
if ( arguments.empty() )
{
oss << "-" << endl;
}
else
{
oss << arguments << endl;
}
write(oss);
}
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
void HookManagerDriver::retry(
const string& message ) const
{

View File

@ -40,6 +40,7 @@ string * HookStateHost::format_message(Host * host)
<< "<HOOK_OBJECT>HOST</HOOK_OBJECT>"
<< "<STATE>" << Host::state_to_str(state, host->get_state()) << "</STATE>"
<< "<REMOTE_HOST>" << host->get_name() << "</REMOTE_HOST>"
<< "<RESOURCE_ID>" << host->get_oid() << "</RESOURCE_ID>"
<< host->to_xml(host_xml)
<< "</HOOK_MESSAGE>";

View File

@ -36,7 +36,8 @@ string * HookStateVM::format_message(VirtualMachine * vm)
<< "<HOOK_TYPE>STATE</HOOK_TYPE>"
<< "<HOOK_OBJECT>VM</HOOK_OBJECT>"
<< "<STATE>" << VirtualMachine::vm_state_to_str(state, vm->get_state()) << "</STATE>"
<< "<LCM_STATE>" << VirtualMachine::lcm_state_to_str(lcm_state, vm->get_lcm_state()) << "</LCM_STATE>";
<< "<LCM_STATE>" << VirtualMachine::lcm_state_to_str(lcm_state, vm->get_lcm_state()) << "</LCM_STATE>"
<< "<RESOURCE_ID>" << vm->get_oid() << "</RESOURCE_ID>";
if ( vm->hasHistory() )
{

View File

@ -85,12 +85,14 @@ class HookManagerDriver < OpenNebulaDriver
arg_xml = Nokogiri::XML(Base64.decode64(arguments.flatten[0]))
type = arg_xml.xpath('//HOOK_TYPE').text
m_key = "EVENT #{key(type, arg_xml)}"
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
@publisher.send_string m_key, ZMQ::SNDMORE
@publisher.send_string arguments.flatten[0]
end
end
def action_retry(*arguments)
@ -137,15 +139,17 @@ class HookManagerDriver < OpenNebulaDriver
call = xml.xpath('//CALL')[0].text
success = xml.xpath('//CALL_INFO/RESULT')[0].text
"API #{call} #{success}"
["API #{call} #{success}"]
when :STATE
obj = xml.xpath('//HOOK_OBJECT')[0].text
state = xml.xpath('//STATE')[0].text
lcm_state = xml.xpath('//LCM_STATE')[0].text if obj == 'VM'
obj = xml.xpath('//HOOK_OBJECT')[0].text
state = xml.xpath('//STATE')[0].text
lcm_state = xml.xpath('//LCM_STATE')[0].text if obj == 'VM'
resource_id = xml.xpath('//RESOURCE_ID')[0].text
"STATE #{obj}/#{state}/#{lcm_state}"
["#{obj} #{resource_id}/#{state}/#{lcm_state} ",
"STATE #{obj}/#{state}/#{lcm_state}/#{resource_id} "]
else
''
['']
end
end