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;
if (supIntfCapaList != null) {
Set<org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.SupportedIfCapability>
supportedIntf = new HashSet<>();
+ Set<String> 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
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;
.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<TerminationPointKey,TerminationPoint> 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
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());