import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTpBuilder;
import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev210511.OtnLinkType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
TopologyShard otnTopologyShard;
switch (linkType) {
case OTU4:
+ case OTUC4:
otnTopologyShard = OpenRoadmOtnTopology.createOtnLinks(nodeA, tpA, nodeZ, tpZ, linkType);
break;
case ODTU4:
+ case ODUC4:
String nodeTopoA = new StringBuilder(nodeA).append("-").append(tpA.split("-")[0]).toString();
String nodeTopoZ = new StringBuilder(nodeZ).append("-").append(tpZ.split("-")[0]).toString();
List<LinkId> linkIdList = new ArrayList<>();
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, "OTU4"));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, "OTU4"));
+ String prefix;
+ if (OtnLinkType.ODTU4.equals(linkType)) {
+ prefix = OtnLinkType.OTU4.getName();
+ } else {
+ prefix = OtnLinkType.OTUC4.getName();
+ }
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, prefix));
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, prefix));
List<Link> supportedOtu4links = getOtnLinks(linkIdList);
List<TerminationPoint> tps = getOtnNodeTps(nodeTopoA, tpA, nodeTopoZ, tpZ);
-
- otnTopologyShard = OpenRoadmOtnTopology.createOtnLinks(supportedOtu4links, tps);
+ otnTopologyShard = OpenRoadmOtnTopology.createOtnLinks(supportedOtu4links, tps, linkType);
break;
default:
LOG.error("unknown otn link type {}", linkType);
TopologyShard otnTopologyShard;
String nodeTopoA = new StringBuilder(nodeA).append("-").append(tpA.split("-")[0]).toString();
String nodeTopoZ = new StringBuilder(nodeZ).append("-").append(tpZ.split("-")[0]).toString();
- List<Link> otu4Links;
+ List<Link> otuLinks;
List<LinkId> linkIdList = new ArrayList<>();
+ String prefix;
switch (linkType) {
case OTU4:
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, "OTU4"));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, "OTU4"));
- otu4Links = getOtnLinks(linkIdList);
- if (checkLinks(otu4Links)) {
- deleteLinks(otu4Links);
+ case OTUC4:
+ if (OtnLinkType.OTU4.equals(linkType)) {
+ prefix = OtnLinkType.OTU4.getName();
+ } else {
+ prefix = OtnLinkType.OTUC4.getName();
+ }
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, prefix));
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, prefix));
+ otuLinks = getOtnLinks(linkIdList);
+ if (checkLinks(otuLinks)) {
+ deleteLinks(otuLinks);
} else {
LOG.error("Error deleting OTU4 links");
}
otnTopologyShard = new TopologyShard(null, null);
break;
case ODTU4:
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, "ODU4"));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, "ODU4"));
- List<Link> odu4Links = getOtnLinks(linkIdList);
+ case ODUC4:
+ String prefix2;
+ if (OtnLinkType.ODTU4.equals(linkType)) {
+ prefix = OtnLinkType.ODTU4.getName();
+ prefix2 = OtnLinkType.OTU4.getName();
+ } else {
+ prefix = OtnLinkType.ODUC4.getName();
+ prefix2 = OtnLinkType.OTUC4.getName();
+ }
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, prefix));
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, prefix));
+ List<Link> oduLinks = getOtnLinks(linkIdList);
List<TerminationPoint> tps = getOtnNodeTps(nodeTopoA, tpA, nodeTopoZ, tpZ);
- if (checkLinks(odu4Links) && checkTerminationPoints(tps)) {
- deleteLinks(odu4Links);
+ if (checkLinks(oduLinks) && checkTerminationPoints(tps)) {
+ deleteLinks(oduLinks);
linkIdList.clear();
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, "OTU4"));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, "OTU4"));
- otu4Links = getOtnLinks(linkIdList);
- otnTopologyShard = OpenRoadmOtnTopology.deleteOtnLinks(otu4Links, tps);
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, prefix2));
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, prefix2));
+ otuLinks = getOtnLinks(linkIdList);
+ otnTopologyShard = OpenRoadmOtnTopology.deleteOtnLinks(otuLinks, tps, linkType);
} else {
LOG.error("Error deleting ODU4 links");
otnTopologyShard = new TopologyShard(null, null);
}
@Override
- public void updateOtnLinks(List<String> nodeTps, String serviceRate, Short tribPortNb, Short tribSoltNb,
+ public void updateOtnLinks(
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210618.renderer.rpc.result.sp.Link
+ notifLink, Uint32 serviceRate, Short tribPortNb, Short minTribSoltNb, Short maxTribSlotNb,
boolean isDeletion) {
- List<Link> supportedOdu4Links = getSupportingOdu4Links(nodeTps);
- List<TerminationPoint> tps = getOtnNodeTps(nodeTps);
+
+ LinkTp atermination = new LinkTpBuilder()
+ .setNodeId(notifLink.getATermination().getNodeId())
+ .setTpId(notifLink.getATermination().getTpId())
+ .build();
+ LinkTp ztermination = new LinkTpBuilder()
+ .setNodeId(notifLink.getZTermination().getNodeId())
+ .setTpId(notifLink.getZTermination().getTpId())
+ .build();
+ List<LinkTp> linkTerminations = new ArrayList<>();
+ linkTerminations.add(atermination);
+ linkTerminations.add(ztermination);
+
+ List<Link> supportedOdu4Links = getSupportingOdu4Links(linkTerminations);
+ List<TerminationPoint> tps = getOtnNodeTps(linkTerminations);
TopologyShard otnTopologyShard;
otnTopologyShard = OpenRoadmOtnTopology.updateOtnLinks(supportedOdu4Links, tps, serviceRate, tribPortNb,
- tribSoltNb, isDeletion);
+ minTribSoltNb, maxTribSlotNb, isDeletion);
if (otnTopologyShard.getLinks() != null) {
for (Link otnTopologyLink : otnTopologyShard.getLinks()) {
LOG.info("creating and updating otn links {} in {}", otnTopologyLink.getLinkId().getValue(),
return tps;
}
- private List<TerminationPoint> getOtnNodeTps(List<String> nodeTopoTps) {
+ private List<TerminationPoint> getOtnNodeTps(List<LinkTp> linkTerminations) {
List<TerminationPoint> tps = new ArrayList<>();
- for (String str : nodeTopoTps) {
- String nodeId = str.split("--")[0];
- String tp = str.split("--")[1];
+ for (LinkTp linkTp : linkTerminations) {
+ String tp = linkTp.getTpId();
+ String nodeId = new StringBuilder(linkTp.getNodeId()).append("-")
+ .append(tp.split("-")[0]).toString();
InstanceIdentifier<TerminationPoint> iiTp = InstanceIdentifier.builder(Networks.class)
.child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID)))
.child(Node.class, new NodeKey(new NodeId(nodeId)))
}
}
- private List<Link> getSupportingOdu4Links(List<String> nodesTopoTps) {
+ private List<Link> getSupportingOdu4Links(List<LinkTp> nodesTopoTps) {
InstanceIdentifier<Network1> iiOtnTopologyLinks = InstanceIdentifier.builder(Networks.class)
.child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID)))
.augmentation(Network1.class)
odu4links = netw1Opt
.get()
.nonnullLink().values()
- .stream().filter(lk -> lk.getLinkId().getValue().startsWith("ODU4"))
+ .stream().filter(lk -> lk.getLinkId().getValue().startsWith("ODTU4"))
.collect(Collectors.toList());
}
List<Link> links = new ArrayList<>();
if (odu4links != null) {
- for (String str : nodesTopoTps) {
- String[] nodeAndTp = str.split("--");
- if (nodeAndTp.length >= 2) {
- String nodeId = nodeAndTp[0];
- String tp = nodeAndTp[1];
- Link slink = odu4links.stream().filter(lk -> lk.getSource().getSourceNode().getValue()
- .equals(nodeId) && lk.getSource().getSourceTp().toString().equals(tp)).findFirst().get();
- if (!links.contains(slink)) {
- links.add(slink);
- }
- Link dlink = odu4links.stream().filter(lk -> lk.getDestination().getDestNode().getValue()
- .equals(nodeId) && lk.getDestination().getDestTp().toString().equals(tp)).findFirst().get();
- if (!links.contains(dlink)) {
- links.add(dlink);
- }
+ for (LinkTp linkTp : nodesTopoTps) {
+ String tp = linkTp.getTpId();
+ String nodeId = new StringBuilder(linkTp.getNodeId()).append("-")
+ .append(tp.split("-")[0]).toString();
+ Link slink = odu4links.stream().filter(lk -> lk.getSource().getSourceNode().getValue()
+ .equals(nodeId) && lk.getSource().getSourceTp().toString().equals(tp)).findFirst().get();
+ if (!links.contains(slink)) {
+ links.add(slink);
+ }
+ Link dlink = odu4links.stream().filter(lk -> lk.getDestination().getDestNode().getValue()
+ .equals(nodeId) && lk.getDestination().getDestTp().toString().equals(tp)).findFirst().get();
+ if (!links.contains(dlink)) {
+ links.add(dlink);
}
}
LOG.debug("odu4links = {}", links.toString());