From a506290d8abacdebd23a8b3dc1e671ee7601e7af Mon Sep 17 00:00:00 2001 From: Gilles Thouenon Date: Sat, 6 Mar 2021 15:34:27 +0100 Subject: [PATCH] Update portmapping on port state notification - review javadoc for PortMapping interface - implements new getMapping method to retreive mapping from circuit-pack name and port name - add new updateMappingObject method - review updateMapping() method - review createMappingObject() method JIRA: TRNSPRTPCE-423 Signed-off-by: Gilles Thouenon Change-Id: I72fe43f17b395ba67f8ac24a41e65b294f06d171 --- .../common/mapping/PortMapping.java | 70 +++++++++++----- .../common/mapping/PortMappingImpl.java | 81 ++++++------------- .../common/mapping/PortMappingVersion121.java | 46 ++++++++--- .../common/mapping/PortMappingVersion221.java | 53 ++++++++---- .../common/mapping/PortMappingVersion710.java | 47 ++++++++--- 5 files changed, 183 insertions(+), 114 deletions(-) diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java index a9965de05..3d8345db9 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java @@ -16,7 +16,7 @@ public interface PortMapping { /** * This method creates logical to physical port mapping for a given device. - * Instead of parsing all the circuit packs/ports in the device this methods + * Instead of parsing all the circuit packs/ports in the device, this methods * does a selective read operation on degree/srg subtree to get circuit * packs/ports that map to : * @@ -48,8 +48,8 @@ public interface PortMapping { boolean createMappingData(String nodeId, String nodeVersion); /** - * This method removes mapping data from the datastore after disconnecting - * ODL from a Netconf device. + * This method removes mapping data from the datastore after disconnecting ODL + * from a Netconf device. * * @param nodeId * node ID @@ -57,10 +57,10 @@ public interface PortMapping { void deleteMappingData(String nodeId); /** - * This method for a given node's termination point returns the Mapping - * object based on portmapping.yang model stored in the MD-SAL data store - * which is created when the node is connected for the first time. The - * mapping object basically contains the following attributes of interest: + * This method for a given node's termination point returns the Mapping object + * based on portmapping.yang model stored in the MD-SAL data store which is + * created when the node is connected for the first time. The mapping object + * basically contains the following attributes of interest: * *

* 1. Supporting circuit pack @@ -69,8 +69,7 @@ public interface PortMapping { * 2. Supporting port * *

- * 3. Supporting OMS interface (if port on ROADM) 4. Supporting OTS - * interface (if port on ROADM) + * 3. Supporting OTS/OMS interface (if port on ROADM) * * @param nodeId * Unique Identifier for the node of interest. @@ -82,10 +81,27 @@ public interface PortMapping { Mapping getMapping(String nodeId, String logicalConnPoint); /** - * This method for a given node's media channel-capabilities returns the - * object based on portmapping.yang model stored in the MD-SAL data store - * which is created when the node is connected for the first time. The - * mapping object basically contains the following attributes of interest: + * This method allows retrieving a Mapping object from the mapping list stored in + * the MD-SAL data store. The main interest is to retrieve the + * logical-connection-point associated with a given port on a supporting + * circuit-pack + * + * @param nodeId + * Unique Identifier for the node of interest. + * @param circuitPackName + * Name of the supporting circuit-pack + * @param circuitPackName + * Name of the supporting port + * + * @return Result Mapping object if success otherwise null. + */ + Mapping getMapping(String nodeId, String circuitPackName, String portName); + + /** + * This method, for a given node media channel-capabilities, returns the object + * based on portmapping.yang model stored in the MD-SAL data store which is + * created when the node is connected for the first time. The mapping object + * basically contains the following attributes of interest: * *

* 1. slot width granularity @@ -94,8 +110,10 @@ public interface PortMapping { * 2. center frequency granularity * *

- * 3. Supporting OMS interface (if port on ROADM) 4. Supporting OTS - * interface (if port on ROADM) + * 3. Supporting OMS interface (if port on ROADM) + * + *

+ * 4. Supporting OTS interface (if port on ROADM) * * @param nodeId * Unique Identifier for the node of interest. @@ -106,14 +124,26 @@ public interface PortMapping { */ McCapabilities getMcCapbilities(String nodeId, String mcLcp); + /** + * This method for a given node, allows to update a specific mapping based on + * portmapping.yang model already stored in the MD-SAL data store, following + * some changes on the device port (creation of interface supported on this + * port, change of port admin state, etc). + * + * @param nodeId + * Unique Identifier for the node of interest. + * @param mapping + * Old mapping to be updated. + * + * @return Result true/false based on status of operation. + */ boolean updateMapping(String nodeId, Mapping mapping); /** - * Returns all Mapping informations for a given ordm device. - * This method returns all Mapping informations already stored in the MD-SAL - * data store for a given openroadm device. Beyound the list of mappings, it - * gives access to general node information as its version or its node type, - * etc. + * Returns all Mapping informations for a given ordm device. This method returns + * all Mapping informations already stored in the MD-SAL data store for a given + * openroadm device. Beyound the list of mappings, it gives access to general + * node information as its version or its node type, etc. * * @param nodeId * Unique Identifier for the node of interest. diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java index 0275dcf62..d9b120dab 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java @@ -11,6 +11,7 @@ import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEV import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_2_2_1; import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_7_1_0; +import java.util.Map; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -23,12 +24,12 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmappi import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.Nodes; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.NodesKey; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.Mapping; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.MappingBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.MappingKey; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.McCapabilities; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.McCapabilitiesKey; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.NodeInfo.OpenroadmVersion; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,8 +67,6 @@ public class PortMappingImpl implements PortMapping { } } - - @Override public Mapping getMapping(String nodeId, String logicalConnPoint) { @@ -91,6 +90,28 @@ public class PortMappingImpl implements PortMapping { return null; } + @Override + public Mapping getMapping(String nodeId, String circuitPackName, String portName) { + KeyedInstanceIdentifier portMappingIID = InstanceIdentifier.create(Network.class) + .child(Nodes.class, new NodesKey(nodeId)); + try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) { + Optional portMapppingOpt = readTx.read(LogicalDatastoreType.CONFIGURATION, portMappingIID).get(); + if (!portMapppingOpt.isPresent()) { + LOG.warn("Could not get portMapping for node {}", nodeId); + return null; + } + Map mappings = portMapppingOpt.get().getMapping(); + for (Mapping mapping : mappings.values()) { + if (circuitPackName.equals(mapping.getSupportingCircuitPackName()) + && portName.equals(mapping.getSupportingPort())) { + return mapping; + } + } + } catch (InterruptedException | ExecutionException ex) { + LOG.error("Unable to get mapping list for nodeId {}", nodeId, ex); + } + return null; + } @Override public McCapabilities getMcCapbilities(String nodeId, String mcLcp) { @@ -139,57 +160,9 @@ public class PortMappingImpl implements PortMapping { case 1: return portMappingVersion121.updateMapping(nodeId, oldMapping); case 2: - MappingBuilder oldMapping2Bldr221 = new MappingBuilder() - .setLogicalConnectionPoint(oldMapping.getLogicalConnectionPoint()) - .setPortDirection(oldMapping.getPortDirection()); - if (oldMapping.getConnectionMapLcp() != null) { - oldMapping2Bldr221.setConnectionMapLcp(oldMapping.getConnectionMapLcp()); - } - if (oldMapping.getPartnerLcp() != null) { - oldMapping2Bldr221.setPartnerLcp(oldMapping.getPartnerLcp()); - } - if (oldMapping.getPortQual() != null) { - oldMapping2Bldr221.setPortQual(oldMapping.getPortQual()); - } - if (oldMapping.getSupportingCircuitPackName() != null) { - oldMapping2Bldr221.setSupportingCircuitPackName(oldMapping.getSupportingCircuitPackName()); - } - if (oldMapping.getSupportingOms() != null) { - oldMapping2Bldr221.setSupportingOms(oldMapping.getSupportingOms()); - } - if (oldMapping.getSupportingOts() != null) { - oldMapping2Bldr221.setSupportingOts(oldMapping.getSupportingOts()); - } - if (oldMapping.getSupportingPort() != null) { - oldMapping2Bldr221.setSupportingPort(oldMapping.getSupportingPort()); - } - return portMappingVersion22.updateMapping(nodeId, oldMapping2Bldr221.build()); + return portMappingVersion22.updateMapping(nodeId, oldMapping); case 3: - MappingBuilder oldMapping2Bldr710 = new MappingBuilder() - .setLogicalConnectionPoint(oldMapping.getLogicalConnectionPoint()) - .setPortDirection(oldMapping.getPortDirection()); - if (oldMapping.getConnectionMapLcp() != null) { - oldMapping2Bldr710.setConnectionMapLcp(oldMapping.getConnectionMapLcp()); - } - if (oldMapping.getPartnerLcp() != null) { - oldMapping2Bldr710.setPartnerLcp(oldMapping.getPartnerLcp()); - } - if (oldMapping.getPortQual() != null) { - oldMapping2Bldr710.setPortQual(oldMapping.getPortQual()); - } - if (oldMapping.getSupportingCircuitPackName() != null) { - oldMapping2Bldr710.setSupportingCircuitPackName(oldMapping.getSupportingCircuitPackName()); - } - if (oldMapping.getSupportingOms() != null) { - oldMapping2Bldr710.setSupportingOms(oldMapping.getSupportingOms()); - } - if (oldMapping.getSupportingOts() != null) { - oldMapping2Bldr710.setSupportingOts(oldMapping.getSupportingOts()); - } - if (oldMapping.getSupportingPort() != null) { - oldMapping2Bldr710.setSupportingPort(oldMapping.getSupportingPort()); - } - return portMappingVersion710.updateMapping(nodeId, oldMapping2Bldr710.build()); + return portMappingVersion710.updateMapping(nodeId, oldMapping); default: return false; } @@ -213,6 +186,4 @@ public class PortMappingImpl implements PortMapping { } return null; } - - } diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java index c3e5a744a..1e42ed0ae 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java @@ -154,7 +154,7 @@ public class PortMappingVersion121 { } public boolean updateMapping(String nodeId, Mapping oldMapping) { - InstanceIdentifier portIId = InstanceIdentifier.create(OrgOpenroadmDevice.class) + InstanceIdentifier portId = InstanceIdentifier.create(OrgOpenroadmDevice.class) .child(CircuitPacks.class, new CircuitPacksKey(oldMapping.getSupportingCircuitPackName())) .child(Ports.class, new PortsKey(oldMapping.getSupportingPort())); if ((oldMapping == null) || (nodeId == null)) { @@ -162,15 +162,9 @@ public class PortMappingVersion121 { return false; } try { - Optional portObject = deviceTransactionManager.getDataFromDevice(nodeId, - LogicalDatastoreType.OPERATIONAL, portIId, Timeouts.DEVICE_READ_TIMEOUT, - Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (!portObject.isPresent()) { - return false; - } - Ports port = portObject.get(); - Mapping newMapping = createMappingObject(nodeId, port, oldMapping.getSupportingCircuitPackName(), - oldMapping.getLogicalConnectionPoint()); + Ports port = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, + portId, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT).get(); + Mapping newMapping = updateMappingObject(nodeId, port, oldMapping); LOG.debug("{} : Updating old mapping Data {} for {} by new mapping data {}", nodeId, oldMapping, oldMapping.getLogicalConnectionPoint(), newMapping); final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction(); @@ -592,8 +586,36 @@ public class PortMappingVersion121 { if (!logicalConnectionPoint.contains(StringConstants.TTP_TOKEN) || (port.getInterfaces() == null)) { return mpBldr.build(); } + mpBldr = updateMappingInterfaces(nodeId, mpBldr, port); + return mpBldr.build(); + } + + private Mapping updateMappingObject(String nodeId, Ports port, Mapping oldmapping) { + MappingBuilder mpBldr = new MappingBuilder(oldmapping); + updateMappingStates(mpBldr, port, oldmapping); + if ((port.getInterfaces() == null) + || (!oldmapping.getLogicalConnectionPoint().contains(StringConstants.TTP_TOKEN) + && !oldmapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN))) { + return mpBldr.build(); + } + // Get interfaces provisioned on the port + mpBldr = updateMappingInterfaces(nodeId, mpBldr, port); + return mpBldr.build(); + } + + private MappingBuilder updateMappingStates(MappingBuilder mpBldr, Ports port, Mapping oldmapping) { + if (port.getAdministrativeState() != null + && !port.getAdministrativeState().getName().equals(oldmapping.getPortAdminState())) { + mpBldr.setPortAdminState(port.getAdministrativeState().name()); + } + if (port.getOperationalState() != null + && !port.getOperationalState().getName().equals(oldmapping.getPortOperState())) { + mpBldr.setPortOperState(port.getOperationalState().name()); + } + return mpBldr; + } - // Get OMS and OTS interface provisioned on the TTP's + private MappingBuilder updateMappingInterfaces(String nodeId, MappingBuilder mpBldr, Ports port) { for (Interfaces interfaces : port.getInterfaces()) { try { Optional openRoadmInterface = this.openRoadmInterfaces.getInterface(nodeId, @@ -618,7 +640,7 @@ public class PortMappingVersion121 { nodeId, interfaces.getInterfaceName(), ex); } } - return mpBldr.build(); + return mpBldr; } private Mapping createXpdrMappingObject(String nodeId, Ports port, String circuitPackName, diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java index 88a3793f6..aebc1db9f 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java @@ -177,23 +177,17 @@ public class PortMappingVersion221 { } public boolean updateMapping(String nodeId, Mapping oldMapping) { - InstanceIdentifier portIId = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey(oldMapping.getSupportingCircuitPackName())) - .child(Ports.class, new PortsKey(oldMapping.getSupportingPort())); - if ((oldMapping == null) || (nodeId == null)) { + if (nodeId == null || oldMapping == null) { LOG.error("Impossible to update mapping"); return false; } + InstanceIdentifier portId = InstanceIdentifier.create(OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey(oldMapping.getSupportingCircuitPackName())) + .child(Ports.class, new PortsKey(oldMapping.getSupportingPort())); try { - Optional portObject = deviceTransactionManager.getDataFromDevice(nodeId, - LogicalDatastoreType.OPERATIONAL, portIId, Timeouts.DEVICE_READ_TIMEOUT, - Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (!portObject.isPresent()) { - return false; - } - Ports port = portObject.get(); - Mapping newMapping = createMappingObject(nodeId, port, oldMapping.getSupportingCircuitPackName(), - oldMapping.getLogicalConnectionPoint()); + Ports port = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, + portId, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT).get(); + Mapping newMapping = updateMappingObject(nodeId, port, oldMapping); LOG.debug("{} : Updating old mapping Data {} for {} by new mapping data {}", nodeId, oldMapping, oldMapping.getLogicalConnectionPoint(), newMapping); final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction(); @@ -787,7 +781,36 @@ public class PortMappingVersion221 { && !logicalConnectionPoint.contains(StringConstants.NETWORK_TOKEN))) { return mpBldr.build(); } - // Get OMS and OTS interface provisioned on the TTP's + mpBldr = updateMappingInterfaces(nodeId, mpBldr, port); + return mpBldr.build(); + } + + private Mapping updateMappingObject(String nodeId, Ports port, Mapping oldmapping) { + MappingBuilder mpBldr = new MappingBuilder(oldmapping); + updateMappingStates(mpBldr, port, oldmapping); + if ((port.getInterfaces() == null) + || (!oldmapping.getLogicalConnectionPoint().contains(StringConstants.TTP_TOKEN) + && !oldmapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN))) { + return mpBldr.build(); + } + // Get interfaces provisioned on the port + mpBldr = updateMappingInterfaces(nodeId, mpBldr, port); + return mpBldr.build(); + } + + private MappingBuilder updateMappingStates(MappingBuilder mpBldr, Ports port, Mapping oldmapping) { + if (port.getAdministrativeState() != null + && !port.getAdministrativeState().getName().equals(oldmapping.getPortAdminState())) { + mpBldr.setPortAdminState(port.getAdministrativeState().name()); + } + if (port.getOperationalState() != null + && !port.getOperationalState().getName().equals(oldmapping.getPortOperState())) { + mpBldr.setPortOperState(port.getOperationalState().name()); + } + return mpBldr; + } + + private MappingBuilder updateMappingInterfaces(String nodeId, MappingBuilder mpBldr, Ports port) { for (Interfaces interfaces : port.getInterfaces()) { try { Optional openRoadmInterface = this.openRoadmInterfaces.getInterface(nodeId, @@ -815,7 +838,7 @@ public class PortMappingVersion221 { nodeId, interfaces.getInterfaceName(), ex); } } - return mpBldr.build(); + return mpBldr; } private Mapping createXpdrMappingObject(String nodeId, Ports port, String circuitPackName, diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java index 1fc7b9aa4..9687e666c 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java @@ -180,7 +180,7 @@ public class PortMappingVersion710 { } public boolean updateMapping(String nodeId, Mapping oldMapping) { - InstanceIdentifier portIId = InstanceIdentifier.create(OrgOpenroadmDevice.class) + InstanceIdentifier portId = InstanceIdentifier.create(OrgOpenroadmDevice.class) .child(CircuitPacks.class, new CircuitPacksKey(oldMapping.getSupportingCircuitPackName())) .child(Ports.class, new PortsKey(oldMapping.getSupportingPort())); if ((oldMapping == null) || (nodeId == null)) { @@ -188,15 +188,9 @@ public class PortMappingVersion710 { return false; } try { - Optional portObject = deviceTransactionManager.getDataFromDevice(nodeId, - LogicalDatastoreType.OPERATIONAL, portIId, Timeouts.DEVICE_READ_TIMEOUT, - Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (!portObject.isPresent()) { - return false; - } - Ports port = portObject.get(); - Mapping newMapping = createMappingObject(nodeId, port, oldMapping.getSupportingCircuitPackName(), - oldMapping.getLogicalConnectionPoint()); + Ports port = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, + portId, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT).get(); + Mapping newMapping = updateMappingObject(nodeId, port, oldMapping); LOG.debug("{} : Updating old mapping Data {} for {} by new mapping data {}", nodeId, oldMapping, oldMapping.getLogicalConnectionPoint(), newMapping); final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction(); @@ -843,7 +837,36 @@ public class PortMappingVersion710 { && !logicalConnectionPoint.contains(StringConstants.NETWORK_TOKEN))) { return mpBldr.build(); } - // Get OMS and OTS interface provisioned on the TTP's + mpBldr = updateMappingInterfaces(nodeId, mpBldr, port); + return mpBldr.build(); + } + + private Mapping updateMappingObject(String nodeId, Ports port, Mapping oldmapping) { + MappingBuilder mpBldr = new MappingBuilder(oldmapping); + updateMappingStates(mpBldr, port, oldmapping); + if ((port.getInterfaces() == null) + || (!oldmapping.getLogicalConnectionPoint().contains(StringConstants.TTP_TOKEN) + && !oldmapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN))) { + return mpBldr.build(); + } + // Get interfaces provisioned on the port + mpBldr = updateMappingInterfaces(nodeId, mpBldr, port); + return mpBldr.build(); + } + + private MappingBuilder updateMappingStates(MappingBuilder mpBldr, Ports port, Mapping oldmapping) { + if (port.getAdministrativeState() != null + && !port.getAdministrativeState().getName().equals(oldmapping.getPortAdminState())) { + mpBldr.setPortAdminState(port.getAdministrativeState().name()); + } + if (port.getOperationalState() != null + && !port.getOperationalState().getName().equals(oldmapping.getPortOperState())) { + mpBldr.setPortOperState(port.getOperationalState().name()); + } + return mpBldr; + } + + private MappingBuilder updateMappingInterfaces(String nodeId, MappingBuilder mpBldr, Ports port) { for (Interfaces interfaces : port.getInterfaces()) { try { Optional openRoadmInterface = this.openRoadmInterfaces.getInterface(nodeId, @@ -871,7 +894,7 @@ public class PortMappingVersion710 { nodeId, interfaces.getInterfaceName(), ex); } } - return mpBldr.build(); + return mpBldr; } private Mapping createXpdrMappingObject(String nodeId, Ports port, String circuitPackName, -- 2.36.6