From: Iustin Pop <ius...@google.com>

This follows the getInstance changes, with the same rationale.

Signed-off-by: Iustin Pop <ius...@google.com>
---
 src/Ganeti/Config.hs | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/Ganeti/Config.hs b/src/Ganeti/Config.hs
index 0d935c4..db849d7 100644
--- a/src/Ganeti/Config.hs
+++ b/src/Ganeti/Config.hs
@@ -264,16 +264,26 @@ getItem' kind name allitems =
                     ECodeNoEnt
   in maybe err Ok $ M.lookup name' allitems
 
+-- | Looks up a node by uuid.
+getNodeByUuid :: ConfigData -> String -> ErrorResult Node
+getNodeByUuid cfg uuid =
+  let nodes = fromContainer (configNodes cfg)
+  in getItem' "Node" uuid nodes
+
+-- | Looks up a node by name matching.
+getNodeByPartialName :: ConfigData -> String -> ErrorResult Node
+getNodeByPartialName cfg name =
+  let nodes = fromContainer (configNodes cfg)
+      by_name = M.mapKeys (nodeName . (M.!) nodes) nodes
+  in getItem "Node" name by_name
+
 -- | Looks up a node by name or uuid.
 getNode :: ConfigData -> String -> ErrorResult Node
 getNode cfg name =
-  let nodes = fromContainer (configNodes cfg)
-  in case getItem' "Node" name nodes of
-       -- if not found by uuid, we need to look it up by name
-       Ok node -> Ok node
-       Bad _ -> let by_name = M.mapKeys
-                              (nodeName . (M.!) nodes) nodes
-                in getItem "Node" name by_name
+  case getNodeByUuid cfg name of
+    -- if not found by uuid, we need to look it up by name
+    x@(Ok _) -> x
+    Bad _ -> getNodeByPartialName cfg name
 
 -- | Looks up an instance by uuid.
 getInstanceByUuid :: ConfigData -> String -> ErrorResult Instance
-- 
2.8.1

Reply via email to