Fix renderer for 100GE on intermediate OTN Switch 03/97803/6
authorGilles Thouenon <gilles.thouenon@orange.com>
Mon, 13 Sep 2021 11:13:54 +0000 (13:13 +0200)
committerGilles Thouenon <gilles.thouenon@orange.com>
Thu, 18 Nov 2021 07:42:12 +0000 (07:42 +0000)
This issue appeared when a 100GE service is routed through an
intermediate otn-switch. The otn-service-path rpc was not filled
correctly.
Fix also the monitored mode of the ODU4-CTP termination point when
supporting the 100GE client signal.

JIRA: TRNSPRTPCE-499
Signed-off-by: Gilles Thouenon <gilles.thouenon@orange.com>
Change-Id: I22bcb38388c9adf9e046f01946afbe7ce53d348f

renderer/src/main/java/org/opendaylight/transportpce/renderer/ModelMappingUtils.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java

index 418e7e9ed6841395b6a0c57e051f56e949771d56..c349a300b0a5741ed87848956cbbb25353b23801 100644 (file)
@@ -229,12 +229,15 @@ public final class ModelMappingUtils {
             : getNodesListZtoA(pathDescription.getZToADirection().nonnullZToA().values().iterator());
         LOG.info("These are node-lists {}, {}", nodeLists.getRendererNodeList(), nodeLists.getOlmNodeList());
         for (Nodes node: nodeLists.getRendererNodeList()) {
-            nodes.add(new org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes
-                .NodesBuilder()
-                            .setNodeId(node.getNodeId())
-                            .setClientTp(node.getSrcTp())
-                            .setNetworkTp(node.getDestTp())
-                            .build());
+            org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes.NodesBuilder nb
+                = new org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes
+                    .NodesBuilder().setNodeId(node.getNodeId()).setNetworkTp(node.getDestTp());
+            if (node.getSrcTp() != null && node.getSrcTp().contains("NETWORK")) {
+                nb.setNetwork2Tp(node.getSrcTp());
+            } else {
+                nb.setClientTp(node.getSrcTp());
+            }
+            nodes.add(nb.build());
         }
         OtnServicePathInputBuilder otnServicePathInputBuilder = new OtnServicePathInputBuilder()
             .setServiceName(serviceName)
index 6e4bb91c6a960b700964a28dc2f82cb0750a3522..559cc48d10a354f2e619cc69f220d0a4e2874cc3 100644 (file)
@@ -60,6 +60,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev17121
 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.OduFunctionIdentity;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.PayloadTypeDef;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.OduAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.OduAttributes.MonitoringMode;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.odu.container.OduBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.opu.OpuBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.OtuAttributes;
@@ -256,14 +257,23 @@ public class OpenRoadmInterface221 {
         }
 
         // ODU interface specific data
-        Class<? extends OduFunctionIdentity> oduFunction = isNetworkPort ? ODUCTP.class : ODUTTPCTP.class;
+        Class<? extends OduFunctionIdentity> oduFunction;
+        MonitoringMode monitoringMode;
+        if (isNetworkPort) {
+            oduFunction = ODUCTP.class;
+            monitoringMode = MonitoringMode.Monitored;
+        } else {
+            oduFunction = ODUTTPCTP.class;
+            monitoringMode = MonitoringMode.Terminated;
+        }
+        // Create Interface1 type object required for adding as augmentation
         // TODO look at imports of different versions of class
         oduInterfaceBldr.addAugmentation(
             new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1Builder()
                 .setOdu(new OduBuilder()
                     .setRate(ODU4.class)
                     .setOduFunction(oduFunction)
-                    .setMonitoringMode(OduAttributes.MonitoringMode.Terminated)
+                    .setMonitoringMode(monitoringMode)
                     .setOpu(
                         new OpuBuilder()
                         .setPayloadType(PayloadTypeDef.getDefaultInstance("07"))