block_meta: use lookup for wwn, fix fallback from wwn, serial, path
NVMe devices may provide a ID_WWN value from udev, but the NVMe rules
do not create a by-id/wwn-$ID_WWN symlink which breaks behavior with
other ID_WWN devices resulting in curtin not finding certain NVMe
devices. Resolve this issue buy using block.lookup_disk on WWN values
as well as serial.
Additional fixes to block_meta.get_path_to_storage_volume:
- get_path_to_storage_volume will try wwn, serial, and ultimately
path values in order to find the specified disk
- Add os.path.exists check to proposed constructed values, if the
path is not valid, we continue to use different keys if possible.
- Updated the Exception message to indicate the volume wasn't found
and emit the config it used.
vmtest: Adjust TestScsiBasic to use dnames to find correct disk
The TestScsiBasic test has some assumptions on which SCSI device
will have expected content. On PPC64, the PCI device enumeration
is not as stable as it is on x86 resulting in test failures. This
patch resolves this by leveraging the dname values and looking up
the correct kernel name for a specific target dname.
Probert output may include values of partition table 'label'
that curtin does not support. This triggers schema validation
errors for common values, like 'mac' or 'PMBR' and likely
other valid table names but are not something that curtin
can create. Instead of adding more values to the schema, mark
such table types as 'unsupported' allowing the existing table
and partitions to be re-used.
This branch also modifies block_meta disk_handler to not
attempt to validate a preserved partition table if it marked
as 'unsupported'.
tools/xkvm: add -nographic to speed up devopt query
On systems which include qemu graphical components the time
needed to invoke qemu for querying if an string is a device
option can take many seconds, especially over remote connections.
Adding the '-nographic' parameter prevents qemu from loading
and launching additional resources that are not needed to determine
the devopt query answer.
storage_config: interpret value, not presence, of DM_MULTIPATH_DEVICE_PATH
Curtin assumes any block device that has the DM_MULTIPATH_DEVICE_PATH
key set in udev is a block device, but that's not correct. Since
multipath-tools 0.7.7 (according to https://www.spinics.net/lists/dm-devel/msg35965.html), _every_ block
device that multipathd looks at gets that key set, but it is set to "1"
for things that are part of a multipathed device and "0" for things that
are not. So fix the checks in curtin to follow that.