def is_fs_created(self): self._check() fstype = coreutils.blkid(self.device).get('type') if fstype is None: return False else: self.fstype = fstype return True
def is_fs_created(self): self._check() try: device_attrs = coreutils.blkid(self.device) except: return False fstype = device_attrs.get('type') if fstype is None: return False else: self.fstype = fstype return True
def is_fs_created(self): self._check() fstype = coreutils.blkid(self.device).get('type') if fstype is None: return False else: if fstype != self.fstype: LOG.warn( ('Device {} already formatted into {!r}. ' 'Ignoring {!r} fstype').format(self.device, fstype, self.fstype)) self.fstype = fstype return True
def upload_lvm_snapshot(self, lvm_snap, tags, path): """ Method which uploads data from lvm snapshot to cloud storage and updates snapshot status. EphVolume runs this method in separate thread """ try: self._snap_status = self.QUEUED mpoint = tempfile.mkdtemp() opts = [] if coreutils.blkid(lvm_snap.device).get('type') == 'xfs': opts += ['-o', 'nouuid,ro'] mount.mount(lvm_snap.device, mpoint, *opts) self.data_size = coreutils.statvfs(mpoint)['used'] try: transfer = cloudfs.LargeTransfer( src=mpoint + '/', dst=path, tar_it=True, gzip_it=True, tags=tags, transfer_id=self.id) self._snap_status = self.IN_PROGRESS manifesto = transfer.run() self.path = manifesto.cloudfs_path self._snap_status = self.COMPLETED finally: mount.umount(mpoint) os.rmdir(mpoint) except: self._snap_status = self.FAILED LOG.exception('Caught error while uploading LVM snapshot') finally: lvm_snap.destroy()
def upload_lvm_snapshot(self, lvm_snap, tags, path): """ Method which uploads data from lvm snapshot to cloud storage and updates snapshot status. EphVolume runs this method in separate thread """ try: self._snap_status = self.QUEUED mpoint = tempfile.mkdtemp() opts = [] if coreutils.blkid(lvm_snap.device).get('type') == 'xfs': opts += ['-o', 'nouuid,ro'] mount.mount(lvm_snap.device, mpoint, *opts) self.data_size = coreutils.statvfs(mpoint)['used'] try: cmd = ['/bin/tar', 'cp', mpoint] stream = subprocess.Popen(cmd, stdout=subprocess.PIPE, close_fds=True).stdout src = cloudfs.NamedStream(stream, 'lvm_snapshot', streamer='tar', extension='tar') dst = path transfer = largetransfer.Upload(src, dst, tags=tags, transfer_id=self.id) self._snap_status = self.IN_PROGRESS transfer.apply_async() transfer.join() manifesto = transfer.manifest self.path = manifesto.cloudfs_path self._snap_status = self.COMPLETED finally: mount.umount(mpoint) os.rmdir(mpoint) except: self._snap_status = self.FAILED LOG.exception('Caught error while uploading LVM snapshot') finally: lvm_snap.destroy()
def upload_lvm_snapshot(self, lvm_snap, tags, path): """ Method which uploads data from lvm snapshot to cloud storage and updates snapshot status. EphVolume runs this method in separate thread """ try: self._snap_status = self.QUEUED mpoint = tempfile.mkdtemp() opts = [] if coreutils.blkid(lvm_snap.device).get('type') == 'xfs': opts += ['-o', 'nouuid,ro'] mount.mount(lvm_snap.device, mpoint, *opts) self.data_size = coreutils.statvfs(mpoint)['used'] try: transfer = cloudfs.LargeTransfer(src=mpoint + '/', dst=path, tar_it=True, gzip_it=True, tags=tags, transfer_id=self.id) self._snap_status = self.IN_PROGRESS manifesto = transfer.run() self.path = manifesto.cloudfs_path self._snap_status = self.COMPLETED finally: mount.umount(mpoint) os.rmdir(mpoint) except: self._snap_status = self.FAILED LOG.exception('Caught error while uploading LVM snapshot') finally: lvm_snap.destroy()
def detect_fstype(self): self._check_attr('device') blk_info = coreutils.blkid(self.device) return blk_info.get('type')