This applies to software devices in general.
For example, with WireGuard...
- if you first don't have the WireGuard kernel module installed
- then create a profile that causes NetworkManager to try to connect (which fails, as the device cannot be created/realized)
- then install the WireGuard kernel module
- then activation of the device still fails
But let's instead reproduce it with bond:
# ensure you have no NetworkManager connection profiles for bonds
echo "blacklist bonding" > /etc/modprobe.d/no-bonding.conf
# verify it works.
modprobe --use-blacklist bonding
# create a profile, which will try to autoconnect...
nmcli connection add type bond con-name b0
# of course, autoconnect failed. Note in the log:
# <warn> [1551997903.2151] platform-linux: do-add-link[nm-bond/bond]: failure # <error> [1551997903.2152] manager: (b0) couldn't create the device: Failed to create bond interface 'nm-bond' for 'b0': Operation not supported
# now, enable and load the module again
rm -f /etc/modprobe.d/no-bonding.conf
# Note that NM fails to activate the profile:
nmcli connection up b0
#Error: Connection activation failed: Failed to find a compatible device for this connection
# note that deleting the bonding profile, and recreating it would succeed to activate it.