diff --git a/lib/config.py b/lib/config.py
index c72ca6227e50c9fd3a722363348b5cc6d1c78ecc..669dadafbe440cc179c8c5e8b6d6dfae0bc02a2b 100644
--- a/lib/config.py
+++ b/lib/config.py
@@ -88,8 +88,8 @@ class TemporaryReservationManager:
 
   def Reserve(self, ec_id, resource):
     if self.Reserved(resource):
-      raise errors.ReservationError("Duplicate reservation for resource: %s." %
-                                    (resource))
+      raise errors.ReservationError("Duplicate reservation for resource '%s'"
+                                    % str(resource))
     if ec_id not in self._ec_reserved:
       self._ec_reserved[ec_id] = set([resource])
     else:
diff --git a/test/ganeti.config_unittest.py b/test/ganeti.config_unittest.py
index 984bfff629eb24530f91d7a4c3b359c348be1b48..51284a7827412628e15b7d1cc69b80425a850e28 100755
--- a/test/ganeti.config_unittest.py
+++ b/test/ganeti.config_unittest.py
@@ -37,6 +37,8 @@ from ganeti import objects
 from ganeti import utils
 from ganeti import netutils
 
+from ganeti.config import TemporaryReservationManager
+
 import testutils
 import mocks
 
@@ -186,5 +188,23 @@ class TestConfigRunner(unittest.TestCase):
                       CheckSyntax, {mode: m_bridged, link: ''})
 
 
+class TestTRM(unittest.TestCase):
+  EC_ID = 1
+
+  def testEmpty(self):
+    t = TemporaryReservationManager()
+    t.Reserve(self.EC_ID, "a")
+    self.assertFalse(t.Reserved(self.EC_ID))
+    self.assertTrue(t.Reserved("a"))
+    self.assertEqual(len(t.GetReserved()), 1)
+
+  def testDuplicate(self):
+    t = TemporaryReservationManager()
+    t.Reserve(self.EC_ID, "a")
+    self.assertRaises(errors.ReservationError, t.Reserve, 2, "a")
+    t.DropECReservations(self.EC_ID)
+    self.assertFalse(t.Reserved("a"))
+
+
 if __name__ == '__main__':
   testutils.GanetiTestProgram()