def _parse(self): if not sys_info.devices: sys_info.devices = disk.get_devices() self.sys_api = sys_info.devices.get(self.abspath, {}) if not self.sys_api: # if no device was found check if we are a partition partname = self.abspath.split('/')[-1] for device, info in sys_info.devices.items(): part = info['partitions'].get(partname, {}) if part: self.sys_api = part break # start with lvm since it can use an absolute or relative path lv = lvm.get_lv_from_argument(self.path) if lv: self.lv_api = lv self.lvs = [lv] self.abspath = lv.lv_path self.vg_name = lv.vg_name self.lv_name = lv.name else: dev = disk.lsblk(self.path) self.blkid_api = disk.blkid(self.path) self.disk_api = dev device_type = dev.get('TYPE', '') # always check is this is an lvm member if device_type in ['part', 'disk']: self._set_lvm_membership() self.ceph_disk = CephDiskDevice(self)
def test_parses_translated(self, stub_call): output = '''/dev/sdb1: UUID="62416664-cbaf-40bd-9689-10bd337379c3" TYPE="xfs" PART_ENTRY_SCHEME="gpt" PART_ENTRY_NAME="ceph data" PART_ENTRY_UUID="b89c03bc-bf58-4338-a8f8-a2f484852b4f"''' # noqa stub_call((output.split(), [], 0)) result = disk.blkid('/dev/sdb1') assert result['PARTUUID'] == 'b89c03bc-bf58-4338-a8f8-a2f484852b4f' assert result['PARTLABEL'] == 'ceph data' assert result['UUID'] == '62416664-cbaf-40bd-9689-10bd337379c3' assert result['TYPE'] == 'xfs'
def _is_valid_device(self, raise_sys_exit=True): out, err, rc = process.call( ['ceph-bluestore-tool', 'show-label', '--dev', self.dev_path], verbose_on_failure=False) if not rc: terminal.info("Raw device {} is already prepared.".format( self.dev_path)) raise SystemExit(0) if disk.blkid(self.dev_path).get('TYPE') == 'crypto_LUKS': terminal.info( "Raw device {} might already be in use for a dmcrypt OSD, skipping." .format(self.dev_path)) raise SystemExit(0) super()._is_valid_device() return self._device
def _parse(self): if not sys_info.devices: sys_info.devices = disk.get_devices() self.sys_api = sys_info.devices.get(self.abspath, {}) if not self.sys_api: # if no device was found check if we are a partition partname = self.abspath.split('/')[-1] for device, info in sys_info.devices.items(): part = info['partitions'].get(partname, {}) if part: self.sys_api = part break # if the path is not absolute, we have 'vg/lv', let's use LV name # to get the LV. if self.path[0] == '/': lv = lvm.get_single_lv(filters={'lv_path': self.path}) else: vgname, lvname = self.path.split('/') lv = lvm.get_single_lv(filters={'lv_name': lvname, 'vg_name': vgname}) if lv: self.lv_api = lv self.lvs = [lv] self.abspath = lv.lv_path self.vg_name = lv.vg_name self.lv_name = lv.name self.ceph_device = lvm.is_ceph_device(lv) else: dev = disk.lsblk(self.path) self.blkid_api = disk.blkid(self.path) self.disk_api = dev device_type = dev.get('TYPE', '') # always check is this is an lvm member if device_type in ['part', 'disk']: self._set_lvm_membership() out, err, rc = process.call([ 'ceph-bluestore-tool', 'show-label', '--dev', self.path], verbose_on_failure=False) if rc: self.ceph_device = True self.ceph_disk = CephDiskDevice(self)
def _parse(self): # start with lvm since it can use an absolute or relative path lv = lvm.get_lv_from_argument(self.path) if lv: self.lv_api = lv self.abspath = lv.lv_path else: dev = disk.lsblk(self.path) self.blkid_api = disk.blkid(self.path) self.disk_api = dev device_type = dev.get('TYPE', '') # always check is this is an lvm member if device_type in ['part', 'disk']: self._set_lvm_membership() if not sys_info.devices: sys_info.devices = disk.get_devices() self.sys_api = sys_info.devices.get(self.abspath, {}) self.ceph_disk = CephDiskDevice(self)
def _parse(self): if not sys_info.devices: sys_info.devices = disk.get_devices() self.sys_api = sys_info.devices.get(self.abspath, {}) if not self.sys_api: # if no device was found check if we are a partition partname = self.abspath.split('/')[-1] for device, info in sys_info.devices.items(): part = info['partitions'].get(partname, {}) if part: self.sys_api = part break # if the path is not absolute, we have 'vg/lv', let's use LV name # to get the LV. if self.path[0] == '/': lv = lvm.get_first_lv(filters={'lv_path': self.path}) else: vgname, lvname = self.path.split('/') lv = lvm.get_first_lv(filters={ 'lv_name': lvname, 'vg_name': vgname }) if lv: self.lv_api = lv self.lvs = [lv] self.abspath = lv.lv_path self.vg_name = lv.vg_name self.lv_name = lv.name else: dev = disk.lsblk(self.path) self.blkid_api = disk.blkid(self.path) self.disk_api = dev device_type = dev.get('TYPE', '') # always check is this is an lvm member if device_type in ['part', 'disk']: self._set_lvm_membership() self.ceph_disk = CephDiskDevice(self)
def load_blkid_api(self): if self.blkid_api is None: self.blkid_api = disk.blkid(self.path)