* otu link.
*
* @param link
- * link containing termination points to be updated
+ * link containing termination points to be updated (used for use
+ * case with a single supported link)
+ * @param supportedLinks
+ * list of link-id supported the service (used for use case with
+ * several supported links)
* @param serviceRate
* Service rate may be 1G, 10G, 100G or 400G
* @param tribPortNb
* @param isDeletion
* True indicates if the low-order otn service must be deleted
*/
- void updateOtnLinks(Link link, Uint32 serviceRate, Short tribPortNb, Short minTribSoltNb, Short maxTribSoltNb,
- boolean isDeletion);
+ void updateOtnLinks(Link link, List<String> supportedLinks, Uint32 serviceRate, Short tribPortNb,
+ Short minTribSoltNb, Short maxTribSoltNb, boolean isDeletion);
/**
* Update otn links from otn-topology.
* of the direct parent otu link.
*
* @param supportedLinks
- * list of link-id supported the service (used when more than one supported link)
+ * list of link-id supported the service (used for use case with
+ * several supported links)
* @param isDeletion
* True indicates if the low-order otn service must be deleted
*/
@Override
public void updateOtnLinks(
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link
- notifLink, Uint32 serviceRate, Short tribPortNb, Short minTribSoltNb, Short maxTribSlotNb,
- boolean isDeletion) {
+ notifLink, List<String> suppLinks, Uint32 serviceRate, Short tribPortNb, Short minTribSoltNb,
+ Short maxTribSlotNb, boolean isDeletion) {
- 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, serviceRate);
+ List<Link> supportedOdu4Links = null;
+ if (notifLink != null) {
+ // retreive termination-points to be updated
+ linkTerminations.add(new LinkTpBuilder()
+ .setNodeId(notifLink.getATermination().getNodeId())
+ .setTpId(notifLink.getATermination().getTpId())
+ .build());
+ linkTerminations.add(new LinkTpBuilder()
+ .setNodeId(notifLink.getZTermination().getNodeId())
+ .setTpId(notifLink.getZTermination().getTpId())
+ .build());
+ // retreive supported links
+ supportedOdu4Links = getSupportingOdu4Links(linkTerminations, serviceRate);
+ } else if (suppLinks != null) {
+ // retreive supported links
+ List<LinkId> linkIdList = new ArrayList<>();
+ if (suppLinks != null) {
+ suppLinks.forEach(lk -> linkIdList.add(new LinkId(lk)));
+ }
+ supportedOdu4Links = getOtnLinks(linkIdList);
+ // retreive termination-points to be updated
+ for (Link link : supportedOdu4Links) {
+ LinkTp atermination = new LinkTpBuilder()
+ .setNodeId(link.getSource().getSourceNode().getValue())
+ .setTpId(link.getSource().getSourceTp().getValue())
+ .build();
+ linkTerminations.add(atermination);
+ }
+ } else {
+ LOG.error("Impossible to update OTN links and their associated termination points in otn-topology");
+ return;
+ }
List<TerminationPoint> tps = getOtnNodeTps(linkTerminations);
TopologyShard otnTopologyShard;
otnTopologyShard = OpenRoadmOtnTopology.updateOtnLinks(supportedOdu4Links, tps, serviceRate, tribPortNb,
List<TerminationPoint> tps = new ArrayList<>();
for (LinkTp linkTp : linkTerminations) {
String tp = linkTp.getTpId();
- String nodeId = new StringBuilder(linkTp.getNodeId()).append("-")
- .append(tp.split("-")[0]).toString();
+ String nodeId = formatNodeName(linkTp.getNodeId(), tp);
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)))
LOG.error("error getting node termination points from the datastore");
}
}
- if (tps.isEmpty()) {
- LOG.warn("returning null");
- return null;
- } else {
- LOG.info("returning tps = {}", tps.toString());
- return tps;
- }
+ return tps;
}
private void deleteLinks(List<Link> links) {
return new StringBuilder(nodeId).append("-").append(tpId.split("-")[0]).toString();
}
+ private static String formatNodeName(String nodeName, String tpName) {
+ return nodeName.contains("-XPDR")
+ ? nodeName
+ : new StringBuilder(nodeName).append("-").append(tpName.split("-")[0]).toString();
+ }
+
@SuppressFBWarnings(
value = "UPM_UNCALLED_PRIVATE_METHOD",
justification = "false positive, this method is used by public updateOpenRoadmNetworkTopology")
otnLinkTps.add(new LinkTpBuilder().setNodeId(nodeId).setTpId(srcTp).build());
} else {
createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(
- nodeId, srcTp, false, apiInfoA, apiInfoZ, PT_07));
+ nodeId, srcTp, false, apiInfoA, apiInfoZ, PT_07));
}
}
if ((destTp != null) && destTp.contains(StringConstants.CLIENT_TOKEN)) {
renderingResults.forEach(rr -> otnLinkTerminationPoints.addAll(rr.getOtnLinkTps()));
Link notifLink = createLinkForNotif(otnLinkTerminationPoints);
List<String> allSupportLinks = ModelMappingUtils.getLinksFromServicePathDescription(input.getPathDescription());
- List<String> supportedLinks = null;
- switch (serviceType) {
- case StringConstants.SERVICE_TYPE_ODU4:
- case StringConstants.SERVICE_TYPE_100GE_S:
- supportedLinks = allSupportLinks.stream()
- .filter(lk -> lk.startsWith(OtnLinkType.OTU4.getName())).collect(Collectors.toList());
- break;
- case StringConstants.SERVICE_TYPE_ODUC4:
- supportedLinks = allSupportLinks.stream()
- .filter(lk -> lk.startsWith(OtnLinkType.OTUC4.getName())).collect(Collectors.toList());
- break;
- default:
- break;
- }
+ List<String> supportedLinks = getSupportedLinks(allSupportLinks, serviceType);
sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceImplementationRequest,
input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL, input.getPathDescription(),
renderingResults.forEach(rr -> otnLinkTerminationPoints.addAll(rr.getOtnLinkTps()));
Link notifLink = createLinkForNotif(otnLinkTerminationPoints);
List<String> allSupportLinks = ModelMappingUtils.getLinksFromServicePathDescription(pathDescription);
- List<String> supportedLinks = null;
- switch (serviceType) {
- case StringConstants.SERVICE_TYPE_ODU4:
- case StringConstants.SERVICE_TYPE_100GE_S:
- supportedLinks = allSupportLinks.stream()
- .filter(lk -> lk.startsWith(OtnLinkType.OTU4.getName())).collect(Collectors.toList());
- break;
- case StringConstants.SERVICE_TYPE_ODUC4:
- supportedLinks = allSupportLinks.stream()
- .filter(lk -> lk.startsWith(OtnLinkType.OTUC4.getName())).collect(Collectors.toList());
- break;
- default:
- break;
- }
+ List<String> supportedLinks = getSupportedLinks(allSupportLinks, serviceType);
sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceDelete,
serviceName, RpcStatusEx.Successful, OPERATION_SUCCESSFUL, pathDescription, notifLink, supportedLinks,
.build())
.build();
}
+
+ private List<String> getSupportedLinks(List<String> allSupportLinks, String serviceType) {
+ switch (serviceType) {
+ case StringConstants.SERVICE_TYPE_10GE:
+ case StringConstants.SERVICE_TYPE_1GE:
+ return allSupportLinks.stream()
+ .filter(lk -> lk.startsWith(OtnLinkType.ODTU4.getName())).collect(Collectors.toList());
+ case StringConstants.SERVICE_TYPE_100GE_M:
+ return allSupportLinks.stream()
+ .filter(lk -> lk.startsWith(OtnLinkType.ODUC4.getName())).collect(Collectors.toList());
+ case StringConstants.SERVICE_TYPE_ODU4:
+ case StringConstants.SERVICE_TYPE_100GE_S:
+ return allSupportLinks.stream()
+ .filter(lk -> lk.startsWith(OtnLinkType.OTU4.getName())).collect(Collectors.toList());
+ case StringConstants.SERVICE_TYPE_ODUC4:
+ return allSupportLinks.stream()
+ .filter(lk -> lk.startsWith(OtnLinkType.OTUC4.getName())).collect(Collectors.toList());
+ default:
+ return null;
+ }
+ }
}
Short maxTribSlot = Short.valueOf(notification.getAToZDirection().getMaxTribSlot().getValue()
.split("\\.")[1]);
LOG.info("updating otn-topology node tps -tps and tpn pools");
- this.networkModelService.updateOtnLinks(link, notification.getAToZDirection().getRate(),
- tribPort, minTribSlot, maxTribSlot, isDeletion);
+ this.networkModelService.updateOtnLinks(link, supportedLinkIds,
+ notification.getAToZDirection().getRate(), tribPort, minTribSlot, maxTribSlot, isDeletion);
break;
case StringConstants.SERVICE_TYPE_100GE_S:
this.networkModelService.updateOtnLinks(supportedLinkIds, isDeletion);