def parent_disk(self): """ The device path (eg. /dev/sdd) the partition is on """ if not hasattr(self, '_parent_disk'): disk_name = Device.from_name(udevctx, 'block', self.name)['DEVPATH'].split('/')[-2] setattr(self, '_parent_disk', Device.from_name(udevctx, 'block', disk_name)['DEVNAME']) return self._parent_disk
def _create_linear(cls, dmname, table_lines): """ Create linear mapping based on table_lines. Each line is a tuple in the dmsetup table format: ([start in sectors], [length in sectors], [type], [source device], [offset in sectors]) eg. ('4096', '8192', 'linear', '/dev/dm-2', '4192') """ dmsetup(['create', dmname, '/dev/stdin'], input='\n'.join([' '.join([str(col) for col in line]) for line in table_lines])) devname = Device.from_device_file(udevctx, '/dev/mapper/%s' % dmname)['DEVNAME'] return cls(basename(devname))
def identifier(self): """ Unique identifier for a disk device. """ if not hasattr(self, '_identifier'): device = Device.from_name(udevctx, 'block', self.name) if device.get('ID_BUS') == 'ata': setattr(self, '_identifier', 'ata-%s' % device['ID_SERIAL']) elif device.get('ID_WWN'): setattr(self, '_identifier', 'wwn-%s' % device['ID_WWN']) elif device.get('DM_UUID'): setattr(self, '_identifier', 'dm-%s' % device['DM_UUID']) elif device.get('ID_SCSI_SERIAL'): setattr(self, '_identifier', 'scsi-%s' % device['ID_SCSI_SERIAL']) elif 'virtio' in device.get('ID_PATH', ''): setattr(self, '_identifier', 'virtio-%s' % device['ID_SERIAL']) elif 'ID_SERIAL' in device: setattr(self, '_identifier', 'unknown-%s' % device['ID_SERIAL']) else: raise RuntimeError('unknown disk type') return self._identifier # vim:set sw=4 ts=4 et: # -*- coding: utf-8 -*-
def device_path(self): if not hasattr(self, '_device_path'): setattr(self, '_device_path', Device.from_name(udevctx, 'block', self.name)['DEVNAME']) return self._device_path
def dmname(self): if not hasattr(self, '_dmname'): self._dmname = Device.from_name(udevctx, 'block', self.name)['DM_NAME'] return self._dmname
def device_path(self): if not hasattr(self, '_device_path'): self._device_path = Device.from_device_file(udevctx, '/dev/mapper/%s' % self.dmname)['DEVNAME'] return self._device_path