diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py
index 4f51c78c3ffa3aeda6fe3b780d230e57504ca416..23586ce1f9888cd3ee7023f72e0bb4d0ead7c8f9 100755
--- a/qa/ganeti-qa.py
+++ b/qa/ganeti-qa.py
@@ -363,13 +363,15 @@ def main():
   if qa_config.TestEnabled('tags'):
     RunTest(qa_tags.TestClusterTags)
 
-  if qa_config.TestEnabled('node-readd'):
-    master = qa_config.GetMasterNode()
-    pnode = qa_config.AcquireNode(exclude=master)
-    try:
+  pnode = qa_config.AcquireNode(exclude=qa_config.GetMasterNode())
+  try:
+    if qa_config.TestEnabled('node-readd'):
       RunTest(qa_node.TestNodeReadd, pnode)
-    finally:
-      qa_config.ReleaseNode(pnode)
+
+    if qa_config.TestEnabled("node-modify"):
+      RunTest(qa_node.TestNodeModify, pnode)
+  finally:
+    qa_config.ReleaseNode(pnode)
 
   pnode = qa_config.AcquireNode()
   try:
diff --git a/qa/qa-sample.json b/qa/qa-sample.json
index 6bfd42cab1347a3f3db9042ea5e43d7d03a7c6f2..824cf7865998fd05e46216e3542f0efda3bd4d2d 100644
--- a/qa/qa-sample.json
+++ b/qa/qa-sample.json
@@ -55,6 +55,7 @@
     "node-volumes": true,
     "node-readd": true,
     "node-storage": true,
+    "node-modify": true,
 
     "# This test needs at least three nodes": null,
     "node-evacuate": false,
diff --git a/qa/qa_node.py b/qa/qa_node.py
index 025683c1c2fd574fdb4b270f41455dfe5009a7d6..15550f954fe1921c4539f7b154bcdf04be2d848b 100644
--- a/qa/qa_node.py
+++ b/qa/qa_node.py
@@ -219,3 +219,20 @@ def TestNodeEvacuate(node, node2):
                          utils.ShellQuoteArgs(cmd)).wait(), 0)
   finally:
     qa_config.ReleaseNode(node3)
+
+
+def TestNodeModify(node):
+  """gnt-node modify"""
+  master = qa_config.GetMasterNode()
+
+  for flag in ["master-candidate", "drained", "offline"]:
+    for value in ["yes", "no"]:
+      cmd = ["gnt-node", "modify", "--force",
+             "--%s=%s" % (flag, value), node["primary"]]
+      AssertEqual(StartSSH(master["primary"],
+                           utils.ShellQuoteArgs(cmd)).wait(), 0)
+
+  cmd = ["gnt-node", "modify", "--master-candidate=yes", "--auto-promote",
+         node["primary"]]
+  AssertEqual(StartSSH(master["primary"],
+                       utils.ShellQuoteArgs(cmd)).wait(), 0)