X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=tapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Ftapi%2Ftopology%2FTapiTopologyImpl.java;h=5fd5c4d43cb2f93ac7c191d47c102501c61b039b;hb=9860391e05b7bc0972bdd3c1deceff0662fa8320;hp=7dcb1f5e8d576f43d928b0896918e6f7e53f8f07;hpb=882df7f693f64e3c7cbc4e12dab1629a2bb0c8be;p=transportpce.git diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java index 7dcb1f5e8..5fd5c4d43 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java @@ -94,7 +94,7 @@ public class TapiTopologyImpl implements TapiTopologyService { @Override public ListenableFuture> getTopologyDetails(GetTopologyDetailsInput input) { - LOG.info("Building TAPI Topology absraction from {}", input.getTopologyIdOrName()); + LOG.info("Building TAPI Topology abstraction from {}", input.getTopologyIdOrName()); Topology topology = null; switch (input.getTopologyIdOrName()) { case NetworkUtils.OVERLAY_NETWORK_ID: @@ -118,64 +118,89 @@ public class TapiTopologyImpl implements TapiTopologyService { private Topology createAbstractedOpenroadmTopology() { // read openroadm-topology @NonNull - FluentFuture> openroadmTopoOpt = dataBroker.newReadOnlyTransaction().read( - LogicalDatastoreType.CONFIGURATION, InstanceIdentifiers.OVERLAY_NETWORK_II); - if (openroadmTopoOpt.isDone()) { - Network openroadmTopo = null; - try { - openroadmTopo = openroadmTopoOpt.get().get(); - } catch (InterruptedException | ExecutionException | NoSuchElementException e) { - LOG.error("Impossible to retreive openroadm-topology from mdsal"); - return null; - } - List nodeList = openroadmTopo.getNode(); - @Nullable - List linkList = openroadmTopo.augmentation(Network1.class).getLink(); - List xponderOutLinkList = linkList.stream().filter(lk -> lk.augmentation(Link1.class).getLinkType() - .equals(OpenroadmLinkType.XPONDEROUTPUT)).collect(Collectors.toList()); - List xponderInLinkList = linkList.stream().filter(lk -> lk.augmentation(Link1.class).getLinkType() - .equals(OpenroadmLinkType.XPONDERINPUT)).collect(Collectors.toList()); + FluentFuture> openroadmTopoOpt = dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.CONFIGURATION, InstanceIdentifiers.OVERLAY_NETWORK_II); + if (!openroadmTopoOpt.isDone()) { + LOG.warn("Cannot get openroadm topology, returning null"); + return null; + } + Optional optionalOpenroadmTop = null; + try { + optionalOpenroadmTop = openroadmTopoOpt.get(); + } catch (InterruptedException e) { + //sonar : "InterruptedException" should not be ignored (java:S2142) + //https://www.ibm.com/developerworks/java/library/j-jtp05236/index.html?ca=drs-#2.1 + Thread.currentThread().interrupt(); + return null; + } catch (ExecutionException | NoSuchElementException e) { + LOG.error("Impossible to retrieve openroadm-topology from mdsal", e); + return null; + } + Network openroadmTopo = null; + if (optionalOpenroadmTop.isPresent()) { + openroadmTopo = optionalOpenroadmTop.get(); + } else { + LOG.warn("Openroadm topology is not present, returning null"); + return null; + } - List xpdrNodeList = nodeList.stream().filter(nt -> nt.augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class).getNodeType() - .equals(OpenroadmNodeType.XPONDER)).collect(Collectors.toList()); - Map> clientPortMap = new HashMap<>(); - for (Node node : xpdrNodeList) { - String nodeId = node.getSupportingNode().get(0).getNodeRef().getValue(); - List clientPortList = new ArrayList<>(); - for (TerminationPoint tp : node.augmentation(Node1.class).getTerminationPoint()) { - if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERCLIENT)) { - if (checkTp(node.getNodeId().getValue(), nodeId, tp, xponderOutLinkList, xponderInLinkList)) { - clientPortList.add(tp.getTpId().getValue()); - } - } - } - if (!clientPortList.isEmpty()) { - clientPortMap.put(nodeId, clientPortList); - } - } + List nodeList = openroadmTopo.getNode(); + List linkList = null; + if (openroadmTopo.augmentation(Network1.class) != null) { + linkList = openroadmTopo.augmentation(Network1.class).getLink(); + } else { + linkList = new ArrayList<>(); + } + List xponderOutLinkList = linkList.stream() + .filter(lk -> lk.augmentation(Link1.class).getLinkType().equals(OpenroadmLinkType.XPONDEROUTPUT)) + .collect(Collectors.toList()); + List xponderInLinkList = linkList.stream() + .filter(lk -> lk.augmentation(Link1.class).getLinkType().equals(OpenroadmLinkType.XPONDERINPUT)) + .collect(Collectors.toList()); - List goodTpList = new ArrayList<>(); - for (Map.Entry> entry : clientPortMap.entrySet()) { - String key = entry.getKey(); - List value = entry.getValue(); - for (String tpid : value) { - goodTpList.add(key + "--" + tpid); + List xpdrNodeList = nodeList + .stream() + .filter(nt -> nt + .augmentation(org.opendaylight.yang.gen.v1 + .http.org.openroadm.common.network.rev181130.Node1.class) + .getNodeType().equals(OpenroadmNodeType.XPONDER)).collect(Collectors.toList()); + Map> clientPortMap = new HashMap<>(); + for (Node node : xpdrNodeList) { + String nodeId = node.getSupportingNode().get(0).getNodeRef().getValue(); + List clientPortList = new ArrayList<>(); + for (TerminationPoint tp : node.augmentation(Node1.class).getTerminationPoint()) { + if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERCLIENT) + && checkTp(node.getNodeId().getValue(), nodeId, tp, xponderOutLinkList, xponderInLinkList)) { + clientPortList.add(tp.getTpId().getValue()); } } + if (!clientPortList.isEmpty()) { + clientPortMap.put(nodeId, clientPortList); + } + } + List goodTpList = extractGoodTpList(clientPortMap); + // tapi topology creation + List names = new ArrayList(); + names.add(new NameBuilder().setValue("topo ethernet").setValueName("Topo Name").build()); + Uuid uuid = new Uuid(UUID.randomUUID().toString()); + List + tapiNodeList = new ArrayList<>(); + tapiNodeList.add(createTapiNode(goodTpList)); + Topology topology = new TopologyBuilder().setName(names).setUuid(uuid).setNode(tapiNodeList).build(); + return topology; - // tapi topology creation - List names = new ArrayList(); - names.add(new NameBuilder().setValue("topo ethernet").setValueName("Topo Name").build()); - Uuid uuid = new Uuid(UUID.randomUUID().toString()); - List tapiNodeList = - new ArrayList<>(); - tapiNodeList.add(createTapiNode(goodTpList)); - Topology topology = new TopologyBuilder().setName(names).setUuid(uuid).setNode(tapiNodeList).build(); - return topology; - } else { - return null; + } + + private List extractGoodTpList(Map> clientPortMap) { + List goodTpList = new ArrayList<>(); + for (Map.Entry> entry : clientPortMap.entrySet()) { + String key = entry.getKey(); + List value = entry.getValue(); + for (String tpid : value) { + goodTpList.add(key + "--" + tpid); + } } + return goodTpList; } private Topology createAbstractedOtnTopology() { @@ -188,7 +213,7 @@ public class TapiTopologyImpl implements TapiTopologyService { try { otnTopo = otnTopoOpt.get().get(); } catch (InterruptedException | ExecutionException | NoSuchElementException e) { - LOG.error("Impossible to retreive otn-topology from mdsal"); + LOG.error("Impossible to retreive otn-topology from mdsal",e); return null; } List nodeList = otnTopo.getNode(); @@ -295,7 +320,7 @@ public class TapiTopologyImpl implements TapiTopologyService { try { mapping = mappingOpt.get().get(); } catch (InterruptedException | ExecutionException e) { - LOG.error("Error getting mapping for {}", networkLcp); + LOG.error("Error getting mapping for {}", networkLcp,e); return false; } } else { @@ -311,11 +336,7 @@ public class TapiTopologyImpl implements TapiTopologyService { .getSource().getSourceTp().equals(networkLcp)).count(); count += xpdIn.stream().filter(lk -> lk.getDestination().getDestNode().getValue().equals(nodeIdTopo) && lk.getDestination().getDestTp().equals(networkLcp)).count(); - if (count == 2) { - return true; - } else { - return false; - } + return (count == 2); case "tx": case "rx": @Nullable @@ -332,11 +353,7 @@ public class TapiTopologyImpl implements TapiTopologyService { count += xpdOut.stream().filter(lk -> lk.getSource().getSourceNode().getValue().equals(nodeIdTopo) && lk.getSource().getSourceTp().equals(partnerLcp)).count(); } - if (count == 2) { - return true; - } else { - return false; - } + return (count == 2); default: LOG.error("Invalid port direction for {}", networkLcp); return false;