From 96c40d94c9869a8bb00b97b25afed2f01b380592 Mon Sep 17 00:00:00 2001 From: Alejandro Huertas Herrero Date: Thu, 17 Feb 2022 16:12:44 +0100 Subject: [PATCH] B #5532: fix service keeps in WARNING state (#1782) (cherry picked from commit c0d32b71950918dd03499ba18b78fa3df18be83d) --- src/flow/lib/LifeCycleManager.rb | 13 +++++++++++++ src/flow/lib/ServiceWatchDog.rb | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/flow/lib/LifeCycleManager.rb b/src/flow/lib/LifeCycleManager.rb index 17b9b9d876..0e83a0ffb7 100644 --- a/src/flow/lib/LifeCycleManager.rb +++ b/src/flow/lib/LifeCycleManager.rb @@ -960,7 +960,11 @@ class ServiceLCM end def running_wd_cb(client, service_id, role_name, _node) + undeploy = false + rc = @srv_pool.get(service_id, client) do |service| + role = service.roles[role_name] + if service.roles[role_name].state != Role::STATE['RUNNING'] service.roles[role_name].set_state(Role::STATE['RUNNING']) end @@ -970,10 +974,19 @@ class ServiceLCM service.set_state(Service::STATE['RUNNING']) end + # If the role has 0 nodes, delete role + undeploy = service.check_role(role) + service.update end Log.error 'WD', rc.message if OpenNebula.is_error?(rc) + + return unless undeploy + + Log.info LOG_COMP, "Automatically deleting service #{service_id}" + + undeploy_action(client, service_id) end ############################################################################ diff --git a/src/flow/lib/ServiceWatchDog.rb b/src/flow/lib/ServiceWatchDog.rb index bca7f3bf1f..5eb9e9ce93 100644 --- a/src/flow/lib/ServiceWatchDog.rb +++ b/src/flow/lib/ServiceWatchDog.rb @@ -214,6 +214,16 @@ class ServiceWD next unless nodes_ids + if nodes_ids.empty? + # If there are no VM, the role should be running + @lcm.trigger_action(:running_wd_cb, + service.id, + client, + service.id, + name, + []) + end + nodes_ids.each do |node| check_role_state(client, service.id, name, node) end