def newVolumeLease(cls, metaId, sdUUID, volUUID): cls.log.debug("Initializing volume lease volUUID=%s sdUUID=%s, " "metaId=%s", volUUID, sdUUID, metaId) volPath, = metaId leasePath = cls.__leaseVolumePath(volPath) oop.getProcessPool(sdUUID).truncateFile(leasePath, LEASE_FILEOFFSET) cls.file_setrw(leasePath, rw=True) sanlock.init_resource(sdUUID, volUUID, [(leasePath, LEASE_FILEOFFSET)])
def initLock(self): try: sanlock.init_lockspace(self._sdUUID, self._idsPath) sanlock.init_resource(self._sdUUID, LEASE_NAME, [self._leasesPath]) except sanlock.SanlockException: self.log.warn("Cannot initialize clusterlock", exc_info=True) raise se.ClusterLockInitError()
def main(): print "Creating the sanlock disk" fd, disk = tempfile.mkstemp() os.close(fd) offset = sanlock.get_alignment(disk) SNLK_DISKS = [(disk, offset)] print "Registering to sanlock" fd = sanlock.register() print "Initializing '%s'" % (LOCKSPACE_NAME, ) sanlock.init_lockspace(LOCKSPACE_NAME, disk) print "Initializing '%s' on '%s'" % (RESOURCE_NAME, LOCKSPACE_NAME) sanlock.init_resource(LOCKSPACE_NAME, RESOURCE_NAME, SNLK_DISKS) print "Acquiring the id '%i' on '%s'" % (HOST_ID, LOCKSPACE_NAME) sanlock.add_lockspace(LOCKSPACE_NAME, HOST_ID, disk) try: print "Acquiring '%s' on '%s'" % (RESOURCE_NAME, LOCKSPACE_NAME) sanlock.acquire(LOCKSPACE_NAME, RESOURCE_NAME, SNLK_DISKS, slkfd=fd) print "Releasing '%s' on '%s'" % (RESOURCE_NAME, LOCKSPACE_NAME) sanlock.release(LOCKSPACE_NAME, RESOURCE_NAME, SNLK_DISKS, slkfd=fd) finally: print "Releasing the id '%i' on '%s'" % (HOST_ID, LOCKSPACE_NAME) sanlock.rem_lockspace(LOCKSPACE_NAME, HOST_ID, disk) print "Removing the sanlock disk" os.remove(disk)
def newVolumeLease(cls, sdUUID, volUUID, leaseSlot): dom = sdCache.produce(sdUUID) if dom.hasVolumeLeases(): leasePath = dom.getLeasesFilePath() leaseOffset = (leaseSlot + RESERVED_LEASES) * dom.logBlkSize * sd.LEASE_BLOCKS sanlock.init_resource(sdUUID, volUUID, [(leasePath, leaseOffset)])
def test_init_resource_parse_args(no_sanlock_daemon, name, filename, encoding): path = util.generate_path("/tmp/", filename, encoding) disks = [(path, 0)] with raises_sanlock_errno(errno.ENOENT): sanlock.init_resource(b"ls_name", name, disks) with raises_sanlock_errno(errno.ENOENT): sanlock.init_resource(name, b"res_name", disks)
def main(): print "Creating the sanlock disk" fd, disk = tempfile.mkstemp() os.close(fd) offset = sanlock.get_alignment(disk) SNLK_DISKS = [(disk, offset)] print "Registering to sanlock" fd = sanlock.register() print "Initializing '%s'" % (LOCKSPACE_NAME,) sanlock.init_lockspace(LOCKSPACE_NAME, disk) print "Initializing '%s' on '%s'" % (RESOURCE_NAME, LOCKSPACE_NAME) sanlock.init_resource(LOCKSPACE_NAME, RESOURCE_NAME, SNLK_DISKS) print "Acquiring the id '%i' on '%s'" % (HOST_ID, LOCKSPACE_NAME) sanlock.add_lockspace(LOCKSPACE_NAME, HOST_ID, disk) try: print "Acquiring '%s' on '%s'" % (RESOURCE_NAME, LOCKSPACE_NAME) sanlock.acquire(LOCKSPACE_NAME, RESOURCE_NAME, SNLK_DISKS, slkfd=fd) print "Releasing '%s' on '%s'" % (RESOURCE_NAME, LOCKSPACE_NAME) sanlock.release(LOCKSPACE_NAME, RESOURCE_NAME, SNLK_DISKS, slkfd=fd) finally: print "Releasing the id '%i' on '%s'" % (HOST_ID, LOCKSPACE_NAME) sanlock.rem_lockspace(LOCKSPACE_NAME, HOST_ID, disk) print "Removing the sanlock disk" os.remove(disk)
def test_init_resource_path_length(no_sanlock_daemon): path = "x" * constants.SANLK_PATH_LEN with pytest.raises(ValueError): sanlock.init_resource(b"ls_name", b"res_name", [(path, 0)]) # init_resource access storage directly. path = "x" * (constants.SANLK_PATH_LEN - 1) with raises_sanlock_errno(errno.ENAMETOOLONG): sanlock.init_resource(b"ls_name", b"res_name", [(path, 0)])
def newVolumeLease(cls, metaId, sdUUID, volUUID): cls.log.debug( "Initializing volume lease volUUID=%s sdUUID=%s, " "metaId=%s", volUUID, sdUUID, metaId) volPath, = metaId leasePath = cls.leaseVolumePath(volPath) oop.getProcessPool(sdUUID).truncateFile(leasePath, LEASE_FILEOFFSET) cls.file_setrw(leasePath, rw=True) sanlock.init_resource(sdUUID, volUUID, [(leasePath, LEASE_FILEOFFSET)])
def initSANLock(sdUUID, idsPath, lease): initSANLockLog.debug("Initializing SANLock for domain %s", sdUUID) try: sanlock.init_lockspace(sdUUID, idsPath) sanlock.init_resource(sdUUID, lease.name, [(lease.path, lease.offset)]) except sanlock.SanlockException: initSANLockLog.error("Cannot initialize SANLock for domain %s", sdUUID, exc_info=True) raise se.ClusterLockInitError()
def initSANLock(sdUUID, idsPath, lease): initSANLockLog.debug("Initializing SANLock for domain %s", sdUUID) try: sanlock.init_lockspace(sdUUID, idsPath) sanlock.init_resource(sdUUID, lease.name, [(lease.path, lease.offset)]) except sanlock.SanlockException: initSANLockLog.error("Cannot initialize SANLock for domain %s", sdUUID, exc_info=True) raise se.ClusterLockInitError()
def newVolumeLease(cls, sdUUID, volUUID, volPath): dom = sdCache.produce(sdUUID) procPool = oop.getProcessPool(sdUUID) if dom.hasVolumeLeases(): leasePath = cls.__leaseVolumePath(volPath) procPool.createSparseFile(leasePath, LEASE_FILEOFFSET) cls.file_setrw(leasePath, rw=True) sanlock.init_resource(sdUUID, volUUID, [(leasePath, LEASE_FILEOFFSET)])
def initSANLock(sdUUID, idsPath, leasesPath): initSANLockLog.debug("Initializing SANLock for domain %s", sdUUID) try: sanlock.init_lockspace(sdUUID, idsPath) sanlock.init_resource(sdUUID, SDM_LEASE_NAME, [(leasesPath, SDM_LEASE_OFFSET)]) except sanlock.SanlockException: initSANLockLog.error("Cannot initialize SANLock for domain %s", sdUUID, exc_info=True) raise se.ClusterLockInitError()
def newVolumeLease(cls, metaId, sdUUID, volUUID): cls.log.debug("Initializing volume lease volUUID=%s sdUUID=%s, " "metaId=%s", volUUID, sdUUID, metaId) manifest = blockSD.BlockStorageDomainManifest(sdUUID) metaSdUUID, mdSlot = metaId leasePath = manifest.getLeasesFilePath() leaseOffset = ((mdSlot + RESERVED_LEASES) * manifest.logBlkSize * sd.LEASE_BLOCKS) sanlock.init_resource(sdUUID, volUUID, [(leasePath, leaseOffset)])
def newVolumeLease(cls, metaId, sdUUID, volUUID): cls.log.debug("Initializing volume lease volUUID=%s sdUUID=%s, " "metaId=%s", volUUID, sdUUID, metaId) manifest = blockSD.BlockStorageDomainManifest(sdUUID) metaSdUUID, mdSlot = metaId leasePath = manifest.getLeasesFilePath() leaseOffset = ((mdSlot + RESERVED_LEASES) * manifest.logBlkSize * sd.LEASE_BLOCKS) sanlock.init_resource(sdUUID, volUUID, [(leasePath, leaseOffset)])
def newVolumeLease(cls, metaId, sdUUID, volUUID): cls.log.debug("Initializing volume lease volUUID=%s sdUUID=%s, " "metaId=%s", volUUID, sdUUID, metaId) dom = sdCache.produce(sdUUID) metaSdUUID, mdSlot = metaId leasePath = dom.getLeasesFilePath() leaseOffset = ((mdSlot + RESERVED_LEASES) * dom.logBlkSize * sd.LEASE_BLOCKS) sanlock.init_resource(sdUUID, volUUID, [(leasePath, leaseOffset)])
def initSANLock(sdUUID, idsPath, leasesPath): initSANLockLog.debug("Initializing SANLock for domain %s", sdUUID) try: sanlock.init_lockspace(sdUUID, idsPath) sanlock.init_resource(sdUUID, SDM_LEASE_NAME, [(leasesPath, SDM_LEASE_OFFSET)]) except sanlock.SanlockException: initSANLockLog.error("Cannot initialize SANLock for domain %s", sdUUID, exc_info=True) raise se.ClusterLockInitError()
def newVolumeLease(cls, metaId, sdUUID, volUUID): cls.log.debug( "Initializing volume lease volUUID=%s sdUUID=%s, " "metaId=%s", volUUID, sdUUID, metaId) dom = sdCache.produce(sdUUID) metaSdUUID, mdSlot = metaId leasePath = dom.getLeasesFilePath() leaseOffset = ((mdSlot + RESERVED_LEASES) * dom.logBlkSize * sd.LEASE_BLOCKS) sanlock.init_resource(sdUUID, volUUID, [(leasePath, leaseOffset)])