diff --git a/src/hem/onehem-server.rb b/src/hem/onehem-server.rb index 52cae9a1dd..5d8553593d 100755 --- a/src/hem/onehem-server.rb +++ b/src/hem/onehem-server.rb @@ -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) diff --git a/src/hm/HookManagerDriver.cc b/src/hm/HookManagerDriver.cc index 16ec0ab583..8182bc1faf 100644 --- a/src/hm/HookManagerDriver.cc +++ b/src/hm/HookManagerDriver.cc @@ -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 { diff --git a/src/hm/HookStateHost.cc b/src/hm/HookStateHost.cc index 004ddec02a..a0151b3281 100644 --- a/src/hm/HookStateHost.cc +++ b/src/hm/HookStateHost.cc @@ -40,6 +40,7 @@ string * HookStateHost::format_message(Host * host) << "HOST" << "" << Host::state_to_str(state, host->get_state()) << "" << "" << host->get_name() << "" + << "" << host->get_oid() << "" << host->to_xml(host_xml) << ""; diff --git a/src/hm/HookStateVM.cc b/src/hm/HookStateVM.cc index 8a4fdc60a8..1a8ba91b70 100644 --- a/src/hm/HookStateVM.cc +++ b/src/hm/HookStateVM.cc @@ -36,7 +36,8 @@ string * HookStateVM::format_message(VirtualMachine * vm) << "STATE" << "VM" << "" << VirtualMachine::vm_state_to_str(state, vm->get_state()) << "" - << "" << VirtualMachine::lcm_state_to_str(lcm_state, vm->get_lcm_state()) << ""; + << "" << VirtualMachine::lcm_state_to_str(lcm_state, vm->get_lcm_state()) << "" + << "" << vm->get_oid() << ""; if ( vm->hasHistory() ) { diff --git a/src/hm_mad/one_hm.rb b/src/hm_mad/one_hm.rb index c65c043ca9..096b3ad5fb 100755 --- a/src/hm_mad/one_hm.rb +++ b/src/hm_mad/one_hm.rb @@ -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