I can reproduce this issue in a clean Noble LXD container:
$ lxc launch ubuntu-daily:noble nn-nm-integration
root@nn-nm-integration:~# apt install network-manager
[...]
# rename primary interface to "cockpit"
root@nn-nm-integration:~# ip link set eth0 name cockpit
root@nn-nm-integration:~# nmcli c del netplan-eth0
root@nn-nm-integration:~# netplan set network.renderer=NetworkManager
--origin-hint=00-renderer
root@nn-nm-integration:~# netplan apply
# Create connections through NM/cockpit
root@nn-nm-integration:~# nmcli con add type ethernet con-name cockpit ifname
cockpit
root@nn-nm-integration:~# nmcli connection add type bond con-name tbond ifname
tbond bond.options
"mode=active-backup,downdelay=0,miimon=100,updelay=0,primary=cockpit"
root@nn-nm-integration:~# nmcli con modify cockpit master tbond
root@nn-nm-integration:~# nmcli con show tbond | grep ^bond
bond.options:
mode=active-backup,downdelay=0,miimon=100,updelay=0
root@nn-nm-integration:~# netplan get
Command failed:
/etc/netplan/90-NM-ec3b1cd3-bf73-4052-9b80-afa81f6ac82e.yaml:13:18: Error in
network definition: tbond: interface 'cockpit' is not defined
primary: "cockpit"
^
# Manual fix as lined out in the bug description:
root@nn-nm-integration:~# nmcli c
NAME UUID TYPE DEVICE
cockpit 2ba922c0-0dcc-412a-8e94-2fcc51f440bd ethernet cockpit
tbond ec3b1cd3-bf73-4052-9b80-afa81f6ac82e bond tbond
lo 7f40f45c-9f66-4971-b467-9583195bddb6 loopback lo
root@nn-nm-integration:~# vim
/etc/netplan/90-NM-2ba922c0-0dcc-412a-8e94-2fcc51f440bd.yaml
=> change "NM-2ba922c0-0dcc-412a-8e94-2fcc51f440bd" NetDef to "cockpit"
root@nn-nm-integration:~# netplan apply
root@nn-nm-integration:~# nmcli con show tbond | grep ^bond
bond.options:
mode=active-backup,downdelay=0,miimon=100,primary=cockpit,updelay=0
root@nn-nm-integration:~# netplan get
network:
version: 2
ethernets:
cockpit:
renderer: NetworkManager
match:
name: "cockpit"
wakeonlan: true
networkmanager:
uuid: "2ba922c0-0dcc-412a-8e94-2fcc51f440bd"
name: "cockpit"
passthrough:
connection.controller: "tbond"
connection.master: "tbond"
connection.port-type: "bond"
connection.slave-type: "bond"
connection.timestamp: "1742818225"
ethernet._: ""
bonds:
tbond:
renderer: NetworkManager
dhcp4: true
dhcp6: true
parameters:
mode: "active-backup"
mii-monitor-interval: "100"
up-delay: "0"
down-delay: "0"
primary: "cockpit"
networkmanager:
uuid: "ec3b1cd3-bf73-4052-9b80-afa81f6ac82e"
name: "tbond"
passthrough:
ipv6.addr-gen-mode: "default"
ipv6.ip6-privacy: "-1"
proxy._: ""
# Additional issue
While playing with this reproducer, I ran into an additional issue: Depending
on how the UUIDs are generated, we might end up in a state where the
/etc/netplan/90-NM-<UUID>.yaml filename for the bond sorts before the YAML file
of the primary interface. In such case, fixing the NetDef name to "cockpit"
manually doesn't do the trick, as Netplan still can't find that interface when
parsing the files.
# Workaround
When the configuration is created through "netplan set" instead of "nmcli" we
can avoid the "NM-<UUID>" naming scheme that is autogenearted by the
Netplan-NetworkManager integration.
So we can replace the following "nmcli" command with the next "netplan set"
command to avoid this issue:
$ nmcli con add type ethernet con-name cockpit ifname cockpit"
$ netplan set "ethernets.cockpit={renderer: 'NetworkManager', match: {name:
'cockpit'}, networkmanager: {name: 'cockpit'}}" --origin-hint=01-primary
# Approach
In order to fix this properly, we need to replicate NetworkManagers
connection-profile naming logic (incl. fallback if some name is already taken)
in Netplan's NM integration code. Additionally, we need to work with additional
parsing passes, to make sure connection-profiles stored in Netplan can always
be found, even if their filename sorts them in a different order. This is a
bigger refactoring for the Netplan-NetworkManager integration and needs some
dedicated engineering time.
** Changed in: netplan.io (Ubuntu)
Status: Confirmed => Triaged
** Changed in: netplan.io (Ubuntu)
Importance: Undecided => Medium
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to network-manager in Ubuntu.
https://bugs.launchpad.net/bugs/2098093
Title:
Setting primary interface for a bond fails with netplan
Status in netplan.io package in Ubuntu:
Triaged
Status in network-manager package in Ubuntu:
Confirmed
Bug description:
Ubuntu 2404
network-manager 1.46.0-1ubuntu2.2
netplan.io 1.1.1-1~ubuntu24.04.1
When [improving support for primary interfaces of
bonds](https://github.com/cockpit-project/cockpit/pull/21533) in
Cockpit, we encountered this message in the journal:
```
Feb 10 08:43:17 ubuntu NetworkManager[9361]:
/etc/netplan/90-NM-861a710b-9858-48f4-b5e5-a770ab67bd1f.yaml:13:18: Error in
network definition: tbond: interface 'cockpit' is not defined
Feb 10 08:43:17 ubuntu NetworkManager[9361]: primary: "cockpit"
Feb 10 08:43:17 ubuntu NetworkManager[9361]: ^
```
The message seems to come from "netplan apply":
```
# netplan apply
[...]
/etc/netplan/90-NM-4883fb46-4315-41f1-b945-bb096768da61.yaml:13:18: Error in
network definition: tbond: interface 'cockpit' is not defined
primary: "cockpit"
^
# echo $?
78
```
NetworkManager seems to ignore the failure, and somehow the bond
interface is created anyway, but the "bond.options" setting of its
connection doesn't include the expected "primary" attribute:
```
# nmcli con show tbond | grep ^bond
bond.options:
mode=active-backup,downdelay=0,miimon=100,updelay=0
```
I have no idea what the relationship between netplan and
NetworkManager is. I am guessing that NetworkManager is writing the
yaml files in /etc/netplan/.
The problem seems to be that the definition of the "cockpit" interface
uses a generated name:
```
network:
version: 2
ethernets:
NM-3287d9ea-ffda-49df-9f21-27594d7cc1b8:
renderer: NetworkManager
match:
name: "cockpit"
wakeonlan: true
networkmanager:
uuid: "3287d9ea-ffda-49df-9f21-27594d7cc1b8"
name: "cockpit"
passthrough:
connection.controller: "tbond"
connection.master: "tbond"
connection.port-type: "bond"
connection.slave-type: "bond"
ethernet._: ""
```
If I change this to
```
network:
version: 2
ethernets:
cockpit:
renderer: NetworkManager
match:
name: "cockpit"
[...]
```
then the error disappears and `bond.options` shows the expected value:
```
# nmcli con show tbond | grep ^bond
bond.options:
mode=active-backup,downdelay=0,miimon=100,primary=cockpit,updelay=0
```
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/2098093/+subscriptions
--
Mailing list: https://launchpad.net/~touch-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~touch-packages
More help : https://help.launchpad.net/ListHelp