From: Christophe BETOULE Date: Wed, 16 Feb 2022 08:11:44 +0000 (+0000) Subject: Merge "Getter for port-capability in port-mapping 2.2.1" into stable/phosphorus X-Git-Tag: 4.2.0~9 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=0e51146f9ca66ac6d03a3bc40c1705535278032b;hp=1b8a9fdaf6c5a7c34115f0856f492c878e06060a;p=transportpce.git Merge "Getter for port-capability in port-mapping 2.2.1" into stable/phosphorus --- diff --git a/common/src/main/java/org/opendaylight/transportpce/common/StringConstants.java b/common/src/main/java/org/opendaylight/transportpce/common/StringConstants.java index 40595ef67..d88754ad8 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/StringConstants.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/StringConstants.java @@ -46,6 +46,9 @@ public final class StringConstants { public static final String SERVICE_TYPE_ODUC4 = "ODUC4"; + public static final String SERVICE_DIRECTION_AZ = "aToz"; + public static final String SERVICE_DIRECTION_ZA = "zToa"; + private StringConstants() { // hiding the default constructor } diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java index d2f3305f1..2a189e440 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java @@ -449,13 +449,26 @@ public class PceCalculation { if (validateNodeConstraints(pceNode).equals(ConstraintTypes.HARD_EXCLUDE)) { return; } - if (endPceNode(nodeType, pceNode.getNodeId(), pceNode) && this.aendPceNode == null - && isAZendPceNode(this.serviceFormatA, pceNode, anodeId, "A")) { - this.aendPceNode = pceNode; - } - if (endPceNode(nodeType, pceNode.getNodeId(), pceNode) && this.zendPceNode == null - && isAZendPceNode(this.serviceFormatZ, pceNode, znodeId, "Z")) { - this.zendPceNode = pceNode; + + if (endPceNode(nodeType, pceNode.getNodeId(), pceNode)) { + if (this.aendPceNode == null && isAZendPceNode(this.serviceFormatA, pceNode, anodeId, "A")) { + // Added to ensure A-node has a addlink in the topology + List links = this.allLinks.stream() + .filter(x -> x.getSource().getSourceNode().getValue().contains(pceNode.getNodeId().getValue())) + .collect(Collectors.toList()); + if (links.size() > 0) { + this.aendPceNode = pceNode; + } + } + if (this.zendPceNode == null && isAZendPceNode(this.serviceFormatZ, pceNode, znodeId, "Z")) { + // Added to ensure Z-node has a droplink in the topology + List links = this.allLinks.stream() + .filter(x -> x.getDestination().getDestNode().getValue().contains(pceNode.getNodeId().getValue())) + .collect(Collectors.toList()); + if (links.size() > 0) { + this.zendPceNode = pceNode; + } + } } allPceNodes.put(pceNode.getNodeId(), pceNode); @@ -496,8 +509,24 @@ public class PceCalculation { } OpenroadmNodeType nodeType = node.augmentation(Node1.class).getNodeType(); - - PceOtnNode pceOtnNode = new PceOtnNode(node, nodeType, node.getNodeId(), "otn", serviceType); + String clientPort = null; + if (node.getNodeId().getValue().equals(anodeId) + && this.aendPceNode == null + && input.getServiceAEnd() != null + && input.getServiceAEnd().getRxDirection() != null + && input.getServiceAEnd().getRxDirection().getPort() != null + && input.getServiceAEnd().getRxDirection().getPort().getPortName() != null) { + clientPort = input.getServiceAEnd().getRxDirection().getPort().getPortName(); + } else if (node.getNodeId().getValue().equals(znodeId) + && this.zendPceNode == null + && input.getServiceZEnd() != null + && input.getServiceZEnd().getRxDirection() != null + && input.getServiceZEnd().getRxDirection().getPort() != null + && input.getServiceZEnd().getRxDirection().getPort().getPortName() != null) { + clientPort = input.getServiceZEnd().getRxDirection().getPort().getPortName(); + } + + PceOtnNode pceOtnNode = new PceOtnNode(node, nodeType, node.getNodeId(), "otn", serviceType, clientPort); pceOtnNode.validateXponder(anodeId, znodeId); if (!pceOtnNode.isValid()) { @@ -606,12 +635,14 @@ public class PceCalculation { pcelink.getlinkType(), pcelink); break; case ADDLINK: - pcelink.setClient(source.getRdmSrgClient(pcelink.getSourceTP().getValue())); + pcelink.setClient( + source.getRdmSrgClient(pcelink.getSourceTP().getValue(), StringConstants.SERVICE_DIRECTION_AZ)); addLinks.add(pcelink); LOG.debug("validateLink: ADD-LINK saved {}", pcelink); break; case DROPLINK: - pcelink.setClient(dest.getRdmSrgClient(pcelink.getDestTP().getValue())); + pcelink.setClient( + dest.getRdmSrgClient(pcelink.getDestTP().getValue(), StringConstants.SERVICE_DIRECTION_ZA)); dropLinks.add(pcelink); LOG.debug("validateLink: DROP-LINK saved {}", pcelink); break; diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceNode.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceNode.java index 5e89108ff..aa0e3306b 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceNode.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceNode.java @@ -26,7 +26,7 @@ public interface PceNode { void addOutgoingLink(PceLink outLink); - String getRdmSrgClient(String tp); + String getRdmSrgClient(String tp, String direction); String getXpdrClient(String tp); diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java index c2254c401..62afca641 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java @@ -311,7 +311,7 @@ public class PceOpticalNode implements PceNode { } @Override - public String getRdmSrgClient(String tp) { + public String getRdmSrgClient(String tp, String direction) { LOG.info("getRdmSrgClient: Getting PP client for tp '{}' on node : {}", tp, this.nodeId); OpenroadmTpType srgType = null; OpenroadmTpType cpType = this.availableSrgCp.get(tp); @@ -322,7 +322,16 @@ public class PceOpticalNode implements PceNode { switch (cpType) { case SRGTXRXCP: LOG.info("getRdmSrgClient: Getting BI Directional PP port ..."); - srgType = OpenroadmTpType.SRGTXRXPP; + // Take the first-element in the available PP key set + if (availableSrgPp.entrySet().iterator().next().getKey() + // and check if the port is bidirectional + .contains("TXRX")) { + srgType = OpenroadmTpType.SRGTXRXPP; + } else if (direction.equalsIgnoreCase("aToz")) { + srgType = OpenroadmTpType.SRGRXPP; + } else { + srgType = OpenroadmTpType.SRGTXPP; + } break; case SRGTXCP: LOG.info("getRdmSrgClient: Getting UNI Rx PP port ..."); diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java index 35276d5e0..39c7d57dd 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java @@ -75,8 +75,10 @@ public class PceOtnNode implements PceNode { private List outgoingLinks = new ArrayList<>(); private Map clientPerNwTp = new HashMap<>(); + private String clientPort; - public PceOtnNode(Node node, OpenroadmNodeType nodeType, NodeId nodeId, String pceNodeType, String serviceType) { + public PceOtnNode(Node node, OpenroadmNodeType nodeType, NodeId nodeId, String pceNodeType, String serviceType, + String clientPort) { this.node = node; this.nodeId = nodeId; this.nodeType = nodeType; @@ -99,6 +101,7 @@ public class PceOtnNode implements PceNode { checkAvailableTribPort(); this.tpAvailableTribSlot.clear(); checkAvailableTribSlot(); + this.clientPort = clientPort; if (node == null || nodeId == null || nodeType != OpenroadmNodeType.MUXPDR && nodeType != OpenroadmNodeType.SWITCH && nodeType != OpenroadmNodeType.TPDR) { LOG.error("PceOtnNode: one of parameters is not populated : nodeId, node type"); @@ -240,8 +243,10 @@ public class PceOtnNode implements PceNode { usableXpdrNWTps.add(nwTp); } if (usableXpdrClientTps.size() >= nbClient && usableXpdrNWTps.size() >= nbNetw) { - clientPerNwTp.put(nwTp.getValue(), clTp.getValue()); - return true; + if (this.clientPort == null || this.clientPort.equals(clTp.getValue())) { + clientPerNwTp.put(nwTp.getValue(), clTp.getValue()); + return true; + } } } } @@ -557,7 +562,7 @@ public class PceOtnNode implements PceNode { } @Override - public String getRdmSrgClient(String tp) { + public String getRdmSrgClient(String tp, String direction) { return null; } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java index cd5abb985..5ccd1d9ce 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java @@ -140,7 +140,7 @@ public class PceGraphTest { node = NodeUtils.getOTNNodeBuilder(NodeUtils.geSupportingNodes(), OpenroadmTpType.XPONDERNETWORK).build(); PceOtnNode pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OTU.getName(), "DEGREE"); + new NodeId("optical"), ServiceFormat.OTU.getName(), "serviceType", null); pceOtnNode.validateXponder("optical", "sl"); pceOtnNode.validateXponder("not optical", "sl"); pceOtnNode.initXndrTps("AZ"); @@ -149,7 +149,7 @@ public class PceGraphTest { PceOtnNode pceOtnNode2 = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical2"), ServiceFormat.OTU.getName(), "DEGREE"); + new NodeId("optical2"), ServiceFormat.OTU.getName(), "serviceType", null); pceOtnNode2.validateXponder("optical", "sl"); pceOtnNode2.validateXponder("not optical", "sl"); pceOtnNode2.initXndrTps("AZ"); diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java index e17183fa4..c2ff8ac86 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java @@ -174,7 +174,8 @@ public class PceLinkTest extends AbstractTest { Assert.assertNotNull(node.augmentation(Node1.class)); // OpenroadmNodeType nodeType = node.augmentation(Node1.class).; - PceOtnNode pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.SRG, node.getNodeId(), "otn", "serviceType"); + PceOtnNode pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.SRG, node.getNodeId(), "otn", "serviceType", + null); } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNodeTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNodeTest.java index b4dc96553..0b01a1b7c 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNodeTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNodeTest.java @@ -159,7 +159,7 @@ public class PceOpticalNodeTest extends AbstractTest { OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50, GridConstant.SLOT_WIDTH_50); pceOpticalNode.initSrgTps(); - Assert.assertNull(pceOpticalNode.getRdmSrgClient("7")); + Assert.assertNull(pceOpticalNode.getRdmSrgClient("7", StringConstants.SERVICE_DIRECTION_AZ)); Assert.assertFalse(pceOpticalNode.isValid()); Assert.assertNull(pceOpticalNode.getBitSetData()); Assert.assertTrue(pceOpticalNode.checkTP("testTP")); @@ -175,7 +175,7 @@ public class PceOpticalNodeTest extends AbstractTest { pceOpticalNode.initSrgTps(); pceOpticalNode.initFrequenciesBitSet(); pceOpticalNode.initXndrTps(ServiceFormat.OMS); - Assert.assertNull(pceOpticalNode.getRdmSrgClient("7")); + Assert.assertNull(pceOpticalNode.getRdmSrgClient("7" ,StringConstants.SERVICE_DIRECTION_AZ)); Assert.assertFalse(pceOpticalNode.isValid()); Assert.assertNull(pceOpticalNode.getBitSetData()); Assert.assertTrue(pceOpticalNode.checkTP("testTP")); @@ -187,7 +187,7 @@ public class PceOpticalNodeTest extends AbstractTest { OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50, GridConstant.SLOT_WIDTH_50); pceOpticalNode.initSrgTps(); - Assert.assertNull(pceOpticalNode.getRdmSrgClient("7")); + Assert.assertNull(pceOpticalNode.getRdmSrgClient("7" ,StringConstants.SERVICE_DIRECTION_AZ)); Assert.assertFalse(pceOpticalNode.isValid()); Assert.assertNull(pceOpticalNode.getBitSetData()); Assert.assertTrue(pceOpticalNode.checkTP("testTP")); @@ -204,7 +204,7 @@ public class PceOpticalNodeTest extends AbstractTest { Assert.assertFalse(pceOpticalNode.isValid()); Assert.assertNull(pceOpticalNode.getBitSetData()); Assert.assertTrue(pceOpticalNode.checkTP("testTP")); - Assert.assertNull(pceOpticalNode.getRdmSrgClient("5")); + Assert.assertNull(pceOpticalNode.getRdmSrgClient("5", StringConstants.SERVICE_DIRECTION_AZ)); } @Test @@ -215,7 +215,7 @@ public class PceOpticalNodeTest extends AbstractTest { OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50, GridConstant.SLOT_WIDTH_50); pceOpticalNode.initSrgTps(); - Assert.assertNull(pceOpticalNode.getRdmSrgClient("2")); + Assert.assertNull(pceOpticalNode.getRdmSrgClient("2" ,StringConstants.SERVICE_DIRECTION_AZ)); Assert.assertFalse(pceOpticalNode.isValid()); Assert.assertNull(pceOpticalNode.getBitSetData()); Assert.assertTrue(pceOpticalNode.checkTP("testTP")); diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java index 646fea65e..09803b5c9 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java @@ -74,7 +74,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testInitXndrTpsODU4() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_ODU4); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_ODU4, null); pceOtnNode.initXndrTps("AZ"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -85,7 +85,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testInitXndrTps10GE() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE, null); pceOtnNode.initXndrTps("mode"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -96,7 +96,7 @@ public class PceOtnNodeTest extends AbstractTest { public void testInitXndrTps10GXponderClient1() { node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build(); pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.ROADM, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE, null); pceOtnNode.initXndrTps("mode"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -110,7 +110,7 @@ public class PceOtnNodeTest extends AbstractTest { public void testInitXndrTps1GXponderClient() { node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build(); pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_1GE); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_1GE, null); pceOtnNode.initXndrTps("mode"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -120,7 +120,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testInitXndrTps10GXponderClient() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE, null); pceOtnNode.validateXponder("optical", "sl"); pceOtnNode.validateXponder("not optical", "sl"); pceOtnNode.initXndrTps("AZ"); @@ -134,7 +134,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testIsPceOtnNodeValid() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE, null); pceOtnNode.initXndrTps("AZ"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -144,7 +144,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testIsPceOtnNodeValidNode() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.DEGREE, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_100GE_M); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_100GE_M, null); pceOtnNode.initXndrTps("AZ"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -157,7 +157,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testIsPceOtnNodeValidNodeTypeNull() { pceOtnNode = new PceOtnNode(node, null, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_100GE_M); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_100GE_M, null); pceOtnNode.initXndrTps("AZ"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -167,7 +167,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testIsPceOtnNodeValidNodeTypeDeg() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.DEGREE, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_100GE_M); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_100GE_M, null); pceOtnNode.initXndrTps("AZ"); Assert.assertFalse("not valid node , its type isn't one of MUXPDR or SWITCH or TPDR" , pceOtnNode.isPceOtnNodeValid(pceOtnNode)); @@ -176,7 +176,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testIsPceOtnNodeValidTrue() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_ODU4); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_ODU4, null); pceOtnNode.initXndrTps("AZ"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -187,7 +187,7 @@ public class PceOtnNodeTest extends AbstractTest { public void testIsPceOtnNodeValidChecksw() { node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build(); pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_1GE); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_1GE, null); pceOtnNode.initXndrTps("mode"); Assert.assertFalse("not valid otn service Type" , pceOtnNode.isPceOtnNodeValid(pceOtnNode)); } diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface710.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface710.java index 8e9a39d64..bdbfeb770 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface710.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface710.java @@ -53,7 +53,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtnO import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtnOtu; import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.Otsi; import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtsiGroup; -import org.opendaylight.yang.gen.v1.http.org.openroadm.maintenance.loopback.rev191129.maint.loopback.MaintLoopbackBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev200529.och.container.OchBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.tributary.signal.interfaces.rev200529.otsi.attributes.FlexoBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.tributary.signal.interfaces.rev200529.otsi.container.OtsiBuilder; @@ -433,15 +432,13 @@ public class OpenRoadmInterface710 { nodeId, logicalConnPoint)); } // Create an OTUCn object - MaintLoopbackBuilder maintLoopbackBuilder = new MaintLoopbackBuilder(); - maintLoopbackBuilder.setEnabled(false); OtuBuilder otuBuilder = new OtuBuilder() .setRate(OTUCn.class) .setTimActEnabled(false) .setTimDetectMode(TimDetectMode.Disabled) .setDegmIntervals(Uint8.valueOf(2)) - .setDegthrPercentage(Uint16.valueOf(100)) - .setMaintLoopback(maintLoopbackBuilder.build()); + .setDegthrPercentage(Uint16.valueOf(100)); + if (apiInfoA != null) { otuBuilder.setTxSapi(apiInfoA.getSapi()) .setTxDapi(apiInfoA.getDapi()) diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java index e99750cb0..6a6480e79 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java @@ -394,7 +394,8 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { nodeOpenRoadmVersion.equals(OpenroadmNodeVersion._71) ? Map.of( // We don't need ODUC2, ODUC3 here, since they are handled in OTN service-path - "ODU", List.of("ODU4", "ODUC4", "ODUFLEX"), + // This has to be in an order of deletion + "ODU", List.of("ODU4", "ODUFLEX", "ODUC4"), // Add intermediate OTUCn rates (OTUC2, OTUC3) // OTU4 is used in 100G service on 7.1 model "other", List.of("OTU4", "OTUC2", "OTUC3", "OTUC4", diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java index 04d2eba46..1884cb3b5 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java @@ -125,7 +125,6 @@ public final class ConnectivityUtils { .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection> connectionFullMap; // this variable is for complete connection objects - private Map> networkMap = new HashMap<>(); private final NetworkTransactionService networkTransactionService; // TODO -> handle cases for which node id is ROADM-A1 and not ROADMA01 or XPDR-A1 and not XPDRA01 @@ -1428,19 +1427,6 @@ public final class ConnectivityUtils { String rxPortName = txPortName; LOG.debug("Node z id = {}, txportDeviceName = {}, txPortName = {}", nodeid, txPortDeviceName, txPortName); LOG.debug("Node z id = {}, rxportDeviceName = {}, rxPortName = {}", nodeid, rxPortDeviceName, rxPortName); - if (serviceFormat.equals(ServiceFormat.ODU)) { - // TODO --> populate network map - populateNetworkMap(nodeid, txPortName); - } - if (serviceFormat.equals(ServiceFormat.Ethernet)) { - // TODO --> choose from network Map un network port which hasnt been used yet by another service. - // Set boolean to true and update txportName and so on - String updTxName = findFreeConfiguredNetworkPort(nodeid); - if (updTxName != null) { - txPortName = updTxName; - rxPortName = txPortName; - } - } // TODO --> get clli from datastore? String clli = "NodeSC"; LOG.info("Node z id = {}, txportDeviceName = {}, txPortName = {}", nodeid, txPortDeviceName, txPortName); @@ -1540,19 +1526,6 @@ public final class ConnectivityUtils { String rxPortName = txPortName; LOG.debug("Node a id = {}, txportDeviceName = {}, txPortName = {}", nodeid, txPortDeviceName, txPortName); LOG.debug("Node a id = {}, rxportDeviceName = {}, rxPortName = {}", nodeid, rxPortDeviceName, rxPortName); - if (serviceFormat.equals(ServiceFormat.ODU)) { - // TODO --> populate network map - populateNetworkMap(nodeid, txPortName); - } - if (serviceFormat.equals(ServiceFormat.Ethernet)) { - // TODO --> choose from network Map un network port which hasnt been used yet by another service. - // Set boolean to true and update txportName and so on - String updTxName = findFreeConfiguredNetworkPort(nodeid); - if (updTxName != null) { - txPortName = updTxName; - rxPortName = txPortName; - } - } // TODO --> get clli from datastore? String clli = "NodeSA"; LOG.info("Node a id = {}, txportDeviceName = {}, txPortName = {}", nodeid, txPortDeviceName, txPortName); @@ -1611,30 +1584,6 @@ public final class ConnectivityUtils { return serviceAEndBuilder.build(); } - private String findFreeConfiguredNetworkPort(String nodeid) { - if (!this.networkMap.containsKey(nodeid)) { - return null; - } - Map netMap = this.networkMap.get(nodeid); - for (Map.Entry entry : netMap.entrySet()) { - if (!entry.getValue()) { - this.networkMap.get(nodeid).put(entry.getKey(), true); - return entry.getKey(); - } - } - return null; - } - - private void populateNetworkMap(String nodeid, String txPortName) { - Map netMap = new HashMap<>(); - netMap.put(txPortName, false); - if (!this.networkMap.containsKey(nodeid)) { - this.networkMap.put(nodeid, netMap); - } else if (!this.networkMap.get(nodeid).containsKey(txPortName)) { - this.networkMap.get(nodeid).putAll(netMap); - } - } - private ConnectionType getConnectionTypePhtnc(Collection endPoints) { if (endPoints.stream().anyMatch(ep -> ep.getName().values().stream() diff --git a/tests/transportpce_tests/2.2.1/test15_otn_end2end_with_intermediate_switch.py b/tests/transportpce_tests/2.2.1/test15_otn_end2end_with_intermediate_switch.py index 3cc1e32bf..3fb038830 100644 --- a/tests/transportpce_tests/2.2.1/test15_otn_end2end_with_intermediate_switch.py +++ b/tests/transportpce_tests/2.2.1/test15_otn_end2end_with_intermediate_switch.py @@ -739,8 +739,8 @@ class TransportPCEtesting(unittest.TestCase): self.cr_serv_sample_data["input"]["service-z-end"]["service-rate"] = "10" self.cr_serv_sample_data["input"]["service-z-end"]["service-format"] = "Ethernet" del self.cr_serv_sample_data["input"]["service-z-end"]["odu-service-rate"] - self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1" - self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1" + self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1" + self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1" response = test_utils.service_create_request(self.cr_serv_sample_data) self.assertEqual(response.status_code, requests.codes.ok) res = response.json()