From 32e1655e53dc263cf439b7bad2ecdfd4e241b5a6 Mon Sep 17 00:00:00 2001 From: Gilles Thouenon Date: Mon, 13 Sep 2021 13:13:54 +0200 Subject: [PATCH] Fix renderer for 100GE on intermediate OTN Switch 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 Change-Id: I22bcb38388c9adf9e046f01946afbe7ce53d348f --- .../transportpce/renderer/ModelMappingUtils.java | 15 +++++++++------ .../openroadminterface/OpenRoadmInterface221.java | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/ModelMappingUtils.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/ModelMappingUtils.java index 418e7e9ed..c349a300b 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/ModelMappingUtils.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/ModelMappingUtils.java @@ -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) diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java index 6e4bb91c6..559cc48d1 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java @@ -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 oduFunction = isNetworkPort ? ODUCTP.class : ODUTTPCTP.class; + Class 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")) -- 2.36.6