curtin-dev team mailing list archive
-
curtin-dev team
-
Mailing list archive
-
Message #00777
[Merge] ~gyurco/curtin:vroc into curtin:master
György Szombathelyi has proposed merging ~gyurco/curtin:vroc into curtin:master.
Commit message:
Support imsm external metadata RAID containers LP: #1893661
Requested reviews:
curtin developers (curtin-dev)
For more details, see:
https://code.launchpad.net/~gyurco/curtin/+git/curtin/+merge/390234
--
Your team curtin developers is requested to review the proposed merge of ~gyurco/curtin:vroc into curtin:master.
diff --git a/Makefile b/Makefile
index 187132c..b247d9a 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,11 @@ ifeq ($(COVERAGE), 1)
endif
CURTIN_VMTEST_IMAGE_SYNC ?= False
export CURTIN_VMTEST_IMAGE_SYNC
+<<<<<<< Makefile
noseopts ?= -vv
+=======
+noseopts ?= -vv --nologcapture
+>>>>>>> Makefile
pylintopts ?= --rcfile=pylintrc --errors-only
target_dirs ?= curtin tests tools
diff --git a/curtin/__init__.py b/curtin/__init__.py
index 092020b..a12381f 100644
--- a/curtin/__init__.py
+++ b/curtin/__init__.py
@@ -34,8 +34,11 @@ FEATURES = [
'APT_CONFIG_V1',
# has version module
'HAS_VERSION_MODULE',
+<<<<<<< curtin/__init__.py
# uefi_reoder has fallback support if BootCurrent is missing
'UEFI_REORDER_FALLBACK_SUPPORT',
+=======
+>>>>>>> curtin/__init__.py
]
__version__ = "20.1"
diff --git a/curtin/block/__init__.py b/curtin/block/__init__.py
index 10b8b9e..782cb4c 100644
--- a/curtin/block/__init__.py
+++ b/curtin/block/__init__.py
@@ -853,8 +853,11 @@ def _get_dev_disk_by_prefix(prefix):
'/dev/sda1': '/dev/disk/<prefix>/virtio-aaaa-part1',
}
"""
+<<<<<<< curtin/block/__init__.py
if not os.path.exists(prefix):
return {}
+=======
+>>>>>>> curtin/block/__init__.py
return {
os.path.realpath(bypfx): bypfx
for bypfx in [os.path.join(prefix, path)
diff --git a/curtin/block/clear_holders.py b/curtin/block/clear_holders.py
index 116ee81..b124306 100644
--- a/curtin/block/clear_holders.py
+++ b/curtin/block/clear_holders.py
@@ -165,11 +165,25 @@ def shutdown_mdadm(device):
"""
blockdev = block.sysfs_to_devpath(device)
+<<<<<<< curtin/block/clear_holders.py
LOG.info('Discovering raid devices and spares for %s', device)
md_devs = (
mdadm.md_get_devices_list(blockdev) +
mdadm.md_get_spares_list(blockdev))
+=======
+ query = mdadm.mdadm_query_detail(blockdev)
+
+ if query.get('MD_CONTAINER'):
+ LOG.info('Array is in a container, skip discovering raid devices and spares for %s', device)
+ md_devs = ()
+ else:
+ LOG.info('Discovering raid devices and spares for %s', device)
+ md_devs = (
+ mdadm.md_get_devices_list(blockdev) +
+ mdadm.md_get_spares_list(blockdev))
+
+>>>>>>> curtin/block/clear_holders.py
mdadm.set_sync_action(blockdev, action="idle")
mdadm.set_sync_action(blockdev, action="frozen")
@@ -186,7 +200,11 @@ def shutdown_mdadm(device):
LOG.debug('Non-fatal error writing to array device %s, '
'proceeding with shutdown: %s', blockdev, e)
+<<<<<<< curtin/block/clear_holders.py
LOG.info('Removing raid array members: %s', md_devs)
+=======
+ LOG.info('Removing raid array members: ', md_devs)
+>>>>>>> curtin/block/clear_holders.py
for mddev in md_devs:
try:
mdadm.fail_device(blockdev, mddev)
@@ -198,7 +216,11 @@ def shutdown_mdadm(device):
LOG.debug('using mdadm.mdadm_stop on dev: %s', blockdev)
mdadm.mdadm_stop(blockdev)
+<<<<<<< curtin/block/clear_holders.py
LOG.debug('Wiping mdadm member devices: %s' % md_devs)
+=======
+ LOG.debug('Wiping mdadm member devices: ', md_devs)
+>>>>>>> curtin/block/clear_holders.py
for mddev in md_devs:
mdadm.zero_device(mddev, force=True)
diff --git a/curtin/block/dasd.py b/curtin/block/dasd.py
index b7008f6..8269321 100644
--- a/curtin/block/dasd.py
+++ b/curtin/block/dasd.py
@@ -269,9 +269,15 @@ def _valid_device_id(device_id):
if not (0 <= int(dsn, 16) < 256):
raise ValueError("device_id invalid: dsn not in 0-255: '%s'" % dsn)
+<<<<<<< curtin/block/dasd.py
if not (0 <= int(dev.lower(), 16) <= 65535):
raise ValueError(
"device_id invalid: devno not in 0-0xffff: '%s'" % dev)
+=======
+ if not (0 <= int(dev.lower(), 16) < 65535):
+ raise ValueError(
+ "device_id invalid: devno not in 0-0x10000: '%s'" % dev)
+>>>>>>> curtin/block/dasd.py
return True
diff --git a/curtin/block/mdadm.py b/curtin/block/mdadm.py
index 32b467c..5ffb8fb 100644
--- a/curtin/block/mdadm.py
+++ b/curtin/block/mdadm.py
@@ -26,6 +26,10 @@ from curtin.log import LOG
NOSPARE_RAID_LEVELS = [
'linear', 'raid0', '0', 0,
+<<<<<<< curtin/block/mdadm.py
+=======
+ 'container'
+>>>>>>> curtin/block/mdadm.py
]
SPARE_RAID_LEVELS = [
@@ -145,7 +149,11 @@ def mdadm_assemble(md_devname=None, devices=[], spares=[], scan=False,
udev.udevadm_settle()
+<<<<<<< curtin/block/mdadm.py
def mdadm_create(md_devname, raidlevel, devices, spares=None, md_name="",
+=======
+def mdadm_create(md_devname, raidlevel, devices, spares=None, container_devcnt=None, md_name="",
+>>>>>>> curtin/block/mdadm.py
metadata=None):
LOG.debug('mdadm_create: ' +
'md_name=%s raidlevel=%s ' % (md_devname, raidlevel) +
@@ -159,8 +167,14 @@ def mdadm_create(md_devname, raidlevel, devices, spares=None, md_name="",
raise ValueError('Invalid raidlevel: [{}]'.format(raidlevel))
min_devices = md_minimum_devices(raidlevel)
+<<<<<<< curtin/block/mdadm.py
if len(devices) < min_devices:
err = 'Not enough devices for raidlevel: ' + str(raidlevel)
+=======
+ devcnt = len(devices) if not container_devcnt else container_devcnt
+ if devcnt < min_devices:
+ err = 'Not enough devices (' + str(devcnt) + ') for raidlevel: ' + str(raidlevel)
+>>>>>>> curtin/block/mdadm.py
err += ' minimum devices needed: ' + str(min_devices)
raise ValueError(err)
@@ -171,19 +185,40 @@ def mdadm_create(md_devname, raidlevel, devices, spares=None, md_name="",
(hostname, _err) = util.subp(["hostname", "-s"], rcs=[0], capture=True)
cmd = ["mdadm", "--create", md_devname, "--run",
+<<<<<<< curtin/block/mdadm.py
"--metadata=%s" % metadata,
"--homehost=%s" % hostname.strip(),
"--level=%s" % raidlevel,
"--raid-devices=%s" % len(devices)]
+=======
+ "--homehost=%s" % hostname.strip(),
+ "--raid-devices=%s" % devcnt]
+
+ if raidlevel == 'container' or not container_devcnt:
+ cmd.append("--metadata=%s" % metadata)
+ if raidlevel != 'container':
+ cmd.append("--level=%s" % raidlevel)
+
+>>>>>>> curtin/block/mdadm.py
if md_name:
cmd.append("--name=%s" % md_name)
for device in devices:
+<<<<<<< curtin/block/mdadm.py
holders = get_holders(device)
if len(holders) > 0:
LOG.warning('Detected holders during mdadm creation: %s', holders)
raise OSError('Failed to remove holders from %s', device)
zero_device(device)
+=======
+ if not container_devcnt:
+ # clear non-container devices
+ holders = get_holders(device)
+ if len(holders) > 0:
+ LOG.warning('Detected holders during mdadm creation: %s', holders)
+ raise OSError('Failed to remove holders from %s', device)
+ zero_device(device)
+>>>>>>> curtin/block/mdadm.py
cmd.append(device)
if spares:
@@ -508,7 +543,11 @@ def md_sysfs_attr(md_devname, attrname):
def md_raidlevel_short(raidlevel):
+<<<<<<< curtin/block/mdadm.py
if isinstance(raidlevel, int) or raidlevel in ['linear', 'stripe']:
+=======
+ if isinstance(raidlevel, int) or raidlevel in ['linear', 'stripe', 'container']:
+>>>>>>> curtin/block/mdadm.py
return raidlevel
return int(raidlevel.replace('raid', ''))
@@ -517,7 +556,11 @@ def md_raidlevel_short(raidlevel):
def md_minimum_devices(raidlevel):
''' return the minimum number of devices for a given raid level '''
rl = md_raidlevel_short(raidlevel)
+<<<<<<< curtin/block/mdadm.py
if rl in [0, 1, 'linear', 'stripe']:
+=======
+ if rl in [0, 1, 'linear', 'stripe', 'container']:
+>>>>>>> curtin/block/mdadm.py
return 2
if rl in [5]:
return 3
@@ -603,6 +646,14 @@ def __mdadm_detail_to_dict(input):
# start after the first newline
remainder = input[input.find('\n')+1:]
+<<<<<<< curtin/block/mdadm.py
+=======
+ # keep only the first section (imsm)
+ arraysection = remainder.find('\n[');
+ if arraysection != -1:
+ remainder = remainder[:arraysection]
+
+>>>>>>> curtin/block/mdadm.py
# FIXME: probably could do a better regex to match the LHS which
# has one, two or three words
rem = r'(\w+|\w+\ \w+|\w+\ \w+\ \w+)\ \:\ ([a-zA-Z0-9\-\.,: \(\)=\']+)'
diff --git a/curtin/commands/block_meta.py b/curtin/commands/block_meta.py
index dee73b1..f599a17 100644
--- a/curtin/commands/block_meta.py
+++ b/curtin/commands/block_meta.py
@@ -1486,6 +1486,7 @@ def raid_handler(info, storage_config):
raidlevel = info.get('raidlevel')
spare_devices = info.get('spare_devices')
md_devname = block.md_path(info.get('name'))
+<<<<<<< curtin/commands/block_meta.py
preserve = config.value_as_boolean(info.get('preserve'))
if not devices:
raise ValueError("devices for raid must be specified")
@@ -1493,14 +1494,41 @@ def raid_handler(info, storage_config):
'raid4', 4, 'raid5', 5, 'raid6', 6, 'raid10', 10]:
raise ValueError("invalid raidlevel '%s'" % raidlevel)
if raidlevel in ['linear', 'raid0', 0, 'stripe']:
+=======
+ container = info.get('container')
+ metadata = info.get('metadata')
+ preserve = config.value_as_boolean(info.get('preserve'))
+ if not devices and not container:
+ raise ValueError("devices or container for raid must be specified")
+ if raidlevel not in ['linear', 'raid0', 0, 'stripe', 'raid1', 1, 'mirror',
+ 'raid4', 4, 'raid5', 5, 'raid6', 6, 'raid10', 10, 'container']:
+ raise ValueError("invalid raidlevel '%s'" % raidlevel)
+ if raidlevel in ['linear', 'raid0', 0, 'stripe', 'container']:
+>>>>>>> curtin/commands/block_meta.py
if spare_devices:
raise ValueError("spareunsupported in raidlevel '%s'" % raidlevel)
LOG.debug('raid: cfg: %s', util.json_dumps(info))
+<<<<<<< curtin/commands/block_meta.py
device_paths = list(get_path_to_storage_volume(dev, storage_config) for
dev in devices)
LOG.debug('raid: device path mapping: %s',
list(zip(devices, device_paths)))
+=======
+
+ devcnt = None
+ if container:
+ parent = storage_config.get(container)
+ if not parent:
+ raise ValueError("container with id '%s' not found" % parant)
+ device_paths = [parent.get('name')]
+ devcnt = len(parent.get('devices'))
+ else:
+ device_paths = list(get_path_to_storage_volume(dev, storage_config) for
+ dev in devices)
+ LOG.debug('raid: device path mapping: {}'.format(
+ zip(devices, device_paths)))
+>>>>>>> curtin/commands/block_meta.py
spare_device_paths = []
if spare_devices:
@@ -1517,8 +1545,13 @@ def raid_handler(info, storage_config):
if create_raid:
mdadm.mdadm_create(md_devname, raidlevel,
+<<<<<<< curtin/commands/block_meta.py
device_paths, spare_device_paths,
info.get('mdname', ''))
+=======
+ device_paths, spare_device_paths, devcnt,
+ info.get('mdname', ''), metadata)
+>>>>>>> curtin/commands/block_meta.py
wipe_mode = info.get('wipe')
if wipe_mode:
diff --git a/curtin/commands/curthooks.py b/curtin/commands/curthooks.py
index 92230fc..20b4e7d 100644
--- a/curtin/commands/curthooks.py
+++ b/curtin/commands/curthooks.py
@@ -85,8 +85,11 @@ do_initrd = yes
link_in_boot = {inboot}
"""
+<<<<<<< curtin/commands/curthooks.py
UEFI_BOOT_ENTRY_IS_NETWORK = r'.*(Network|PXE|NIC|Ethernet|LAN|IP4|IP6)+.*'
+=======
+>>>>>>> curtin/commands/curthooks.py
def do_apt_config(cfg, target):
cfg = apt_config.translate_old_apt_features(cfg)
@@ -413,7 +416,10 @@ def install_kernel(cfg, target):
def uefi_remove_old_loaders(grubcfg, target):
"""Removes the old UEFI loaders from efibootmgr."""
efi_output = util.get_efibootmgr(target)
+<<<<<<< curtin/commands/curthooks.py
LOG.debug('UEFI remove old olders efi output:\n%s', efi_output)
+=======
+>>>>>>> curtin/commands/curthooks.py
current_uefi_boot = efi_output.get('current', None)
old_efi_entries = {
entry: info
@@ -440,6 +446,7 @@ def uefi_remove_old_loaders(grubcfg, target):
"should be removed.", info['name'])
+<<<<<<< curtin/commands/curthooks.py
def uefi_boot_entry_is_network(boot_entry_name):
"""
Return boolean if boot entry name looks like a known network entry.
@@ -504,11 +511,15 @@ def _reorder_new_entry(boot_order, efi_output, efi_orig=None, variant=None):
def uefi_reorder_loaders(grubcfg, target, efi_orig=None, variant=None):
+=======
+def uefi_reorder_loaders(grubcfg, target):
+>>>>>>> curtin/commands/curthooks.py
"""Reorders the UEFI BootOrder to place BootCurrent first.
The specifically doesn't try to do to much. The order in which grub places
a new EFI loader is up to grub. This only moves the BootCurrent to the
front of the BootOrder.
+<<<<<<< curtin/commands/curthooks.py
In some systems, BootCurrent may not be set/present. In this case
curtin will attempt to place the new boot entry created when grub
@@ -524,6 +535,14 @@ def uefi_reorder_loaders(grubcfg, target, efi_orig=None, variant=None):
force_fallback_reorder = config.value_as_boolean(
grubcfg.get('reorder_uefi_force_fallback', False))
if currently_booted and force_fallback_reorder is False:
+=======
+ """
+ if grubcfg.get('reorder_uefi', True):
+ efi_output = util.get_efibootmgr(target=target)
+ currently_booted = efi_output.get('current', None)
+ boot_order = efi_output.get('order', [])
+ if currently_booted:
+>>>>>>> curtin/commands/curthooks.py
if currently_booted in boot_order:
boot_order.remove(currently_booted)
boot_order = [currently_booted] + boot_order
@@ -531,6 +550,7 @@ def uefi_reorder_loaders(grubcfg, target, efi_orig=None, variant=None):
LOG.debug(
"Setting currently booted %s as the first "
"UEFI loader.", currently_booted)
+<<<<<<< curtin/commands/curthooks.py
else:
reason = (
"config 'reorder_uefi_force_fallback' is True" if
@@ -548,6 +568,8 @@ def uefi_reorder_loaders(grubcfg, target, efi_orig=None, variant=None):
else:
LOG.debug("UEFI No changes to boot order.")
if new_boot_order:
+=======
+>>>>>>> curtin/commands/curthooks.py
LOG.debug(
"New UEFI boot order: %s", new_boot_order)
with util.ChrootableTarget(target) as in_chroot:
@@ -684,7 +706,11 @@ def uefi_find_grub_device_ids(sconfig):
return grub_device_ids
+<<<<<<< curtin/commands/curthooks.py
def setup_grub(cfg, target, osfamily=DISTROS.debian, variant=None):
+=======
+def setup_grub(cfg, target, osfamily=DISTROS.debian):
+>>>>>>> curtin/commands/curthooks.py
# target is the path to the mounted filesystem
# FIXME: these methods need moving to curtin.block
@@ -784,14 +810,22 @@ def setup_grub(cfg, target, osfamily=DISTROS.debian, variant=None):
update_nvram = grubcfg.get('update_nvram', True)
if uefi_bootable and update_nvram:
+<<<<<<< curtin/commands/curthooks.py
efi_orig_output = util.get_efibootmgr(target)
+=======
+>>>>>>> curtin/commands/curthooks.py
uefi_remove_old_loaders(grubcfg, target)
install_grub(instdevs, target, uefi=uefi_bootable, grubcfg=grubcfg)
if uefi_bootable and update_nvram:
+<<<<<<< curtin/commands/curthooks.py
uefi_reorder_loaders(grubcfg, target, efi_orig_output, variant)
uefi_remove_duplicate_entries(grubcfg, target)
+=======
+ uefi_remove_duplicate_entries(grubcfg, target)
+ uefi_reorder_loaders(grubcfg, target)
+>>>>>>> curtin/commands/curthooks.py
def update_initramfs(target=None, all_kernels=False):
@@ -1827,8 +1861,12 @@ def builtin_curthooks(cfg, target, state):
name=stack_prefix + '/install-grub',
reporting_enabled=True, level="INFO",
description="installing grub to target devices"):
+<<<<<<< curtin/commands/curthooks.py
setup_grub(cfg, target, osfamily=osfamily,
variant=distro_info.variant)
+=======
+ setup_grub(cfg, target, osfamily=osfamily)
+>>>>>>> curtin/commands/curthooks.py
def curthooks(args):
diff --git a/curtin/commands/install_grub.py b/curtin/commands/install_grub.py
index 5f8311f..3317474 100644
--- a/curtin/commands/install_grub.py
+++ b/curtin/commands/install_grub.py
@@ -346,7 +346,11 @@ def install_grub(devices, target, uefi=None, grubcfg=None):
LOG.debug("installing grub to target=%s devices=%s [replace_defaults=%s]",
target, devices, grubcfg.get('replace_default'))
+<<<<<<< curtin/commands/install_grub.py
update_nvram = config.value_as_boolean(grubcfg.get('update_nvram', True))
+=======
+ update_nvram = config.value_as_boolean(grubcfg.get('update_nvram', False))
+>>>>>>> curtin/commands/install_grub.py
distroinfo = distro.get_distroinfo(target=target)
target_arch = distro.get_architecture(target=target)
rhel_ver = (distro.rpm_get_dist_id(target)
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..ccf4119
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,5 @@
+To pull a new upstream snapshot, given lp:curtin in ../trunk:
+
+ ./debian/new-upstream-snapshot ../trunk
+
+Then, edit changelog and look at entries in 'new-changes.log'.
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..d21b3ba
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,1339 @@
+curtin (20.1-20-g1304d3ea-0ubuntu1) groovy; urgency=medium
+
+ * New upstream snapshot.
+ - curthooks: uefi_find_grub_device_ids handle type:mount without path
+ (LP: #1892242)
+ - netplan openvswitch yaml changed (LP: #1891608)
+ - tools/curtainer: do not wait for snapd.seeded.service
+ - tools/curtainer: enable using ubuntu-minimal images
+ - vmtests: add Groovy [Paride Legovini]
+ - Drop the Eoan vmtests (EOL) [Paride Legovini]
+ - tools: rename remove-vmtest-release to vmtest-remove-release
+ - Snooze the tests failing because of LP: #1861941 for two more months
+ [Paride Legovini]
+ - LP: #1671951 is Fix Released => Drop the PPA [Paride Legovini]
+ - swaps: handle swapfiles on btrfs (LP: #1884161)
+ - curtainer: fail is masking of zfs-mount or zfs-share fails
+ [Paride Legovini]
+ - multipath: handle multipath nvme name fields correctly (LP: #1878041)
+ - curtainer: mask the zfs-mount and zfs-share services [Paride Legovini]
+ - tools/jenkins-runner: shuffle test-cases to randomize load
+ [Paride Legovini]
+ - Add Trusty/UEFI/HWE-X vmtest, drop realpath add, drop shell code
+ - LP: #1881977 - Install realpath on Trusty UEFI. [Lee Trager]
+ - vmtests: fix PreservePartitionWipeVg storage config
+ - Fix mdraid name creates broken configuration
+ [James Falcon] (LP: #1803933)
+ - vmtests: update skiptests
+ - vmtest: allow installed centos images to reboot (LP: #1881011)
+
+ -- Ryan Harper <rharper@xxxxxxxxxxx> Thu, 20 Aug 2020 09:10:33 -0500
+
+curtin (20.1-0ubuntu1) groovy; urgency=medium
+
+ * New upstream release.
+ - Release 20.1 (LP: #1880741)
+ - Handle multiple separators which were found in TestAllindata vmtest
+ - verify_ptable_flag: dos primary partitions use ptable_uuid map for flag
+ (LP: #1878890)
+ - net_meta: add disabled mode to skip writing any network config
+ [Lucas Moura]
+ - vmtest: trigger guest panic to fail fast
+ - Replace grub-shell-helper with install_grub command
+ - vmtest-sync-images: update the URL of the maas streams [Paride Legovini]
+ - Replace references to old team manager with new team manager
+ [James Falcon]
+ - tox: pin flake8 to version and add a tip-flake8 environment
+ [Paride Legovini]
+ - Fix flake8 E741 warning [Lucas Moura]
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Tue, 26 May 2020 16:31:39 -0500
+
+curtin (19.3-68-g6cbdc02d-0ubuntu1) groovy; urgency=medium
+
+ * New upstream snapshot.
+ - Makefile: make adjustments to call lint/style tools via python module
+ - block-discover: ignore invalid id_serial/id_wwn values (LP: #1876848)
+ - Fix handing of reusing msdos partitions and flags (LP: #1875903)
+ - block.detect_multipath: ignore fake "devices" from /proc/mounts
+ [Michael Hudson-Doyle] (LP: #1876626)
+ - udev: use shlex.quote when shlex.split errors on shell-escape chars
+ (LP: #1875085)
+ - lvm: don't use vgscan --mknodes
+ - vmtest: rsync don't cross filesystem boundaries when copying
+ (LP: #1873909)
+ - vmtest: basic/basic_scsi adjust collect/tests for unstable device names
+ (LP: #1874100)
+ - Add unittests for partition_handler calc_[dm]_part_info and kpartx paths
+ - multipath: attempt to enforce /dev/mapper/mpath files are symlinks
+ - block-meta: device mapper partitions may be block devices not links
+ - Default to dm_name being id if empty earlier in dm_crypt_handler()
+ [Łukasz 'sil2100' Zemczak] (LP: #1874243)
+ - storage: correct declared schema draft version for storage schema
+ - test_clear_holders: add missing zfs mock
+ - Mock out zfs_supported to prevent attempting to load kernel modules
+ - block-meta: skip wipe device paths if not present (LP: #1869075)
+ - unittest: do not allow util.subp by default (LP: #1873913)
+ - curthooks: support multiple ESP on UEFI bootable systems
+ - block-discover: handle missing multipath 'path' data, use DM_NAME
+ (LP: #1873728)
+ - lvm-over-multipath: handle lookups of multipath members (LP: #1869075)
+ - block-meta: don't filter preserve=true devices, select by wipe
+ (LP: #1837214)
+ - vmtest: basic use dname to lookup disk with multiple partitions
+ - block-meta: Don't check the ptable type of a disk with no ptable
+ - curthooks: always use ChrootableTarget.subp when calling efibootmgr
+ - storage: enable and use multipath during storage configuration
+ (LP: #1869075)
+ - block-discover: detect nvme multipath devices (LP: #1868109)
+ - clear-holders: Tolerate vgchange errors during discovery (LP: #1870037)
+ - block-meta: handle preserve with vtoc ptable (LP: #1871158)
+ - vmtest: use -partition file for TestReuseRAIDMemberPartition class
+ - format: extra_options should be a list type
+ - tox: add pyflakes to the default tox run [Paride Legovini]
+ - storage_config: Add 'extra_options' parameter to allow custom mkfs
+ (LP: #1869069)
+ - Add support for installing Ubuntu Core 20 images
+ - tox.ini: Fix issues with newer tox on focal
+ - vmtest: Fix test_basic.py to run on s390x (LP: #1866663)
+ - vmtest: use util.load_file for loading collect files
+ - block-meta: refactor storage_config preserve and wipe settings
+ (LP: #1837214)
+ - block-discover: skip 'multipath' key in blockdevice if mpath name is None
+ - tox: all py27 environments should use the base py27 deps
+ - uefi: refactor efibootmg handling to support removing duplicate entries
+ (LP: #1864257)
+ - tox: pin setuptools < 45 to allow installing py27 in virtenv
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 07 May 2020 15:43:37 -0500
+
+curtin (19.3-27-g437caaa9-0ubuntu1) focal; urgency=medium
+
+ * New upstream snapshot.
+ - block-discover: add dasd parser and emit dasd storage config
+ (LP: #1862849)
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 27 Feb 2020 13:11:46 -0600
+
+curtin (19.3-26-g82f23e3d-0ubuntu1) focal; urgency=medium
+
+ * New upstream snapshot.
+ - install-grub: refactor uefi partition/disk searching (LP: #1862846)
+ - doc: update Canonical contributors URL [Paul Tobias]
+ - block-discover: detect additional "extended" partition types in MBR
+ (LP: #1861251)
+ - vmtests: skip focal bcache tests due to kernel bug
+ - net/deps.py: detect openvswitch cfg and install openvswitch packages
+ - vmtest: collection of vmtest related fixes to make things triple green
+ - clear-holders: umap the parent mpath to wipe the underlying partitions
+ - vmtests: bump fixby date out and fix false positive when date passes
+ (LP: #1855148)
+ - vmtests: drop disco tests using a tool to automate the process
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 13 Feb 2020 21:08:59 -0600
+
+curtin (19.3-17-g50ffca46-0ubuntu1) focal; urgency=medium
+
+ * New upstream snapshot.
+ - clear-holders: ensure we wipe device even if multipath enabled not not mp
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 30 Jan 2020 12:52:02 -0600
+
+curtin (19.3-16-g941c43ff-0ubuntu1) focal; urgency=medium
+
+ * New upstream snapshot.
+ - block_meta: use reliable fs_spec entries for block devices (LP: #1851899)
+ - multipath: handle removal of multipath partitions correctly
+ (LP: #1857042)
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 30 Jan 2020 12:49:27 -0600
+
+curtin (19.3-14-ga45a54ca-0ubuntu1) focal; urgency=medium
+
+ * New upstream snapshot.
+ - vmtests: skip Focal deploying Centos70 ScsiBasic
+ - vmtests: fix network mtu tests, separating ifupdown vs networkd
+ - doc: Fix kexec documentation bug. [Mike Pontillo]
+ - vmtests: Add Focal Fossa
+ - centos: Add centos/rhel 8 support, enable UEFI Secure Boot
+ [Lee Trager] (LP: #1788088)
+ - Bump XFS /boot skip-by date out a while
+ - vmtest: Fix a missing unset of OUTPUT_FSTAB
+ - curthooks: handle s390x/aarch64 kernel install hooks (LP: #1856038)
+ - clear-holders: handle arbitrary order of devices to clear
+ - curthooks: only run update-initramfs in target once (LP: #1842264)
+ - test_network_mtu: bump fixby date for MTU tests
+ - block-discover: don't skip partitions on virtual devices (LP: #1853018)
+ - block-discover: handle partial probe data (LP: #1852351)
+ - Fix parsing of squashfs: uri prefix for installation sources
+ [Daniel Fox] (LP: #1851271)
+ - Release 19.3 (LP: #1851390)
+ - Update HACKING.rst with Josh Powers contact info.
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 16 Jan 2020 15:17:41 -0600
+
+curtin (19.2-44-g8e618b34-0ubuntu1) focal; urgency=medium
+
+ * New upstream snapshot.
+ - t/jenkins-runner: replace $EPOCHSECONDS with 'date +%s' [Paride Legovini]
+ - curthooks: skip setup_kernel_img_conf on eoan and newer (LP: #1847257)
+ - block_meta: use lookup for wwn, fix fallback from wwn, serial, path
+ (LP: #1849322)
+ - vmtest: Adjust TestScsiBasic to use dnames to find correct disk
+ - schema: Add ptable value 'unsupported' (LP: #1848535)
+ - tools/xkvm: add -nographic to speed up devopt query
+ - test_block_dasd: fix random_device_id to only generate valid IDs
+ (LP: #1849549)
+ - vmtest: update skip_if_arch message
+ - Add skip_by_date to eoan ipv6 vlan test
+ - storage_config: interpret value, not presence, of
+ DM_MULTIPATH_DEVICE_PATH [Michael Hudson-Doyle]
+ - vmtest: Add skip_by_date for test_ip_output on eoan + vlans
+ - block-schema: update raid schema for preserve and metadata
+ - dasd: update partition table value to 'vtoc' (LP: #1847073)
+ - clear-holders: increase the level for devices with holders by one
+ (LP: #1844543)
+ - tests: mock timestamp used in collect-log file creation (LP: #1847138)
+ - ChrootableTarget: mount /run to resolve lvm/mdadm issues which
+ require it.
+ - block-discover: handle multipath disks (LP: #1839915)
+ - Handle partial raid on partitions (LP: #1835091)
+ - install: export zpools if present in the storage-config (LP: #1838278)
+ - block-schema: allow 'mac' as partition table type (LP: #1845611)
+ - jenkins-runner: disable the lockfile timeout by default [Paride Legovini]
+ - curthooks: use correct grub-efi package name on i386 (LP: #1845914)
+ - vmtest-sync-images: remove unused imports [Paride Legovini]
+ - vmtests: use file locking on the images [Paride Legovini]
+ - vmtest: enable arm64 [Paride Legovini]
+ - Make the vmtests/test_basic test suite run on ppc64el [Paride Legovini]
+ - vmtests: separate arch and target_arch in tests [Paride Legovini]
+ - vmtests: new decorator: skip_if_arch [Paride Legovini]
+ - vmtests: increase the VM memory for Bionic
+ - vmtests: Skip Eoan ZFS Root tests until bug fix is complete
+ - Merge branch 'fix_merge_conflicts'
+ - util: add support for 'tbz', 'txz' tar format types to sanitize_source
+ (LP: #1843266)
+ - net: ensure eni helper tools install if given netplan config
+ (LP: #1834751)
+ - d/control: update Depends for new probert package names
+ [Dimitri John Ledkov]
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Fri, 01 Nov 2019 14:06:13 -0500
+
+curtin (19.2-9-g38ce22b0-0ubuntu1) eoan; urgency=medium
+
+ * New upstream snapshot.
+ - vmtest: fix typo in EoanBcacheBasic test name
+ - storage schema: Update nvme wwn regex to allow for nvme wwid format
+ (LP: #1841321)
+ - Allow EUI-64 formatted WWNs for disks and accept NVMe partition naming
+ [Reed Slaby] (LP: #1840524)
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Wed, 28 Aug 2019 11:40:32 -0500
+
+curtin (19.2-6-g88a1a7ec-0ubuntu1) eoan; urgency=medium
+
+ * New upstream snapshot.
+ - Makefile: split Python 2 and Python 3 unittest targets apart
+ * debian/*: drop python-curtin, making the package Python 3-only.
+ * debian/control: drop Build-Depends on linting tools, they haven't been
+ used by the upstream test suite in a while.
+
+ -- Daniel Watkins <oddbloke@xxxxxxxxxx> Wed, 21 Aug 2019 13:29:50 -0400
+
+curtin (19.2-5-g44997e86-0ubuntu1) eoan; urgency=medium
+
+ * New upstream snapshot.
+ - Switch to the new btrfs-progs package name, with btrfs-tools fallback.
+ [Dimitri John Ledkov]
+ - vmtest: bump ram size on Zfs tests for Disco and Eoan
+ - vmtest: drop Cosmic test cases
+ - unittests: mock subp in ChrootableTarget _exit_ test cases
+ - util.ChrootableTarget: skip rename of resolv.conf if not present in
+ target (LP: #1834382)
+
+ -- Daniel Watkins <oddbloke@xxxxxxxxxx> Thu, 15 Aug 2019 12:27:10 -0400
+
+curtin (19.2-0ubuntu1) eoan; urgency=medium
+
+ * New upstream release.
+ - Release 19.2 (LP: #1836951)
+ - storage_config: a missing ID_PART_TABLE_TYPE key means no ptable
+ [Michael Hudson-Doyle]
+ - vmtests: drop skip_by_date decorators for bug 1813228
+ - block: Add opportunistic zkey encryption if supported
+ - vmtests: add support for CURTIN_VMTEST_APT_PROXY
+ - vmtests: add use of CURTIN_VMTEST_ prefixed envvars to image sync
+ - vmtest: dont raise SkipTest in class definition
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Wed, 17 Jul 2019 15:39:33 -0500
+
+curtin (19.1-7-g37a7a0f4-0ubuntu1) eoan; urgency=medium
+
+ * New upstream snapshot.
+ - vmtests: determine block name via dname when verifying volume groups
+ - vmtest: add Centos66/Centos70 FromBionic release and re-add tests
+ - block-discover: add cli/API for exporting existing storage to config
+ - vmtest: refactor test_network code for Eoan
+ - curthoooks: disable daemons while reconfiguring mdadm
+ [Michael Hudson-Doyle] (LP: #1829325.)
+ - mdadm: fix install to existing raid [Michael Hudson-Doyle] (LP: #1830157)
+ - apt_proxy env var set but empty => do not setup any proxy
+ [Paride Legovini]
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx> Wed, 05 Jun 2019 10:45:42 -0600
+
+curtin (19.1-0ubuntu1) eoan; urgency=medium
+
+ * New upstream release.
+ - release 19.1
+ - vmtest: add missing skip_by_date on Eoan test_network_mtu
+ - vmtest: remove skip_by_date on Disco Allindata test
+ - block: support multipath devices in lookup and partition_kname
+ (LP: #1813228)
+ - grub: add grub config to control os_prober,terminal settings in target
+ - vmtest: add eoan tests [Paride Legovini]
+ - vmtest: add dependency on python3-jsonschema [Paride Legovini]
+ - Pylint compatibility with Python 3.7 [Paride Legovini] (LP: #1828229)
+ - vmtest: disable disco multipath test
+ - vmtests: bump network mtu tests out a bit
+ - Fix up yaml.load warnings
+ - vmtest: disable trusty, it's dead jim
+
+ -- Daniel Watkins <oddbloke@xxxxxxxxxx> Wed, 22 May 2019 10:26:52 -0400
+
+curtin (18.2-26-gd8e45d79-0ubuntu1) eoan; urgency=medium
+
+ * New upstream snapshot.
+ - vmtest: reenable UEFI 4k tests, which got dropped when fixing
+ subclassing.
+ - vmtests: Add test_kernel_img_conf stub for PsuedoVMBaseClass
+ - curthooks: chzdev_import must encode data if provided (LP: #1825007)
+ - vmtest: test for kernel-img conf on ubuntu only
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Tue, 23 Apr 2019 09:32:56 -0500
+
+curtin (18.2-22-g08bf6ff7-0ubuntu1) disco; urgency=medium
+
+ * New upstream snapshot.
+ - Setup kernel-img.conf like base-installer/live-installer did.
+ [Dimitri John Ledkov] (LP: #1534162)
+ - zfs: pass pool and fs properties to zpool_create
+ [Jean-Baptiste Lallement] (LP: #1823682)
+ - block_meta: pass lvm_partition size through human2bytes
+ [Michael Hudson-Doyle]
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 11 Apr 2019 14:22:33 -0500
+
+curtin (18.2-19-g36351dea-0ubuntu1) disco; urgency=medium
+
+ * New upstream snapshot.
+ - clear-holders: refactor bcache shutdown and add longer timeout
+ (LP: #1796292)
+ - schema-validate-storage: remove unused imports [Paride Legovini]
+ - add subcommand schema for storage-config validation
+ - clear-holders: wipe raid members at data offsets when not assembled
+ (LP: #1815018)
+ - Add support for s390 DASD devices
+ - vmtest: skip DiscoTestAllindata while initrd lacks crypto modules
+ - block_meta: allow passing a dm_crypt key by keyfile
+ [Michael Hudson-Doyle]
+ - ChrootableTarget: add /run to mounts for redhat targets (LP: #1815666)
+ - vmtest: consolidate vm mem config, defaults via release, env override
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Wed, 03 Apr 2019 14:46:09 -0500
+
+curtin (18.2-10-g7afd77fa-0ubuntu1) disco; urgency=medium
+
+ * New upstream snapshot.
+ - Support for multi-layers images fsimage-layered:// URI
+ [Jean-Baptiste Lallement]
+ - dname: relax dname req for disk serial/wwn presence for compatibility
+ (LP: #1735839)
+ - flake8: fix some E117 over-indented issues [Paride Legovini]
+ - bcache: ensure partitions on bcache devices are detected as partition
+ - vmtest: bump skip_by_date out a year for trusty bcache bug
+ - Fix typo in doc/topics/integration-testing.rst. [Paride Legovini]
+ - flake8: Fix two issues found with new version of flake8
+ - clear-holders: handle FileNotFound when probing for bcache device slaves
+ (LP: #1811117)
+ - vmtests: network mtu fix-by bump to post 19.04 release
+ - vmtest: Fix bug preventing explicit disabling of system_upgrade.
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Wed, 27 Feb 2019 16:43:21 -0600
+
+curtin (18.2-0ubuntu1) disco; urgency=medium
+
+ * New upstream release (18.2).
+ - Release 18.2
+ - Adjust helpers/common to edit GRUB_CMDLINE_LINUX_DEFAULT in place.
+ (LP: #1527664)
+ - dname: persistent names based on serial or wwn (LP: #1735839)
+ - Fix bug in is_swap_device if a device was smaller than page_size.
+ (LP: #1803672)
+ - vmtest: add disco tests [Joshua Powers]
+ - unittest: change directory to tmpdir for testing relative files.
+ - Add clear-holders to meta-simple (LP: #1786736)
+ - vmtests: check install log for Out of memory kernel messages and fail
+ - unittest: correctly use tmpdir for my.img [Joshua Powers] (LP: #1803611)
+ - block_meta: use wipe config when clearing partitions (LP: #1800153)
+ - tests: fix vmtests for apt perserve_source_list changes
+ - apt: Use new format apt config when writing preserve_sources_list.
+ (LP: #1735950)
+ - vmtests: multipath mount /home with nofail and validate in unittest
+ - vmtests: fix common collect scripts to not exit failure.
+ - vmtest: handle collect disk unpack failure
+ - vmtests: dont use multiple subclasses in uefi 4k tests
+ - vmtests: disable snapd/seeding to avoid boot hang
+ - jenkins-runner: fix when using --filter only
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 06 Dec 2018 12:11:01 -0600
+
+curtin (18.1-59-g0f993084-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - distro: fix system_upgrade command using string instead of function
+ (LP: #1796968)
+ - Capture stdout when using lxc file push
+ - vmtest: boot ephemeral with 'ro' on the kernel command line.
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Wed, 10 Oct 2018 11:22:30 -0500
+
+curtin (18.1-56-g3aafe77d-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - vmtest: Fix typo in skip-by-date.
+ - vmtest: kick skip-by-date for 1671951.
+ - tools/jenkins-runner: Error if both filters and tests are given.
+ - vmtests: prevent tests from modifying cls.collect_scripts
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx> Tue, 02 Oct 2018 16:07:51 -0600
+
+curtin (18.1-52-g5f0082d1-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - Enable custom storage configuration for centos images
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Fri, 21 Sep 2018 03:04:42 -0500
+
+curtin (18.1-51-gb812ae80-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - vmtest: ensure we collect /var/log/journal only once
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx> Tue, 21 Aug 2018 11:44:46 -0600
+
+curtin (18.1-50-g2d9b2c6f-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - clear-holders: handle missing zpool/zfs tools when wiping
+ - clear-holders: rescan for lvm devices after assembling raid arrays
+ - vmtest: enable persistent journal and collect at boot time
+ - Add timing and logging functions.
+ - parse_dpkg_version: support non-numeric in version string.
+ - Don't allow reads of /proc and modprobe zfs through
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx> Mon, 20 Aug 2018 09:22:06 -0600
+
+curtin (18.1-44-g2b12b8fc-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - Add main so that 'python3 -m curtin' does the right thing.
+ - Add subcommand 'features'.
+ - block: use uuid4 (random) when autogenerating UUIDS for filesystems
+ - vmtests: Increase size of root filesystems.
+ - clear-holders: reread ptable after wiping disks with partitions
+ - vmtest: Skip proposed pocket on dev release when 'proposed' in ADD_REPOS.
+ - tests: remove Ubuntu Artful [Joshua Powers]
+ - vmtests: Let a raised SkipTest go through skip_by_date.
+ - vmtests: Increase root fs to give upgrades to -proposed more space.
+ - vmtest: Order the vmtest_pollinate late_command earlier.
+ - vmtest: always add 'curtin/vmtest' to installed pollinate user_agent.
+ - vmtests: make skip_by_date a decorator that runs and reports.
+ - vmtests: always declare certain attributes and remove redundant tests.
+ - vmtests: Add Cosmic release to tests [Joshua Powers]
+ - vmtests: skip TrustyTestMdadmBcache until 2019-01-22.
+ - tox: use simplestreams from git repository rather than bzr.
+ - document that you can set ptable on raids [Michael Hudson-Doyle]
+ - vmtests: move skip-by date of xfs root and xfs boot out 1 year.
+ - vmtests: network_mtu move fixby date out 4 months from last value
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx> Fri, 10 Aug 2018 09:22:12 -0600
+
+curtin (18.1-25-g9d0e557e-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - Fix WorkingDir class to support already existing target directory.
+ (LP: #1775622)
+ - Fix extraction of local filesystem image. (LP: #1775630)
+ - Fix tip-pyflakes imported but unused call to util.get_platform_arch
+ - subp: update return value of subp with combine_capture=True.
+ - tox: add a xenial environments, default envlist changes.
+ - tests: Fix race on utcnow during timestamped curtin-log dir creation
+ (LP: #1772481)
+ - curtainer: patch source version from --source.
+ - pyflakes: fix unused variable references identified by pyflakes 2.0.0.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 07 Jun 2018 14:59:20 -0400
+
+curtin (18.1-17-gae48e86f-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - tests: replace usage of mock.assert_called
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 18 May 2018 14:58:06 -0400
+
+curtin (18.1-16-g18835845-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - tools: jenkins-runner show curtin version in output.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 18 May 2018 10:29:17 -0400
+
+curtin (18.1-15-g5313b9e2-0ubuntu1) cosmic; urgency=medium
+
+ * New upstream snapshot.
+ - zfs: implement a supported check to handle i386 (LP: #1768709)
+ - Support mount entries not tied to a device, including bind and tmpfs.
+ (LP: #1767979)
+ - block/clear_holders/mdadm: refactor handling of layered device wiping
+ (LP: #1768893, #1769742)
+ - clear_holders: only export zpools that have been imported (LP: #1770280)
+ - vmtests: allow env control of apt, system_upgrade, package upgrade
+ - util.get_efibootmgr: filter bootorder by found entries (LP: #1767584)
+ - vmtests: adjust lvm_iscsi dnames to match configuration
+ - vmtest: always boot with BOOTIF and ip=:::::BOOTIF:dhcp
+ - make_dname for bcache should use backing device uuid
+ - zfsroot: add additional checks, do not require disk 'serial' attribute
+ (LP: #1760879, #1760880)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 18 May 2018 10:19:45 -0400
+
+curtin (18.1-5-g572ae5d6-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - clear-holders: fix lvm name use when shutting down (LP: #1764602)
+ - install: prevent unmount: disabled from swallowing installation failures
+ (LP: #1764210)
+ - vmtest: bionic images no longer use the vlan package
+ - pycodestyle: Fix invalid escape sequences in string literals.
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Wed, 18 Apr 2018 10:15:46 -0500
+
+curtin (18.1-1-g45564eef-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - Drop ubuntu branch management script new-upstream-snapshot.
+ - Release 18.1
+ - zfs/zpool version=28 by default, allow users to override default values.
+ (LP: #1754013)
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx> Wed, 28 Mar 2018 14:22:58 -0600
+
+curtin (17.1-51-gbd40234f-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - helpers/shell-archive: drop use of tar --sparse flag (LP: #1757565)
+ - vmtest: In Basic install, add entry for swap to fstab and verify its use.
+ - vmtest: skip some bcache tests pending kernel fixes
+ - vmtests: extend skip_by_date for lvmroot_xfsroot and network_mtu
+ - vmtest: fix pollinate re.search to use groupdict()
+ - Add pollinate user-agent configuration support.
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Fri, 23 Mar 2018 10:51:50 -0500
+
+curtin (17.1-45-g1a5fe18a-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - vmtest: Remove xenial and trusty specific workaround for rooturl.
+ - vmtest: Add Filesystem Battery test.
+ - Remove grub2/xenial specific workarounds for zfsroot.
+ - Disable dirty_disks mode for mdadm + iscsi tests
+ - tools/curtainer: Try harder to get source at binary version.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 07 Mar 2018 12:20:40 -0500
+
+curtin (17.1-40-g46f8000f-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - clear_holders: wipe complex devices before disassembly (LP: #1750519)
+ - vmtests: network_mtu: fix bug number and move date out one month
+ - fix /usr/bin/curtin exit code in install failure (LP: #1751176)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 07 Mar 2018 02:55:23 -0500
+
+curtin (17.1-37-g82622f12-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - docs: Document use of format command with fstype: zfsroot
+ - docs: Add HACKING.rst doc to top level dir and readthedocs.
+ - vmtest: fix centos root-tgz image sync
+ - block_meta: Ensure offset input to sgdisk are integers.
+ - Fix error in url_helper and vmtest from previous commit.
+ - tools: fix curtainer to specify source version to apt-get source.
+ - Add support for installing sources that are a filesystem image.
+ (LP: #1746348)
+ - clear-holders: detect and remove devices from kernel swap as needed.
+ (LP: #1743643)
+ - tests: remove xfs filesystem from basic uefi test.
+ - tools: fix curtainer --source with trusty.
+ - apply_net: do not write to stderr directly.
+ - vmtest: Drop use of root-image.gz and maas2roottar.
+ - in-target: use ChrootableTarget so that unshare pid is used.
+ - tools/curtainer: check that binary and source version are the same.
+ (LP: #1747077)
+ - Add zfsroot as a filesystem type
+ - fix modeline for shell syntax files.
+ - error logs: Create error_tarfile path if path does not exist
+ [Chad Smith] (LP: #1746363)
+ - zfs: only load zfs on xenial+ skip artful/bionic zfs env export
+ - error logs: automatically collect and tar curtin logs upon error.
+ [Chad Smith]
+ - vmtests: Support skipping skip_by_date tests based on environment.
+ - Add zpool, zfs storage commands for experimental support of ZFS on root.
+ - tests: revert workaround for bug in overlayroot that is now fixed.
+ - tests: Bump skip_by_dates for bug 1652822 and 1671952.
+ - cli: add curtin collect-logs sub-command [Chad Smith]
+ - vmtest: Do not run tests of unsupported Ubuntu releases.
+ - Make license headers and file footers consistent and simplify.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 21 Feb 2018 12:19:07 -0500
+
+curtin (17.1-11-ga4c9636b-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - tests: cleanup the apt custom sources test.
+ - apt: Be more lenient when replacing mirrors in /etc/apt/sources.list
+ (LP: #1744038)
+ - vmtest: Drop Zesty release
+ - vmtest: initialize logger with class names for easy parsing
+ - packaging: Do not mention primary contributors in debian/changelog.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 18 Jan 2018 16:31:27 -0500
+
+curtin (17.1-6-g8b145067-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - packaging: Update new-upstream-snapshot to work with git.
+ - Bump pylint to 1.8.1.
+ - vmtests: switch to MAAS v3 streams for images and kernels [Ryan Harper]
+ - tests: update pack tests to clear out pyc files more completely.
+ - debian/control: drop conflicts that had bzr version
+ - Switch uses of bzr to git, borrow from cloud-init git workflow.
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Tue, 16 Jan 2018 15:42:36 -0600
+
+curtin (17.1-0ubuntu1) bionic; urgency=medium
+
+ * New upstream release (17.1).
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 15 Dec 2017 16:53:09 -0500
+
+curtin (17.0~bzr552-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - packaging: update debian/build-deb to remove ~bzrREV when using equal tag
+ - pack: fix packing when curtin is installed inside a snap.
+ - tox: move to pylint 1.7.4
+ - vmtests: iscsi minor cleanup.
+ - vmtests: exercise rootfs over an lvm logical volume
+ - Switch network dep filter to test for ifupdown/nplan instead of release
+ name
+ - Allow control of curtin install unmounting
+ - vmtests: Add Bionic release to tests and update classes.
+ - storage: add 'options' key mount type to specify mount parameters for
+ filesystems (LP: #1709284)
+ - Re-add curthooks.write_files method for backwards compat (LP: #1731709)
+ - vmtest: Remove ArtfulTestBridging skip_by_date check, bug fixed
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Fri, 08 Dec 2017 14:48:42 -0600
+
+curtin (0.1.0~bzr541-0ubuntu1) bionic; urgency=medium
+
+ * New upstream snapshot.
+ - Drop Precise from vmtest
+ - clear_holders: bcache log IO/OS exceptions but do not raise
+ - vmtest: Support newer qemu and multipath.
+ - block: enable control over exclusive_open use when wiping volumes
+ - block: handle wiping bcache parts (LP: #1718699)
+ - vmtests: Defer ArtfulNetworkMtu SkipbyDate to 2018
+ - bcache: accept sysfs write failure in shutdown handler if path missing
+ (LP: #1700564)
+ - vmtest: Rephrase a message about no disks to be less scary
+ - block_meta: use block.wipe_volume(mode=superblock) to clear MBR/GPT tables
+ (LP: #1722322)
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Tue, 07 Nov 2017 11:13:00 -0600
+
+curtin (0.1.0~bzr532-0ubuntu1) artful; urgency=medium
+
+ * New upstream snapshot.
+ - vmtest: fix artful networking (LP: #1714028, LP: #1718216, LP: #1706744)
+ - docs: Trivial doc fix for enabling proposed.
+ - setup.py: fix to allow installation into a virtualenv (LP: #1703755)
+ - doc: update documentation on curtin-hooks and non-ubuntu installation.
+ - reporter: Add journald reporter to send events to journald
+ - vmtests: add option to tar disk images after test run
+ - install: ensure iscsi service is running to handle shutdown properly
+ - mdadm: handle write failures to sysfs entries when stopping mdadm
+ (LP: #1708052)
+ - vmtest: catch exceptions in curtin-log-print
+ - iscsi: use curtin storage config to disconnect iscsi targets
+ (LP: #1713537)
+ - vmtests: bump skip_by_date values out to give cloud-init SRU more time
+ - vmtest: get info about collected symlinks and then delete them.
+ - Update network cloud-init related skiptest dates, SRU still pending
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx> Thu, 05 Oct 2017 19:15:28 -0500
+
+curtin (0.1.0~bzr519-0ubuntu1) artful; urgency=medium
+
+ * New upstream snapshot.
+ - tests: Add CiTestCase common parent for all curtin tests.
+ - vmtests: Remove force flag for centos curthooks
+ - tools/jenkins-runner: improve tgtd cleanup logic
+ - tests: Drop EOL Wily Vivid and Yakkety tests.
+ - Disable yum plugins when installing packages, update ca-certs for https
+ - Rename centos_network_curthooks -> centos_apply_network_config.
+ - tests: in centos_defaults use write_files for grub serial.
+ - write_files: write files after extract, change write_files signature.
+ - pass network configuration through to target for ubuntu and centos
+ - tests: disable yakkety tests.
+ - tools/launch: automatically pass on proxy settings to curtin
+ - Add top level 'proxy' to config, deprecate top level http_proxy.
+ - tools/curtainer: fix to enable deb-src for -proposed.
+ - Use unshare to put chroot commands in own pid namespace.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 03 Aug 2017 15:51:19 -0400
+
+curtin (0.1.0~bzr505-0ubuntu1) artful; urgency=medium
+
+ * debian/new-upstream-snapshot: fix issue with whitespace at end of line.
+ * New upstream snapshot.
+ - vmtest: let the socket level select a port rather than us picking one.
+ - Fix deb build by mocking call to udevadm settle
+ - Clear and re-order UEFI boot methods during UEFI grub installation.
+ - Resolve bcache race-conditions
+ - tests: clean up usage of collect files
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Mon, 12 Jun 2017 15:45:33 -0400
+
+curtin (0.1.0~bzr500-0ubuntu1) artful; urgency=medium
+
+ * New upstream snapshot.
+ - Allow re-use of vmtest output
+ - Fix stacked storage configurations with iSCSI (LP: #1683910)
+ - vmtests: enable tests to apply storage config to validate clear_holders path
+ - mdadm_stop: Add retry and additional steps to halt a resync
+ - vmtests: Add Artful release and update classes
+ - clear-holders: mdadm use /proc/mdstat to wait for array to stop (LP: #1682584)
+ - uc16 curthooks: add 'network' key to config file (LP: #1685000)
+ - Doc and makefile updates for build and test on new systems.
+ - clear-holders: make bcache handler wait for device shutdown (LP: #1680409)
+ - vmtest: Use utf-8 and fix pseudo test collect_output
+ - vmtest: fix path to install log, and utilize the globally copied paths.
+ - Copy curtin install log into target. (LP: #1684128)
+ - vmtest: add in post-test log post-processing
+ - vmtest: update source.list test
+ - add recursive flag to do_umount, add --umount to block-meta
+ - load_command_environment: fix strict flag, and unit tests.
+ - block_meta: Attempt to mount by UUID= if possible (LP: #1676991)
+ - Make systems with root on bcache use root=UUID=. (LP: #1680591)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 19 May 2017 16:57:07 -0400
+
+curtin (0.1.0~bzr482-0ubuntu1) zesty; urgency=medium
+
+ * New upstream snapshot.
+ - Fix iscsi disks that have a ':' in the target name. (LP: #1679222)
+ - tests: re-enable ZestyTestMdadmBcache.
+ - curthooks: fix pylint reported error when using ubuntu_core_curthooks.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 05 Apr 2017 15:22:25 -0400
+
+curtin (0.1.0~bzr479-0ubuntu1) zesty; urgency=medium
+
+ * New upstream snapshot.
+ - Add support for installing Ubuntu-Core 16 images.
+ - Add 'STORAGE_CONFIG_V1_DD' to the feature list.
+ - flake8: fix flake8 issues with previous merge.
+ - Support selection of target disk for dd images install via
+ storage config. (LP: #1640301)
+ - vmtest: have vmtest-sync-images avoid running when jenkins-runner is.
+ - tools/curtin-from-container: do not use lxc file push --create-dirs
+ - tests: enable curtainer to pull down curtin source locally
+ - tests: make nose output always include class name and method.
+ - tools/curtin-from-container: default to verbosity level 0, not 2.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 23 Mar 2017 13:06:43 -0400
+
+curtin (0.1.0~bzr470-0ubuntu1) zesty; urgency=medium
+
+ * New upstream snapshot.
+ - vmtest: allow time-based skipping of tests, apply to ZestyMdadmBcache
+ (LP: #1667078)
+ - Add iSCSI disk support. (LP: #1645515)
+ - vmtest: handle change in btrfs-progs when finding fs UUID. (LP: #1665701)
+ - pycodestyle: fix bare except in vmtests
+ - unittests: add subp coverage for retries, and rcs
+ - reporting: Add better descriptions and granularity of events
+ - tox: do not bother with pep8 from trusty in trusty-check
+ - tests: add two scripts used for running vmtest with installed package.
+ - Make add-apt-repository command retry
+ - Add tests for network bridging configuration
+ - debian/rules: remove debug 'find'
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 28 Feb 2017 10:30:43 -0500
+
+curtin (0.1.0~bzr460-0ubuntu1) zesty; urgency=medium
+
+ * New upstream snapshot.
+ - Install zipl in target on s390x arch. (LP: #1662346)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 08 Feb 2017 17:09:34 -0500
+
+curtin (0.1.0~bzr459-0ubuntu1) zesty; urgency=medium
+
+ * New upstream snapshot.
+ - Remove style checking during build and add latest style checks to tox
+ - avoid UnicodeDecode error on passing non-utf8 into shlex
+ - adjustments to version string handling, improved pack unit tests.
+ - helpers/common: Add grub install debugging output
+ - curtin: add version module and display in output and logs
+ - content decoding in load_file, apply_net raise exception on errors
+ - gpg: retry when recv'ing gpg keys fail (LP: #1661337)
+ - Add clear_holders checks to disk and partition handlers (LP: #1659509)
+ - net: add new lines after rendered static routes. (LP: #1649652)
+ - multipath: don't run update-grub; setup_grub will handle this better.
+ (LP: #1656369)
+ - test related changes:
+ - vmtest: Add tests for zesty and Trusty HWE-X kernels.
+ - tests: fix tox tip-pycodestyle complaints
+ - image-sync: add debugging output to help diagnose errors
+ - vmtest: change get_curtin_version to use version subcommand.
+ - subp doc an unit test improvements.
+ - vmtest: Add the ability to add extra config files to test execution.
+ - vmtest: overhaul image sync
+ - vmtest: skip apt-proxy test if not set
+ - vmtest: add 'webserv' helper
+ - vmtest: add CURTIN_VMTEST_CURTIN_EXE variable.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 08 Feb 2017 15:29:57 -0500
+
+curtin (0.1.0~bzr435-0ubuntu1) zesty; urgency=medium
+
+ * New upstream snapshot.
+ - pep8: fix pep8 errors found with 'make pep8' on zesty.
+ - Workaround failures caused by gpg2 daemons left running in chroot.
+ (LP: #1645680)
+ - Install u-boot-tools when running on a system with u-boot.
+ (LP: #1640519)
+ - block: fix partition kname for raid devices (LP: #1641661)
+ - Fix up tox errors that slipped in and new pycodestyle 2.1.0 complaints.
+ - vmtests: adjust vmtest image sync metadata filenames
+ - vmtests: Add centos support
+ - Disable WilyTestRaid5Bcache vmtest
+ - tools/xkvm: fix --netdev=<bridge>
+ - bytes2human: fix for values larger than 32 bit int on 32 bit python2.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 01 Dec 2016 21:05:30 -0500
+
+curtin (0.1.0~bzr425-0ubuntu1) yakkety; urgency=medium
+
+ [ Scott Moser ]
+ * debian/new-upstream-snapshot: add writing of debian changelog entries.
+
+ [ Ryan Harper ]
+ * New upstream snapshot.
+ - unittest,tox.ini: catch and fix issue with trusty-level mock of open
+ - block/mdadm: add option to ignore mdadm_assemble errors (LP: #1618429)
+ - curtin/doc: overhaul curtin documentation for readthedocs.org
+ (LP: #1351085)
+ - curtin.util: re-add support for RunInChroot (LP: #1617375)
+ - curtin/net: overhaul of eni rendering to handle mixed ipv4/ipv6 configs
+ - curtin.block: refactor clear_holders logic into block.clear_holders and
+ cli cmd
+ - curtin.apply_net should exit non-zero upon exception. (LP: #1615780)
+ - apt: fix bug in disable_suites if sources.list line is blank.
+ - vmtests: disable Wily in vmtests
+ - Fix the unittests for test_apt_source.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 29 Sep 2016 14:55:29 -0400
+
+curtin (0.1.0~bzr415-0ubuntu1) yakkety; urgency=medium
+
+ * New upstream snapshot.
+ - Add apt configuration features. (LP: #1574113)
+ - mkfs.vfat: add force flag for formating whole disks (LP: #1597923)
+ - block.mkfs: fix sectorsize flag (LP: #1597522)
+ - block_meta: cleanup use of sys_block_path and handle cciss knames
+ (LP: #1562249)
+ - block.get_blockdev_sector_size: handle _lsblock multi result return
+ (LP: #1598310)
+ - util: add target (chroot) support to subp, add target_path helper
+ - block_meta: fallback to parted if blkid does not produce output
+ (LP: #1524031)
+ - commands.block_wipe: correct default wipe mode to 'superblock'
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 05 Aug 2016 16:51:20 -0400
+
+curtin (0.1.0~bzr399-0ubuntu1) yakkety; urgency=medium
+
+ * debian/new-upstream-snapshot: fix for specifying revision.
+ * New upstream snapshot.
+ - curtin/net: fix inet value for subnets, don't add interface attributes
+ to alias (LP: #1588547)
+ - improve net-meta network configuration (LP: #1592149)
+ - reporting: set webhook handler level to DEBUG, no filtering
+ (LP: #1590846)
+ - tests/vmtests: add yakkety, remove vivid
+ - curtin/net: use post-up for interface alias, resolve 120 second time out
+ on Trusty when using interface aliases
+ - vmtest: provide info on images used
+ - fix multipath configuration and add multipath tests (LP: #1551937)
+ - tools/launch and tools/xkvm: whitespace cleanup and bash -x
+ - tools/launch: boot by root=LABEL=cloudimg-rootfs
+ - Initial vmtest power8 support and TestSimple test.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 12 Jul 2016 12:31:34 -0400
+
+curtin (0.1.0~bzr389-0ubuntu1) yakkety; urgency=medium
+
+ * New upstream snapshot.
+ * Detect and remove legacy /etc/network/interfaces.d/eth0.cfg from
+ target (LP: #1582410)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 03 Jun 2016 09:34:17 -0400
+
+curtin (0.1.0~bzr387-0ubuntu1) yakkety; urgency=medium
+
+ * New upstream snapshot.
+ * fix timestamp in reporting events.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 10 May 2016 10:19:20 -0400
+
+curtin (0.1.0~bzr385-0ubuntu2) yakkety; urgency=medium
+
+ * debian/control: add bcache-tools dependency to curtin.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 05 May 2016 16:35:37 -0400
+
+curtin (0.1.0~bzr385-0ubuntu1) yakkety; urgency=medium
+
+ * debian/control: drop python from curtin-common Depends.
+ remove unnecessary Depends on util-linux as it is essential.
+ python3-curtin, python-curtin: drop unnecessary 'curl' from Depends.
+ python3-curtin, python-curtin: list oauthlib and yaml explicitly.
+
+ * New upstream snapshot.
+ * mdadm: resolve mdadm/bcache and trusty+hwe issues
+ (LP: #1569549, LP: #1514094)
+ * fix support for 4k disks (LP: #1436632, LP: #1564977)
+ * emit source /etc/network/interfaces.d/*.cfg in
+ rendered /etc/network/interfaces
+ * net: introduce 'control' field to network configuration to allow
+ for declaring manual controlled interfaces
+ * disable cloud-init networking as curtin is the source of network config
+ * block: wipe_volume improvements
+ * reporter: enhance reporting events to include levels and
+ improve usefullness of messages
+ * network: add bonding tests and cleanup newline rendering
+ * block: fix partition path issue with nvme devices
+ * fix logic error in kernel installation
+ * block: add debug regarding raid modules being missing on mdadm create
+ * add s390x support to curtin and vmtest
+
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 05 May 2016 12:43:40 -0400
+
+curtin (0.1.0~bzr365-0ubuntu1) xenial; urgency=medium
+
+ * New upstream snapshot.
+ * mkfs: handle fstype: vfat (LP: #1557334)
+ * save the curtin install config to /root/curtin-install-cfg.yaml
+ * deps: when 'curtin --install-deps' is run, it will now invoke
+ apt-get install with '--no-install-recommends'
+ * debian/control: adjust build dependency as python3-pyflakes in xenial
+ now provides python3 modules for pyflakes.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 18 Mar 2016 10:18:21 -0400
+
+curtin (0.1.0~bzr359-0ubuntu1) xenial; urgency=medium
+
+ * debian/new-upstream-snapshot, debian/README.source: add
+ new-upstream-snapshot and mention it in README.source
+ * New upstream snapshot.
+ * curtin/net: Add bond parsing & improved source, source-directory
+ parsing for ENI
+ * curtin/net: move global dns-* options under auto lo in ENI (LP: #1543263)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 26 Feb 2016 16:28:31 -0500
+
+curtin (0.1.0~bzr351-0ubuntu1) xenial; urgency=medium
+
+ * New upstream snapshot.
+ * partitioning: limited support for odd ordering of partition
+ numbers (LP: #1543263). Specifically targetted at MAAS and
+ powerVM support.
+ * many upstream test improvements (LP: #1533770)
+ * general upstream code improvements
+ * use mkfs.vfat rather than mkfs.fat to support precise.
+ * use removable devices for installation if no non-removable devices are
+ found [Robert Clark] (LP: #1532062)
+ * mkfs: fix for lack of uuid in btrfs tools on precise or trusty
+ * added 'curtin mkfs' command for easily making filesystems.
+ * mdadm: fix issues exposed by use via block_meta (LP: #1531520)
+ * improvements and small bug fix for oauth on systems with bad clock
+ * support bcache installation on precise
+ * fix bug in install_grub to partition when storage_config
+ provided. (LP: #1523779)
+ * url_helper: raise import error on lack of oauth only when oauth used
+ * block_meta: handle 'preserve' flag for raid devices (LP: #1522147)
+ * close file descriptors from --config= arguments
+ * xenial: disable update-motd during an apt-get update (LP: #1527710)
+ * curthooks: know kernel mapping for xenial (4.4.0)
+ * fix python executable selection when 'curtin --help' is called
+ * subp: add decode parameter, defaulting to replace (LP: #1526127)
+ * support passing an integer or valid float to human2bytes
+ * Use /proc/mounts to find missing mountpoints
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 12 Feb 2016 17:07:33 -0500
+
+curtin (0.1.0~bzr314-0ubuntu1) xenial; urgency=medium
+
+ * New upstream snapshot.
+ * support installing .tar.xz, .tar.gz, .tar.bz2 or .tar via smtar helper
+ * improve dependency checking (LP: #1514888)
+ * Allow re-use of bcache cache devices with separate backing devices
+ (LP: #1514094)
+ * call mkfs.ext3 or mkfs.ext4 with -F (force)
+ * Partition alignment and sizing fixes (LP: #1513085)
+ * Set bcache cache_mode if present in storage config (LP: #1510334)
+ * apt-get update: do not download translation files and source files
+ during installation.
+ * new sub-commands 'system-upgrade' and 'system-install' for package
+ upgrade and installation.
+ * debian/control: do not list unversioned e2fsprogs as it is essential.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Mon, 23 Nov 2015 11:28:52 -0500
+
+curtin (0.1.0~bzr276-0ubuntu1) wily; urgency=medium
+
+ * New upstream snapshot.
+ * debian/control: add python3-curtin depends to curtin (LP: #1503507)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 07 Oct 2015 09:50:34 -0400
+
+curtin (0.1.0~bzr275-0ubuntu1) wily; urgency=medium
+
+ * debian/README.source: tweak to doc on how to generate snapshot
+ * New upstream snapshot.
+ * add advanced storage layout
+ * add advanced networking configuration
+ * add 'vmtest' framework for automated test.
+ * add 'tox' for unit testing
+ * add reporting framework for reporting status events to MAAS or other
+ webhook listener.
+ * enable configuring of verbosity and stacktrace info in config as opposed
+ to command line only
+ * faster swap creation using fallocate (LP: #1482994)
+ * support specifying kernel without 'mapping' in config
+ * add 'system-upgrade' command and config for enabling upgrading the target
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 02 Oct 2015 16:19:07 -0400
+
+curtin (0.1.0~bzr227-0ubuntu1) wily; urgency=medium
+
+ * New upstream snapshot.
+ * support '---' or '--' as token to indicate the subsequent kernel command
+ line parameters should be copied from install envionrment to installed
+ environment. (LP: #1402042)
+ * partition: when partitioning mbr and boot partition verify that
+ both partitions exist.
+ * partition: when creating mbr table, leave space for secondary gpt header
+ * fix uefi install path on nvme devices (LP: #1471928)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 09 Jul 2015 16:17:20 -0400
+
+curtin (0.1.0~bzr221-0ubuntu1) wily; urgency=medium
+
+ * debian/README.source: minor fixes in doc on merging upstream
+ * New upstream snapshot.
+ * force re-reading of partition information before looking
+ for multipath UUID matches.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 24 Jun 2015 14:08:55 -0400
+
+curtin (0.1.0~bzr220-0ubuntu1) wily; urgency=medium
+
+ * New upstream snapshot.
+ * more multipath work. hopefully reliable multipath boot on ppc64 now.
+ * some cleanups to partitioning code.
+ * know expected kernel mapping for wily (4.2)
+ * support UEFI-based ARM64 systems (LP: #1447834)
+ * catch one more usage of lsblk (LP: #1386275)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 18 Jun 2015 14:19:55 -0400
+
+curtin (0.1.0~bzr215-0ubuntu1) wily; urgency=medium
+
+ * New upstream snapshot.
+ * multipath: Generate /etc/multipath/bindings file during installation.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 16 Jun 2015 15:39:29 -0400
+
+curtin (0.1.0~bzr214-0ubuntu1) wily; urgency=medium
+
+ * New upstream snapshot.
+ * Use filesystem uuid rather than scsi_id to avoid false positives
+ when detecting multipath (LP: #1463043).
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 09 Jun 2015 16:35:21 -0400
+
+curtin (0.1.0~bzr213-0ubuntu1) wily; urgency=medium
+
+ * New upstream snapshot.
+ * retry apt-get update to avoid transient failures (LP: #1403133)
+ * detect and handle multipath devices (LP: #1371634)
+ * udevadm settle before unmounting target's /dev (LP: #1462139)
+ * doc/ improved developer doc and tools using maas images for test
+ * use --no-nvram option to grub-install if available (LP: #1311827)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 05 Jun 2015 15:06:31 -0400
+
+curtin (0.1.0~bzr205-0ubuntu1) wily; urgency=medium
+
+ * New upstream snapshot.
+ * improve finding devices and partitions to account for
+ non-standard names (LP: #1401190, LP: #1263181)
+ * do not consider removable devices or devices < 1G as installable
+ * add internal function wipe_partition and use that rather than
+ wipefs for wiping filesystem header data on a partition.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 15 May 2015 16:52:07 -0400
+
+curtin (0.1.0~bzr201-0ubuntu1) vivid; urgency=medium
+
+ * New upstream snapshot.
+ * curtin.deps.install: actually install, rather than --dry-run.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 20 Mar 2015 16:30:11 -0400
+
+curtin (0.1.0~bzr200-0ubuntu1) vivid; urgency=medium
+
+ * New upstream snapshot.
+ * support installation of vivid on vivid via python3 (LP: #1427950)
+ * know kernel mapping for vivid (3.19)
+ * debian/control: update standards versions, wrap-and-sort
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 11 Mar 2015 13:19:43 -0400
+
+curtin (0.1.0~bzr196-0ubuntu1) vivid; urgency=medium
+
+ * New upstream snapshot.
+ * fix bug installing to UEFI systems (LP: #1383727)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Mon, 08 Dec 2014 20:01:44 -0500
+
+curtin (0.1.0~bzr195-0ubuntu1) vivid; urgency=medium
+
+ * New upstream snapshot.
+ * move install log from /var/log/curtin_install.log to
+ /var/log/curtin/install.log (LP: #1378910)
+ * to not use '--acl' when extracting tar files (LP: #1382632)
+ as it inadvertently writes default directory acls.
+ * invoke lsblk with '--output' rather than '--out' to avoid
+ ambiguity in newer versions of lsblk (LP: #1386275)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Mon, 27 Oct 2014 12:25:27 -0400
+
+curtin (0.1.0~bzr190-0ubuntu1) utopic; urgency=medium
+
+ * New upstream snapshot.
+ * add log reporter (LP: #1369129, LP: #1371218)
+ * allow debug messages of helper programs to be seen
+ * fix 'make check'
+ * handle utf-8 output correctly. (LP: #1370249)
+ * set root device correctly on ppc64 (LP: #1371133)
+ * call update-grub to ensure grub.cfg is written (LP: #1373137)
+ * fix dd-tgz mode, only call partprobe on target device.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 26 Sep 2014 17:26:34 -0400
+
+curtin (0.1.0~bzr162-0ubuntu1) utopic; urgency=medium
+
+ * New upstream snapshot.
+ * block-meta: fix '--boot' when used with mbr.
+ * human2bytes: support floating point numbers (.5G or 2G).
+ * sanitize_source: fix detection of url prefixes that specify type
+ * fix reference to variable before use (LP: #1361350)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 04 Sep 2014 17:10:14 -0400
+
+curtin (0.1.0~bzr155-0ubuntu1) utopic; urgency=medium
+
+ * New upstream snapshot.
+ - fix '--maxsize' argument to 'curtin swap' (LP: #1360318) [Jason Hobbs]
+ * d/README.source: add file describing how snapshot releases are made.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 22 Aug 2014 11:54:49 -0400
+
+curtin (0.1.0~bzr153-0ubuntu1) utopic; urgency=medium
+
+ * New upstream snapshot.
+ * support for creating swap file.
+ * fix bug when specifying kernel mapping in config.
+ * install_kernel: run apt-get udpate before searching cache (LP: #1358424)
+ * correctly check for availability of eatmydata (LP: #1358350)
+ * support installation on ppc64 systems (ubuntu ppc64el)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 21 Aug 2014 03:35:53 -0400
+
+curtin (0.1.0~bzr143-0ubuntu1) utopic; urgency=medium
+
+ * New upstream snapshot.
+ * better choose a default boot fstype.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Mon, 04 Aug 2014 04:57:29 -0400
+
+curtin (0.1.0~bzr142-0ubuntu1) utopic; urgency=medium
+
+ * New upstream snapshot.
+ * add utility for parsing /etc/network/interfaces
+ * aarm64 support [Newell Jensen]
+ * run update-initramfs in aarm64
+ * create boot partition when necessary (LP: #1338851 LP: #1340942)
+ * know kernel mapping for utopic (3.16)
+ * properly write fstype into /etc/fstab per provided fstype
+ * add support for disk images as type 'dd-tgz'
+ * correctly call finalize in target (LP: #1328521)
+ * support invoking tar with --xattrs if available (LP: #1307636)
+ * increase size of uefi partition to 512M (LP: #1306164)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 22 Jul 2014 18:53:38 -0400
+
+curtin (0.1.0~bzr126-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * create 500M EFI System Partition (ESP) instead of 100M. (LP: #1306164)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 10 Apr 2014 15:11:18 -0400
+
+curtin (0.1.0~bzr125-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * fix regression in installation on pc-bios systems (LP: #1303617)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Mon, 07 Apr 2014 10:18:34 -0400
+
+curtin (0.1.0~bzr124-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * install correctly on UEFI booted systems (LP: #1300910)
+ [Blake Rouse]
+ * whitespace fixes and other small fixes.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 03 Apr 2014 14:47:01 -0400
+
+curtin (0.1.0~bzr121-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * support installing kernel package of booted kernel
+ to enable hardware enablement kernels through maas.
+ * support Calxeda highbank and other ARMv7 systems
+ * fix gpt partitioning. It wouldn't allow grub installation
+ * support for using kexec to boot into the installed system
+ to avoid a hardware bios post.
+ * support declaring target device via config
+ * support installing from a local url (file:///)
+ * fix bug where 'console=' parms were not removed from image's
+ settings (problematic when image was cloud image)
+ * run apt-get update if installing packages
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 26 Mar 2014 17:34:57 -0400
+
+curtin (0.1.0~bzr95-0ubuntu2) trusty; urgency=medium
+
+ * Rebuild to drop files installed into /usr/share/pyshared.
+
+ -- Matthias Klose <doko@xxxxxxxxxx> Sun, 23 Feb 2014 13:46:42 +0000
+
+curtin (0.1.0~bzr95-0ubuntu1) trusty; urgency=low
+
+ * New upstream snapshot.
+ * fix bug in block-meta resulting in first disk not always being used
+ (LP: #1244026)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 24 Oct 2013 01:41:47 -0400
+
+curtin (0.1.0~bzr94-0ubuntu1) saucy-proposed; urgency=low
+
+ * New upstream snapshot.
+ * fix bug where /usr/sbin/policy-rc.d was not being removed after
+ being utilized during installation to disable daemons. (LP: #1238915)
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 15 Oct 2013 14:45:16 -0400
+
+curtin (0.1.0~bzr93-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * curtin/commands/in_target.py, curtin/commands/main.py:
+ fix 'curtin -v' and 'curtin in-target' (LP: #1237139)
+ * non-production / development changes:
+ * doc/devel/README.txt: development doc update
+ * tools/build-deb, tools/export-tarball:
+ trunk development changes for creating tarball and building debs.
+ * tools/launch: support '--add' for adding files such as config files
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 08 Oct 2013 20:20:11 -0400
+
+curtin (0.1.0~bzr87-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * fix bug that prevented some systems from booting because
+ 'dpkg-reconfigure grub-pc' was not being run.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Wed, 25 Sep 2013 16:35:30 -0400
+
+curtin (0.1.0~bzr86-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * correctly install grub to device rather than partition
+ * correctly write /etc/network/interfaces
+ * get cloud-init configure to work with preseed data.
+ * use tar with --numeric owner when extracting
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Tue, 24 Sep 2013 22:32:08 -0400
+
+curtin (0.1.0~bzr85-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * fix 'pack_install' usage for maas (LP: #1227944)
+ * debian/rules: fix 'curtin' package to install as python2
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Fri, 20 Sep 2013 16:59:25 -0400
+
+curtin (0.1.0~bzr82-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * 'net-meta auto' is now default for interfaces.
+ * power_state config can now cause reboot after install.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 19 Sep 2013 17:07:17 -0400
+
+curtin (0.1.0~bzr75-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * change 'curtin' installer to be python2 for better compatibility
+ * split up packaging. Provide curtin, curtin-common, python-curtin and
+ python3-curtin.
+ * add 'curtin in-target' command for chrooting to target
+ * support http_proxy, apt_proxy, and specifying ubuntu mirrors.
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Thu, 19 Sep 2013 04:07:25 -0400
+
+curtin (0.1.0~bzr54-0ubuntu1) saucy; urgency=low
+
+ * Initial release
+
+ -- Scott Moser <smoser@xxxxxxxxxx> Mon, 29 Jul 2013 16:12:09 -0400
diff --git a/debian/control b/debian/control
index cea1af8..09e0c53 100644
--- a/debian/control
+++ b/debian/control
@@ -5,6 +5,7 @@ Standards-Version: 3.9.6
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
Build-Depends: debhelper (>= 7),
dh-python,
+<<<<<<< debian/control
pep8,
pyflakes,
python-all,
@@ -14,12 +15,17 @@ Build-Depends: debhelper (>= 7),
python-oauthlib,
python-setuptools,
python-yaml,
+=======
+>>>>>>> debian/control
python3,
python3-coverage,
python3-mock,
python3-nose,
python3-oauthlib,
+<<<<<<< debian/control
python3-pyflakes | pyflakes (<< 1.1.0-2),
+=======
+>>>>>>> debian/control
python3-setuptools,
python3-yaml
Homepage: http://launchpad.net/curtin
@@ -54,6 +60,7 @@ Depends: ${misc:Depends}
Description: Library and tools for curtin installer
This package contains utilities for the curtin installer.
+<<<<<<< debian/control
Package: python-curtin
Section: python
Architecture: all
@@ -67,6 +74,8 @@ Depends: curtin-common (= ${binary:Version}),
Description: Library and tools for curtin installer
This package provides python library for use by curtin.
+=======
+>>>>>>> debian/control
Package: python3-curtin
Section: python
Architecture: all
diff --git a/debian/rules b/debian/rules
index af2ebab..f1070c3 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,6 +1,9 @@
#!/usr/bin/make -f
+<<<<<<< debian/rules
PYVERS := $(shell pyversions -r)
+=======
+>>>>>>> debian/rules
PY3VERS := $(shell py3versions -r)
DEB_VERSION := $(shell dpkg-parsechangelog --show-field=Version)
@@ -8,14 +11,29 @@ UPSTREAM_VERSION := $(shell x="$(DEB_VERSION)"; echo "$${x%-*}")
PKG_VERSION := $(shell x="$(DEB_VERSION)"; echo "$${x\#\#*-}")
%:
+<<<<<<< debian/rules
dh $@ --with=python2,python3
override_dh_auto_install:
dh_auto_install
set -ex; for python in $(PY3VERS) $(PYVERS); do \
+=======
+ dh $@ --with=python3
+
+override_dh_auto_install:
+ dh_auto_install
+ set -ex; for python in $(PY3VERS); do \
+>>>>>>> debian/rules
$$python setup.py build --executable=/usr/bin/python && \
$$python setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb; \
done
chmod 755 $(CURDIR)/debian/tmp/usr/lib/curtin/helpers/*
+<<<<<<< debian/rules
find $(CURDIR)/debian/tmp
for f in $$(find $(CURDIR)/debian/tmp/usr/lib -type f -name version.py); do [ -f "$$f" ] || continue; sed -i 's,@@PACKAGED_VERSION@@,$(DEB_VERSION),' "$$f"; done
+=======
+ for f in $$(find $(CURDIR)/debian/tmp/usr/lib -type f -name version.py); do [ -f "$$f" ] || continue; sed -i 's,@@PACKAGED_VERSION@@,$(DEB_VERSION),' "$$f"; done
+
+override_dh_auto_test:
+ make unittest3
+>>>>>>> debian/rules
diff --git a/doc/topics/config.rst b/doc/topics/config.rst
index 951f07f..49c9609 100644
--- a/doc/topics/config.rst
+++ b/doc/topics/config.rst
@@ -226,6 +226,7 @@ not provided, Curtin will set the value to 'console'. If the ``terminal``
value is 'unmodified' then Curtin will not set any value at all and will
use Grub defaults.
+<<<<<<< doc/topics/config.rst
**reorder_uefi**: *<boolean: default True>*
Curtin is typically used with MAAS where the systems are configured to boot
@@ -255,6 +256,8 @@ even if BootCurrent is present if *reorder_uefi_force_fallback* is True.
This setting is ignored if *update_nvram* or *reorder_uefi* are False.
+=======
+>>>>>>> doc/topics/config.rst
**Example**::
@@ -293,12 +296,15 @@ This setting is ignored if *update_nvram* or *reorder_uefi* are False.
probe_additional_os: True
terminal: unmodified
+<<<<<<< doc/topics/config.rst
**Enable Fallback UEFI Reordering**::
grub:
reorder_uefi: true
reorder_uefi_force_fallback: true
+=======
+>>>>>>> doc/topics/config.rst
http_proxy
~~~~~~~~~~
diff --git a/tests/unittests/helpers.py b/tests/unittests/helpers.py
index 64a79ca..a243c71 100644
--- a/tests/unittests/helpers.py
+++ b/tests/unittests/helpers.py
@@ -2,13 +2,19 @@
import imp
import importlib
+<<<<<<< tests/unittests/helpers.py
import logging
+=======
+>>>>>>> tests/unittests/helpers.py
import mock
import os
import random
import shutil
import string
+<<<<<<< tests/unittests/helpers.py
import sys
+=======
+>>>>>>> tests/unittests/helpers.py
import tempfile
from unittest import TestCase, skipIf
from contextlib import contextmanager
@@ -57,7 +63,10 @@ def skipUnlessJsonSchema():
class CiTestCase(TestCase):
"""Common testing class which all curtin unit tests subclass."""
+<<<<<<< tests/unittests/helpers.py
with_logs = False
+=======
+>>>>>>> tests/unittests/helpers.py
allowed_subp = False
SUBP_SHELL_TRUE = "shell=True"
@@ -72,6 +81,7 @@ class CiTestCase(TestCase):
def setUp(self):
super(CiTestCase, self).setUp()
+<<<<<<< tests/unittests/helpers.py
if self.with_logs:
# Create a log handler so unit tests can search expected logs.
self.logger = logging.getLogger()
@@ -87,6 +97,8 @@ class CiTestCase(TestCase):
self.old_handlers = self.logger.handlers
self.logger.handlers = [handler]
+=======
+>>>>>>> tests/unittests/helpers.py
if self.allowed_subp is True:
util.subp = _real_subp
else:
diff --git a/tests/unittests/test_block.py b/tests/unittests/test_block.py
index 78e331d..50a5850 100644
--- a/tests/unittests/test_block.py
+++ b/tests/unittests/test_block.py
@@ -179,6 +179,7 @@ class TestBlock(CiTestCase):
byid_path = block.disk_to_byid_path('/dev/sdb')
self.assertEqual(mapping.get('/dev/sdb'), byid_path)
+<<<<<<< tests/unittests/test_block.py
@mock.patch("curtin.block.os.path.exists")
def test__get_dev_disk_by_prefix_returns_empty_dict(self, m_exists):
""" _get_disk_by_prefix returns empty dict prefix dir does not exit """
@@ -191,6 +192,8 @@ class TestBlock(CiTestCase):
m_exists.return_value = False
self.assertEqual(None, block.disk_to_byid_path('/dev/sdb'))
+=======
+>>>>>>> tests/unittests/test_block.py
class TestSysBlockPath(CiTestCase):
@mock.patch("curtin.block.get_blockdev_for_partition")
diff --git a/tests/unittests/test_block_mdadm.py b/tests/unittests/test_block_mdadm.py
index dba0f74..1a9acba 100644
--- a/tests/unittests/test_block_mdadm.py
+++ b/tests/unittests/test_block_mdadm.py
@@ -120,10 +120,19 @@ class TestBlockMdadmCreate(CiTestCase):
side_effects.append(("", "")) # mdadm create
# build command how mdadm_create does
cmd = (["mdadm", "--create", md_devname, "--run",
+<<<<<<< tests/unittests/test_block_mdadm.py
"--metadata=%s" % metadata,
"--homehost=%s" % hostname, "--level=%s" % raidlevel,
"--raid-devices=%s" % len(devices)] +
devices)
+=======
+ "--homehost=%s" % hostname,
+ "--raid-devices=%s" % len(devices),
+ "--metadata=%s" % metadata])
+ if raidlevel != 'container':
+ cmd += ["--level=%s" % raidlevel]
+ cmd += devices
+>>>>>>> tests/unittests/test_block_mdadm.py
if spares:
cmd += ["--spare-devices=%s" % len(spares)] + spares
@@ -228,6 +237,25 @@ class TestBlockMdadmCreate(CiTestCase):
devices=devices, spares=spares)
self.mock_util.subp.assert_has_calls(expected_calls)
+<<<<<<< tests/unittests/test_block_mdadm.py
+=======
+ def test_mdadm_create_imsm_container(self):
+ md_devname = "/dev/md/imsm"
+ raidlevel = 'container'
+ devices = ['/dev/nvme0n1', '/dev/nvme1n1', '/dev/nvme2n1']
+ metadata = 'imsm'
+ spares = []
+ (side_effects, expected_calls) = self.prepare_mock(md_devname,
+ raidlevel,
+ devices,
+ spares,
+ metadata)
+
+ self.mock_util.subp.side_effect = side_effects
+ mdadm.mdadm_create(md_devname=md_devname, raidlevel=raidlevel,
+ devices=devices, spares=spares, metadata=metadata)
+ self.mock_util.subp.assert_has_calls(expected_calls)
+>>>>>>> tests/unittests/test_block_mdadm.py
class TestBlockMdadmExamine(CiTestCase):
def setUp(self):
@@ -315,6 +343,73 @@ class TestBlockMdadmExamine(CiTestCase):
self.mock_util.subp.assert_has_calls(expected_calls)
self.assertEqual(data, {})
+<<<<<<< tests/unittests/test_block_mdadm.py
+=======
+ def test_mdadm_examine_no_export_imsm(self):
+ self.mock_util.subp.return_value = ("""/dev/nvme0n1:
+ Magic : Intel Raid ISM Cfg Sig.
+ Version : 1.3.00
+ Orig Family : 6f8c68e3
+ Family : 6f8c68e3
+ Generation : 00000112
+ Attributes : All supported
+ UUID : 7ec12162:ee5cd20b:0ac8b069:cfbd93ec
+ Checksum : 4a5cebe2 correct
+ MPB Sectors : 2
+ Disks : 4
+ RAID Devices : 1
+
+ Disk03 Serial : LJ910504Q41P0FGN
+ State : active
+ Id : 00000000
+ Usable Size : 1953514766 (931.51 GiB 1000.20 GB)
+
+[126]:
+ UUID : f9792759:7f61d0c7:e7313d5a:2e7c2e22
+ RAID Level : 5
+ Members : 4
+ Slots : [UUUU]
+ Failed disk : none
+ This Slot : 3
+ Sector Size : 512
+ Array Size : 5860540416 (2794.52 GiB 3000.60 GB)
+ Per Dev Size : 1953515520 (931.51 GiB 1000.20 GB)
+ Sector Offset : 0
+ Num Stripes : 7630912
+ Chunk Size : 128 KiB
+ Reserved : 0
+ Migrate State : idle
+ Map State : normal
+ Dirty State : dirty
+ RWH Policy : off
+
+ Disk00 Serial : LJ91040H2Y1P0FGN
+ State : active
+ Id : 00000003
+ Usable Size : 1953514766 (931.51 GiB 1000.20 GB)
+
+ Disk01 Serial : LJ916308CZ1P0FGN
+ State : active
+ Id : 00000002
+ Usable Size : 1953514766 (931.51 GiB 1000.20 GB)
+
+ Disk02 Serial : LJ916308RF1P0FGN
+ State : active
+ Id : 00000001
+ Usable Size : 1953514766 (931.51 GiB 1000.20 GB)
+ """, "") # mdadm --examine /dev/nvme0n1
+
+ device = "/dev/nvme0n1"
+ data = mdadm.mdadm_examine(device, export=False)
+
+ expected_calls = [
+ call(["mdadm", "--examine", device], capture=True),
+ ]
+ self.mock_util.subp.assert_has_calls(expected_calls)
+ self.assertEqual(data['uuid'],
+ '7ec12162:ee5cd20b:0ac8b069:cfbd93ec')
+
+>>>>>>> tests/unittests/test_block_mdadm.py
class TestBlockMdadmStop(CiTestCase):
def setUp(self):
diff --git a/tests/unittests/test_clear_holders.py b/tests/unittests/test_clear_holders.py
index 25e9e79..6e14050 100644
--- a/tests/unittests/test_clear_holders.py
+++ b/tests/unittests/test_clear_holders.py
@@ -238,6 +238,10 @@ class TestClearHolders(CiTestCase):
mock_mdadm.md_present.return_value = False
mock_mdadm.md_get_devices_list.return_value = devices
mock_mdadm.md_get_spares_list.return_value = spares
+<<<<<<< tests/unittests/test_clear_holders.py
+=======
+ mock_mdadm.mdadm_query_detail.return_value = {}
+>>>>>>> tests/unittests/test_clear_holders.py
clear_holders.shutdown_mdadm(self.test_syspath)
@@ -256,6 +260,40 @@ class TestClearHolders(CiTestCase):
mock_mdadm.md_present.assert_called_with(self.test_blockdev)
self.assertTrue(mock_log.debug.called)
+<<<<<<< tests/unittests/test_clear_holders.py
+=======
+ @mock.patch('curtin.block.wipe_volume')
+ @mock.patch('curtin.block.path_to_kname')
+ @mock.patch('curtin.block.sysfs_to_devpath')
+ @mock.patch('curtin.block.clear_holders.time')
+ @mock.patch('curtin.block.clear_holders.util')
+ @mock.patch('curtin.block.clear_holders.LOG')
+ @mock.patch('curtin.block.clear_holders.mdadm')
+ def test_shutdown_mdadm_in_container(self, mock_mdadm, mock_log, mock_util,
+ mock_time, mock_sysdev, mock_path, mock_wipe):
+ """test clear_holders.shutdown_mdadm"""
+ devices = ['/dev/wda1', '/dev/wda2']
+ spares = ['/dev/wdb1']
+ md_devs = (devices + spares)
+ mock_sysdev.return_value = self.test_blockdev
+ mock_path.return_value = self.test_blockdev
+ mock_mdadm.md_present.return_value = False
+ mock_mdadm.md_get_devices_list.return_value = devices
+ mock_mdadm.md_get_spares_list.return_value = spares
+ mock_mdadm.mdadm_query_detail.return_value = {'MD_CONTAINER':'/dev/md/imsm0'}
+
+ clear_holders.shutdown_mdadm(self.test_syspath)
+
+ mock_wipe.assert_called_with(self.test_blockdev, exclusive=False,
+ mode='superblock', strict=True)
+ mock_mdadm.set_sync_action.assert_has_calls([
+ mock.call(self.test_blockdev, action="idle"),
+ mock.call(self.test_blockdev, action="frozen")])
+ mock_mdadm.mdadm_stop.assert_called_with(self.test_blockdev)
+ mock_mdadm.md_present.assert_called_with(self.test_blockdev)
+ self.assertTrue(mock_log.debug.called)
+
+>>>>>>> tests/unittests/test_clear_holders.py
@mock.patch('curtin.block.clear_holders.os')
@mock.patch('curtin.block.clear_holders.time')
@mock.patch('curtin.block.clear_holders.util')
@@ -271,6 +309,10 @@ class TestClearHolders(CiTestCase):
mock_mdadm.md_present.return_value = True
mock_util.subp.return_value = ("", "")
mock_os.path.exists.return_value = True
+<<<<<<< tests/unittests/test_clear_holders.py
+=======
+ mock_mdadm.mdadm_query_detail.return_value = {}
+>>>>>>> tests/unittests/test_clear_holders.py
with self.assertRaises(OSError):
clear_holders.shutdown_mdadm(self.test_syspath)
@@ -295,6 +337,10 @@ class TestClearHolders(CiTestCase):
mock_block.path_to_kname.return_value = self.test_blockdev
mock_mdadm.md_present.return_value = True
mock_os.path.exists.return_value = False
+<<<<<<< tests/unittests/test_clear_holders.py
+=======
+ mock_mdadm.mdadm_query_detail.return_value = {}
+>>>>>>> tests/unittests/test_clear_holders.py
with self.assertRaises(OSError):
clear_holders.shutdown_mdadm(self.test_syspath)
diff --git a/tests/unittests/test_commands_block_meta.py b/tests/unittests/test_commands_block_meta.py
index d954296..ed45fbe 100644
--- a/tests/unittests/test_commands_block_meta.py
+++ b/tests/unittests/test_commands_block_meta.py
@@ -1892,7 +1892,11 @@ class TestRaidHandler(CiTestCase):
self.m_getpath.side_effect = iter(devices)
block_meta.raid_handler(self.storage_config['mddevice'],
self.storage_config)
+<<<<<<< tests/unittests/test_commands_block_meta.py
self.assertEqual([call(md_devname, 5, devices, [], '')],
+=======
+ self.assertEqual([call(md_devname, 5, devices, [], None, '', None)],
+>>>>>>> tests/unittests/test_commands_block_meta.py
self.m_mdadm.mdadm_create.call_args_list)
@patch('curtin.commands.block_meta.raid_verify')
diff --git a/tests/unittests/test_curthooks.py b/tests/unittests/test_curthooks.py
index ddae280..3af5290 100644
--- a/tests/unittests/test_curthooks.py
+++ b/tests/unittests/test_curthooks.py
@@ -1,6 +1,9 @@
# This file is part of curtin. See LICENSE file for copyright and license info.
+<<<<<<< tests/unittests/test_curthooks.py
import copy
+=======
+>>>>>>> tests/unittests/test_curthooks.py
import os
from mock import call, patch
import textwrap
@@ -11,7 +14,11 @@ from curtin import distro
from curtin import util
from curtin import config
from curtin.reporter import events
+<<<<<<< tests/unittests/test_curthooks.py
from .helpers import CiTestCase, dir2dict, populate_dir, random
+=======
+from .helpers import CiTestCase, dir2dict, populate_dir
+>>>>>>> tests/unittests/test_curthooks.py
class TestGetFlashKernelPkgs(CiTestCase):
@@ -532,6 +539,7 @@ class TestSetupZipl(CiTestCase):
content)
+<<<<<<< tests/unittests/test_curthooks.py
class EfiOutput(object):
def __init__(self, current=None, order=None, entries=None):
@@ -576,11 +584,18 @@ class TestSetupGrub(CiTestCase):
with_logs = True
+=======
+class TestSetupGrub(CiTestCase):
+
+>>>>>>> tests/unittests/test_curthooks.py
def setUp(self):
super(TestSetupGrub, self).setUp()
self.target = self.tmp_dir()
self.distro_family = distro.DISTROS.debian
+<<<<<<< tests/unittests/test_curthooks.py
self.variant = 'ubuntu'
+=======
+>>>>>>> tests/unittests/test_curthooks.py
self.add_patch('curtin.distro.lsb_release', 'mock_lsb_release')
self.mock_lsb_release.return_value = {'codename': 'xenial'}
self.add_patch('curtin.util.is_uefi_bootable',
@@ -600,8 +615,12 @@ class TestSetupGrub(CiTestCase):
updated_cfg = {
'install_devices': ['/dev/vdb']
}
+<<<<<<< tests/unittests/test_curthooks.py
curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family,
variant=self.variant)
+=======
+ curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family)
+>>>>>>> tests/unittests/test_curthooks.py
self.m_install_grub.assert_called_with(
['/dev/vdb'], self.target, uefi=False, grubcfg=updated_cfg)
@@ -633,8 +652,12 @@ class TestSetupGrub(CiTestCase):
},
}
m_exists.return_value = True
+<<<<<<< tests/unittests/test_curthooks.py
curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family,
variant=self.variant)
+=======
+ curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family)
+>>>>>>> tests/unittests/test_curthooks.py
self.m_install_grub.assert_called_with(
['/dev/vdb'], self.target, uefi=False,
grubcfg={'install_devices': ['/dev/vdb']})
@@ -684,8 +707,12 @@ class TestSetupGrub(CiTestCase):
}
m_exists.return_value = True
m_is_valid_device.side_effect = (False, True, False, True)
+<<<<<<< tests/unittests/test_curthooks.py
curthooks.setup_grub(cfg, self.target, osfamily=distro.DISTROS.redhat,
variant='centos')
+=======
+ curthooks.setup_grub(cfg, self.target, osfamily=distro.DISTROS.redhat)
+>>>>>>> tests/unittests/test_curthooks.py
self.m_install_grub.assert_called_with(
['/dev/vdb1'], self.target, uefi=True,
grubcfg={'update_nvram': False, 'install_devices': ['/dev/vdb1']}
@@ -697,8 +724,12 @@ class TestSetupGrub(CiTestCase):
'install_devices': None,
},
}
+<<<<<<< tests/unittests/test_curthooks.py
curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family,
variant=self.variant)
+=======
+ curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family)
+>>>>>>> tests/unittests/test_curthooks.py
self.m_install_grub.assert_called_with(
['none'], self.target, uefi=False,
grubcfg={'install_devices': None}
@@ -729,8 +760,12 @@ class TestSetupGrub(CiTestCase):
}
}
}
+<<<<<<< tests/unittests/test_curthooks.py
curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family,
variant=self.variant)
+=======
+ curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family)
+>>>>>>> tests/unittests/test_curthooks.py
self.m_install_grub.assert_called_with(
['/dev/vdb'], self.target, uefi=True, grubcfg=cfg.get('grub')
)
@@ -770,8 +805,12 @@ class TestSetupGrub(CiTestCase):
}
}
self.mock_haspkg.return_value = False
+<<<<<<< tests/unittests/test_curthooks.py
curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family,
variant=self.variant)
+=======
+ curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family)
+>>>>>>> tests/unittests/test_curthooks.py
expected_calls = [
call(['efibootmgr', '-B', '-b', '0001'],
@@ -812,6 +851,7 @@ class TestSetupGrub(CiTestCase):
}
}
self.mock_haspkg.return_value = False
+<<<<<<< tests/unittests/test_curthooks.py
curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family,
variant=self.variant)
self.assertEquals([
@@ -1023,6 +1063,12 @@ class TestSetupGrub(CiTestCase):
self.assertIn("found netboot entries: ['0002', '0003', '0004']", logs)
self.assertIn("found other entries: ['0001', '0000']", logs)
self.assertIn("found target entry: ['0007']", logs)
+=======
+ curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family)
+ self.assertEquals([
+ call(['efibootmgr', '-o', '0001,0000'], target=self.target)],
+ self.mock_subp.call_args_list)
+>>>>>>> tests/unittests/test_curthooks.py
class TestUefiRemoveDuplicateEntries(CiTestCase):
diff --git a/tests/unittests/test_feature.py b/tests/unittests/test_feature.py
index 8690ad8..ce67a12 100644
--- a/tests/unittests/test_feature.py
+++ b/tests/unittests/test_feature.py
@@ -27,7 +27,10 @@ class TestExportsFeatures(CiTestCase):
def test_has_btrfs_swapfile_support(self):
self.assertIn('BTRFS_SWAPFILE', curtin.FEATURES)
+<<<<<<< tests/unittests/test_feature.py
def test_has_uefi_reorder_fallback_support(self):
self.assertIn('UEFI_REORDER_FALLBACK_SUPPORT', curtin.FEATURES)
+=======
+>>>>>>> tests/unittests/test_feature.py
# vi: ts=4 expandtab syntax=python