diff --git a/lib/rapi/client.py b/lib/rapi/client.py
index 483f7289a48ce5da00c8e522b740e53e0fce24ae..94000967aef2b4ec01055fb276ece2f4eaa7073f 100644
--- a/lib/rapi/client.py
+++ b/lib/rapi/client.py
@@ -1068,13 +1068,14 @@ class GanetiRapiClient(object):
                              ("/%s/nodes/%s/evacuate" %
                               (GANETI_RAPI_VERSION, node)), query, None)
 
-  def MigrateNode(self, node, live=True, dry_run=False):
+  def MigrateNode(self, node, mode=None, dry_run=False):
     """Migrates all primary instances from a node.
 
     @type node: str
     @param node: node to migrate
-    @type live: bool
-    @param live: whether to use live migration
+    @type mode: string
+    @param mode: if passed, it will overwrite the live migration type,
+        otherwise the hypervisor default will be used
     @type dry_run: bool
     @param dry_run: whether to perform a dry run
 
@@ -1083,8 +1084,8 @@ class GanetiRapiClient(object):
 
     """
     query = []
-    if live:
-      query.append(("live", 1))
+    if mode is not None:
+      query.append(("mode", mode))
     if dry_run:
       query.append(("dry-run", 1))
 
diff --git a/test/ganeti.rapi.client_unittest.py b/test/ganeti.rapi.client_unittest.py
index de0474c35a5472081df7b57612ef91f8324c6496..6069bcf993aba57dfdf372d3852dc757441d61bc 100755
--- a/test/ganeti.rapi.client_unittest.py
+++ b/test/ganeti.rapi.client_unittest.py
@@ -775,7 +775,15 @@ class GanetiRapiClientTests(testutils.GanetiTestCase):
     self.assertEqual(1111, self.client.MigrateNode("node-a", dry_run=True))
     self.assertHandler(rlib2.R_2_nodes_name_migrate)
     self.assertItems(["node-a"])
-    self.assertQuery("live", ["1"])
+    self.assert_("mode" not in self.rapi.GetLastHandler().queryargs)
+    self.assertDryRun()
+
+    self.rapi.AddResponse("1112")
+    self.assertEqual(1112, self.client.MigrateNode("node-a", dry_run=True,
+                                                   mode="live"))
+    self.assertHandler(rlib2.R_2_nodes_name_migrate)
+    self.assertItems(["node-a"])
+    self.assertQuery("mode", ["live"])
     self.assertDryRun()
 
   def testGetNodeRole(self):