From cd779b3a4cbc3c769848c78a525082e9af4c0547 Mon Sep 17 00:00:00 2001 From: fanf Date: Fri, 12 Apr 2013 12:03:37 +0200 Subject: [PATCH] Fixes #3433: allows to continue deployment on target node var lookup error --- .../ParameterizedValueLookupService.scala | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/rudder-core/src/main/scala/com/normation/rudder/services/policies/ParameterizedValueLookupService.scala b/rudder-core/src/main/scala/com/normation/rudder/services/policies/ParameterizedValueLookupService.scala index 63a1ba1d09..9f4c8e8a2c 100644 --- a/rudder-core/src/main/scala/com/normation/rudder/services/policies/ParameterizedValueLookupService.scala +++ b/rudder-core/src/main/scala/com/normation/rudder/services/policies/ParameterizedValueLookupService.scala @@ -338,9 +338,22 @@ trait ParameterizedValueLookupService_lookupRuleParameterization extends Paramet } nodeIds <- sequence(targets.toSeq){target => directiveTargetService.getNodeIds(target)} cf1 = logger.trace("Fetched nodes ids : %s".format(nodeIds)) - nodeInfos <- sequence(nodeIds.flatten.distinct) { nodeId => - nodeInfoService.getNodeInfo(nodeId) - } + + //here, we don't want to fail on missing node. + //that will be handle in cardinality check + nodeInfos = ( (nodeIds.flatten.distinct).flatMap { nodeId => + val info = nodeInfoService.getNodeInfo(nodeId) + info match { + case eb:EmptyBox => //log + val e = eb ?~! "Can not lookup accessor %s on node %s".format(targetAccessorName, nodeId.value) + logger.warn(e) + e.rootExceptionCause.foreach { ex => + logger.warn("Root exception was: ", ex) + } + case _ => //nothing + } + info + } ) cf2 = logger.trace("Fetched nodes infos : %s".format(nodeInfos)) cardinalityOk <- { if(!sourceVariableSpec.multivalued && nodeInfos.size != 1)