Update portmapping on port state notification 42/95542/5
authorGilles Thouenon <gilles.thouenon@orange.com>
Sat, 6 Mar 2021 14:34:27 +0000 (15:34 +0100)
committerGuillaume Lambert <guillaume.lambert@orange.com>
Fri, 9 Apr 2021 19:17:22 +0000 (19:17 +0000)
- 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 <gilles.thouenon@orange.com>
Change-Id: I72fe43f17b395ba67f8ac24a41e65b294f06d171

common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java

index a9965de051c8e274496eea63ff9a92e01f35b115..3d8345db919cda6007b195e80f4c982e1dcb6886 100644 (file)
@@ -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:
      *
      * <p>
      * 1. Supporting circuit pack
@@ -69,8 +69,7 @@ public interface PortMapping {
      * 2. Supporting port
      *
      * <p>
-     * 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:
      *
      * <p>
      * 1. slot width granularity
@@ -94,8 +110,10 @@ public interface PortMapping {
      * 2. center frequency granularity
      *
      * <p>
-     * 3. Supporting OMS interface (if port on ROADM) 4. Supporting OTS
-     * interface (if port on ROADM)
+     * 3. Supporting OMS interface (if port on ROADM)
+     *
+     * <p>
+     * 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.
index 0275dcf62c807d2f16cf0422dc1aa83bbf18b4dc..d9b120dab5f4f326b7a7ae5ec58fa4c3b3c648fa 100644 (file)
@@ -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<Nodes, NodesKey> portMappingIID = InstanceIdentifier.create(Network.class)
+            .child(Nodes.class, new NodesKey(nodeId));
+        try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) {
+            Optional<Nodes> portMapppingOpt = readTx.read(LogicalDatastoreType.CONFIGURATION, portMappingIID).get();
+            if (!portMapppingOpt.isPresent()) {
+                LOG.warn("Could not get portMapping for node {}", nodeId);
+                return null;
+            }
+            Map<MappingKey, Mapping> 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;
     }
-
-
 }
index c3e5a744a5c17632e9e5b341f6b58e4946868a85..1e42ed0ae870f2a0ff40038a99cfecfaa10b50db 100644 (file)
@@ -154,7 +154,7 @@ public class PortMappingVersion121 {
     }
 
     public boolean updateMapping(String nodeId, Mapping oldMapping) {
-        InstanceIdentifier<Ports> portIId = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+        InstanceIdentifier<Ports> 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<Ports> 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<Interface> 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,
index 88a3793f69f391caf3400fa5219eef6b3bcafe68..aebc1db9f378faa63ce6d101bd89f4b6d2353e1f 100644 (file)
@@ -177,23 +177,17 @@ public class PortMappingVersion221 {
     }
 
     public boolean updateMapping(String nodeId, Mapping oldMapping) {
-        InstanceIdentifier<Ports> 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<Ports> portId = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+                .child(CircuitPacks.class, new CircuitPacksKey(oldMapping.getSupportingCircuitPackName()))
+                .child(Ports.class, new PortsKey(oldMapping.getSupportingPort()));
         try {
-            Optional<Ports> 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<Interface> 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,
index 1fc7b9aa49d0c969458070c45e69118f8259221e..9687e666c280d98f4c9f2af891fdb5070333cd72 100644 (file)
@@ -180,7 +180,7 @@ public class PortMappingVersion710 {
     }
 
     public boolean updateMapping(String nodeId, Mapping oldMapping) {
-        InstanceIdentifier<Ports> portIId = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+        InstanceIdentifier<Ports> 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<Ports> 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<Interface> 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,