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
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)
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
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)