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()