From 6d0f2314cff587262fc41f923625f464be8ac616 Mon Sep 17 00:00:00 2001 From: "guillaume.lambert" Date: Fri, 5 Apr 2024 16:12:42 +0200 Subject: [PATCH] Use Map in TAPI topology ConvertORToTapiTopology JIRA: TRNSPRTPCE-735 Signed-off-by: guillaume.lambert Change-Id: I35d6b4edd4fc73fb7da677d4d7007aadc82fc7c8 --- .../topology/ConvertORToTapiTopology.java | 426 +++++------------- 1 file changed, 101 insertions(+), 325 deletions(-) diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORToTapiTopology.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORToTapiTopology.java index 2a71bc5e8..bfe1afee4 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORToTapiTopology.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORToTapiTopology.java @@ -12,11 +12,14 @@ import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import java.util.UUID; import java.util.stream.Collectors; import org.opendaylight.transportpce.common.fixedflex.GridConstant; @@ -46,6 +49,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LAYERPROTOCOLQUALIFIER; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; @@ -133,6 +137,9 @@ import org.slf4j.LoggerFactory; public class ConvertORToTapiTopology { private static final Logger LOG = LoggerFactory.getLogger(ConvertORToTapiTopology.class); + private static final TreeMap OPMODE_LOOPRATE_MAP; + private static final int OPMODE_LOOPRATE_MAX; + private static final Map>> LPN_MAP; private String ietfNodeId; private OpenroadmNodeType ietfNodeType; private AdminStates ietfNodeAdminState; @@ -147,6 +154,50 @@ public class ConvertORToTapiTopology { private Map tapiSips; private Map uuidMap; + static { + OPMODE_LOOPRATE_MAP = new TreeMap<>(Comparator.reverseOrder()); + OPMODE_LOOPRATE_MAP.putAll(Map.of(8, "800G", 6, "600G" , 4, "400G" , 3, "300G" , 2, "200G" , 1, "100G")); + OPMODE_LOOPRATE_MAX = Collections.max(OPMODE_LOOPRATE_MAP.keySet()); + LPN_MAP = new HashMap<>(Map.of( + "ETH", new HashMap<>(Map.of( + "If1GEODU0", Map.of( + ODUTYPEODU0.VALUE, Uint64.valueOf(0), DIGITALSIGNALTYPEGigE.VALUE, Uint64.valueOf(0)), + "If10GEODU2e", Map.of( + ODUTYPEODU2E.VALUE, Uint64.valueOf(0), DIGITALSIGNALTYPE10GigELAN.VALUE, Uint64.valueOf(0)), + "If10GEODU2", Map.of( + ODUTYPEODU2.VALUE, Uint64.valueOf(0), DIGITALSIGNALTYPE10GigELAN.VALUE, Uint64.valueOf(0)), + "If10GE", Map.of(DIGITALSIGNALTYPE10GigELAN.VALUE, Uint64.valueOf(0)), + "If100GEODU4", Map.of( + ODUTYPEODU4.VALUE, Uint64.valueOf(0), DIGITALSIGNALTYPE100GigE.VALUE, Uint64.valueOf(0)), + "If100GE", Map.of(DIGITALSIGNALTYPE100GigE.VALUE, Uint64.valueOf(0)), + "IfOCH", Map.of(ODUTYPEODU4.VALUE, Uint64.valueOf(0)))), + "ODU", new HashMap<>(Map.of( + "If1GEODU0", Map.of(ODUTYPEODU0.VALUE, Uint64.valueOf(0)), + "If10GEODU2e", Map.of(ODUTYPEODU2E.VALUE, Uint64.valueOf(0)), + "If10GEODU2", Map.of(ODUTYPEODU2.VALUE, Uint64.valueOf(0)), + "If100GEODU4", Map.of(ODUTYPEODU4.VALUE, Uint64.valueOf(0)))), + "PHOTONIC_MEDIA", new HashMap<>(Map.of( + "IfOCHOTUCnODUCn", + Map.of(ODUTYPEODUCN.VALUE, Uint64.valueOf(1), OTUTYPEOTUCN.VALUE, Uint64.valueOf(1)), + "IfOCH", + Map.of(ODUTYPEODUCN.VALUE, Uint64.valueOf(1), OTUTYPEOTUCN.VALUE, Uint64.valueOf(1), + PHOTONICLAYERQUALIFIEROTSiMC.VALUE, Uint64.valueOf(1), + PHOTONICLAYERQUALIFIEROTS.VALUE, Uint64.valueOf(1)))))); + LPN_MAP.get("ETH").put("IfOCHOTU4ODU4", LPN_MAP.get("ETH").get("IfOCH")); + LPN_MAP.put("DSR", LPN_MAP.get("ETH")); + LPN_MAP.get("ODU").put("If10GE", LPN_MAP.get("ODU").get("If10GEODU2")); + LPN_MAP.get("ODU").put("If100GE", LPN_MAP.get("ODU").get("If100GEODU4")); + LPN_MAP.get("ODU").put("IfOCHOTU4ODU4", LPN_MAP.get("ODU").get("If100GEODU4")); + LPN_MAP.get("ODU").put("IfOCH", LPN_MAP.get("ODU").get("If100GEODU4")); + LPN_MAP.get("PHOTONIC_MEDIA").put("IfOtsiOtucnOducn", LPN_MAP.get("PHOTONIC_MEDIA").get("IfOCHOTUCnODUCn")); + LPN_MAP.get("PHOTONIC_MEDIA").put("IfOCHOTUCnODUCnRegen", LPN_MAP.get("PHOTONIC_MEDIA").get("IfOCHOTUCnODUCn")); + LPN_MAP + .get("PHOTONIC_MEDIA").put("IfOCHOTUCnODUCnUniregen", LPN_MAP.get("PHOTONIC_MEDIA").get("IfOCHOTUCnODUCn")); + LPN_MAP.get("PHOTONIC_MEDIA").put("IfOCHOTU4ODU4", LPN_MAP.get("PHOTONIC_MEDIA").get("IfOCH")); + LPN_MAP.get("PHOTONIC_MEDIA").put("IfOCHOTU4ODU4Regen", LPN_MAP.get("PHOTONIC_MEDIA").get("IfOCH")); + LPN_MAP.get("PHOTONIC_MEDIA").put("IfOCHOTU4ODU4Uniregen", LPN_MAP.get("PHOTONIC_MEDIA").get("IfOCH")); + } + public ConvertORToTapiTopology(Uuid tapiTopoUuid) { this.tapiTopoUuid = tapiTopoUuid; @@ -399,21 +450,17 @@ public class ConvertORToTapiTopology { Integer nepRate = 0; Integer loopRate = 0; for (OperationalModeKey operationalMode : supportedOpModes) { - if (operationalMode.toString().contains("800G")) { - loopRate = 8; - } else if (operationalMode.toString().contains("600G")) { - loopRate = 6; - } else if (operationalMode.toString().contains("400G")) { - loopRate = 4; - } else if (operationalMode.toString().contains("300G")) { - loopRate = 3; - } else if (operationalMode.toString().contains("200G")) { - loopRate = 2; - } else if (operationalMode.toString().contains("100G")) { - loopRate = 1; + for (Map.Entry entry: OPMODE_LOOPRATE_MAP.entrySet()) { + if (operationalMode.toString().contains(entry.getValue())) { + loopRate = entry.getKey(); + break; + } } - if (loopRate >= nepRate) { + if (loopRate > nepRate) { nepRate = loopRate; + if (nepRate >= OPMODE_LOOPRATE_MAX) { + break; + } } } List aps = new ArrayList<>(); @@ -463,21 +510,17 @@ public class ConvertORToTapiTopology { Integer nepRate = 0; Integer loopRate = 0; for (OperationalModeKey operationalMode : supportedOpModes) { - if (operationalMode.toString().contains("800G")) { - loopRate = 8; - } else if (operationalMode.toString().contains("600G")) { - loopRate = 6; - } else if (operationalMode.toString().contains("400G")) { - loopRate = 4; - } else if (operationalMode.toString().contains("300G")) { - loopRate = 3; - } else if (operationalMode.toString().contains("200G")) { - loopRate = 2; - } else if (operationalMode.toString().contains("100G")) { - loopRate = 1; + for (Map.Entry entry: OPMODE_LOOPRATE_MAP.entrySet()) { + if (operationalMode.toString().contains(entry.getValue())) { + loopRate = entry.getKey(); + break; + } } - if (loopRate >= nepRate) { + if (loopRate > nepRate) { nepRate = loopRate; + if (nepRate >= OPMODE_LOOPRATE_MAX) { + break; + } } } List sps = new ArrayList<>(); @@ -520,8 +563,6 @@ public class ConvertORToTapiTopology { return sps.stream().distinct().toList(); } - @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "SF_SWITCH_FALLTHROUGH", - justification = "Voluntarily No break in switchcase where comment is inserted in following method") public List createSupportedCepLayerProtocolQualifier( Collection sicList, LayerProtocolName lpn) { if (sicList == null) { @@ -533,146 +574,23 @@ public class ConvertORToTapiTopology { } LOG.debug("SIC list = {}", sicList); List sclpqiList = new ArrayList<>(); + String lpnName = lpn.getName(); for (SupportedInterfaceCapability sic : sicList) { String ifCapType = sic.getIfCapType().toString().split("\\{")[0]; - switch (lpn.getName()) { - case "ETH": - case "DSR": - switch (ifCapType) { - case "If1GEODU0": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "If10GEODU2e": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "If10GEODU2": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "If10GE": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "If100GEODU4": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "If100GE": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "IfOCHOTU4ODU4": - case "IfOCH": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - default: - LOG.error("IfCapability type not managed"); - break; - } - break; - case "ODU": - switch (ifCapType) { - case "If1GEODU0": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "If10GEODU2e": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "If10GEODU2": - case "If10GE": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - case "If100GEODU4": - case "If100GE": - case "IfOCHOTU4ODU4": - case "IfOCH": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - default: - LOG.error("IfCapability type not managed"); - break; - } - break; - case "PHOTONIC_MEDIA": - switch (ifCapType) { - case "IfOCHOTUCnODUCn": - case "IfOtsiOtucnOducn": - case "IfOCHOTUCnODUCnRegen": - case "IfOCHOTUCnODUCnUniregen": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODUCN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(OTUTYPEOTUCN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - //fallthrough - case "IfOCH": - case "IfOCHOTU4ODU4": - case "IfOCHOTU4ODU4Regen": - case "IfOCHOTU4ODU4Uniregen": - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - default: - break; - } - break; - default: - LOG.error("Layer Protocol Name is unknown {}", lpn.getName()); - break; + if (!LPN_MAP.containsKey(lpnName)) { + LOG.error("Layer Protocol Name is unknown {}", lpnName); + break; + } + var ifCapTypeMap = LPN_MAP.get(lpnName); + if (!ifCapTypeMap.containsKey(ifCapType)) { + LOG.error("IfCapability type {} not managed", ifCapType); + break; + } + for (LAYERPROTOCOLQUALIFIER qualifier: ifCapTypeMap.get(ifCapType).keySet()) { + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(qualifier) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); } } return sclpqiList.stream().distinct().toList(); @@ -1382,8 +1300,6 @@ public class ConvertORToTapiTopology { .build(); } - @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "SF_SWITCH_FALLTHROUGH", - justification = "Voluntarily No break in switchcase where comment is inserted in following method") private List createSipSupportedLayerProtocolQualifier( @@ -1397,165 +1313,25 @@ public class ConvertORToTapiTopology { } List sclpqiList = new ArrayList<>(); + String lpnName = lpn.getName(); for (SupportedInterfaceCapability sic : supportedInterfaceCapability) { String ifCapType = sic.getIfCapType().toString().split("\\{")[0]; - switch (lpn.getName()) { - case "ETH": - case "DSR": - switch (ifCapType) { - case "If1GEODU0": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "If10GEODU2e": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "If10GEODU2": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "If10GE": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "If100GEODU4": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "If100GE": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "IfOCHOTU4ODU4": - case "IfOCH": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - default: - LOG.error("IfCapability type not managed"); - break; - } - break; - case "ODU": - switch (ifCapType) { - case "If1GEODU0": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "If10GEODU2e": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "If10GEODU2": - case "If10GE": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - case "If100GEODU4": - case "If100GE": - case "IfOCHOTU4ODU4": - case "IfOCH": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(0)) - .build()); - break; - default: - LOG.error("IfCapability type not managed"); - break; - } - break; - case "PHOTONIC_MEDIA": - switch (ifCapType) { - case "IfOCHOTUCnODUCn": - case "IfOtsiOtucnOducn": - case "IfOCHOTUCnODUCnRegen": - case "IfOCHOTUCnODUCnUniregen": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(ODUTYPEODUCN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(OTUTYPEOTUCN.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - //fallthrough - case "IfOCH": - case "IfOCHOTU4ODU4": - case "IfOCHOTU4ODU4Regen": - case "IfOCHOTU4ODU4Uniregen": - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 - .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() - .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE) - .setNumberOfCepInstances(Uint64.valueOf(1)) - .build()); - break; - default: - break; - } - break; - default: - LOG.error("Layer Protocol Name is unknown"); - break; + if (!LPN_MAP.containsKey(lpnName)) { + LOG.error("Layer Protocol Name is unknown {}", lpnName); + break; + } + var ifCapTypeMap = LPN_MAP.get(lpnName); + if (!ifCapTypeMap.containsKey(ifCapType)) { + LOG.error("IfCapability type {} not managed", ifCapType); + break; + } + for (Map.Entry entry: ifCapTypeMap.get(ifCapType).entrySet()) { + sclpqiList.add( + new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(entry.getKey()) + .setNumberOfCepInstances(entry.getValue()) + .build()); } } return sclpqiList.stream().distinct().toList(); -- 2.36.6