mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
parent
6e0438526d
commit
36ad5e2823
@ -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)
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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>";
|
||||
|
||||
|
@ -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() )
|
||||
{
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user