diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py
index 87d5fddf715e3f4488c67b1c93b6f941887af7ee..5b46d98352ccb82fa562988c8b825346439c30f7 100755
--- a/qa/ganeti-qa.py
+++ b/qa/ganeti-qa.py
@@ -290,7 +290,7 @@ def RunCommonInstanceTests(instance):
         RunTestIf("rapi", qa_rapi.TestRapiInstanceRenameAndBack,
                   rename_source, rename_target)
     finally:
-      qa_config.ReleaseInstance(tgt_instance)
+      tgt_instance.Release()
 
   RunTestIf(["instance-grow-disk"], qa_instance.TestInstanceGrowDisk, instance)
 
@@ -375,7 +375,7 @@ def RunExportImportTests(instance, inodes):
           RunTest(qa_instance.TestInstanceStartup, newinst)
           RunTest(qa_instance.TestInstanceRemove, newinst)
         finally:
-          qa_config.ReleaseInstance(newinst)
+          newinst.Release()
     finally:
       qa_config.ReleaseNode(expnode)
 
@@ -389,7 +389,7 @@ def RunExportImportTests(instance, inodes):
       finally:
         qa_config.ReleaseNode(tnode)
     finally:
-      qa_config.ReleaseInstance(newinst)
+      newinst.Release()
 
 
 def RunDaemonTests(instance):
@@ -482,9 +482,9 @@ def RunExclusiveStorageTests():
           qa_instance.TestInstanceRemove(instance2)
           qa_instance.TestInstanceRemove(instance1)
         finally:
-          qa_config.ReleaseInstance(instance2)
+          instance2.Release()
       finally:
-        qa_config.ReleaseInstance(instance1)
+        instance1.Release()
 
     if qa_config.TestEnabled("instance-add-drbd-disk"):
       snode = qa_config.AcquireNode()
@@ -497,7 +497,7 @@ def RunExclusiveStorageTests():
           qa_cluster.AssertClusterVerify(fail=True, errors=exp_err)
           qa_instance.TestInstanceRemove(instance)
         finally:
-          qa_config.ReleaseInstance(instance)
+          instance.Release()
       finally:
         qa_config.ReleaseNode(snode)
     qa_cluster.TestSetExclStorCluster(old_es)
@@ -541,7 +541,7 @@ def RunInstanceTests():
           RunRepairDiskSizes()
           RunTest(qa_instance.TestInstanceRemove, instance)
         finally:
-          qa_config.ReleaseInstance(instance)
+          instance.Release()
 
         del instance
       finally:
@@ -601,7 +601,7 @@ def RunQa():
               RunCommonInstanceTests(rapi_instance)
             RunTest(qa_rapi.TestRapiInstanceRemove, rapi_instance, use_client)
           finally:
-            qa_config.ReleaseInstance(rapi_instance)
+            rapi_instance.Release()
           del rapi_instance
 
   finally:
@@ -635,7 +635,7 @@ def RunQa():
           finally:
             qa_config.ReleaseNode(expnode)
         finally:
-          qa_config.ReleaseInstance(instance)
+          instance.Release()
         del expnode
         del instance
       qa_cluster.AssertClusterVerify()
diff --git a/qa/qa_cluster.py b/qa/qa_cluster.py
index 09434a70d80274d877e79414ef6389d61cbcd53b..729322c1c46880848208d7777b6b4d3ce0e65e3d 100644
--- a/qa/qa_cluster.py
+++ b/qa/qa_cluster.py
@@ -553,7 +553,7 @@ def TestClusterBurnin():
 
   finally:
     for inst in instances:
-      qa_config.ReleaseInstance(inst)
+      inst.Release()
 
 
 def TestClusterMasterFailover():
diff --git a/qa/qa_config.py b/qa/qa_config.py
index 879cff988a74f7ffcfb25c36951b2ab805a1d1e9..4fe6a92bab0d34bf109e8b9d92ce000fc2bad81b 100644
--- a/qa/qa_config.py
+++ b/qa/qa_config.py
@@ -88,6 +88,17 @@ class _QaInstance(object):
     except KeyError:
       return default
 
+  def Release(self):
+    """Releases instance and makes it available again.
+
+    """
+    assert self.used, \
+      ("Instance '%s' was never acquired or released more than once" %
+       self.name)
+
+    self.used = False
+    self.disk_template = None
+
   def GetNicMacAddr(self, idx, default):
     """Returns MAC address for NIC.
 
@@ -422,11 +433,6 @@ def AcquireInstance(_cfg=None):
   return inst
 
 
-def ReleaseInstance(inst):
-  inst.used = False
-  inst.disk_template = None
-
-
 def GetInstanceTemplate(inst):
   """Return the disk template of an instance.
 
diff --git a/qa/qa_instance.py b/qa/qa_instance.py
index 349ef5cbce3dc5a23ad1debfa50523383e1e849e..693ce47df4ed1b282b81eebe1ef999668698bb15 100644
--- a/qa/qa_instance.py
+++ b/qa/qa_instance.py
@@ -80,7 +80,7 @@ def _DiskTest(node, disk_template):
 
     return instance
   except:
-    qa_config.ReleaseInstance(instance)
+    instance.Release()
     raise
 
 
diff --git a/qa/qa_rapi.py b/qa/qa_rapi.py
index c9af6cb52a2e13d33f6cd019bbbc91c159e7a9f2..996c69d188b2d2d3f98828d0540012f86ab2d5a1 100644
--- a/qa/qa_rapi.py
+++ b/qa/qa_rapi.py
@@ -598,7 +598,7 @@ def TestRapiInstanceAdd(node, use_client):
 
     return instance
   except:
-    qa_config.ReleaseInstance(instance)
+    instance.Release()
     raise
 
 
diff --git a/test/py/qa.qa_config_unittest.py b/test/py/qa.qa_config_unittest.py
index 0dcfc267fe5afaf2896e06d058fd08ec8296c4fa..c76cbce489b86fcdcf5a3e461529a0bf73f0a6cd 100755
--- a/test/py/qa.qa_config_unittest.py
+++ b/test/py/qa.qa_config_unittest.py
@@ -285,7 +285,7 @@ class TestQaConfig(unittest.TestCase):
     self.assertTrue(inst.used)
     self.assertTrue(inst.disk_template is None)
 
-    qa_config.ReleaseInstance(inst)
+    inst.Release()
 
     self.assertFalse(inst.used)
     self.assertTrue(inst.disk_template is None)