diskimage-builder/diskimage_builder/block_device
Ian Wienand 6c394f5746 Pass all blockdevices to bootloader
Currently we only export "image-block-device" which is the loopback
device (/dev/loopX) for the underlying image.  This is the device we
install grub to (from inside the chroot ...)

This is ok for x86, but is insufficient for some platforms like PPC
which have a separate boot partition.  They do not want to install to
the loop device, but do things like dd special ELF files into special
boot partitions.

The first problem seems to be that in level1/partitioning.py we have a
whole bunch of different paths that either call partprobe on the loop
device, or kpartx.  We have _all_part_devices_exist() that gates the
kpartx for unknown reasons.  We have detach_loopback() that does not
seem to remove losetup created devices.  I don't think this does
cleanup if it uses kpartx correctly.  It is extremley unclear what's
going to be mapped where.

This moves to us *only* using kpartx to map the partitions of the loop
device.  We will *not* call partprobe and create the /dev/loopXpN
devices and will only have the devicemapper nodes kpartx creates.
This seems to be best.  Cleanup happens inside partitioning.py.
practice.  Deeper thinking about this, and more cleanup of the
variables will be welcome.

This adds "image-block-devices" (note the extra "s") which exports all
the block devices with name and path.  This is in a string format that
can be eval'd to an array (you can't export arrays).

This is then used in a follow-on
(I0918e8df8797d6dbabf7af618989ab7f79ee9580) to pick the right
partition on PPC.

Change-Id: If8e33106b4104da2d56d7941ce96ffcb014907bc
2017-06-08 17:14:22 +10:00
..
level0 Move rollback into NodeBase object 2017-06-08 17:14:20 +10:00
level1 Pass all blockdevices to bootloader 2017-06-08 17:14:22 +10:00
level2 Move rollback into NodeBase object 2017-06-08 17:14:20 +10:00
level3 Move rollback into NodeBase object 2017-06-08 17:14:20 +10:00
level4 Move rollback into NodeBase object 2017-06-08 17:14:20 +10:00
tests Move rollback into NodeBase object 2017-06-08 17:14:20 +10:00
__init__.py Clear __init__.py from cmd move 2017-05-11 18:52:14 +10:00
blockdevice.py Pass all blockdevices to bootloader 2017-06-08 17:14:22 +10:00
cmd.py Refactor: use lazy logging 2017-05-30 14:39:58 +10:00
config.py Add state to NodeBase class 2017-06-08 17:13:26 +10:00
exception.py Move exception to it's own file (again) 2017-05-20 06:44:39 +00:00
plugin.py Move rollback into NodeBase object 2017-06-08 17:14:20 +10:00
utils.py Refactor mount-point sorting 2017-05-31 11:05:50 +10:00