Ejemplo n.º 1
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)])
Ejemplo n.º 2
0
 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()
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
    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)])
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)])
Ejemplo n.º 8
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)])
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
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()
Ejemplo n.º 11
0
    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)])
Ejemplo n.º 12
0
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()
Ejemplo n.º 13
0
    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)])
Ejemplo n.º 14
0
    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)])
Ejemplo n.º 15
0
    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)])
Ejemplo n.º 16
0
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()
Ejemplo n.º 17
0
    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)])