diff --git a/daemons/ganeti-masterd b/daemons/ganeti-masterd
index a1dc48d7adf6264a0e8fcb63286127191fc7427c..30d4861bb9e340d69e51c87edef5047c3c03dbcf 100755
--- a/daemons/ganeti-masterd
+++ b/daemons/ganeti-masterd
@@ -240,6 +240,11 @@ class ClientOps:
       op = opcodes.OpQueryExports(nodes=nodes)
       return self._Query(op)
 
+    elif method == luxi.REQ_QUERY_CONFIG_VALUES:
+      fields = args
+      op = opcodes.OpQueryConfigValues(output_fields=fields)
+      return self._Query(op)
+
     else:
       raise ValueError("Invalid operation")
 
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 4822f54251b95f9b7c92c904977b71f4a3983502..f9b09b9800f3cf570d2b0dc79e8c99b4ce251a52 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -1859,8 +1859,8 @@ class LUQueryClusterInfo(NoHooksLU):
     return result
 
 
-class LUDumpClusterConfig(NoHooksLU):
-  """Return a text-representation of the cluster-config.
+class LUQueryConfigValues(NoHooksLU):
+  """Return configuration values.
 
   """
   _OP_REQP = []
@@ -1869,6 +1869,11 @@ class LUDumpClusterConfig(NoHooksLU):
   def ExpandNames(self):
     self.needed_locks = {}
 
+    static_fields = ["cluster_name", "master_node"]
+    _CheckOutputFields(static=static_fields,
+                       dynamic=[],
+                       selected=self.op.output_fields)
+
   def CheckPrereq(self):
     """No prerequisites.
 
@@ -1879,7 +1884,15 @@ class LUDumpClusterConfig(NoHooksLU):
     """Dump a representation of the cluster config to the standard output.
 
     """
-    return self.cfg.DumpConfig()
+    values = []
+    for field in self.op.output_fields:
+      if field == "cluster_name":
+        values.append(self.cfg.GetClusterName())
+      elif field == "master_node":
+        values.append(self.cfg.GetMasterNode())
+      else:
+        raise errors.ParameterError(field)
+    return values
 
 
 class LUActivateInstanceDisks(NoHooksLU):
@@ -4271,6 +4284,7 @@ class LUQueryInstanceData(NoHooksLU):
   """
   _OP_REQP = ["instances"]
   REQ_BGL = False
+
   def ExpandNames(self):
     self.needed_locks = {}
     self.share_locks = dict(((i, 1) for i in locking.LEVELS))
diff --git a/lib/config.py b/lib/config.py
index 4031373630231a0193c4f34c8b4a5a8c10f640a2..00e307abb778b21a71ba4cf62959d00db9f46717 100644
--- a/lib/config.py
+++ b/lib/config.py
@@ -814,13 +814,6 @@ class ConfigWriter:
                     for node in self._UnlockedGetNodeList()])
     return my_dict
 
-  @locking.ssynchronized(_config_lock, shared=1)
-  def DumpConfig(self):
-    """Return the entire configuration of the cluster.
-    """
-    self._OpenConfig()
-    return self._config_data
-
   def _BumpSerialNo(self):
     """Bump up the serial number of the config.
 
diff --git a/lib/luxi.py b/lib/luxi.py
index f04aee76d2fad280717e26bf175938c36cfc9873..a0e2c165323ba777c4954e8eaec97de0c7e004d1 100644
--- a/lib/luxi.py
+++ b/lib/luxi.py
@@ -51,6 +51,7 @@ REQ_QUERY_JOBS = "QueryJobs"
 REQ_QUERY_INSTANCES = "QueryInstances"
 REQ_QUERY_NODES = "QueryNodes"
 REQ_QUERY_EXPORTS = "QueryExports"
+REQ_QUERY_CONFIG_VALUES = "QueryConfigValues"
 
 DEF_CTMO = 10
 DEF_RWTO = 60
@@ -311,4 +312,7 @@ class Client(object):
   def QueryExports(self, nodes):
     return self.CallMethod(REQ_QUERY_EXPORTS, nodes)
 
+  def QueryConfigValues(self, fields):
+    return self.CallMethod(REQ_QUERY_CONFIG_VALUES, fields)
+
 # TODO: class Server(object)
diff --git a/lib/mcpu.py b/lib/mcpu.py
index 7bb4866a37d9387b76679fe5b18693c960bbc756..ff5b856ac2e2bf146fb36fc7dbf305c8b1c22db9 100644
--- a/lib/mcpu.py
+++ b/lib/mcpu.py
@@ -46,7 +46,7 @@ class Processor(object):
     opcodes.OpDestroyCluster: cmdlib.LUDestroyCluster,
     opcodes.OpQueryClusterInfo: cmdlib.LUQueryClusterInfo,
     opcodes.OpVerifyCluster: cmdlib.LUVerifyCluster,
-    opcodes.OpDumpClusterConfig: cmdlib.LUDumpClusterConfig,
+    opcodes.OpQueryConfigValues: cmdlib.LUQueryConfigValues,
     opcodes.OpRenameCluster: cmdlib.LURenameCluster,
     opcodes.OpVerifyDisks: cmdlib.LUVerifyDisks,
     opcodes.OpSetClusterParams: cmdlib.LUSetClusterParams,
diff --git a/lib/opcodes.py b/lib/opcodes.py
index fda1f6d8ede43f98f75ad28effaf49bc36528685..b0ee9f9afd85689f4b0c383f3797dee817b18478 100644
--- a/lib/opcodes.py
+++ b/lib/opcodes.py
@@ -227,10 +227,10 @@ class OpVerifyDisks(OpCode):
   __slots__ = []
 
 
-class OpDumpClusterConfig(OpCode):
-  """Dump the cluster configuration."""
-  OP_ID = "OP_CLUSTER_DUMPCONFIG"
-  __slots__ = []
+class OpQueryConfigValues(OpCode):
+  """Query cluster configuration values."""
+  OP_ID = "OP_CLUSTER_CONFIG_QUERY"
+  __slots__ = ["output_fields"]
 
 
 class OpRenameCluster(OpCode):