~sbykov/curtin:LP1895021

Last commit made on 2020-09-10
Get this branch:
git clone -b LP1895021 https://git.launchpad.net/~sbykov/curtin
Only Sergey Bykov can upload to this branch. If you are Sergey Bykov please log in for upload directions.

Branch merges

Branch information

Name:
LP1895021
Repository:
lp:~sbykov/curtin

Recent commits

d83a844... by Sergey Bykov

udevadm_info should use maxsplit=1 instead of maxsplit=2

In udevadm_info the below code is called to split output lines:
    key, value = line.split('=', 2)

It can lead to unhandled exception if there are more than one
equal sign in the string as split will return array of three
or more elements. The correct way to get only two elements is
to use maxsplit=1:
    key, value = line.split('=', 1)

And adding tests/unittests/test_udev.py unittest

LP: #1895021

b3e627c... by Paride Legovini

Pin the dependency on pyrsistent

pyrsistent 0.16.0 is the latest version supporting Python < 3.5.
Newer versions make the *py27 tox environments fail.

83944d6... by Michael Hudson-Doyle

restore default of grub.update_nvram to True in install_grub

This was accidentally changed when the grub installation code was
converted from shell to Python.

4cb1035... by Ryan Harper

block: disk_to_byid_path handle missing /dev/disk/by-id directory

If a system has disks without any persistent indentifier (like serial)
then udev won't create any /dev/disk/by-id symlinks. This can happen
in VMs which do not provide serial numbers by default (e.g. virtio).

If /dev/disk/by-id did not exist then os.listdir on that path would
raise a FileNotFoundException and prevented disk_to_byid_path from
returning None (or the correct path).

This is fixed by checking if the target prefix exists and if not
return an empty dict.

LP: #1876258

7a48737... by Ryan Harper

UEFI: Handle missing BootCurrent entry when reordering UEFI entries

Curtin typically reorders UEFI boot entries to place the currently
booted entry at the front of the list after install. In some cases a
system UEFI may not present a BootCurrent entry and curtin will not
perform any reordering leaving a node to boot from the newly
installed entry. For MAAS deployments, this causes issues as MAAS
expects to retain control over the node via PXE booting.

Curtin will attempt to reorder the boot menu when BootCurrent is
missing (or when forced via curtin config option) by placing all
network boot entries first followed by the entry curtin installed
and appending all other entries afterward. The feature,
UEFI_REORDER_FALLBACK_SUPPORT, is enabled by default. Users may
disable both reordering and fallback support.

- unittest/helpers.py: Add with_logs support for CiTestCase
- docs: document grub: reorder_uefi and grub:
  reorder_uefi_force_fallback config options.

LP: #1789650

d18bb85... by Paride Legovini

dasd: fix off-by-one device_id devno range check

devno can be in the 0-0xffff range, inclusive.

1304d3e... by Ryan Harper

curthooks: uefi_find_grub_device_ids handle type:mount without path

When scanning a curtin storage config for efi mount entries we failed
to handle the case where an entry does not contain the 'path' key.
Curtin storage config type:mount does not require a 'path' element.
Change to using .get('path') when looking for efi mount path.

LP: #1892242

0f6a06b... by Ryan Harper

netplan openvswitch yaml changed

netplan's openvswitch yaml format has changed and now openvswitch
is not a top-level type but a subkey under various top-level keys.
This change will allow for top-level or subkey matching and retains
the check on renderer type (whether netplan supports that for
openvswitch or not; it's used for NetworkManager, networkd).

LP: #1891608

5b13f4e... by Ryan Harper

tools/curtainer: do not wait for snapd.seeded.service

The curtainer tool is used in CI and other places to extract a certain
curtin source from the archive and then is used to pack/unpack the
curtin code in the correct environment. We have no need or use of
snapd in this container which currently blocks for longer than
curtainer waits for the system to boot due to waiting for snaps to
download and install.

820f460... by Ryan Harper

tools/curtainer: enable using ubuntu-minimal images

Ubuntu Minimal images are much smaller and run fewer things at
boot so they're ideal for the curtainer bootstrap environment for
extracting curtin source. The minimal image does not have the
'add-apt-repository' command present so write out the daily ppa
source list file and import the PPA gpg key into apt.