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