[Bug 1771440] Re: "//" at beginning of YAML file path when error in network config found
Launchpad Bug Tracker
1771440 at bugs.launchpad.net
Wed Dec 5 18:47:48 UTC 2018
This bug was fixed in the package netplan.io - 0.40.1~18.04.3
---------------
netplan.io (0.40.1~18.04.3) bionic; urgency=medium
* Fix idempotency in renaming: bond members should be exempt from rename, as
they may all share a single MAC for the bond device. (LP: #1802322)
* tests/integration.py: add test designed to catch the above regression.
netplan.io (0.40.1~18.04.2) bionic; urgency=medium
* Fix typo breaking rename on 'netplan apply'. (LP: #1770082)
netplan.io (0.40.1~18.04.1) bionic; urgency=medium
* Backport netplan 0.40.1 to 18.04. (LP: #1793309)
netplan.io (0.40.1) cosmic; urgency=medium
* tests/generate.py: use random.sample() instead of random.choices() to
better support older pythons.
* Deal gracefully with empty files on 'netplan apply' (LP: #1795343)
netplan.io (0.40) cosmic; urgency=medium
* New upstream release:
- networkd: route source is PreferredSource= not From=
- Improve NetworkManager error reporting on unrenderable routes.
- Don't render ipv4 dns-search unless we have an ipv4 address.
(LP: #1786726)
- Set permissive umask on networkd .network, .link and .netdev files
(LP: #1736965, LP: #1768560)
- Fix support for link-scope routes. (LP: #1747455)
- Update man pages for deletion of replug code.
- Spell Gratuitous ARP correctly and make it work. (LP: #1756701)
- Many typo fixes for documentation. (LP: #1783940)
- Various build system fixes.
- Fix integration tests:
- iproute2 output changes for link-scope routes
- fix stability of networkd igmp-resend test
- fix manual_addresses test now that networkd lists ~. domain
- Deduplicate code for parsing interface options
- Add support for optional-addresses.
netplan.io (0.39) cosmic; urgency=medium
* New upstream release:
- Allow link-local addresses to be configured. (LP: #1771704)
- Forces bridges with no addresses to be brought online. (LP: #1736975)
netplan.io (0.38) cosmic; urgency=medium
* New upstream release:
- Write udev .rules files to /run/udev/rules.d to enforce interface
renaming. (LP: #1770082)
- Don't traceback for 'netplan ip leases' when iface is not managed or
doesn't DHCP (LP: #1768823)
- Fix duplicate "/" path separator in error messages (LP: #1771440)
- Fix incorrect terminal reset in 'netplan try' on Ctrl-C. (LP: #1768798)
- Updated doc entries: mtu, fix fwmark->mark, cleanup optional.
(LP: #1768783)
- Added documentation validation at build.
- Added configuration example for multi-ip interfaces.
* tests/integration.py: fix test_eth_and_bridge autopkg test harder.
* debian/control:
- Add iproute2 to Depends.
- Add python3-netifaces to Depends, Build-Depends.
-- Mathieu Trudel-Lapierre <cyphermox at ubuntu.com> Wed, 21 Nov 2018
14:42:59 -0500
** Changed in: netplan.io (Ubuntu Bionic)
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/1771440
Title:
"//" at beginning of YAML file path when error in network config found
Status in netplan:
Fix Released
Status in netplan.io package in Ubuntu:
Fix Released
Status in netplan.io source package in Bionic:
Fix Released
Bug description:
[Impact]
When performing "netplan try" or "netplan apply" on a network configuration with errors, netplan error out a message as follow :
$ netplan try
---------------------
Error in network definition //etc/netplan/50-cloud-init.yaml line 6 column 4: unknown key xversion
An error occured: the configuration could not be generated
---------------------
$ netplan apply
---------------------
Error in network definition //etc/netplan/50-cloud-init.yaml line 6 column 4: unknown key xversion
---------------------
[Explanation]
While debugging the situation a little more I found out that it seems to come from here:
# src/generate.c
---------------------
g_autofree char* glob_etc = g_strjoin(NULL, rootdir ?: "", G_DIR_SEPARATOR_S, "/etc/netplan/*.yaml", NULL);
g_autofree char* glob_run = g_strjoin(NULL, rootdir ?: "", G_DIR_SEPARATOR_S, "/run/netplan/*.yaml", NULL);
g_autofree char* glob_lib = g_strjoin(NULL, rootdir ?: "", G_DIR_SEPARATOR_S, "/lib/netplan/*.yaml", NULL);
---------------------
To prove my theory, as a debug exercise, I have modified netplan code
to g_fprint() the variable when the above commands are executed:
$ netplan apply
---------------------
glob_etc://etc/netplan/*.yaml
glob_run://run/netplan/*.yaml
glob_lib://lib/netplan/*.yaml
Error in network definition //etc/netplan/50-cloud-init.yaml line 6 column 4: unknown key xversion
---------------------
$ netplan try
---------------------
glob_etc://etc/netplan/*.yaml
glob_run://run/netplan/*.yaml
glob_lib://lib/netplan/*.yaml
Error in network definition //etc/netplan/50-cloud-init.yaml line 6 column 4: unknown key xversion
An error occured: the configuration could not be generated
---------------------
Further more investigation revealed that the double slash "//" is
added by the combination of G_DIR_SEPARATOR_S "/" and
"/etc/netplan/*.yaml" joined together with g_strjoin()
# netplan try
---------------------
rootdir:(null)
G_DIR_SEPARATOR_S:/
glob_etc://etc/netplan/*.yaml
Error in network definition //etc/netplan/50-cloud-init.yaml line 6 column 4: unknown key xversion
An error occured: the configuration could not be generated
---------------------
[Test Case]
1) Have netplan installed & configured
2) Do a typo in your network definition on purpose (above situation I change "version" for "xversion" to force the error to be displayed
3) Perform "netplan try" and/or "netplan apply"
The following output will be displayed:
"Error in network definition //etc/netplan/50-cloud-init.yaml line 6 column 4: unknown key xversion"
Ideally the output should look like this :
"Error in network definition /etc/netplan/50-cloud-init.yaml line 6 column 4: unknown key xversion"
With only 1 "/" instead of 2 "//".
[Regression Potential]
Regression low.
For some reasons it seems like multiples slashes can be handle without
problem. Functionality-wise, nothing will be change. Simply that the
file path will be treated with only 1 "/".
Example:
$ ls -altr /////////tmp/test
-rwxr-xr-x 1 user group 8392 May 15 18:14 /////////tmp/test
$ ls -altr /tmp/test
-rwxr-xr-x 1 user group 8392 May 15 18:14 /tmp/test
[Other info]
https://developer.gnome.org/glib/stable/glib-Standard-Macros.html#G-DIR-SEPARATOR-S:CAPS
https://developer.gnome.org/glib/stable/glib-String-Utility-Functions.html#g-strjoin
To manage notifications about this bug go to:
https://bugs.launchpad.net/netplan/+bug/1771440/+subscriptions
More information about the foundations-bugs
mailing list