From 1f9f09e6578a5500de469f9bdb4e05ae0970c711 Mon Sep 17 00:00:00 2001 From: Gilles Thouenon Date: Thu, 4 Apr 2019 09:09:48 +0200 Subject: [PATCH] Reintroduce (ordm 2.2.1) Rdm2Rdm links in topo - complete portMapping with GE interfaces from lldp in CpToDegree - delete mapping and node/link from topo when disconnecting device Change-Id: I989e62523bf7a635f3b3ad2d5fa985fdabfcca4c Signed-off-by: Gilles Thouenon Co-authored-by: Christophe Betoule --- .../common/mapping/PortMapping.java | 1 + .../common/mapping/PortMappingVersion221.java | 16 +-- .../transportpce/networkmodel/OrdLink.java | 4 +- .../networkmodel/R2RLinkDiscovery.java | 118 +++++++++++++----- .../networkmodel/Rdm2XpdrLink.java | 6 +- .../service/NetworkModelServiceImpl.java | 10 +- .../util/OpenRoadmTopology121.java | 83 ++++++------ .../util/OpenRoadmTopology22.java | 76 +++++------ .../networkmodel/util/TopologyUtils.java | 17 +-- .../blueprint/networkmodel-blueprint.xml | 8 ++ 10 files changed, 205 insertions(+), 134 deletions(-) diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java index 987c545ae..30c39d45a 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java @@ -81,6 +81,7 @@ public interface PortMapping { boolean updateMapping(String nodeId, Mapping mapping); /** + * Returns all Mapping informations for a given ordm device. * This method returns all Mapping informations already stored in the MD-SAL * data store for a given openroadm device. Beyound the list of mappings, it * gives access to general node information as its version or its node type, diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java index 3e3d02b61..1f4ecc1c9 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java @@ -372,15 +372,17 @@ public class PortMappingVersion221 { private Map getEthInterfaceList(String nodeId) { LOG.info("It is calling get ethernet interface"); Map cpToInterfaceMap = new HashMap<>(); - InstanceIdentifier lldpIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Protocols.class).augmentation(Protocols1.class).child(Lldp.class); - Optional lldpObject = this.deviceTransactionManager.getDataFromDevice(nodeId, - LogicalDatastoreType.OPERATIONAL, lldpIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (lldpObject.isPresent() && (lldpObject.get().getPortConfig() != null)) { - for (PortConfig portConfig : lldpObject.get().getPortConfig()) { + InstanceIdentifier protocoliid = InstanceIdentifier.create(OrgOpenroadmDevice.class) + .child(Protocols.class); + Optional protocolObject = this.deviceTransactionManager.getDataFromDevice(nodeId, + LogicalDatastoreType.OPERATIONAL, protocoliid, Timeouts.DEVICE_READ_TIMEOUT, + Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (protocolObject.isPresent() && protocolObject.get().augmentation(Protocols1.class).getLldp() != null) { + Lldp lldp = protocolObject.get().augmentation(Protocols1.class).getLldp(); + for (PortConfig portConfig : lldp.getPortConfig()) { if (portConfig.getAdminStatus().equals(PortConfig.AdminStatus.Txandrx)) { InstanceIdentifier interfaceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Interface.class, new InterfaceKey(portConfig.getIfName())); + .child(Interface.class, new InterfaceKey(portConfig.getIfName())); Optional interfaceObject = this.deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, interfaceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java index 3bbd15147..414053ece 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java @@ -63,8 +63,8 @@ final class OrdLink { LinkBuilder linkBuilder = openRoadmFactory.createLink(srcNode, destNode, srcTp, destTp); linkBuilder.addAugmentation(Link1.class,link1Builder.build()); - linkBuilder.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1 - .class, oppsiteLinkBuilder.build()); + linkBuilder.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929 + .Link1.class, oppsiteLinkBuilder.build()); LinkId linkId = LinkIdUtil.buildLinkId(srcNode, srcTp, destNode, destTp); // Building link instance identifier diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java index 1bd71a616..a38b6887c 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java @@ -7,11 +7,16 @@ */ package org.opendaylight.transportpce.networkmodel; +import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_1_2_1; +import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_2_2_1; + import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; import java.util.stream.Stream; + +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.MountPoint; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; @@ -19,7 +24,6 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; import org.opendaylight.transportpce.common.network.NetworkTransactionService; -import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces; import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesInputBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.Network; @@ -46,51 +50,101 @@ public class R2RLinkDiscovery { private final NetworkTransactionService networkTransactionService; private final DeviceTransactionManager deviceTransactionManager; private final OpenRoadmFactory openRoadmFactory; - private final OpenRoadmInterfaces openRoadmInterfaces; public R2RLinkDiscovery(final DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager, - OpenRoadmFactory openRoadmFactory, OpenRoadmInterfaces openRoadmInterfaces, - NetworkTransactionService networkTransactionService) { + OpenRoadmFactory openRoadmFactory, NetworkTransactionService networkTransactionService) { this.dataBroker = dataBroker; this.deviceTransactionManager = deviceTransactionManager; this.openRoadmFactory = openRoadmFactory; - this.openRoadmInterfaces = openRoadmInterfaces; this.networkTransactionService = networkTransactionService; } - public boolean readLLDP(NodeId nodeId) { - InstanceIdentifier protocolsIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Protocols.class); - Optional protocolObject = this.deviceTransactionManager.getDataFromDevice(nodeId.getValue(), - LogicalDatastoreType.OPERATIONAL, protocolsIID, Timeouts.DEVICE_READ_TIMEOUT, - Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (!protocolObject.isPresent() || (protocolObject.get().augmentation(Protocols1.class) == null)) { - LOG.warn("LLDP subtree is missing : isolated openroadm device"); - return false; + public boolean readLLDP(NodeId nodeId, String nodeVersion) { + + if (nodeVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) { + InstanceIdentifier protocolsIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) + .child(Protocols.class); + Optional protocolObject = this.deviceTransactionManager.getDataFromDevice(nodeId.getValue(), + LogicalDatastoreType.OPERATIONAL, protocolsIID, Timeouts.DEVICE_READ_TIMEOUT, + Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!protocolObject.isPresent() || (protocolObject.get().augmentation(Protocols1.class) == null)) { + LOG.warn("LLDP subtree is missing : isolated openroadm device"); + return false; + } + NbrList nbrList = protocolObject.get().augmentation(Protocols1.class).getLldp().getNbrList(); + LOG.info("LLDP subtree is present. Device has {} neighbours", nbrList.getIfName().size()); + for (IfName ifName : nbrList.getIfName()) { + if (ifName.getRemoteSysName() == null) { + LOG.warn("LLDP subtree neighbour is empty for nodeId: {}, ifName: {}", + nodeId.getValue(),ifName.getIfName()); + } else { + Optional mps = this.deviceTransactionManager.getDeviceMountPoint(ifName + .getRemoteSysName()); + if (!mps.isPresent()) { + LOG.warn("Neighbouring nodeId: {} is not mounted yet", ifName.getRemoteSysName()); + // The controller raises a warning rather than an error because the first node to + // mount cannot see its neighbors yet. The link will be detected when processing + // the neighbor node. + } else { + if (!createR2RLink(nodeId, ifName.getIfName(), ifName.getRemoteSysName(), + ifName.getRemotePortId())) { + LOG.error("Link Creation failed between {} and {} nodes.", nodeId.getValue(), + ifName.getRemoteSysName()); + return false; + } + } + } + } + return true; } - NbrList nbrList = protocolObject.get().augmentation(Protocols1.class).getLldp().getNbrList(); - LOG.info("LLDP subtree is present. Device has {} neighbours", nbrList.getIfName().size()); - for (IfName ifName : nbrList.getIfName()) { - if (ifName.getRemoteSysName() == null) { - LOG.warn("LLDP subtree neighbour is empty for nodeId: {}, ifName: {}", - nodeId.getValue(),ifName.getIfName()); - } else { - Optional mps = this.deviceTransactionManager.getDeviceMountPoint(ifName.getRemoteSysName()); - if (!mps.isPresent()) { - LOG.warn("Neighbouring nodeId: {} is not mounted yet", ifName.getRemoteSysName()); - // The controller raises a warning rather than an error because the first node to - // mount cannot see its neighbors yet. The link will be detected when processing - // the neighbor node. + else if (nodeVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) { + InstanceIdentifier protocolsIID = InstanceIdentifier.create(org.opendaylight + .yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container + .OrgOpenroadmDevice.class).child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019 + .org.openroadm.device.container.org.openroadm.device.Protocols.class); + Optional protocolObject = this.deviceTransactionManager + .getDataFromDevice(nodeId.getValue(), LogicalDatastoreType.OPERATIONAL, protocolsIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!protocolObject.isPresent() || (protocolObject.get().augmentation(org.opendaylight.yang.gen.v1.http.org + .openroadm.lldp.rev181019.Protocols1.class) == null)) { + LOG.warn("LLDP subtree is missing : isolated openroadm device"); + return false; + } + org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.lldp.container.lldp.@Nullable NbrList nbrList + = protocolObject.get().augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019 + .Protocols1.class).getLldp().getNbrList(); + LOG.info("LLDP subtree is present. Device has {} neighbours", nbrList.getIfName().size()); + for (org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.lldp.container.lldp.nbr.list.IfName + ifName : nbrList.getIfName()) { + if (ifName.getRemoteSysName() == null) { + LOG.warn("LLDP subtree neighbour is empty for nodeId: {}, ifName: {}", + nodeId.getValue(),ifName.getIfName()); } else { - if (!createR2RLink(nodeId, ifName.getIfName(), ifName.getRemoteSysName(), - ifName.getRemotePortId())) { - LOG.error("Link Creation failed between {} and {} nodes.", nodeId, ifName.getRemoteSysName()); - return false; + Optional mps = this.deviceTransactionManager.getDeviceMountPoint(ifName + .getRemoteSysName()); + if (!mps.isPresent()) { + LOG.warn("Neighbouring nodeId: {} is not mounted yet", ifName.getRemoteSysName()); + // The controller raises a warning rather than an error because the first node to + // mount cannot see its neighbors yet. The link will be detected when processing + // the neighbor node. + } else { + if (!createR2RLink(nodeId, ifName.getIfName(), ifName.getRemoteSysName(), + ifName.getRemotePortId())) { + LOG.error("Link Creation failed between {} and {} nodes.", nodeId, ifName + .getRemoteSysName()); + return false; + } } } } + return true; + } + else { + LOG.error("Unable to read LLDP data for unmanaged openroadm device version"); + return false; } - return true; } public Direction getDegreeDirection(Integer degreeCounter, NodeId nodeId) { diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java index 192a3eef9..5dd085a78 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java @@ -20,7 +20,6 @@ import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.links.input.grouping.LinksInput; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Link1; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Link1Builder; -//import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev170929.OpenroadmLinkType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkBuilder; @@ -110,8 +109,8 @@ final class Rdm2XpdrLink { Link1Builder lnk1bldr = new Link1Builder(); LinkBuilder linkBuilder = openRoadmFactory.createLink(srcNode, destNode, srcTp, destTp); lnk1bldr.setLinkType(isXponderInput ? OpenroadmLinkType.XPONDERINPUT : OpenroadmLinkType.XPONDEROUTPUT); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2bldr = new org - .opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); + org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2bldr = + new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); lnk2bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); linkBuilder.addAugmentation(Link1.class, lnk1bldr.build()); linkBuilder.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1 @@ -130,4 +129,3 @@ final class Rdm2XpdrLink { } } - diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java index 1b3c7cb3f..0d45a835a 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java @@ -18,6 +18,7 @@ import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; import org.opendaylight.transportpce.common.mapping.PortMapping; import org.opendaylight.transportpce.common.network.NetworkTransactionService; +import org.opendaylight.transportpce.networkmodel.R2RLinkDiscovery; import org.opendaylight.transportpce.networkmodel.dto.TopologyShard; import org.opendaylight.transportpce.networkmodel.util.ClliNetwork; import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory; @@ -43,17 +44,18 @@ public class NetworkModelServiceImpl implements NetworkModelService { private NetworkTransactionService networkTransactionService; //private final R2RLinkDiscoveryFactoryMethod linkDiscovery; + private final R2RLinkDiscovery linkDiscovery; private final DeviceTransactionManager deviceTransactionManager; private final OpenRoadmFactory openRoadmFactory; private final PortMapping portMapping; private HashMap topologyShardMountedDevice; public NetworkModelServiceImpl(final NetworkTransactionService networkTransactionService, - DeviceTransactionManager deviceTransactionManager, - OpenRoadmFactory openRoadmFactory, PortMapping portMapping) { + final R2RLinkDiscovery linkDiscovery, DeviceTransactionManager deviceTransactionManager, + OpenRoadmFactory openRoadmFactory, PortMapping portMapping) { this.networkTransactionService = networkTransactionService; - //this.linkDiscovery = linkDiscovery; + this.linkDiscovery = linkDiscovery; this.deviceTransactionManager = deviceTransactionManager; this.openRoadmFactory = openRoadmFactory; this.portMapping = portMapping; @@ -76,7 +78,7 @@ public class NetworkModelServiceImpl implements NetworkModelService { LOG.warn("Could not generate port mapping for {} skipping network model creation", nodeId); return; } - //this.linkDiscovery.readLLDP(new NodeId(nodeId)); + this.linkDiscovery.readLLDP(new NodeId(nodeId), openRoadmVersion); Node clliNode = ClliNetwork.createNode(this.deviceTransactionManager, nodeId, openRoadmVersion); if (clliNode == null) { diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology121.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology121.java index ed5e485a6..3428d5f47 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology121.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology121.java @@ -46,7 +46,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev17092 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1Builder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.TerminationPoint1; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.TerminationPoint1Builder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.link.OMSAttributesBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.network.types.OpenroadmTopologyBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.DegreeAttributesBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.SrgAttributesBuilder; @@ -445,9 +444,9 @@ public class OpenRoadmTopology121 { private NodeBuilder createSrgNode(String nodeId, int srgCounter, int portDirectionEnum) { - // Create augmentation node to inorder to add degree + // Create augmentation node to in order to add srg Node1Builder node1bldr = new Node1Builder(); - // set node type to degree + // set node type to SRG node1bldr.setNodeType(OpenroadmNodeType.SRG); node1bldr.setNodeType(OpenroadmNodeType.SRG); @@ -482,14 +481,14 @@ public class OpenRoadmTopology121 { break; } // ports are uni Directional on a degree, therefore 4 termination points - // Create TTP-TX termination + // Create PP-TX termination tempTpBldr = createTpBldr("SRG" + srgCounter + "-PP" + i + "-TX"); tp1Bldr = new TerminationPoint1Builder(); tp1Bldr.setTpType(OpenroadmTpType.SRGTXPP); tempTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); tpList.add(tempTpBldr.build()); - // Create TTP-RX termination + // Create PP-RX termination tempTpBldr = createTpBldr("SRG" + srgCounter + "-PP" + i + "-RX"); tp1Bldr = new TerminationPoint1Builder(); tp1Bldr.setTpType(OpenroadmTpType.SRGRXPP); @@ -498,7 +497,7 @@ public class OpenRoadmTopology121 { } else if (portDirectionEnum == 3) { // Ports are bi directional therefore 2 termination points - // Create TTP-TXRX termination + // Create PP-TXRX termination tempTpBldr = createTpBldr("SRG" + srgCounter + "-PP" + i + "-TXRX"); tp1Bldr = new TerminationPoint1Builder(); tp1Bldr.setTpType(OpenroadmTpType.SRGTXRXPP); @@ -507,15 +506,44 @@ public class OpenRoadmTopology121 { } } + switch (portDirectionEnum) { + case 1: // ports are uni Directional on a degree + case 2: + // Create CP-TX termination + tempTpBldr = createTpBldr("SRG" + srgCounter + "-CP" + "-TX"); + tp1Bldr = new TerminationPoint1Builder(); + tp1Bldr.setTpType(OpenroadmTpType.SRGTXCP); + tempTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); + tpList.add(tempTpBldr.build()); + // Create CP-RX termination + tempTpBldr = createTpBldr("SRG" + srgCounter + "-CP" + "-RX"); + tp1Bldr = new TerminationPoint1Builder(); + tp1Bldr.setTpType(OpenroadmTpType.SRGRXCP); + tempTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); + tpList.add(tempTpBldr.build()); + break; + case 3: + // Ports are bi directional therefore 2 termination points + // Create CP-TXRX termination + tempTpBldr = createTpBldr("SRG" + srgCounter + "-CP" + "-TXRX"); + tp1Bldr = new TerminationPoint1Builder(); + tp1Bldr.setTpType(OpenroadmTpType.SRGTXRXCP); + tempTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); + tpList.add(tempTpBldr.build()); + break; + default: + LOG.error("No correponsding direction to the value: {}", portDirectionEnum); + break; + } + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Node1Builder tpNode1 = - new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology - .rev150608.Node1Builder(); + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Node1Builder(); tpNode1.setTerminationPoint(tpList); nodebldr.addAugmentation( - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Node1.class, - tpNode1.build()); + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Node1.class, + tpNode1.build()); return nodebldr; } @@ -631,13 +659,13 @@ public class OpenRoadmTopology121 { lnkBldr.setSource(srcNodeBldr.build()); lnkBldr.setLinkId(LinkIdUtil.buildLinkId(srcNode, srcTp, dstNode, destTp)); lnkBldr.withKey(new LinkKey(lnkBldr.getLinkId())); - org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Link1Builder lnk1Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Link1Builder(); - OMSAttributesBuilder omsAttributesBuilder = new OMSAttributesBuilder(); + + org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk1Bldr = + new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); LinkId oppositeLinkId = LinkIdUtil.getOppositeLinkId(srcNode, srcTp, dstNode, destTp); - omsAttributesBuilder.setOppositeLink(oppositeLinkId); - lnk1Bldr.setOMSAttributes(omsAttributesBuilder.build()); - lnkBldr.addAugmentation(Link1.class,lnk1Bldr.build()); + lnk1Bldr.setOppositeLink(oppositeLinkId); + lnkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1.class, + lnk1Bldr.build()); return lnkBldr; } @@ -670,12 +698,7 @@ public class OpenRoadmTopology121 { Link1Builder lnk1Bldr = new Link1Builder(); lnk1Bldr.setLinkType(OpenroadmLinkType.EXPRESSLINK); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); - lnk2Bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); expLinkBldr.addAugmentation(Link1.class, lnk1Bldr.build()); - expLinkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929 - .Link1.class, lnk2Bldr.build()); links.add(expLinkBldr.build()); // ZtoA direction @@ -707,12 +730,7 @@ public class OpenRoadmTopology121 { Link1Builder lnk1Bldr = new Link1Builder(); lnk1Bldr.setLinkType(OpenroadmLinkType.EXPRESSLINK); LinkBuilder expLinkBldr = createLink(srcNode, destNode, srcTp, destTp); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); - lnk2Bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); expLinkBldr.addAugmentation(Link1.class, lnk1Bldr.build()); - expLinkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929 - .Link1.class, lnk2Bldr.build()); links.add(expLinkBldr.build()); // ZtoA direction @@ -725,8 +743,7 @@ public class OpenRoadmTopology121 { return links; } - private List createAddDropLinks(String nodeId, int numOfDegrees, int numOfSrgs, - int portDirectionEnum) { + private List createAddDropLinks(String nodeId, int numOfDegrees, int numOfSrgs, int portDirectionEnum) { LOG.info("creating add-drop links {} {} {} {}", nodeId, numOfDegrees, numOfSrgs, portDirectionEnum); List links = new ArrayList<>(); @@ -752,12 +769,7 @@ public class OpenRoadmTopology121 { LinkBuilder addDropLinkBldr = createLink(srcNode, destNode, srcTp, destTp); Link1Builder lnk1Bldr = new Link1Builder(); lnk1Bldr.setLinkType(OpenroadmLinkType.DROPLINK); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); - lnk2Bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); addDropLinkBldr.addAugmentation(Link1.class, lnk1Bldr.build()); - addDropLinkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links - .rev170929.Link1.class, lnk2Bldr.build()); links.add(addDropLinkBldr.build()); // add links direction @@ -788,12 +800,7 @@ public class OpenRoadmTopology121 { LinkBuilder addDropLinkBldr = createLink(srcNode, destNode, srcTp, destTp); Link1Builder lnk1Bldr = new Link1Builder(); lnk1Bldr.setLinkType(OpenroadmLinkType.DROPLINK); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); - lnk2Bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); addDropLinkBldr.addAugmentation(Link1.class, lnk1Bldr.build()); - addDropLinkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links - .rev170929.Link1.class, lnk2Bldr.build()); links.add(addDropLinkBldr.build()); diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java index f02c82199..ecba75522 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java @@ -438,9 +438,9 @@ public class OpenRoadmTopology22 { private NodeBuilder createSrgNode(String nodeId, int srgCounter, int portDirectionEnum) { - // Create augmentation node to inorder to add degree + // Create augmentation node to in order to add srg Node1Builder node1bldr = new Node1Builder(); - // set node type to degree + // set node type to SRG node1bldr.setNodeType(OpenroadmNodeType.SRG); node1bldr.setNodeType(OpenroadmNodeType.SRG); @@ -474,14 +474,14 @@ public class OpenRoadmTopology22 { break; } // ports are uni Directional on a degree, therefore 4 termination points - // Create TTP-TX termination + // Create PP-TX termination tempTpBldr = createTpBldr("SRG" + srgCounter + "-PP" + i + "-TX"); tp1Bldr = new TerminationPoint1Builder(); tp1Bldr.setTpType(OpenroadmTpType.SRGTXPP); tempTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); tpList.add(tempTpBldr.build()); - // Create TTP-RX termination + // Create PP-RX termination tempTpBldr = createTpBldr("SRG" + srgCounter + "-PP" + i + "-RX"); tp1Bldr = new TerminationPoint1Builder(); tp1Bldr.setTpType(OpenroadmTpType.SRGRXPP); @@ -490,7 +490,7 @@ public class OpenRoadmTopology22 { } else if (portDirectionEnum == 3) { // Ports are bi directional therefore 2 termination points - // Create TTP-TXRX termination + // Create PP-TXRX termination tempTpBldr = createTpBldr("SRG" + srgCounter + "-PP" + i + "-TXRX"); tp1Bldr = new TerminationPoint1Builder(); tp1Bldr.setTpType(OpenroadmTpType.SRGTXRXPP); @@ -498,17 +498,45 @@ public class OpenRoadmTopology22 { tpList.add(tempTpBldr.build()); } } - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608 - .Node1Builder tpNode1 = - new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf - .network.topology.rev150608.Node1Builder(); + + switch (portDirectionEnum) { + case 1: // ports are uni Directional on a degree + case 2: + // Create CP-TX termination + tempTpBldr = createTpBldr("SRG" + srgCounter + "-CP" + "-TX"); + tp1Bldr = new TerminationPoint1Builder(); + tp1Bldr.setTpType(OpenroadmTpType.SRGTXCP); + tempTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); + tpList.add(tempTpBldr.build()); + // Create CP-RX termination + tempTpBldr = createTpBldr("SRG" + srgCounter + "-CP" + "-RX"); + tp1Bldr = new TerminationPoint1Builder(); + tp1Bldr.setTpType(OpenroadmTpType.SRGRXCP); + tempTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); + tpList.add(tempTpBldr.build()); + break; + case 3: + // Ports are bi directional therefore 2 termination points + // Create CP-TXRX termination + tempTpBldr = createTpBldr("SRG" + srgCounter + "-CP" + "-TXRX"); + tp1Bldr = new TerminationPoint1Builder(); + tp1Bldr.setTpType(OpenroadmTpType.SRGTXRXCP); + tempTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); + tpList.add(tempTpBldr.build()); + break; + default: + LOG.error("No correponsding direction to the value: {}", portDirectionEnum); + break; + } + + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Node1Builder tpNode1 = + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Node1Builder(); tpNode1.setTerminationPoint(tpList); nodebldr.addAugmentation( - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network - .topology.rev150608.Node1.class, - tpNode1.build()); + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Node1.class, + tpNode1.build()); return nodebldr; } @@ -638,13 +666,7 @@ public class OpenRoadmTopology22 { Link1Builder lnk1Bldr = new Link1Builder(); lnk1Bldr.setLinkType(OpenroadmLinkType.EXPRESSLINK); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); - lnk2Bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); expLinkBldr.addAugmentation(Link1.class, lnk1Bldr.build()); - expLinkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929 - .Link1.class, lnk2Bldr.build()); - links.add(expLinkBldr.build()); // ZtoA direction @@ -675,13 +697,8 @@ public class OpenRoadmTopology22 { Link1Builder lnk1Bldr = new Link1Builder(); lnk1Bldr.setLinkType(OpenroadmLinkType.EXPRESSLINK); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); - lnk2Bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); LinkBuilder expLinkBldr = TopologyUtils.createLink(srcNode, destNode, srcTp, destTp); expLinkBldr.addAugmentation(Link1.class, lnk1Bldr.build()); - expLinkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929 - .Link1.class, lnk2Bldr.build()); links.add(expLinkBldr.build()); // ZtoA direction @@ -694,8 +711,7 @@ public class OpenRoadmTopology22 { return links; } - private List createAddDropLinks(String nodeId, int numOfDegrees, int numOfSrgs, - int portDirectionEnum) { + private List createAddDropLinks(String nodeId, int numOfDegrees, int numOfSrgs, int portDirectionEnum) { LOG.info("creating add-drop links {} {} {} {}", nodeId, numOfDegrees, numOfSrgs, portDirectionEnum); List links = new ArrayList<>(); @@ -720,13 +736,8 @@ public class OpenRoadmTopology22 { LinkBuilder addDropLinkBldr = TopologyUtils.createLink(srcNode, destNode, srcTp, destTp); Link1Builder lnk1Bldr = new Link1Builder(); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); - lnk2Bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); lnk1Bldr.setLinkType(OpenroadmLinkType.DROPLINK); addDropLinkBldr.addAugmentation(Link1.class, lnk1Bldr.build()); - addDropLinkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links - .rev170929.Link1.class, lnk2Bldr.build()); links.add(addDropLinkBldr.build()); // add links direction @@ -756,13 +767,8 @@ public class OpenRoadmTopology22 { LinkBuilder addDropLinkBldr = TopologyUtils.createLink(srcNode, destNode, srcTp, destTp); Link1Builder lnk1Bldr = new Link1Builder(); - org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk2Bldr = - new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); - lnk2Bldr.setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); lnk1Bldr.setLinkType(OpenroadmLinkType.DROPLINK); addDropLinkBldr.addAugmentation(Link1.class, lnk1Bldr.build()); - addDropLinkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links - .rev170929.Link1.class, lnk2Bldr.build()); links.add(addDropLinkBldr.build()); // add link diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TopologyUtils.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TopologyUtils.java index 8fa6bdfb9..da639eae1 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TopologyUtils.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TopologyUtils.java @@ -14,12 +14,9 @@ import java.util.concurrent.TimeoutException; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.common.network.NetworkTransactionService; -//import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1; -//import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Link1; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Link1Builder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.link.OMSAttributesBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkKey; @@ -63,16 +60,12 @@ public final class TopologyUtils { lnkBldr.setLinkId(LinkIdUtil.buildLinkId(srcNode, srcTp, dstNode, destTp)); lnkBldr.withKey(new LinkKey(lnkBldr.getLinkId())); - //set Oms Attributes - Link1Builder lnk1Bldr = - new Link1Builder(); - OMSAttributesBuilder omsAttributesBuilder = new OMSAttributesBuilder(); + org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder lnk1Bldr = + new org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1Builder(); LinkId oppositeLinkId = LinkIdUtil.getOppositeLinkId(srcNode, srcTp, dstNode, destTp); - omsAttributesBuilder.setOppositeLink(oppositeLinkId); - lnk1Bldr.setOMSAttributes(omsAttributesBuilder.build()); - lnkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929 - .Link1.class,lnk1Bldr.build()); - + lnk1Bldr.setOppositeLink(oppositeLinkId); + lnkBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.opposite.links.rev170929.Link1.class, + lnk1Bldr.build()); return lnkBldr; } diff --git a/networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml b/networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml index ad8e86175..eb73927bd 100644 --- a/networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml +++ b/networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml @@ -33,6 +33,7 @@ + @@ -59,6 +60,13 @@ + + + + + + + -- 2.36.6