In the event the configuration file exists and contains a
interfaces key with no nodes, the current validation will not
detect it and cause an exception when trying to iterate on a
NoneType value.
Avoid using interface name when resolving sysfs objects
At the point in time in the boot process this script is run
interface names has not settled yet, so we can't really rely on
/sys/class/net/* paths for anything.
Go the route via /sys/bus/pci/devices instead.
Also make the resolution of netdev name from PCI device more robust
taking into account PCI devices that may have multiple netdevs.
Add support for matching devices on MAC or PCI address
When running this service early in the boot sequence the interface
names may be unpredictable. Add support for matching devices on
MAC address or PCI address.
When used together with the `mlnx-switchdev-mode` package we need
to do the initialization of VFs prior to netplan applying runtime
network system config. This is to be able to support any required
initialization before putting network interfaces into bonds etc.