diff --git a/lib/config.py b/lib/config.py
index adf57f3c39aba707fd28c1435fa5854b9e214510..510ddd418ff4ed56c7c26a09cc6adc2f33243858 100644
--- a/lib/config.py
+++ b/lib/config.py
@@ -538,6 +538,19 @@ class ConfigWriter:
     """
     return self._UnlockedGetNodeList()
 
+  @locking.ssynchronized(_config_lock, shared=1)
+  def GetAllNodesInfo(self):
+    """Get the configuration of all nodes.
+
+    @rtype: dict
+    @returns: dict of (node, node_info), where node_info is what
+              would GetNodeInfo return for the node
+
+    """
+    my_dict = dict([(node, self._UnlockedGetNodeInfo(node))
+                    for node in self._UnlockedGetNodeList()])
+    return my_dict
+
   @locking.ssynchronized(_config_lock, shared=1)
   def DumpConfig(self):
     """Return the entire configuration of the cluster.