IPA : LLDP disturbs the network configuration set up by NetworkManager as part of "DHCP-Less feature"
When the DHCP LESS feature is enabled and the primary network is supported by a bond, it seems that the LLDP performed by the ironic-python-agent disrupts the network configuration in place.
In the context of the baremetal platform, where the primary network is supported by a vlan on a bond. (ex bond0.13).
Network-Manager will configure the bond, interfaces, and VLAN to support the pre-provisioned IP. As a result, bond0.13 will be up and the pre-provisioned IP will be associated with it.
Then, when the ironic-python-agent starts and begins to perform LLDP, it seems that interfaces will be created based on the information returned by LLDP. This appears to disrupt the network configuration set up by Network-Manager.
Consequently, bond0.8, bond0.10, bond0.11, and bond0.14 were seen as UP on the server, even though no IP addresses were associated with them. (vlans 8,10,11,14 are probably present on switch interfaces)
This was sufficient for the configuration set up by Network-Manager to support the pre-provisioned IP on the primary to no longer function correctly. As a result, the server became unreachable and could not contact Ironic to signal the end of introspection.
It has not yet been analyzed why and how these (bond.x) interfaces disrupt the existing network configuration.
It is not easy to disable the LLDP performed by Ironic via the Metal3 chart, although the parameter ipa-collect-lldp exists, it is hardcoded in the Ironic template : https://build.opensuse.org/projects/isv:SUSE:Edge:Metal3:Ironic:2024.1/packages/ironic-24130-image/files/ironic.conf.j2?expand=1
extra_kernel_params = ipa-inspection-collectors={{ env.IRONIC_IPA_COLLECTORS }} ipa-enable-vlan-interfaces={{ env.IRONIC_INSPECTOR_VLAN_INTERFACES }} ipa-inspection-dhcp-all-interfaces=1 ipa-collect-lldp=1 But we can manipulate the `IRONIC_INSPECTOR_VLAN_INTERFACES parameter to prevent the VLANs from coming up due to LLDP : https://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/config.py#L325
This parameter cannot be directly manipulated via the chart; the idea is to modify its value directly in the ironic-bmo configmap (the configmap used by Ironic to build the configuration file).
Since LLDP is useful in some cases, it doesn't seem appropriate to disable LLDP by default, so one suggestion is to document how to do it.