diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded
index 59b3c3400cd7452e7e26381ae5c677c9c60228df..3de30d3683cdf2ad13ee4544089f15b3af15a999 100755
--- a/daemons/ganeti-noded
+++ b/daemons/ganeti-noded
@@ -472,6 +472,12 @@ class NodeDaemonRequestHandler(http.HTTPRequestHandler):
     """
     return backend.UploadFile(*params)
 
+  @staticmethod
+  def perspective_master_info(params):
+    """Query master information.
+
+    """
+    return backend.GetMasterInfo()
 
   # os -----------------------
 
@@ -526,6 +532,8 @@ class NodeDaemonRequestHandler(http.HTTPRequestHandler):
     duration = params[0]
     return utils.TestDelay(duration)
 
+  # file storage ---------------
+
   @staticmethod
   def perspective_file_storage_dir_create(params):
     """Create the file storage directory.
@@ -552,6 +560,8 @@ class NodeDaemonRequestHandler(http.HTTPRequestHandler):
     return backend.RenameFileStorageDir(old_file_storage_dir,
                                         new_file_storage_dir)
 
+  # jobs ------------------------
+
   @staticmethod
   @_RequireJobQueueLock
   def perspective_jobqueue_update(params):
diff --git a/lib/rpc.py b/lib/rpc.py
index 9fd542ccb6e43890b6a8b31839e358f9d8a92ac8..f3e85e889f1ef9987b65d93e46b44e756c693e95 100644
--- a/lib/rpc.py
+++ b/lib/rpc.py
@@ -384,6 +384,18 @@ def call_node_stop_master(node, stop_daemons):
   return c.getresult().get(node, False)
 
 
+def call_master_info(node_list):
+  """Query master info.
+
+  This is a multi-node call.
+
+  """
+  c = Client("master_info", [])
+  c.connect_list(node_list)
+  c.run()
+  return c.getresult()
+
+
 def call_version(node_list):
   """Query node version.