Exemplo n.º 1
0
    def rename(self, newUUID, recovery=True):
        """
        Rename volume
        """
        self.log.info("Rename volume %s as %s ", self.volUUID, newUUID)
        if not self.imagePath:
            self._manifest.validateImagePath()
        volPath = os.path.join(self.imagePath, newUUID)
        metaPath = self.getMetaVolumePath(volPath)
        prevMetaPath = self.getMetaVolumePath()
        leasePath = self.getLeaseVolumePath(volPath)
        prevLeasePath = self.getLeaseVolumePath()

        if recovery:
            name = "Rename volume rollback: " + volPath
            vars.task.pushRecovery(
                task.Recovery(name, "fileVolume", "FileVolume",
                              "renameVolumeRollback",
                              [volPath, self.volumePath]))
        self.log.info("Renaming %s to %s", self.volumePath, volPath)
        self.oop.os.rename(self.volumePath, volPath)
        if recovery:
            name = "Rename meta-volume rollback: " + metaPath
            vars.task.pushRecovery(
                task.Recovery(name, "fileVolume", "FileVolume",
                              "renameVolumeRollback",
                              [metaPath, prevMetaPath]))
        self.log.info("Renaming %s to %s", prevMetaPath, metaPath)
        self.oop.os.rename(prevMetaPath, metaPath)
        if recovery:
            name = "Rename lease-volume rollback: " + leasePath
            vars.task.pushRecovery(
                task.Recovery(name, "fileVolume", "FileVolume",
                              "renameVolumeRollback",
                              [leasePath, prevLeasePath]))
        self.log.info("Renaming %s to %s", prevLeasePath, leasePath)
        try:
            self.oop.os.rename(prevLeasePath, leasePath)
        except OSError as e:
            if e.errno != os.errno.ENOENT:
                raise

        self.renameLease((volPath, LEASE_FILEOFFSET),
                         newUUID,
                         recovery=recovery)

        self._manifest.volUUID = newUUID
        self._manifest.volumePath = volPath
Exemplo n.º 2
0
    def rename(self, newUUID, recovery=True):
        """
        Rename volume
        """
        self.log.info("Rename volume %s as %s ", self.volUUID, newUUID)
        if not self.imagePath:
            self._manifest.validateImagePath()

        if os.path.lexists(self.getVolumePath()):
            self.log.info("Unlinking volume symlink %r", self.getVolumePath())
            os.unlink(self.getVolumePath())

        if recovery:
            name = "Rename volume rollback: " + newUUID
            vars.task.pushRecovery(
                task.Recovery(name, "blockVolume", "BlockVolume",
                              "renameVolumeRollback",
                              [self.sdUUID, newUUID, self.volUUID]))

        # Save the metadaId before renaming the LV, because getMetadataId()
        # uses the volume UUID and we need the metadataId before perform the
        # rename.
        metadataId = self.getMetadataId()

        lvm.renameLV(self.sdUUID, self.volUUID, newUUID)

        self.renameLease(metadataId, newUUID, recovery=recovery)

        self._manifest.volUUID = newUUID
        self._manifest.volumePath = os.path.join(self.imagePath, newUUID)
Exemplo n.º 3
0
Arquivo: sd.py Projeto: benipeled/vdsm
 def create_image(self, imgUUID):
     """
     Create placeholder for image's volumes
     """
     image_dir = self.getImageDir(imgUUID)
     if not os.path.isdir(image_dir):
         self.log.info("Create placeholder %s for image's volumes",
                       image_dir)
         task_name = "create image rollback: " + imgUUID
         recovery = task.Recovery(task_name, "sd", "StorageDomain",
                                  "create_image_rollback", [image_dir])
         vars.task.pushRecovery(recovery)
         os.mkdir(image_dir)
     return image_dir
Exemplo n.º 4
0
    def rename(self, newUUID, recovery=True):
        """
        Rename volume
        """
        self.log.info("Rename volume %s as %s ", self.volUUID, newUUID)
        if not self.imagePath:
            self._manifest.validateImagePath()

        if os.path.lexists(self.getVolumePath()):
            os.unlink(self.getVolumePath())

        if recovery:
            name = "Rename volume rollback: " + newUUID
            vars.task.pushRecovery(task.Recovery(
                name, "blockVolume", "BlockVolume", "renameVolumeRollback",
                [self.sdUUID, newUUID, self.volUUID]))

        lvm.renameLV(self.sdUUID, self.volUUID, newUUID)
        self._manifest.volUUID = newUUID
        self._manifest.volumePath = os.path.join(self.imagePath, newUUID)