import org.opendaylight.infrautils.utils.function.InterruptibleCheckedConsumer;
import org.opendaylight.serviceutils.srm.RecoverableListener;
import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortReason;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
fcNodeConnectorNew.getName());
if (InterfaceManagerCommonUtils.isNovaPort(portName) || InterfaceManagerCommonUtils.isK8SPort(portName)) {
- NodeConnectorId nodeConnectorIdOld =
- FlowBasedServicesUtils.getNodeConnectorIdFromInterface(portName, interfaceManagerCommonUtils);
+ NodeConnectorId nodeConnectorIdOld = null;
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
+ .ietf.interfaces.rev140508.interfaces.state.Interface interfaceState = interfaceManagerCommonUtils
+ .getInterfaceState(interfaceName);
+ if (interfaceState != null) {
+ List<String> ofportIds = interfaceState.getLowerLayerIf();
+ nodeConnectorIdOld = new NodeConnectorId(ofportIds.get(0));
+ }
if (nodeConnectorIdOld != null && !nodeConnectorId.equals(nodeConnectorIdOld)) {
BigInteger dpnIdOld = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorIdOld);
BigInteger dpnIdNew = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
if (!Objects.equals(dpnIdOld, dpnIdNew)) {
- if (fcNodeConnectorNew.getReason() != PortReason.Add) {
+ if ((fcNodeConnectorNew.getReason() != PortReason.Add)
+ && (interfaceState.getOperStatus()
+ != Interface.OperStatus.Unknown)) {
LOG.error("Dropping Port update event for {}, as DPN id is changed from {} to {}",
fcNodeConnectorNew.getName(), dpnIdOld, dpnIdNew);
return;