コード例 #1
0
 def locks(self):
     img_ns = sd.getNamespace(sc.IMAGE_NAMESPACE, self.sd_id)
     mode = rm.EXCLUSIVE if self._writable else rm.SHARED
     ret = [rm.ResourceManagerLock(sc.STORAGE, self.sd_id, rm.SHARED),
            rm.ResourceManagerLock(img_ns, self.img_id, mode)]
     if self._writable:
         ret.append(volume.VolumeLease(self._host_id, self.sd_id,
                                       self.img_id, self.vol_id))
     return ret
コード例 #2
0
 def test_repr(self):
     mode = rm.SHARED
     lock = rm.ResourceManagerLock('ns', 'name', mode)
     lock_string = str(lock)
     self.assertIn("ResourceManagerLock", lock_string)
     self.assertIn("ns=ns", lock_string)
     self.assertIn("name=name", lock_string)
     self.assertIn("mode=" + mode, lock_string)
     self.assertIn("%x" % id(lock), lock_string)
コード例 #3
0
 def expected_locks(self, src_vol, dst_vol):
     src_img_ns = sd.getNamespace(sc.IMAGE_NAMESPACE, src_vol.sdUUID)
     dst_img_ns = sd.getNamespace(sc.IMAGE_NAMESPACE, dst_vol.sdUUID)
     ret = [
         # Domain lock for each volume
         resourceManager.ResourceManagerLock(sc.STORAGE, src_vol.sdUUID,
                                             resourceManager.SHARED),
         resourceManager.ResourceManagerLock(sc.STORAGE, dst_vol.sdUUID,
                                             resourceManager.SHARED),
         # Image lock for each volume, exclusive for the destination
         resourceManager.ResourceManagerLock(src_img_ns, src_vol.imgUUID,
                                             resourceManager.SHARED),
         resourceManager.ResourceManagerLock(dst_img_ns, dst_vol.imgUUID,
                                             resourceManager.EXCLUSIVE),
         # Volume lease for the destination volume
         volume.VolumeLease(0, dst_vol.sdUUID, dst_vol.imgUUID,
                            dst_vol.volUUID)
     ]
     return ret
コード例 #4
0
 def test_acquire_release(self):
     lock = rm.ResourceManagerLock('ns_A', 'name_A', rm.SHARED)
     expected = []
     lock.acquire()
     expected.append(('acquireResource',
                      (lock.ns, lock.name, lock.mode),
                      {"timeout": None}))
     self.assertEqual(expected, rm._manager.__calls__)
     lock.release()
     expected.append(('releaseResource', (lock.ns, lock.name), {}))
     self.assertEqual(expected, rm._manager.__calls__)
コード例 #5
0
 def test_mode_ignored_for_sorting(self):
     a = rm.ResourceManagerLock('nsA', 'nameA', 'modeA')
     b = rm.ResourceManagerLock('nsA', 'nameA', 'modeB')
     self.assertFalse(a < b)
     self.assertFalse(b < a)
コード例 #6
0
 def test_mode_used_for_equality(self):
     a = rm.ResourceManagerLock('nsA', 'nameA', 'modeA')
     b = rm.ResourceManagerLock('nsA', 'nameA', 'modeB')
     self.assertNotEqual(a, b)
コード例 #7
0
 def test_equality(self):
     a = rm.ResourceManagerLock('ns', 'name', 'mode')
     b = rm.ResourceManagerLock('ns', 'name', 'mode')
     self.assertEqual(a, b)
コード例 #8
0
 def test_less_than(self, a, b):
     b = rm.ResourceManagerLock(*b)
     a = rm.ResourceManagerLock(*a)
     self.assertLess(a, b)
コード例 #9
0
 def test_properties(self):
     a = rm.ResourceManagerLock('ns', 'name', 'mode')
     self.assertEqual('ns', a.ns)
     self.assertEqual('name', a.name)
     self.assertEqual('mode', a.mode)