diff --git a/lib/locking.py b/lib/locking.py index 733fa84514ed3958536a8886d9db9ba01305b928..2144735c73069198795273fb54a978093ea14442 100644 --- a/lib/locking.py +++ b/lib/locking.py @@ -670,12 +670,12 @@ class LockSet: # If you need more than one node, or more than one instance, acquire them at # the same time. LEVEL_CLUSTER = 0 -LEVEL_NODE = 1 -LEVEL_INSTANCE = 2 +LEVEL_INSTANCE = 1 +LEVEL_NODE = 2 LEVELS = [LEVEL_CLUSTER, - LEVEL_NODE, - LEVEL_INSTANCE] + LEVEL_INSTANCE, + LEVEL_NODE] # Lock levels which are modifiable LEVELS_MOD = [LEVEL_NODE, LEVEL_INSTANCE] diff --git a/lib/mcpu.py b/lib/mcpu.py index f9e1d84bfeae79967af7552e1b6d6d1fa126bbfa..d78adb46d435c482aa21feb22c46d2feb258f286 100644 --- a/lib/mcpu.py +++ b/lib/mcpu.py @@ -176,7 +176,7 @@ class Processor(object): lu = lu_class(self, op, self.context, sstore) lu.ExpandNames() assert lu.needed_locks is not None, "needed_locks not set by LU" - result = self._LockAndExecLU(lu, locking.LEVEL_NODE) + result = self._LockAndExecLU(lu, locking.LEVEL_INSTANCE) finally: self.context.glm.release(locking.LEVEL_CLUSTER) self.exclusive_BGL = False diff --git a/test/ganeti.locking_unittest.py b/test/ganeti.locking_unittest.py index 195b27fb325718ff107932c2a69a836766cef61e..9da130300d17ed8f6a3c3a6963b4ed9e951e7e74 100755 --- a/test/ganeti.locking_unittest.py +++ b/test/ganeti.locking_unittest.py @@ -621,14 +621,14 @@ class TestGanetiLockManager(unittest.TestCase): def testAcquireRelease(self): self.GL.acquire(locking.LEVEL_CLUSTER, ['BGL'], shared=1) self.assertEquals(self.GL._list_owned(locking.LEVEL_CLUSTER), set(['BGL'])) + self.GL.acquire(locking.LEVEL_INSTANCE, ['i1']) self.GL.acquire(locking.LEVEL_NODE, ['n1', 'n2'], shared=1) - self.GL.release(locking.LEVEL_NODE) - self.GL.acquire(locking.LEVEL_NODE, ['n1']) + self.GL.release(locking.LEVEL_NODE, ['n2']) self.assertEquals(self.GL._list_owned(locking.LEVEL_NODE), set(['n1'])) - self.GL.acquire(locking.LEVEL_INSTANCE, ['i1', 'i2']) - self.GL.release(locking.LEVEL_INSTANCE, ['i2']) self.assertEquals(self.GL._list_owned(locking.LEVEL_INSTANCE), set(['i1'])) self.GL.release(locking.LEVEL_NODE) + self.assertEquals(self.GL._list_owned(locking.LEVEL_NODE), set()) + self.assertEquals(self.GL._list_owned(locking.LEVEL_INSTANCE), set(['i1'])) self.GL.release(locking.LEVEL_INSTANCE) self.assertRaises(errors.LockError, self.GL.acquire, locking.LEVEL_INSTANCE, ['i5']) @@ -656,7 +656,7 @@ class TestGanetiLockManager(unittest.TestCase): def testWrongOrder(self): self.GL.acquire(locking.LEVEL_CLUSTER, ['BGL'], shared=1) - self.GL.acquire(locking.LEVEL_INSTANCE, ['i3']) + self.GL.acquire(locking.LEVEL_NODE, ['n2']) self.assertRaises(AssertionError, self.GL.acquire, locking.LEVEL_NODE, ['n1']) self.assertRaises(AssertionError, self.GL.acquire, @@ -678,7 +678,6 @@ class TestGanetiLockManager(unittest.TestCase): self.GL.acquire(locking.LEVEL_CLUSTER, ['BGL'], shared=1) Thread(target=self._doLock, args=(locking.LEVEL_INSTANCE, 'i1', 1)).start() self.assertEqual(self.done.get(True, 1), 'DONE') - self.GL.acquire(locking.LEVEL_NODE, ['n1']) self.GL.acquire(locking.LEVEL_INSTANCE, ['i3']) Thread(target=self._doLock, args=(locking.LEVEL_INSTANCE, 'i1', 1)).start() self.assertEqual(self.done.get(True, 1), 'DONE')