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=9f4b06c8d23cfbcdc0e3e2ae402531869c6c9fdb;hb=34cbca4ad81fbd29e833197f0e4b09128daa8b95;hp=76fcb7fe031a0b4a7315023552dd1441f9016c07;hpb=92e2991cd0003f4592d12f78b20822642362bb5f;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 76fcb7fe0..9f4b06c8d 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 @@ -11,6 +11,7 @@ import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -25,12 +26,13 @@ import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.InstanceIdentifiers; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1; +import org.opendaylight.transportpce.common.NetworkUtils; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200113.network.Nodes; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200113.network.NodesKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200113.network.nodes.Mapping; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200113.network.nodes.MappingKey; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType; @@ -94,7 +96,28 @@ public class TapiTopologyImpl implements TapiTopologyService { @Override public ListenableFuture> getTopologyDetails(GetTopologyDetailsInput input) { - LOG.info("Building TAPI Topology {}", input.getTopologyIdOrName()); + LOG.info("Building TAPI Topology absraction from {}", input.getTopologyIdOrName()); + Topology topology = null; + switch (input.getTopologyIdOrName()) { + case NetworkUtils.OVERLAY_NETWORK_ID: + topology = createAbstractedOpenroadmTopology(); + break; + case NetworkUtils.OTN_NETWORK_ID: + topology = createAbstractedOtnTopology(); + break; + default: + LOG.error("{} unknown - can not be abstracted", input.getTopologyIdOrName()); + break; + } + if (topology != null) { + return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().setTopology(topology).build()) + .buildFuture(); + } else { + return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().build()).buildFuture(); + } + } + + private Topology createAbstractedOpenroadmTopology() { // read openroadm-topology @NonNull FluentFuture> openroadmTopoOpt = dataBroker.newReadOnlyTransaction().read( @@ -115,7 +138,7 @@ public class TapiTopologyImpl implements TapiTopologyService { .equals(OpenroadmLinkType.XPONDERINPUT)).collect(Collectors.toList()); List xpdrNodeList = nodeList.stream().filter(nt -> nt.augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1.class).getNodeType() + 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) { @@ -150,10 +173,52 @@ public class TapiTopologyImpl implements TapiTopologyService { new ArrayList<>(); tapiNodeList.add(createTapiNode(goodTpList)); Topology topology = new TopologyBuilder().setName(names).setUuid(uuid).setNode(tapiNodeList).build(); - return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().setTopology(topology).build()) - .buildFuture(); + return topology; } else { - return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().build()).buildFuture(); + return null; + } + } + + private Topology createAbstractedOtnTopology() { + // read otn-topology + @NonNull + FluentFuture> otnTopoOpt = dataBroker.newReadOnlyTransaction().read( + LogicalDatastoreType.CONFIGURATION, InstanceIdentifiers.OTN_NETWORK_II); + if (otnTopoOpt.isDone()) { + Network otnTopo = null; + try { + otnTopo = otnTopoOpt.get().get(); + } catch (InterruptedException | ExecutionException | NoSuchElementException e) { + LOG.error("Impossible to retreive otn-topology from mdsal"); + return null; + } + List nodeList = otnTopo.getNode(); + List otnNodeList = nodeList.stream().filter(nt -> nt.augmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class) + .getNodeType().equals(OpenroadmNodeType.SWITCH) || nt.augmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class) + .getNodeType().equals(OpenroadmNodeType.MUXPDR)).collect(Collectors.toList()); + List tapiNodeList = + new ArrayList<>(); + List tapiLinkList = + new ArrayList<>(); + Uuid topoUuid = new Uuid(UUID.randomUUID().toString()); + for (Node node : otnNodeList) { + ConvertORTopoObjectToTapiTopoObject tapiFactory = + new ConvertORTopoObjectToTapiTopoObject(node, null, topoUuid); + tapiFactory.convertNode(); + tapiNodeList.addAll(tapiFactory.getTapiNodes()); + tapiLinkList.addAll(tapiFactory.getTapiLinks()); + } + Topology topology = new TopologyBuilder() + .setName(Arrays.asList(new NameBuilder().setValue("T0 - Multi-layer topology") + .setValueName("TAPI Topology Name").build())) + .setUuid(topoUuid) + .setNode(tapiNodeList) + .setLink(tapiLinkList).build(); + return topology; + } else { + return null; } } @@ -178,7 +243,6 @@ public class TapiTopologyImpl implements TapiTopologyService { private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node createTapiNode(List< String> tpList) { - List names = new ArrayList(); Name name = new NameBuilder().setValueName("node name").setValue("TapiNode1").build(); names.add(name); @@ -187,9 +251,7 @@ public class TapiTopologyImpl implements TapiTopologyService { List onepl = new ArrayList(); for (int i = 0; i < tpList.size(); i++) { List onedNames = new ArrayList(); - onedNames.add(new NameBuilder().setValueName("OwnedNodeEdgePoint" + i + " name").setValue(tpList.get(i)) - .build()); - + onedNames.add(new NameBuilder().setValueName("OwnedNodeEdgePoint " + i).setValue(tpList.get(i)).build()); OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder().setUuid(new Uuid(UUID.randomUUID().toString())) .setLayerProtocolName(LayerProtocolName.ETH).setMappedServiceInterfacePoint(createSIP(1)) .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) @@ -209,8 +271,8 @@ public class TapiTopologyImpl implements TapiTopologyService { private List createSIP(int nb) { List msipl = new ArrayList<>(); for (int i = 0; i < nb; i++) { - MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder() - .setServiceInterfacePointUuid(new Uuid(UUID.randomUUID().toString())).build(); + MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder().setServiceInterfacePointUuid( + new Uuid(UUID.randomUUID().toString())).build(); msipl.add(msip); } return msipl; @@ -224,8 +286,8 @@ public class TapiTopologyImpl implements TapiTopologyService { .getAssociatedConnectionMapPort(); @NonNull KeyedInstanceIdentifier pmIID = InstanceIdentifier.create( - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network.class).child( - Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp)); + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200113.Network.class) + .child(Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp)); @NonNull FluentFuture> mappingOpt = dataBroker.newReadOnlyTransaction().read( LogicalDatastoreType.CONFIGURATION, pmIID); @@ -281,4 +343,5 @@ public class TapiTopologyImpl implements TapiTopologyService { return false; } } + }