diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index e75ba33aabfd225f6d37b90fbc8bf5e82bd016ff..a23594fb8b6617e8b846bc662299a7336453a671 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -1774,6 +1774,7 @@ class LUQueryNodes(NoHooksLU):
     "master_candidate",
     "master",
     "offline",
+    "drained",
     )
 
   def ExpandNames(self):
@@ -1898,6 +1899,8 @@ class LUQueryNodes(NoHooksLU):
           val = node.name == master_node
         elif field == "offline":
           val = node.offline
+        elif field == "drained":
+          val = node.drained
         elif self._FIELDS_DYNAMIC.Matches(field):
           val = live_data[node.name].get(field, None)
         else:
@@ -6465,6 +6468,7 @@ class IAllocator(object):
         "primary_ip": ninfo.primary_ip,
         "secondary_ip": ninfo.secondary_ip,
         "offline": ninfo.offline,
+        "drained": ninfo.drained,
         "master_candidate": ninfo.master_candidate,
         }
 
diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index d2e40514ff91223e7146ed11bf4000702033f756..03f2d7a924d5793953e49fb6bb0b9880f9ae9ecd 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -39,7 +39,7 @@ I_FIELDS = ["name", "admin_state", "os",
             "oper_state", "oper_ram", "status",
             "tags"]
 
-N_FIELDS = ["name", "offline", "master_candidate",
+N_FIELDS = ["name", "offline", "master_candidate", "drained",
             "dtotal", "dfree",
             "mtotal", "mnode", "mfree",
             "pinst_cnt", "sinst_cnt", "tags",
diff --git a/scripts/gnt-node b/scripts/gnt-node
index b6552abf3ee28db654cee1ca3f0dd79b9cf4f21e..75bc419c9425e9c1fd7d85b2813c337f84cfb693 100755
--- a/scripts/gnt-node
+++ b/scripts/gnt-node
@@ -55,7 +55,7 @@ _LIST_HEADERS = {
   "serial_no": "SerialNo",
   "master_candidate": "MasterC",
   "master": "IsMaster",
-  "offline": "Offline",
+  "offline": "Offline", "drained": "Drained",
   }
 
 
@@ -140,7 +140,7 @@ def ListNodes(opts, args):
       val = row[idx]
       if field in list_type_fields:
         val = ",".join(val)
-      elif field in ('master', 'master_candidate', 'offline'):
+      elif field in ('master', 'master_candidate', 'offline', 'drained'):
         if val:
           val = 'Y'
         else:
@@ -323,13 +323,18 @@ def ShowNodeConfig(opts, args):
   """
   cl = GetClient()
   result = cl.QueryNodes(fields=["name", "pip", "sip",
-                                 "pinst_list", "sinst_list"],
+                                 "pinst_list", "sinst_list",
+                                 "master_candidate", "drained", "offline"],
                          names=args, use_locking=True)
 
-  for name, primary_ip, secondary_ip, pinst, sinst in result:
+  for (name, primary_ip, secondary_ip, pinst, sinst,
+       is_mc, drained, offline) in result:
     ToStdout("Node name: %s", name)
     ToStdout("  primary ip: %s", primary_ip)
     ToStdout("  secondary ip: %s", secondary_ip)
+    ToStdout("  master candidate: %s", is_mc)
+    ToStdout("  drained: %s", drained)
+    ToStdout("  offline: %s", offline)
     if pinst:
       ToStdout("  primary for instances:")
       for iname in pinst: