~raharper/curtin:fix/uefi-remove-duplicate-entries

Last commit made on 2020-03-04
Get this branch:
git clone -b fix/uefi-remove-duplicate-entries https://git.launchpad.net/~raharper/curtin
Only Ryan Harper can upload to this branch. If you are Ryan Harper please log in for upload directions.

Branch merges

Branch information

Name:
fix/uefi-remove-duplicate-entries
Repository:
lp:~raharper/curtin

Recent commits

77bcff3... by Ryan Harper on 2020-03-04

Add non-duplicate entry with different path to verify we compare both path and name in entries before removing

5a3485b... by Ryan Harper on 2020-02-26

Add unittests and walk entries via sorted key list

cc44a17... by Ryan Harper on 2020-02-20

uefi: refactor efibootmg handling to support removing duplicate entries

When curtin is reusing an existing ESP, it may already contain a previous
ubuntu entry. efibootmgr complains about duplicate labels, but does not
provide a mechanism to remove the duplicate automatically. In curtin
we use our efibootmgr output parser to find duplicates and remove them.

To enable this we need to ensure that 'efivarfs' is mounted inside the
target. In ChrootableTarget we will add the additional mount automatically
if we're running on a uefi system.

This branch also refactors use of ChrootableTarget context manager to
minimize the number of chroot calls (which include 4 mounts and unmounts).

LP: #1864257

d3cac6f... by Ryan Harper on 2020-03-03

tox: pin setuptools < 45 to allow installing py27 in virtenv

setuptools release 45 broke everyone who installed py27[1]. Fix
this by using the previous release.

1. https://github.com/pypa/setuptools/issues/1963

437caaa... by Ryan Harper on 2020-02-26

block-discover: add dasd parser and emit dasd storage config

Probert now includes a 'dasd' element in the probe data.
If present, block-discover will now parse this data and
emit type:dasd elements in the rendered storage config.

LP: #1862849

82f23e3... by Ryan Harper on 2020-02-14

install-grub: refactor uefi partition/disk searching

Refactor the code used to determine the partition and disk where the
ESP resides. There were a few issues:

 - Disks and partitions are of type 'block' which requires the use of
   [ -b ] or [ -e ]; [ -f ] returns false for block devices.
 - The use of lsblk -on pkname exposed a bug in util-linux where pkname
   did not return a value.

This branch adds additional debug logging and safety checks for any
calculated value and fails on empty values. We replace use of lsblk
with use of sysfs to calculate the parent disk of the partition. Add
a vmtest to verify the path where we use efibootmgr to create an entry.

LP: #1862846

2fa55b9... by Paul Tobias on 2020-02-11

doc: update Canonical contributors URL

The http://www.canonical.com/contributors link shows a 404
error. Replace it with the current Canonical contributor
license agreement page.

4d468ef... by Ryan Harper on 2020-02-07

block-discover: detect additional "extended" partition types in MBR

Surprise! There are additional encoding values for "extended" partitions
in MBRs. Add the 3 additional values (0x5, 0x85, 0xC5) to the mapping
table and add unittest using provided probe data.

LP: #1861251

42963bc... by Ryan Harper on 2020-02-07

vmtests: skip focal bcache tests due to kernel bug

073bc43... by Ryan Harper on 2020-02-07

net/deps.py: detect openvswitch cfg and install openvswitch packages

Scan the provided network-config and if openvswitch keywords are
present then install the require openvswitch packages into the
target system.

- Enable both version detections, top-level openvswitch and as
  renderer
- Also detect renderer values and install the required renderer
- Add vmtest to verify package is installed