[Bug 1802322] Re: [regression] netplan apply is not idempotent and fails trying to rename a bond member interface
Launchpad Bug Tracker
1802322 at bugs.launchpad.net
Wed May 8 00:00:42 UTC 2019
This bug was fixed in the package netplan.io - 0.96-0ubuntu0.18.04.4
---------------
netplan.io (0.96-0ubuntu0.18.04.4) bionic; urgency=medium
* debian/patches/git_revert_explicit_renderer_def_ebc212a.patch: revert
commit ebc212a: make renderer values explicit at the end of each parsing
pass; it breaks "default" renderer behavior when multiple files may set
a global renderer and expect the last to take effect globally.
(LP: #1825206)
* debian/patches/git_reorg_netdef_validation_181b583.patch: correct the
fallout from the above change: validate netdefs in a single pass at the
very end of parsing, once we know which is the applicable renderer. This
makes sure tunnels get validated correctly.
netplan.io (0.96-0ubuntu0.18.04.3) bionic; urgency=medium
* debian/patches/disable-networkd-tunnels-ipip-gre.patch: disable IPIP and
GRE tunnel tests; those appear to be broken because neither the kernel nor
networkd bring up the device automatically as in other releases.
netplan.io (0.96-0ubuntu0.18.04.2) bionic; urgency=medium
* d/p/0001-Partially-revert-the-change-for-enabling-systemd-net.patch:
Partially revert changes to networkd jobs ordering: leave systemd-networkd
enabled in multi-user.target instead of network-online.target, as in some
minimal setups there might be no job requiring network-online.target,
whereas the natural target to reach for booting is multi-user.target.
(LP: #1821867)
netplan.io (0.96-0ubuntu0.18.04.1) bionic; urgency=medium
* Backport netplan.io 0.96 to 18.04.
* debian/patches/glib_changes.patch: Patch tests to work again on older GLib.
* debian/control: adjust Depends for bionic / re-add nplan package.
netplan.io (0.96-0ubuntu1) disco; urgency=medium
* New upstream release 0.96.
- Moved netplan-wpa@ services to earlier at boot (LP: #1819014)
- Restart services when unconfiguring (LP: #1811868)
- Use the .nmconnection extension for NM keyfiles (LP: #1817655)
- Fixed integration tests runner to correctly report failures
- Enforce integrity for use-routes in networkd backend.
- Ensure terminal state at end of test (LP: #1817660)
- Various small test fixes.
- Fix typos in documentation.
* debian/control: Update Maintainer for ubuntu upload.
netplan.io (0.95-2) unstable; urgency=medium
* Set Priority to optional (Closes: #920327).
netplan.io (0.95-1) unstable; urgency=medium
* New upstream release.
* Update autopkgtests from the upstream.
* Add debian/watch following GitHub releases.
* Add Homepage (Closes: #917233).
netplan.io (0.95) disco; urgency=medium
* New upstream release:
- Added support for WPA Enterprise / 802.1x authentication (LP: #1739578)
- Added support for setting up IP tunnels; supporting the types: ipip,
gretap, VTI, ISATAP (NetworkManager only), sit, gre, ipip6 and ip6ip6.
+ Fixes sit (ipv6) tunnels using Hurricane Electric (LP: #1799487)
- Add support to override networkd UseMTU setting (LP: #1807273)
- Generate output files in dependency order
- Refactored unit and integration tests, along with various cleanups.
- Add DHCP overrides to control route usage and default metric for DHCP
routes. (LP: #1776228)
- Mitigate against bad matching on devices behind bonds then they share
the same MAC from a physical interface. (LP: #1804861)
- Added snapcraft.yaml.
netplan.io (0.90.1) disco; urgency=medium
* Do not assume /etc/network exists in postinst, as netbase 5.5 no longer
creates it.
* netplan/cli/commands/ip.py: fix a flake.
netplan.io (0.90) disco; urgency=medium
* New upstream release:
- build: fixes for building on RPM-based distros
- build: code prettiness changes (make indentation consistent)
- Fix device name-changes detection (LP: #1770082)
- Add support for IPv6 Privacy Extensions (LP: #1750392)
- Add dhcp{4,6}-overrides to control DNS, NTP, hostname updates via DHCP
(LP: #1759014)
- Clarify MAC and MTU setting requirements (LP: #1800668)
- Various documentation fixes (LP: #1800669)
- Improve error reporting to give clearer messages and context
(LP: #1800670)
- Skip non-physical/bond interfaces when applying renames (LP: #1802322)
netplan.io (0.40.2-1) unstable; urgency=medium
* Upload to Debian (Closes: #882661).
netplan.io (0.40.2) cosmic; urgency=medium
* tests/integration.py: Mark regexes with r to pacify pycodestyle's
W605.
-- Mathieu Trudel-Lapierre <cyphermox at ubuntu.com> Fri, 26 Apr 2019
15:19:47 -0400
** Changed in: netplan.io (Ubuntu Bionic)
Status: Fix Committed => Fix Released
** Changed in: netplan.io (Ubuntu Cosmic)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to netplan.io in Ubuntu.
Matching subscriptions: foundations-bugs
https://bugs.launchpad.net/bugs/1802322
Title:
[regression] netplan apply is not idempotent and fails trying to
rename a bond member interface
Status in netplan:
Fix Released
Status in netplan.io package in Ubuntu:
Fix Released
Status in netplan.io source package in Bionic:
Fix Released
Status in netplan.io source package in Cosmic:
Fix Released
Bug description:
[Impact]
Usage of juju to deploy systems with bridge configurations is severely broken if using layer3+4 bonding, as renaming might be attempted and break the application of config.
[Test case]
1) Deploy a system using MaaS and Juju, with a network configuration such as:
bond0:
interfaces:
- enp4s0f0
- enp5s0f0
macaddress: 00:0a:f7:72:a7:28
mtu: 9000
parameters:
down-delay: 0
lacp-rate: fast
mii-monitor-interval: 100
mode: 802.3ad
transmit-hash-policy: layer3+4
up-delay: 0
enp4s0f0:
match:
macaddress: 00:0a:f7:72:a7:28
mtu: 9000
set-name: enp4s0f0
enp5s0f0:
match:
macaddress: 00:0e:1e:ac:67:00
mtu: 9000
set-name: enp5s0f0
[Regression potential]
This fix is to correct an existing regression. Changes in the rename code might otherwise impact the effect of attempting to rename interfaces when (and only when) 'netplan apply' is being run, which only ever happens as directed by the user (either directly at the command-line or via scripting such as via juju). Changes are limited to the behavior of 'netplan apply' in the interface renaming step; and the fix has been to ignore non-physical devices (which are not renamed anyway, but created) and physical devices members of a bond/bridge.
---
After an update for https://bugs.launchpad.net/netplan/+bug/1770082
was released for bionic and our systems started getting the new
packages, *clean* MAAS + Juju + Bionic + LXD container deployments
started to fail on bridge activation.
juju model-config logging-
config='<root>=WARNING;unit=DEBUG;juju.network.netplan=TRACE'
2018-11-08 13:44:10 DEBUG juju.network.netplan activate.go:99 Netplan activation result "Traceback (most recent call last):
File \"/usr/sbin/netplan\", line 23, in <module>
netplan.main()
File \"/usr/share/netplan/netplan/cli/core.py\", line 50, in main
self.run_command()
File \"/usr/share/netplan/netplan/cli/utils.py\", line 130, in run_command
self.func()
File \"/usr/share/netplan/netplan/cli/commands/apply.py\", line 43, in run
self.run_command()
File \"/usr/share/netplan/netplan/cli/utils.py\", line 130, in run_command
self.func()
File \"/usr/share/netplan/netplan/cli/commands/apply.py\", line 102, in command_apply
stderr=subprocess.DEVNULL)
File \"/usr/lib/python3.6/subprocess.py\", line 291, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ip', 'link', 'set', 'dev', 'enp5s0f0', 'name', 'enp4s0f0']' returned non-zero exit status 2.
" "" 1
From the Juju machine agent code:
command := fmt.Sprintf("%snetplan generate && netplan apply && sleep 10", params.RunPrefix)
// ...
logger.Debugf("Netplan activation result %q %q %d", result.Stderr, result.Stdout, result.Code)
The rename operation in question does not seem to be justified by
anything that juju would want to do.
Inspecting closer it can be seen that 00:0a:f7:72:a7:28 is a mac
address of enp4s0f0 which also happens to be a MAC address of the bond
and gets applied to all members of a bond (enp5s0f0 is of specific
interest) after the first run of netplan after the deployment.
It looks like a subsequent `netplan generate && netplan apply`
invocation by Juju causes netplan to try to apply "enp4s0f0" name to
"enp5s0f0" interface because it has "00:0a:f7:72:a7:28" for a mac
address as a result of becoming a bond member.
netplan generated by cloud-init:
http://paste.ubuntu.com/p/QfR4f5yMYP/
bond0:
interfaces:
- enp4s0f0
- enp5s0f0
enp4s0f0:
match:
macaddress: 00:0a:f7:72:a7:28
mtu: 9000
set-name: enp4s0f0
enp5s0f0:
match:
macaddress: 00:0e:1e:ac:67:00
mtu: 9000
set-name: enp5s0f0
curtin config:
http://paste.ubuntu.com/p/NkvZKqZYjr/
# ip addr show enp5s0f0
8: enp5s0f0: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 9000 qdisc mq master bond0 state DOWN group default qlen 1000
link/ether 00:0a:f7:72:a7:28 brd ff:ff:ff:ff:ff:ff
# ip addr show enp4s0f0
6: enp4s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP group default qlen 1000
link/ether 00:0a:f7:72:a7:28 brd ff:ff:ff:ff:ff:ff
This is currently blocking all of our bionic deployments as all of
them have bonds.
To manage notifications about this bug go to:
https://bugs.launchpad.net/netplan/+bug/1802322/+subscriptions
More information about the foundations-bugs
mailing list