From ec4e345497d4be67b8226a51867780041df1a5b6 Mon Sep 17 00:00:00 2001 From: Gilles Thouenon Date: Fri, 8 Oct 2021 10:47:51 +0200 Subject: [PATCH] Fix bug in setting rate of tp in network module Depending on the first SupportedInterfaceCapability, it may happen that the if-10GE if-cap-type is chosen, for which no rate is allocated. Look at other if-cap-type to determine the rate. JIRA: TRNSPRTPCE-541 Signed-off-by: Gilles Thouenon Change-Id: Ie174c9c6b0329d9ffd65971ab140289a13fe3856 --- .../util/OpenRoadmOtnTopology.java | 31 ++++++++++--------- .../util/OpenRoadmOtnTopologyTest.java | 2 +- 2 files changed, 17 insertions(+), 16 deletions(-) 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 4f65190f7..62aa756ce 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 @@ -667,8 +667,11 @@ public final class OpenRoadmOtnTopology { .setSupportedInterfaceCapability(supIfMap) .build(); otnTp1Bldr.setTpSupportedInterfaces(tpSupIf); + //TODO: It is not logical to assign a priori one of the possible rate to the TP. + //Would be worth assigning per default "unallocated" at the tp creation step, + //and updating it with correct rate when it supports a specific service. if (withRate) { - xtpcaBldr.setRate(fixRate(mapping.getSupportedInterfaceCapability().get(0))); + xtpcaBldr.setRate(fixRate(mapping.getSupportedInterfaceCapability())); otnTp1Bldr.setXpdrTpPortConnectionAttributes(xtpcaBldr.build()); } } else { @@ -713,21 +716,19 @@ public final class OpenRoadmOtnTopology { } } - private static Class fixRate(Class ifCapType) { - switch (ifCapType.getSimpleName()) { - case "If100GEODU4": - case "IfOCHOTU4ODU4": - return ODU4.class; - case "If1GEODU0": - return ODU0.class; - case "If10GEODU2": - return ODU2.class; - case "If10GEODU2e": - return ODU2e.class; - default: - return null; + private static Class fixRate(List> list) { + Map> rateMap = Map.of( + "If100GEODU4", ODU4.class, + "IfOCHOTU4ODU4", ODU4.class, + "If1GEODU0", ODU0.class, + "If10GEODU2", ODU2.class, + "If10GEODU2e", ODU2e.class); + for (Class class1 : list) { + if (rateMap.containsKey(class1.getSimpleName())) { + return rateMap.get(class1.getSimpleName()); + } } + return null; } private static Map createSupportingNodes(OtnTopoNode node) { diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java index 7f0ba490d..e6c209a40 100644 --- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java +++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java @@ -965,7 +965,7 @@ public class OpenRoadmOtnTopologyTest { .or(containsString(String.valueOf(If10GEODU2.class))) .or(containsString(String.valueOf(If10GE.class)))); } - assertThat("the rate should be ODU2 or ODU2e or 10GE", + assertThat("the rate should be ODU2 or ODU2e", String.valueOf(tpList.get(2) .augmentation( org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 -- 2.36.6