From ca342087b8437ea53d647cb39559b66e4854763d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Membr=C3=A9?= Date: Tue, 2 Apr 2013 14:44:17 +0200 Subject: [PATCH] Fixes #3382 : Handle Missing machine inventory in NodeInfoService --- .../rudder/services/nodes/NodeInfoService.scala | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/rudder-core/src/main/scala/com/normation/rudder/services/nodes/NodeInfoService.scala b/rudder-core/src/main/scala/com/normation/rudder/services/nodes/NodeInfoService.scala index 5bd6800732..b3b9b5ceff 100644 --- a/rudder-core/src/main/scala/com/normation/rudder/services/nodes/NodeInfoService.scala +++ b/rudder-core/src/main/scala/com/normation/rudder/services/nodes/NodeInfoService.scala @@ -110,9 +110,17 @@ class NodeInfoServiceImpl( node <- con.get(nodeDit.NODES.NODE.dn(nodeId.value), nodeInfoAttributes:_*) ?~! "Node with ID '%s' was not found".format(nodeId.value) nodeInfo <- for { server <- con.get(inventoryDit.NODES.NODE.dn(nodeId.value), nodeInfoAttributes:_*) ?~! "Node info with ID '%s' was not found".format(nodeId.value) - machineId <- inventoryDit.MACHINES.MACHINE.idFromDN(new DN(server(A_CONTAINER_DN).get)) - machine <- con.get(inventoryDit.MACHINES.MACHINE.dn(machineId),Seq("*"):_*) - nodeInfo <- ldapMapper.convertEntriesToNodeInfos(node, server,Some(machine)) + machine <- server(A_CONTAINER_DN) match { + case Some(container) => inventoryDit.MACHINES.MACHINE.idFromDN(new DN(container)) match { + case Full(machineId) => Full(con.get(inventoryDit.MACHINES.MACHINE.dn(machineId),Seq("*"):_*).toOption) + case eb:EmptyBox => val msg = s"could not get machine from container ${container} : ${eb}" + logger.error(msg) + Failure(msg) + } + case None => logger.debug(s"no machine Inventory for ${server}") + Full(None) + } + nodeInfo <- ldapMapper.convertEntriesToNodeInfos(node, server,machine) } yield { nodeInfo }