Exemplo n.º 1
0
	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
Exemplo n.º 2
0
	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))
Exemplo n.º 3
0
	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 -*-
Exemplo n.º 4
0
	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
Exemplo n.º 5
0
	def dmname(self):
		if not hasattr(self, '_dmname'):
			self._dmname = Device.from_name(udevctx, 'block', self.name)['DM_NAME']
		return self._dmname
Exemplo n.º 6
0
	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