diff --git a/src/flow/lib/ServiceWatchDog.rb b/src/flow/lib/ServiceWatchDog.rb index 1debbb71ea..b5008c89d0 100644 --- a/src/flow/lib/ServiceWatchDog.rb +++ b/src/flow/lib/ServiceWatchDog.rb @@ -205,8 +205,16 @@ class ServiceWD @services << Integer(service.id) end - service.roles.each do |name, role| - role.nodes_ids.each do |node| + roles = service.roles + + next unless roles + + roles.each do |name, role| + nodes_ids = role.nodes_ids + + next unless nodes_ids + + nodes_ids.each do |node| check_role_state(client, service.id, name, node) end end diff --git a/src/flow/lib/models/role.rb b/src/flow/lib/models/role.rb index 4ecc17b82b..ab623dbb2b 100644 --- a/src/flow/lib/models/role.rb +++ b/src/flow/lib/models/role.rb @@ -149,6 +149,8 @@ module OpenNebula end parents.each do |parent| + next unless @service.roles[parent] + return false if @service.roles[parent].state != STATE['RUNNING'] end