netplan.io 0.98 introduced more strict parsing of bonding mode, causing failures at boot for existing systems

Bug #1877643 reported by Steve Langasek
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
netplan.io (Ubuntu)
Invalid
Undecided
Unassigned
Bionic
Fix Released
High
Lukas Märdian

Bug Description

As noted in https://github.com/CanonicalLtd/netplan/pull/97#issuecomment-625868233 , netplan.io 0.98 has introduced stricter validation rules for netplan yaml compared to previous versions. This causes previously accepted netplan yaml to fail to validate and therefore fail to apply, regressing users' networks after SRU upgrade.

=== SRU ===
[Impact]
This release contains one regression bug-fix for the bionic stable release and we would like to make sure all of our supported customers have access to these improvements.

 * Do not reject invalid bonding mode config (LP: #1877643)
   - Print a warning instead on bionic
   - Only affects the bionic series

See the changelog entry below for a full list of changes and bugs.

[Test Case]
The following development and SRU process was followed:
https://wiki.ubuntu.com/NetplanUpdates

Netplan contains an extensive integration test suite that is ran using
the SRU package for each releases. This test suite's results are available here:
http://autopkgtest.ubuntu.com/packages/n/netplan.io

A successful run is required before the proposed netplan package
can be let into -updates.

The netplan team will be in charge of attaching the artifacts and console
output of the appropriate run to the bug. Netplan team members will not
mark ‘verification-done’ until this has happened.

[Regression Potential]
In order to mitigate the regression potential, the results of the
aforementioned integration tests are attached to this bug.

Special attention is given to tests/generator/test_bonds.py -> test_bond_invalid_mode (unit test at compile time), which was adopted to *not* reject an invalid bond config, but print a "WARNING: unknown bond mode '%s'" instead.

https://slyon.de/files/netplan/SRU-0.99b2/bionic_amd64_log
https://slyon.de/files/netplan/SRU-0.99b2/bionic_arm64_log
https://slyon.de/files/netplan/SRU-0.99b2/bionic_armhf_log
https://slyon.de/files/netplan/SRU-0.99b2/bionic_i386_log
https://slyon.de/files/netplan/SRU-0.99b2/bionic_ppc64el_log
https://slyon.de/files/netplan/SRU-0.99b2/bionic_s390x_log

[Discussion]
It may be appropriate from an upstream POV to make the validation of input more strict over time, but it is never acceptable for an SRU to regress the interpretation of user config in this manner and cause config to fail to apply. This PR either needs to be reverted for bionic, or it needs to be modified to treat unknown modes as a warning instead of a failure.

[Changelog]
debian/patches/Fix-invalid-bond-mode-SRU-regression-LP-1877643.patch:
[PATCH] Fix invalid bond mode SRU regression (LP: #1877643)

Related branches

Steve Langasek (vorlon)
Changed in netplan.io (Ubuntu Bionic):
status: New → Triaged
importance: Undecided → High
tags: added: regression-update
Revision history for this message
br (bcns01) wrote :

Would love to see it become a warning for bionic rather than revert.

The previous (lack of) validation allowed invalid configs to silently be accepted, leading to unexpected behaviour when processed by the backend (e.g. networkd).

In our case, we had machines lose connectivity on reboot after a long period of up-time because we had listed the bonding mode number (4) instead of the valid name (802.3ad). IIRC, at the time, we eventually found that this made the bonding mode fall back to round-robin.

tags: added: id-5eb5a516d9abc944cc31aaed
Lukas Märdian (slyon)
Changed in netplan.io (Ubuntu Bionic):
status: Triaged → In Progress
assignee: nobody → Lukas Märdian (slyon)
Revision history for this message
Lukas Märdian (slyon) wrote :
Changed in netplan.io (Ubuntu):
status: New → Invalid
Lukas Märdian (slyon)
tags: added: upgrade-software-version verification-needed verification-needed-bionic
Lukas Märdian (slyon)
description: updated
Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello Steve, or anyone else affected,

Accepted netplan.io into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/netplan.io/0.99-0ubuntu3~18.04.2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in netplan.io (Ubuntu Bionic):
status: In Progress → Fix Committed
Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (netplan.io/0.99-0ubuntu3~18.04.2)

All autopkgtests for the newly accepted netplan.io (0.99-0ubuntu3~18.04.2) for bionic have finished running.
The following regressions have been reported in tests triggered by the package:

netplan.io/0.99-0ubuntu3~18.04.2 (amd64)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/bionic/update_excuses.html#netplan.io

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Revision history for this message
Lukas Märdian (slyon) wrote :

Hi Brian,

for Bionic SRU verification, I checked the logs of the automatic integration test-suite (autopkgtests) of netplan.io (0.99-0ubuntu3~18.04.2) and made sure all tests finished successfully.

Vorlon re-trigger one autopkgtest for bionic/amd64, due to a timing issue (flaky test); it ran successfully the 2nd time and all autopkgtests for Bionic are now green. All bionic test logs are attached to the description of this bug report.

Additionally, I executed the following manual test inside a Bionic multipass instance, which shows that netplan's 'generate' is not rejecting the config anymore, but printing a warning instead!

All looking good to me!

=== TEST SETUP ===
ubuntu@b:~$ cat test.yaml
network:
  version: 2
  ethernets:
    ens4:
      match:
        name: eth0
  bonds:
    bond0:
      interfaces: [ens4]
      parameters:
        mode: lacp
        arp-ip-targets:
          - 192.168.0.10
      dhcp4: true

=== BEFORE ===
ubuntu@b:~$ dpkg -l | grep netplan
ii libnetplan0:amd64 0.99-0ubuntu3~18.04.1
ii netplan.io 0.99-0ubuntu3~18.04.1

ubuntu@b:~$ sudo /lib/netplan/generate test.yaml
test.yaml:11:15: Error in network definition: unknown bond mode 'lacp'
        mode: lacp
              ^
ubuntu@b:~$ echo $?
1

=== AFTER ===
ubuntu@b:~$ dpkg -l | grep netplan
ii libnetplan0:amd64 0.99-0ubuntu3~18.04.2
ii netplan.io 0.99-0ubuntu3~18.04.2

ubuntu@b:~$ sudo /lib/netplan/generate test.yaml
WARNING: unknown bond mode 'lacp'. Your config needs to be updated to work with future series of Ubuntu.
ubuntu@b:~$ echo $?
0

description: updated
tags: added: verification-done verification-done-bionic
removed: verification-needed verification-needed-bionic
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package netplan.io - 0.99-0ubuntu3~18.04.2

---------------
netplan.io (0.99-0ubuntu3~18.04.2) bionic; urgency=medium

  * Add d/p/Fix-invalid-bond-mode-SRU-regression-LP-1877643.patch (LP: #1877643)
    - Fix regression in strict bond mode checking, introduced in netplan v0.98
    - https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/1877643

 -- Lukas Märdian <email address hidden> Mon, 11 May 2020 10:00:09 +0200

Changed in netplan.io (Ubuntu Bionic):
status: Fix Committed → Fix Released
Revision history for this message
Brian Murray (brian-murray) wrote : Update Released

The verification of the Stable Release Update for netplan.io has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.