diff --git a/src/mad/ruby/VirtualMachineDriver.rb b/src/mad/ruby/VirtualMachineDriver.rb index a64b4d4ca6..ca12065426 100644 --- a/src/mad/ruby/VirtualMachineDriver.rb +++ b/src/mad/ruby/VirtualMachineDriver.rb @@ -218,7 +218,7 @@ private def delete_running_action(action_id) action=@action_running[action_id] if action - @hosts.delete(action[:args][HOST_ARG]) + @hosts.delete(action[:host]) @action_running.delete(action_id) end end @@ -226,14 +226,28 @@ private def get_first_runable action_index=nil @action_queue.each_with_index do |action, index| - if action[:args][HOST_ARG] - if !@hosts.include?(action[:args][HOST_ARG]) + if !action.keys.include?(:host) + if action[:args].length == 2 + begin + xml=decode(action[:args].last) + host=xml.elements['HOST'] + action[:host]=host.text if host + rescue + action[:host]=nil + end + else + action[:host]=nil + end + end + + if action.keys.include?(:host) && action[:host] + if !@hosts.include?(action[:host]) action_index=index break end else - action_index=index - break + action_index=index + break end end @@ -250,7 +264,7 @@ private end if action - @hosts << action[:args][HOST_ARG] if action[:args][HOST_ARG] + @hosts << action[:host] if action[:host] @action_queue.delete_at(action_index) end