Ejemplo n.º 1
0
 def expected_locks(self, subchain):
     img_ns = rm.getNamespace(sc.IMAGE_NAMESPACE, subchain.sd_id)
     return [
         rm.ResourceManagerLock(sc.STORAGE, subchain.sd_id, rm.SHARED),
         rm.ResourceManagerLock(img_ns, subchain.img_id, rm.EXCLUSIVE),
         volume.VolumeLease(subchain.host_id, subchain.sd_id,
                            subchain.img_id, subchain.base_id)
     ]
Ejemplo n.º 2
0
 def test_repr(self):
     lock = volume.VolumeLease(HOST_ID, 'dom', 'img', 'vol')
     lock_string = str(lock)
     self.assertIn("VolumeLease", lock_string)
     self.assertIn("ns=04_lease_dom", lock_string)
     self.assertIn("name=vol", lock_string)
     self.assertIn("mode=exclusive", lock_string)
     self.assertIn("%x" % id(lock), lock_string)
Ejemplo n.º 3
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
Ejemplo n.º 4
0
 def expected_locks(self, base_vol):
     img_ns = rm.getNamespace(sc.IMAGE_NAMESPACE, base_vol.sdUUID)
     ret = [
         # Domain lock
         rm.ResourceManagerLock(sc.STORAGE, base_vol.sdUUID, rm.SHARED),
         # Image lock
         rm.ResourceManagerLock(img_ns, base_vol.imgUUID, rm.EXCLUSIVE),
         # Volume lease
         volume.VolumeLease(0, base_vol.sdUUID, base_vol.imgUUID,
                            base_vol.volUUID)
     ]
     return ret
Ejemplo n.º 5
0
 def test_acquire_release(self):
     sdcache = FakeStorageDomainCache()
     manifest = FakeSDManifest()
     sdcache.domains['dom'] = FakeSD(manifest)
     expected = [('acquireVolumeLease', (HOST_ID, 'img', 'vol'), {}),
                 ('releaseVolumeLease', ('img', 'vol'), {})]
     with MonkeyPatchScope([(volume, 'sdCache', sdcache)]):
         lock = volume.VolumeLease(HOST_ID, 'dom', 'img', 'vol')
         lock.acquire()
         self.assertEqual(expected[:1], manifest.__calls__)
         lock.release()
         self.assertEqual(expected, manifest.__calls__)
Ejemplo n.º 6
0
 def locks(self):
     img_ns = rm.getNamespace(sc.IMAGE_NAMESPACE, self.sd_id)
     ret = [
         rm.ResourceManagerLock(sc.STORAGE, self.sd_id, rm.SHARED),
         rm.ResourceManagerLock(img_ns, self.img_id, rm.EXCLUSIVE)
     ]
     dom = sdCache.produce_manifest(self.sd_id)
     if dom.hasVolumeLeases():
         ret.append(
             volume.VolumeLease(self._host_id, self.sd_id, self.img_id,
                                self.vol_id))
     return ret
Ejemplo n.º 7
0
 def expected_locks(self, src_vol, dst_vol):
     src_img_ns = rm.getNamespace(sc.IMAGE_NAMESPACE, src_vol.sdUUID)
     dst_img_ns = rm.getNamespace(sc.IMAGE_NAMESPACE, dst_vol.sdUUID)
     ret = [
         # Domain lock for each volume
         rm.ResourceManagerLock(sc.STORAGE, src_vol.sdUUID, rm.SHARED),
         rm.ResourceManagerLock(sc.STORAGE, dst_vol.sdUUID, rm.SHARED),
         # Image lock for each volume, exclusive for the destination
         rm.ResourceManagerLock(src_img_ns, src_vol.imgUUID, rm.SHARED),
         rm.ResourceManagerLock(dst_img_ns, dst_vol.imgUUID, rm.EXCLUSIVE),
         # Volume lease for the destination volume
         volume.VolumeLease(0, dst_vol.sdUUID, dst_vol.imgUUID,
                            dst_vol.volUUID)
     ]
     return ret
Ejemplo n.º 8
0
 def test_equality_different_host_id(self):
     a = volume.VolumeLease(0, 'dom', 'img', 'vol')
     b = volume.VolumeLease(1, 'dom', 'img', 'vol')
     self.assertEqual(a, b)
Ejemplo n.º 9
0
 def test_equality_different_image(self):
     a = volume.VolumeLease(HOST_ID, 'dom', 'img1', 'vol')
     b = volume.VolumeLease(HOST_ID, 'dom', 'img2', 'vol')
     self.assertEqual(a, b)
Ejemplo n.º 10
0
 def test_equality(self):
     a = volume.VolumeLease(HOST_ID, 'dom', 'img', 'vol')
     b = volume.VolumeLease(HOST_ID, 'dom', 'img', 'vol')
     self.assertEqual(a, b)
Ejemplo n.º 11
0
 def test_less_than(self, a, b):
     b = volume.VolumeLease(HOST_ID, *b)
     a = volume.VolumeLease(HOST_ID, *a)
     self.assertLess(a, b)
Ejemplo n.º 12
0
 def test_properties(self):
     a = volume.VolumeLease(HOST_ID, 'dom', 'img', 'vol')
     self.assertEqual(rm.getNamespace(sc.VOLUME_LEASE_NAMESPACE, 'dom'),
                      a.ns)
     self.assertEqual('vol', a.name)
     self.assertEqual(rm.EXCLUSIVE, a.mode)