** Description changed:

+ [Impact]
+ snapd uses netplan's DBus API to create config objects and set/try/apply 
changed configuration. It uses origin-hints (like 90-snapd-conf.yaml) to 
separate it's configuration from the user owned YAML configuration.
+ 
+ If this origin-hint file does not exist or is empty, it might lead to
+ crashes inside the 'netplan set' CLI, depending on the called operation
+ and configuration.
+ 
+ [Test Plan]
+ In addition to running & passing the full set of unit- and integration-tests 
(that contains new tests to check for the cases described in this bug), as 
described in https://wiki.ubuntu.com/NetplanUpdates we want to run the two 
reproducer scripts attached to this bug and make sure they do not show any 
python crashes from the netplan CLI:
+ 
+ $ ./netplan-dbus-perculiar2.sh
+ $ ./repro.sh
+ 
+ autopkgtest logs:
+ * Impish:
+ TBD: amd64, arm64, armhf, ppc64el, s390x
+ 
+ * Hirsute:
+ TBD: amd64, arm64, armhf, ppc64el, s390x
+ 
+ * Focal:
+ TBD: amd64, arm64, armhf, ppc64el, s390x
+ 
+ [Where problems could occur]
+ This upload contains changes to the CLI of netplan, if anything goes wrong it 
could impact the interactive usage of 'netplan set' by the user.
+ 
+ [Other Info]
+ The full set of autopkgtest logs will be attached after the upload is 
accepted into -proposed and the tests have been run on the official 
autopkgtest.u.c
+ infrastructure.
+ 
+ === Original Description ===
+ 
  Hey, sorry to bother you again with a crash. Help welcome!
  
  I have:
  
  $ $ apt list netplan.io
  Listing... Done
  netplan.io/now 0.103-0ubuntu5~21.04.2 amd64 [installed,local]
  
  $ zcat /usr/share/doc/netplan.io/changelog.Debian.gz |head -n 6
  netplan.io (0.103-0ubuntu5~21.04.2) hirsute; urgency=medium
  
-   * Backport patches from impish:
-     + Add d/p/0006-netplan-set-make-it-possible-to-unset-a-whole-devtyp.patch:
-       Fix unset of a devtype subtree, e.g. "netplan set 
network.ethernets=null"
-       (LP: #1942930)
+   * Backport patches from impish:
+     + Add d/p/0006-netplan-set-make-it-possible-to-unset-a-whole-devtyp.patch:
+       Fix unset of a devtype subtree, e.g. "netplan set 
network.ethernets=null"
+       (LP: #1942930)
  
  With:
  $ netplan get
  network:
-   renderer: NetworkManager
-   version: 2
+   renderer: NetworkManager
+   version: 2
  
  When I do the following:
  $ sudo netplan set network.ethernets=null
  that works just fine now.
  
  But when I do (what I think is) the dbus equivalent:
  
  path=$(dbus-send --system --print-reply --type=method_call 
--dest=io.netplan.Netplan /io/netplan/Netplan io.netplan.Netplan.Config|grep 
path|cut -f2 -d'"')
  dbus-send --system --print-reply --type=method_call --dest=io.netplan.Netplan 
"$path" io.netplan.Netplan.Config.Set string:"network.ethernets=null"  
string:"90-snapd-conf"
  
  I get:
  
  Error org.freedesktop.DBus.Error.Failed: netplan set failed: Child process 
exited with code 1
  stdout: ''
  stderr: '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 310, in run_command
-     self.func()
-   File "/usr/share/netplan/netplan/cli/commands/set.py", line 53, in run
-     self.run_command()
-   File "/usr/share/netplan/netplan/cli/utils.py", line 310, in run_command
-     self.func()
-   File "/usr/share/netplan/netplan/cli/commands/set.py", line 106, in 
command_set
-     self.write_file(subtree, hint + '.yaml', self.root_dir)
-   File "/usr/share/netplan/netplan/cli/commands/set.py", line 176, in 
write_file
-     raise Exception('Invalid input: {}'.format(set_tree))
+   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 310, in run_command
+     self.func()
+   File "/usr/share/netplan/netplan/cli/commands/set.py", line 53, in run
+     self.run_command()
+   File "/usr/share/netplan/netplan/cli/utils.py", line 310, in run_command
+     self.func()
+   File "/usr/share/netplan/netplan/cli/commands/set.py", line 106, in 
command_set
+     self.write_file(subtree, hint + '.yaml', self.root_dir)
+   File "/usr/share/netplan/netplan/cli/commands/set.py", line 176, in 
write_file
+     raise Exception('Invalid input: {}'.format(set_tree))
  Exception: Invalid input: {'network': {'ethernets': None}}
  '
  
  Any help or tips appreciated!

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1946957

Title:
  Unset of a subtree crashes with invalid (non existing) origin-hint

To manage notifications about this bug go to:
https://bugs.launchpad.net/netplan/+bug/1946957/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to