From 9560162a2752b9ee7019f34ce54e12800c9598f0 Mon Sep 17 00:00:00 2001 From: Balagangadhar Bathula Date: Sat, 22 Jan 2022 09:12:36 -0500 Subject: [PATCH] Update SH and PCE to support intermediate rates - Support OTUC3 (ODUC3) and OTUC2 (ODUC2) - Use intermediate rate OTN-link type - Complete end-to-end service create for intermediate rates JIRA: TRNSPRTPCE-526 Change-Id: Ied0e52ef894ff704bc94d77875a07d8be02de89b Signed-off-by: Balagangadhar Bathula --- .../transportpce/common/StringConstants.java | 2 ++ .../common/service/ServiceTypes.java | 2 ++ .../service/NetworkModelServiceImpl.java | 8 ++++++++ .../util/OpenRoadmOtnTopology.java | 18 +++++++++++++++--- .../transportpce/pce/PcePathDescription.java | 9 +++++++++ .../transportpce/pce/graph/PceGraph.java | 2 ++ .../pce/graph/PostAlgoPathValidator.java | 6 +++++- .../pce/networkanalyzer/PceCalculation.java | 12 ++++++++++++ .../pce/networkanalyzer/PceLink.java | 17 +++++++++++++++++ .../pce/networkanalyzer/PceOtnNode.java | 6 +++++- .../RendererServiceOperationsImpl.java | 11 +++++++++++ .../listeners/RendererListenerImpl.java | 10 ++++++++++ 12 files changed, 98 insertions(+), 5 deletions(-) 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 539707d51..40595ef67 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/StringConstants.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/StringConstants.java @@ -30,6 +30,8 @@ public final class StringConstants { public static final String SERVICE_TYPE_100GE_S = "100GEs"; public static final String SERVICE_TYPE_OTU4 = "OTU4"; + public static final String SERVICE_TYPE_OTUC2 = "OTUC2"; + public static final String SERVICE_TYPE_OTUC3 = "OTUC3"; public static final String SERVICE_TYPE_OTUC4 = "OTUC4"; public static final String SERVICE_TYPE_400GE = "400GE"; diff --git a/common/src/main/java/org/opendaylight/transportpce/common/service/ServiceTypes.java b/common/src/main/java/org/opendaylight/transportpce/common/service/ServiceTypes.java index 90e888785..607637c9f 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/service/ServiceTypes.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/service/ServiceTypes.java @@ -62,6 +62,8 @@ public final class ServiceTypes { Uint32.valueOf(100), StringConstants.SERVICE_TYPE_100GE_M), "OTU", Map.of( Uint32.valueOf(100), StringConstants.SERVICE_TYPE_OTU4, + Uint32.valueOf(200), StringConstants.SERVICE_TYPE_OTUC2, + Uint32.valueOf(300), StringConstants.SERVICE_TYPE_OTUC3, Uint32.valueOf(400), StringConstants.SERVICE_TYPE_OTUC4), "ODU", Map.of( Uint32.valueOf(100), StringConstants.SERVICE_TYPE_ODU4, diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java index 9fc0d6c0c..6bfdb0397 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java @@ -398,10 +398,14 @@ public class NetworkModelServiceImpl implements NetworkModelService { TopologyShard otnTopologyShard; switch (linkType) { case OTU4: + case OTUC2: + case OTUC3: case OTUC4: otnTopologyShard = OpenRoadmOtnTopology.createOtnLinks(notifLink, null, null, linkType); break; case ODTU4: + case ODUC2: + case ODUC3: case ODUC4: List linkIdList = new ArrayList<>(); if (suppLinks != null) { @@ -470,6 +474,8 @@ public class NetworkModelServiceImpl implements NetworkModelService { List linkIdList = new ArrayList<>(); switch (linkType) { case OTU4: + case OTUC2: + case OTUC3: case OTUC4: linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, linkType.getName())); linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, linkType.getName())); @@ -482,6 +488,8 @@ public class NetworkModelServiceImpl implements NetworkModelService { otnTopologyShard = new TopologyShard(null, null); break; case ODTU4: + case ODUC2: + case ODUC3: case ODUC4: linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, linkType.getName())); linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, linkType.getName())); diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology.java index 4c81a24c4..135819767 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology.java @@ -175,15 +175,27 @@ public final class OpenRoadmOtnTopology { OtnLinkType linkType) { List links = new ArrayList<>(); for (Link link : suppOtuLinks) { - if (OtnLinkType.ODTU4.equals(linkType) && link.augmentation(Link1.class) != null + if (link.augmentation(Link1.class) == null) { + LOG.error("Error with otn parameters of supported link {}", link.getLinkId().getValue()); + continue; + } + if (OtnLinkType.ODTU4.equals(linkType) && link.augmentation(Link1.class).getAvailableBandwidth().equals(Uint32.valueOf(100000))) { links.add(updateOtnLinkBwParameters(link, 0L, 100000L)); - } else if (OtnLinkType.ODUC4.equals(linkType) && link.augmentation(Link1.class) != null + } else if (OtnLinkType.ODUC4.equals(linkType) && link.augmentation(Link1.class).getAvailableBandwidth().equals(Uint32.valueOf(400000))) { links.add(updateOtnLinkBwParameters(link, 0L, 400000L)); + } else if (OtnLinkType.ODUC3.equals(linkType) + && link.augmentation(Link1.class).getAvailableBandwidth().equals(Uint32.valueOf(300000))) { + links.add(updateOtnLinkBwParameters(link, 0L, 300000L)); + } else if (OtnLinkType.ODUC2.equals(linkType) + && link.augmentation(Link1.class).getAvailableBandwidth().equals(Uint32.valueOf(200000))) { + links.add(updateOtnLinkBwParameters(link, 0L, 200000L)); } else { - LOG.error("Error with otn parameters of supported link {}", link.getLinkId().getValue()); + LOG.error("Unsupported OTN Link Type link or unsufficient available bandwith: {}", + link.getLinkId().getValue()); } + //TODO use a Map here instead of multiple else-if-blocks } if (links.size() == 2) { links.addAll(initialiseOtnLinks(suppOtuLinks.get(0).getSource().getSourceNode().getValue(), diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/PcePathDescription.java b/pce/src/main/java/org/opendaylight/transportpce/pce/PcePathDescription.java index e483796f1..3049f7c52 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/PcePathDescription.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/PcePathDescription.java @@ -93,6 +93,8 @@ public class PcePathDescription { .setAToZ(atozMap); switch (rc.getServiceType()) { case StringConstants.SERVICE_TYPE_400GE: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_OTU4: @@ -105,6 +107,8 @@ public class PcePathDescription { case StringConstants.SERVICE_TYPE_10GE: case StringConstants.SERVICE_TYPE_1GE: case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: if (rc.getResultTribPortTribSlot() != null && rc.getResultTribPortTribSlot().get(0) != null && rc.getResultTribPortTribSlot().get(1) != null) { @@ -136,6 +140,8 @@ public class PcePathDescription { .setZToA(ztoaMap); switch (rc.getServiceType()) { case StringConstants.SERVICE_TYPE_400GE: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_OTU4: @@ -148,6 +154,9 @@ public class PcePathDescription { case StringConstants.SERVICE_TYPE_10GE: case StringConstants.SERVICE_TYPE_1GE: case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: + case StringConstants.SERVICE_TYPE_ODUC4: if (rc.getResultTribPortTribSlot() != null && rc.getResultTribPortTribSlot().get(0) != null && rc.getResultTribPortTribSlot().get(1) != null) { ztoADirectionBldr.setZToAWavelengthNumber(Uint32.valueOf(0)) diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/graph/PceGraph.java b/pce/src/main/java/org/opendaylight/transportpce/pce/graph/PceGraph.java index 918d1b6e2..a7a45e765 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/graph/PceGraph.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/graph/PceGraph.java @@ -111,6 +111,8 @@ public class PceGraph { switch (serviceType) { case StringConstants.SERVICE_TYPE_100GE_T: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: case StringConstants.SERVICE_TYPE_400GE: case StringConstants.SERVICE_TYPE_OTU4: diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/graph/PostAlgoPathValidator.java b/pce/src/main/java/org/opendaylight/transportpce/pce/graph/PostAlgoPathValidator.java index 479fb5bd7..bb7b7e42b 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/graph/PostAlgoPathValidator.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/graph/PostAlgoPathValidator.java @@ -61,6 +61,8 @@ public class PostAlgoPathValidator { SpectrumAssignment spectrumAssignment = null; //variable to deal with 1GE (Nb=1) and 10GE (Nb=10) cases switch (serviceType) { + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: case StringConstants.SERVICE_TYPE_400GE: spectralWidthSlotNumber = GridConstant.SPECTRAL_WIDTH_SLOT_NUMBER_MAP @@ -139,11 +141,13 @@ public class PostAlgoPathValidator { } break; case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: case StringConstants.SERVICE_TYPE_100GE_S: pceResult.setRC(ResponseCodes.RESPONSE_OK); pceResult.setServiceType(serviceType); - LOG.info("In PostAlgoPathValidator: ODU4/ODUC4 path found {}", path); + LOG.info("In PostAlgoPathValidator: ODU4/ODUCn path found {}", path); break; default: pceResult.setRC(ResponseCodes.RESPONSE_FAILED); 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 5aa2d2905..d2f3305f1 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 @@ -158,6 +158,8 @@ public class PceCalculation { private void getAZnodeId() { switch (serviceType) { case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: case StringConstants.SERVICE_TYPE_100GE_M: case StringConstants.SERVICE_TYPE_100GE_S: @@ -179,6 +181,8 @@ public class PceCalculation { case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_400GE: case StringConstants.SERVICE_TYPE_OTU4: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: LOG.info("readMdSal: network {}", NetworkUtils.OVERLAY_NETWORK_ID); nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class) @@ -187,6 +191,8 @@ public class PceCalculation { case StringConstants.SERVICE_TYPE_100GE_M: case StringConstants.SERVICE_TYPE_100GE_S: case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: case StringConstants.SERVICE_TYPE_10GE: case StringConstants.SERVICE_TYPE_1GE: @@ -259,6 +265,8 @@ public class PceCalculation { case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_OTU4: case StringConstants.SERVICE_TYPE_400GE: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: // 100GE service and OTU4 service are handled at the openroadm-topology layer for (Node node : allNodes) { @@ -386,6 +394,8 @@ public class PceCalculation { switch (serviceType) { case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_OTU4: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: case StringConstants.SERVICE_TYPE_400GE: return processPceLink(link, sourceId, destId, source, dest); @@ -393,6 +403,8 @@ public class PceCalculation { case StringConstants.SERVICE_TYPE_10GE: case StringConstants.SERVICE_TYPE_100GE_M: case StringConstants.SERVICE_TYPE_100GE_S: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: case StringConstants.SERVICE_TYPE_1GE: return processPceOtnLink(link, source, dest); diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLink.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLink.java index cda77d137..01b392e7b 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLink.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLink.java @@ -327,6 +327,22 @@ public class PceLink implements Serializable { long neededBW; OtnLinkType neededType = null; switch (serviceType) { + case "ODUC2": + if (this.usedBandwidth != 0L) { + return false; + } + neededBW = 200000L; + // Add intermediate rate otn-link-type + neededType = OtnLinkType.OTUC2; + break; + case "ODUC3": + if (this.usedBandwidth != 0L) { + return false; + } + neededBW = 300000L; + // hange otn-link-type + neededType = OtnLinkType.OTUC3; + break; case "ODUC4": if (this.usedBandwidth != 0L) { return false; @@ -354,6 +370,7 @@ public class PceLink implements Serializable { break; case "100GEm": neededBW = 100000L; + // TODO: Here link type needs to be changed, based on the line-rate neededType = OtnLinkType.ODUC4; break; case "10GE": 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 3dc362796..b2cc9356a 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 @@ -139,6 +139,8 @@ public class PceOtnNode implements PceNode { case StringConstants.SERVICE_TYPE_100GE_S: // TODO verify the capability of network port to support ODU4 CTP interface creation case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: if (!checkTpForOdtuTermination(ontTp1)) { LOG.error("TP {} of {} does not allow ODU4 termination creation", @@ -198,7 +200,9 @@ public class PceOtnNode implements PceNode { } if ((StringConstants.SERVICE_TYPE_ODU4.equals(this.otnServiceType) - || StringConstants.SERVICE_TYPE_ODUC4.equals(this.otnServiceType)) + || StringConstants.SERVICE_TYPE_ODUC4.equals(this.otnServiceType) + || StringConstants.SERVICE_TYPE_ODUC3.equals(this.otnServiceType) + || StringConstants.SERVICE_TYPE_ODUC2.equals(this.otnServiceType)) || ((StringConstants.SERVICE_TYPE_10GE.equals(this.otnServiceType) || StringConstants.SERVICE_TYPE_100GE_M.equals(this.otnServiceType) || StringConstants.SERVICE_TYPE_1GE.equals(this.otnServiceType)) diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java index aa781606f..652aea92c 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java @@ -129,6 +129,7 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, input.getServiceName(), RpcStatusEx.Pending, "Service compliant, submitting service implementation Request ..."); Uint32 serviceRate = getServiceRate(input); + LOG.info("Using {}G rate", serviceRate); org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.Nodes mappingNode = portMapping.isNodeExist(input.getServiceAEnd().getNodeId()) ? portMapping.getNode(input.getServiceAEnd().getNodeId()) @@ -149,6 +150,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_400GE: case StringConstants.SERVICE_TYPE_OTU4: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: if (!manageServicePathCreation(input, serviceType)) { return ModelMappingUtils.createServiceImplResponse(ResponseCodes.RESPONSE_FAILED, @@ -160,6 +163,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations case StringConstants.SERVICE_TYPE_100GE_M: case StringConstants.SERVICE_TYPE_100GE_S: case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: if (!manageOtnServicePathCreation(input, serviceType, serviceRate)) { return ModelMappingUtils.createServiceImplResponse(ResponseCodes.RESPONSE_FAILED, @@ -207,6 +212,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_400GE: case StringConstants.SERVICE_TYPE_OTU4: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: if (!manageServicePathDeletion(serviceName, pathDescription, serviceType)) { return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, @@ -218,6 +225,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations case StringConstants.SERVICE_TYPE_100GE_M: case StringConstants.SERVICE_TYPE_100GE_S: case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: if (!manageOtnServicePathDeletion(serviceName, pathDescription, service, serviceType)) { return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, @@ -245,6 +254,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations if (input.getServiceAEnd().getServiceRate() != null) { return input.getServiceAEnd().getServiceRate(); } + LOG.warn("Input should have rate if you are using 200 or 300G"); + // TODO: missing 200, and 300G rates here, OTUCn cannot always be 400G Map> formatRateMap = Map.of( ServiceFormat.OTU, Map.of( "OTUCn", Uint32.valueOf(400), diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererListenerImpl.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererListenerImpl.java index d85dfc0df..3a4038b45 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererListenerImpl.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererListenerImpl.java @@ -311,13 +311,23 @@ public class RendererListenerImpl implements TransportpceRendererListener { String serviceType = notification.getServiceType(); switch (serviceType) { case StringConstants.SERVICE_TYPE_OTU4: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: Map otnLinkTypeMap = Map.of( StringConstants.SERVICE_TYPE_OTU4, OtnLinkType.OTU4, + // TODO: need to change it when OtnLinkType is updated with enum + StringConstants.SERVICE_TYPE_OTUC2, OtnLinkType.OTUC4, + StringConstants.SERVICE_TYPE_OTUC3, OtnLinkType.OTUC4, StringConstants.SERVICE_TYPE_OTUC4, OtnLinkType.OTUC4, StringConstants.SERVICE_TYPE_ODU4, OtnLinkType.ODTU4, + // TODO: need to change it when OtnLinkType is updated with enum + StringConstants.SERVICE_TYPE_ODUC2, OtnLinkType.ODUC4, + StringConstants.SERVICE_TYPE_ODUC3, OtnLinkType.ODUC4, StringConstants.SERVICE_TYPE_ODUC4, OtnLinkType.ODUC4); if (isDeletion) { LOG.info("updating otn-topology removing links"); -- 2.36.6