From 10fad3c9f6b3613cf44a097c51d2d0514102ea5b Mon Sep 17 00:00:00 2001 From: Balagangadhar Bathula Date: Wed, 28 Sep 2022 23:39:16 -0400 Subject: [PATCH] Update port-mapping data for REGEN xpdr-type - For a REGEN/REGEN-UNI xpdr-node-type, update the port-mapping data with regen-profile information - Enable the REGEN/REGEN-UNI xpdr-node-type to appear in the Open ROADM topology layer (network model) JIRA: TRNSPRTPCE-690 Signed-off-by: Balagangadhar Bathula Change-Id: If8363d9de22d2ab246347a9d5944cedc22a37fa1 --- .../common/mapping/PortMappingVersion710.java | 15 +++++++- .../util/OpenRoadmOtnTopology.java | 37 +++++++++++++++++++ .../networkmodel/util/OpenRoadmTopology.java | 7 ++++ 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java index 0b3d24903..45ea9981f 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java @@ -50,6 +50,7 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmappi import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.regen.profiles.grp.RegenProfilesBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcp; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcpBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcpKey; @@ -1049,12 +1050,24 @@ public class PortMappingVersion710 { if (supIntfCapaList != null) { Set supportedIntf = new HashSet<>(); + Set regenProfiles = new HashSet<>(); SupportedInterfaceCapability sic1 = null; for (SupportedInterfaceCapability sic : supIntfCapaList) { supportedIntf.add(MappingUtilsImpl.convertSupIfCapa(sic.getIfCapType().toString())); + LOG.debug("This the xpdr-type {}", xpdrNodeType.getName()); + // Here we use both types of Regen (bi/uni). Though initial support is only for bi-directional regen + if (xpdrNodeType == XpdrNodeTypes.Regen || xpdrNodeType == XpdrNodeTypes.RegenUni) { + if (sic.getOtsigroupCapabilityProfileName().isEmpty()) { + LOG.error("Otsigroup-capability-profile-name is not found for regen port {}", + port.getPortName()); + } + LOG.info("Regen-profiles {}", sic.getOtsigroupCapabilityProfileName()); + regenProfiles.addAll(sic.getOtsigroupCapabilityProfileName()); + } sic1 = sic; } - mpBldr.setSupportedInterfaceCapability(supportedIntf); + mpBldr.setRegenProfiles(new RegenProfilesBuilder().setRegenProfile(regenProfiles).build()) + .setSupportedInterfaceCapability(supportedIntf); if (port.getPortQual() == PortQual.SwitchClient && !sic1.getOtnCapability().getMpdrClientRestriction().isEmpty()) { // Here we assume all the supported-interfaces has the support same rates, and the 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 95a61e0c2..c47acc9d9 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 @@ -133,6 +133,11 @@ public final class OpenRoadmOtnTopology { case Switch: nodes.add(createSwitch(node)); break; + case Regen: + case RegenUni: + // TODO: Need to revisit this method + nodes.add(createRegen(node)); + break; default: LOG.error("unknown otn node type {}", node.getNodeType().getName()); return null; @@ -571,6 +576,38 @@ public final class OpenRoadmOtnTopology { .build(); } + // TODO: This is same as createTpdr. After Open ROADM network models are updated, + // we will revisit this method to include regen based data. + private static Node createRegen(OtnTopoNode node) { + Map tpMap = new HashMap<>(); + createTP(tpMap, node, OpenroadmTpType.XPONDERCLIENT, false); + createTP(tpMap, node, OpenroadmTpType.XPONDERNETWORK, true); + // return ietfNode + return new NodeBuilder() + .setNodeId(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())) + .withKey(new NodeKey(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))) + .setSupportingNode(createSupportingNodes(node)) + .addAugmentation( + new Node1Builder() + .setXpdrAttributes( + new XpdrAttributesBuilder() + .setXpdrNumber(Uint16.valueOf(node.getXpdrNb())) + .build()) + .build()) + .addAugmentation( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder() + .setNodeType(OpenroadmNodeType.TPDR) + .setOperationalState(State.InService) + .setAdministrativeState(AdminStates.InService) + .build()) + .addAugmentation( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226 + .Node1Builder() + .setTerminationPoint(tpMap) + .build()) + .build(); + } + private static Node createMuxpdr(OtnTopoNode node) { // prepare otn-topology node augmentation diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java index bc09c9856..112fce171 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java @@ -177,6 +177,13 @@ public final class OpenRoadmTopology { isOtn = true; xpdrType = mapping.getXpdrType().getName(); break; + // Both regen and regen-uni are added here, though initial support is + // only for regen xpdr-type + case Regen: + case RegenUni: + isOtn = false; + xpdrType = mapping.getXpdrType().getName(); + break; default : LOG.warn("cannot create xpdr node {} in openroadm-topology: type {} not supported", mappingNode.getNodeId() + "-XPDR" + xpdrNb, mapping.getXpdrType().getName()); -- 2.36.6