Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# C cached LV
return
lv_dev = self._devicetree.get_device_by_uuid(lv_uuid)
if lv_dev is None:
lv_device = LVMLogicalVolumeDevice(lv_name, parents=lv_parents,
uuid=lv_uuid, size=lv_size, seg_type=lv_type,
exists=True, **lv_kwargs)
self._devicetree._add_device(lv_device)
if flags.installer_mode:
lv_device.setup()
if lv_device.status:
lv_device.update_sysfs_path()
lv_device.update_size()
lv_info = udev.get_device(lv_device.sysfs_path)
if not lv_info:
log.error("failed to get udev data for lv %s", lv_device.name)
return lv_device
# do format handling now
self._devicetree.handle_device(lv_info, update_orig_fmt=True)
return lv_device
return None
def _get_kwargs(self):
kwargs = super(MDBiosRaidDevicePopulator, self)._get_kwargs()
parent_path = udev.device_get_md_container(self.data)
parent_name = device_path_to_name(parent_path)
container = self._devicetree.get_device_by_name(parent_name)
# FIXME: Move this whole block to an add_parent_devices method or similar
if not container:
parent_sys_name = blockdev.md.node_from_name(parent_name)
container_sysfs = "/sys/class/block/" + parent_sys_name
container_info = udev.get_device(container_sysfs)
if not container_info:
log.error("failed to find md container %s at %s",
parent_name, container_sysfs)
return
self._devicetree.handle_device(container_info)
container = self._devicetree.get_device_by_name(parent_name)
if not container:
log.error("failed to scan md container %s", parent_name)
return
kwargs["parents"] = [container]
kwargs["level"] = udev.device_get_md_level(self.data)
kwargs["member_devices"] = udev.device_get_md_devices(self.data)
kwargs["uuid"] = udev.device_get_md_uuid(self.data)
kwargs["exists"] = True
# C cached LV
return
lv_dev = self.getDeviceByUuid(lv_uuid)
if lv_dev is None:
lv_device = lv_class(lv_name, parents=lv_parents,
uuid=lv_uuid, size=lv_size,segType=lv_type,
exists=True, **lv_kwargs)
self.devicetree._addDevice(lv_device)
if flags.installer_mode:
lv_device.setup()
if lv_device.status:
lv_device.updateSysfsPath()
lv_device.updateSize()
lv_info = udev.get_device(lv_device.sysfsPath)
if not lv_info:
log.error("failed to get udev data for lv %s", lv_device.name)
return lv_device
# do format handling now
self.addUdevDevice(lv_info, updateOrigFmt=True)
return lv_device
return None
lv_type = lv.segtype
matching_cls = get_internal_lv_class(lv_attr)
if matching_cls is None:
raise DeviceTreeError("No internal LV class supported for type '%s'" % lv_attr[0])
# strip the "[]"s marking the LV as internal
lv_name = lv_name.strip("[]")
# don't know the parent LV yet, will be set later
new_lv = matching_cls(lv_name, vg_device, parent_lv=None, size=lv_size, uuid=lv_uuid, exists=True, segType=lv_type)
if new_lv.status:
new_lv.updateSysfsPath()
new_lv.updateSize()
lv_info = udev.get_device(new_lv.sysfsPath)
if not lv_info:
log.error("failed to get udev data for lv %s", new_lv.name)
return new_lv
return new_lv
md_name,
level=md_level,
memberDevices=md_devices,
uuid=md_uuid,
metadataVersion=md_metadata,
exists=True
)
except (ValueError, DeviceError) as e:
log.error("failed to create md array: %s", e)
return
md_array.updateSysfsPath()
md_array.parents.append(device)
self.devicetree._addDevice(md_array)
if md_array.status:
array_info = udev.get_device(md_array.sysfsPath)
if not array_info:
log.error("failed to get udev data for %s", md_array.name)
return
self.addUdevDevice(array_info, updateOrigFmt=True)
def addUdevDMDevice(self, info):
name = udev.device_get_name(info)
log_method_call(self, name=name)
sysfs_path = udev.device_get_sysfs_path(info)
slave_devices = self._addSlaveDevices(info)
device = self.getDeviceByName(name)
# if this is a luks device whose map name is not what we expect,
# fix up the map name and see if that sorts us out
handle_luks = (udev.device_is_dm_luks(info) and
(self._cleanup or not flags.installer_mode))
if device is None and handle_luks and slave_devices:
slave_dev = slave_devices[0]
slave_dev.format.mapName = name
slave_info = udev.get_device(slave_dev.sysfsPath)
self.handleUdevLUKSFormat(slave_info, slave_dev)
# try once more to get the device
device = self.getDeviceByName(name)
# create a device for the livecd OS image(s)
if device is None and udev.device_is_dm_livecd(info):
device = DMDevice(name, dmUuid=info.get('DM_UUID'),
sysfsPath=sysfs_path, exists=True,
parents=[slave_devices[0]])
device.protected = True
device.controllable = False
self.devicetree._addDevice(device)
# if we get here, we found all of the slave devices and
# something must be wrong -- if all of the slaves are in
For now, this should return a boolean:
True the device is open and ready for use
False the device is not open
"""
# check the status in sysfs
status = False
if not self.exists:
return status
if os.path.exists(self.path) and not self.sysfsPath:
# the array has been activated from outside of blivet
self.updateSysfsPath()
# make sure the active array is the one we expect
info = udev.get_device(self.sysfsPath)
uuid = udev.device_get_md_uuid(info)
if uuid and uuid != self.uuid:
log.warning("md array %s is active, but has UUID %s -- not %s",
self.path, uuid, self.uuid)
self.sysfsPath = ""
return status
state_file = "%s/md/array_state" % self.sysfsPath
try:
state = open(state_file).read().strip()
if state in self._trueStatusStrings:
status = True
except IOError:
status = False
return status
if force_cont:
# log warning and set format's required entropy to 0
log.warning("Forcing LUKS creation regardless of enough "
"random data entropy (%d/%d)",
get_current_entropy(), min_required_entropy)
luks_data.min_entropy = 0
self.device.setup()
self.device.format.create(device=self.device.path,
options=self.device.format_args)
# Get the UUID now that the format is created
udev.settle()
self.device.update_sysfs_path()
info = udev.get_device(self.device.sysfs_path)
# only do this if the format has a device known to udev
# (the format might not have a normal device at all)
if info:
if self.device.format.type != "btrfs":
self.device.format.uuid = udev.device_get_uuid(info)
self.device.device_links = udev.device_get_symlinks(info)
elif self.device.format.type != "tmpfs":
# udev lookup failing is a serious issue for anything other than tmpfs
log.error("udev lookup failed for device: %s", self.device)
if callbacks and callbacks.create_format_post:
msg = _("Created %(type)s on %(device)s") % {"type": self.device.format.type, "device": self.device.path}
callbacks.create_format_post(CreateFormatPostData(msg))
self.device.original_format = copy.deepcopy(self.device.format)
if we fail to add any slave
:returns: a list of slave devices
:rtype: list of :class:`~.StorageDevice`
"""
name = udev.device_get_name(info)
sysfs_path = udev.device_get_sysfs_path(info)
slave_dir = os.path.normpath("%s/slaves" % sysfs_path)
slave_names = os.listdir(slave_dir)
slave_devices = []
if not slave_names:
log.error("no slaves found for %s", name)
raise NoSlavesError("no slaves found for device %s" % name)
for slave_name in slave_names:
path = os.path.normpath("%s/%s" % (slave_dir, slave_name))
slave_info = udev.get_device(os.path.realpath(path))
# cciss in sysfs is "cciss!cXdYpZ" but we need "cciss/cXdYpZ"
slave_name = udev.device_get_name(slave_info).replace("!", "/")
if not slave_info:
log.warning("unable to get udev info for %s", slave_name)
slave_dev = self.getDeviceByName(slave_name)
if not slave_dev and slave_info:
# we haven't scanned the slave yet, so do it now
self.addUdevDevice(slave_info)
slave_dev = self.getDeviceByName(slave_name)
if slave_dev is None:
if udev.device_is_dm_lvm(info):
if slave_name not in self.devicetree.lvInfo:
# we do not expect hidden lvs to be in the tree