When trying to test for target_path() the path passed to the function
should the one relative the root of the target. Since the returned
efi_loader path should be the one suitable to be passed to the
efibootmgr.
block: fixes for verifying existing multipath partitions
Verifying a partition on a multipath disk currently fails for two
reasons:
1. get_blockdev_for_partition does not know how to go from a multipath
partition to a multipath disk, so sfdisk_info ends up calling sfdisk
on the partition, which fails.
2. sfdisk --json /dev/dm-X prints /dev/mapper paths for the partition
paths but compares them against the fully deferenced /dev/dm-Y path
for the partition.
2 is easily fixed by resolving symlinks before comparing nodes. 1
can be fixed with a little udev poking but then sys_block_path
returns paths like /sys/class/block/dm-1/dm-2 for a partition of
a multipath disk, which doesn't exist. Luckily, nodes for
partitions exist directly in /sys/class/block and have done since
/sys/class/block was added in 2008 (see kernel commit
edfaa7c36574f1bf09c65ad602412db9da5f96bf) so we can just remove
the call to get_blockdev_for_partition from sys_block_read.
multipath: use udev DM_NAME for find_mpath_id, fix 4k sector calc
1) find_mpath_id asked multipathd to list all maps and read out the name
(or wwid if no name) of the device from that and sometimes timed out,
but this information is already present in udev as DM_NAME. And
DM_NAME is the wwid if user_friendly_names is disabled, so there's no
need to be conditional about that either.
2) fix calculating start and offset of partition on multipathed 4k disk
calc_dm_partition_info returns start and offset in 512-byte sectors
but calc_partition_info only adjusted the sectors in the
non-multipath case.
I also did some code tidying, including moving the responsibility for
raising an exception if dmsetup produces no output to
calc_dm_partition_info.
This adds arm64 compatibility for RH installations
The current behaviour for Redhat based installs assumes x86_64
arch for grub. This change queries the target arch and makes
decisions on packages based on that.
vmtest: fix image-sync after maas URL stream rename
Image syncing for vmtest has been failing since MAAS renamed their
daily image stream to stable. In an effort to keep the 'daily' URL
valid the website redirects this to 'stable' path. However the content
was also modified and includes references to files and URLs which have
the 'stable' name included. This broke vmtest image sync which expected
the 'daily' string to be present in filenames and content.
The observable result was that curtin would attempt to find content it
had just *synced* to /srv/images but when searching, it would load up
the cached content files which only referenced the 'daily' stream data
and would indicate that the target file was missing.
This branch moves vmtest to using the 'stable' maas image stream
directly. This value is controllable via an environment variable,
MAAS_IMAGE_STREAM, if set will be used to compose the IMAGE_SRC_URL
and the STREAM_BASE variable which is used to find cached content in
/srv/images/.vmtest_data/ directory.
install_grub: Fix bootloader-id for RHEL systems, must be redhat
In 7310b4fe61465, the port from shell dropped a change where the boot-id
value for Redhat family OSes is the value 'redhat' not the os-release ID
value (which is rhel, on RHEL systems).
Add this change back to install_grub and fix unittests that fail with
'rhel' instead of 'redhat' in os-release values. Hardcode 'redhat'
paths in expected values.