+++ /dev/null
-module transportpce-portmapping {
- yang-version 1;
- namespace "http://org/opendaylight/transportpce/portmapping";
- prefix "org-opendaylight-transportpce-portmapping";
-
- import org-openroadm-common-types {
- prefix org-openroadm-common-types;
- revision-date 2016-10-14;
- }
-
- organization
- "transportPCE";
- contact
- "transportPCE committers - ODL";
- description
- "YANG definitions of RPCs supported by OLM.
- Copyright (c) 2017 AT&T and others. All rights reserved.
- authors: Dhruv Bhardwaj ( db929a@att.com )
- Shweta Vachhani ( sv111y@att.com )";
-
- revision "2017-02-28" {
- description "Initial revision of port mapping model";
- }
- container network{
- list nodes{
- key node-id;
- leaf node-id{
- type string;
- description
- "Unique identifier for node in the network";
- }
-
- leaf openroadm-version{
- type enumeration {
- enum "1.2.1" {
- value 1;
- description
- "Version 1.2.1";
- }
- enum "2.2.1" {
- value 2;
- description
- "Version 2.2.1";
- }
- }
- }
- leaf node-type{
- type org-openroadm-common-types:node-types;
- description
- "Identifier for node-type e.g Roadm, xponder";
- }
- leaf clli{
- type string;
- description
- "Common Language Location Identifier read from device";
- }
- list mapping{
- description
- "Mapping for Physical circuit pack/port/parent interfaces
- corresponding to each logical connection point present in the node.";
- key logical-connection-point;
- leaf logical-connection-point{
- type string;
- }
- leaf supporting-circuit-pack-name{
- type string;
- description
- "Circuit pack where the logical connection point is located";
- }
- leaf supporting-port{
- type string;
- description
- "Port where the logical connection point is located";
- }
- leaf supporting-oms{
- type string;
- description
- "OMS interface provisioned on the port";
- }
- leaf supporting-ots{
- type string;
- description
- "OTS interface provisioned on the port";
- }
- leaf port-direction{
- type string;
- description
- "Useful for line port of XPDR, for which there is no
- indication in its logical-termination-point naming";
- }
- leaf port-qual{
- type string;
- description
- "Useful to identify from portmapping client from network ports of XPDR";
- }
- leaf associated-lcp{
- type string;
- description
- "For XPDR, associate two logical-connection-points
- from device/connnection-map data";
- }
- leaf partner-lcp{
- type string;
- description
- "For XPDR unidirectional NETWORK port, associate two logical-connection-points
- from device/partner port data";
- }
- }
- list cp-to-degree{
- description
- "This mapping helps locate degree number of the circuitpack that does lldp
- protocol management";
- key circuit-pack-name;
- leaf circuit-pack-name{
- type string;
- }
- leaf degree-number{
- type uint32;
- }
- leaf interface-name{
- type string;
- }
- }
- }
- }
-}
AT&T and others. All rights reserved. authors: Dhruv Bhardwaj
( db929a@att.com ) Shweta Vachhani ( sv111y@att.com )";
+ revision "2019-11-15" {
+ description "OTN support";
+ }
+
revision 2019-07-02 {
description
"Version 2. To manage device 2.2.1";
"Useful to identify from portmapping client from network ports
of XPDR";
}
+ leaf supporting-ethernet{
+ type string;
+ description
+ "Ethernet interface provisioned on the port";
+ }
+ leaf supporting-odu4{
+ type string;
+ description
+ "ODU4 interface provisioned on the port";
+ }
+ leaf rate{
+ type string;
+ description
+ "Rate supported by the port";
+ }
leaf associated-lcp {
type string;
description
import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.StringConstants;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-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.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
package org.opendaylight.transportpce.common.mapping;
-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.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
public interface PortMapping {
import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-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.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
return portMappingVersion121.updateMapping(nodeId,oldMapping);
}
else if (openROADMversion.getIntValue() == 2) {
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes
.MappingBuilder oldMapping2Bldr = new MappingBuilder().setLogicalConnectionPoint(oldMapping
.getLogicalConnectionPoint()).setPortDirection(oldMapping.getPortDirection());
if (oldMapping.getAssociatedLcp() != null) {
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.NetworkBuilder;
-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.NodesBuilder;
-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.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeKey;
-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.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.CircuitPack;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.NetworkBuilder;
-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.NodesBuilder;
-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.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeKey;
-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.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Direction;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.Port;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.CircuitPack;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.Ports;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.PortsKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.Protocols;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.SharedRiskGroup;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.SharedRiskGroupKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.Xponder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.port.Interfaces;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.xponder.XpdrPort;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.InterfaceType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OpenROADMOpticalMultiplex;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OpticalTransport;
Optional<OrgOpenroadmDevice> deviceObject = deviceTransactionManager.getDataFromDevice(nodeId,
LogicalDatastoreType.OPERATIONAL, deviceIID,
Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
-
+ OrgOpenroadmDevice device = null;
+ if (deviceObject.isPresent()) {
+ device = deviceObject.get();
+ } else {
+ LOG.error("Impossible to get device configuration for node {}", nodeId);
+ return false;
+ }
// Variable to keep track of number of line ports
int line = 1;
// Variable to keep track of number of client ports
int client = 1;
- if (!deviceObject.isPresent() || deviceObject.get().getCircuitPacks() == null) {
- LOG.warn("Circuit Packs are not present for {}", nodeId);
- return false;
- // TODO return false or continue?
- }
Map<String, String> lcpMap = new HashMap<>();
Map<String, Mapping> mappingMap = new HashMap<>();
- List<CircuitPacks> circuitPackList = deviceObject.get().getCircuitPacks();
- circuitPackList.sort(Comparator.comparing(CircuitPack::getCircuitPackName));
-
- for (CircuitPacks cp : circuitPackList) {
- String circuitPackName = cp.getCircuitPackName();
- if (cp.getPorts() == null) {
- LOG.warn("Ports were not found for circuit pack: {}", circuitPackName);
- continue;
- }
- List<Ports> portList = cp.getPorts();
- portList.sort(Comparator.comparing(Ports::getPortName));
- for (Ports port : portList) {
- if (port.getPortQual() == null) {
- LOG.warn("PortQual was not found for port {} on circuit pack: {}", port.getPortName(),
- circuitPackName);
+ List<CircuitPacks> circuitPackList = null;
+ if (device.getCircuitPacks() == null) {
+ LOG.warn("Circuit Packs are not present for {}", nodeId);
+ return false;
+ } else {
+ circuitPackList = deviceObject.get().getCircuitPacks();
+ circuitPackList.sort(Comparator.comparing(CircuitPack::getCircuitPackName));
+ }
+ String xpdrPreFix = "XPDR";
+ if (device.getXponder() == null) {
+ LOG.warn("{} configuration does not contain a list of xponders", nodeId);
+ for (CircuitPacks cp : circuitPackList) {
+ String circuitPackName = cp.getCircuitPackName();
+ if (cp.getPorts() == null) {
+ LOG.warn("Ports were not found for circuit pack: {}", circuitPackName);
continue;
}
- if (Port.PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
- && port.getPortDirection().getIntValue() == Direction.Bidirectional.getIntValue()) {
- String lcp = "XPDR1-" + StringConstants.NETWORK_TOKEN + line;
- lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
- mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null));
- line++;
- } else if (Port.PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
- && port.getPortDirection().getIntValue() != Direction.Bidirectional.getIntValue()
- && port.getPartnerPort() != null
- && port.getPartnerPort().getCircuitPackName() != null
- && port.getPartnerPort().getPortName() != null) {
- if (lcpMap.containsKey(circuitPackName + '+' + port.getPortName())) {
+ List<Ports> portList = cp.getPorts();
+ portList.sort(Comparator.comparing(Ports::getPortName));
+ for (Ports port : portList) {
+ if (port.getPortQual() == null) {
+ LOG.warn("PortQual was not found for port {} on circuit pack: {}", port.getPortName(),
+ circuitPackName);
continue;
}
- String lcp1 = "XPDR1-" + StringConstants.NETWORK_TOKEN + line;
- Optional<CircuitPacks> cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName()
- .equals(port.getPartnerPort().getCircuitPackName())).findFirst();
- if (cpOpt.isPresent()) {
- Optional<Ports> poOpt = cpOpt.get().getPorts().stream().filter(p -> p.getPortName().equals(port
- .getPartnerPort().getPortName().toString())).findFirst();
- if (poOpt.isPresent()) {
- Ports port2 = poOpt.get();
- if ((Direction.Rx.getIntValue() == port.getPortDirection().getIntValue()
- && Direction.Tx.getIntValue() == port2.getPortDirection().getIntValue()
- && port2.getPartnerPort() != null && port2.getPartnerPort().getCircuitPackName() != null
- && port2.getPartnerPort().getPortName() != null
- && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
- && port2.getPartnerPort().getPortName().equals(port.getPortName()))
- ||
- (Direction.Tx.getIntValue() == port.getPortDirection().getIntValue()
- && Direction.Rx.getIntValue() == port2.getPortDirection().getIntValue()
- && port2.getPartnerPort() != null && port2.getPartnerPort().getCircuitPackName() != null
- && port2.getPartnerPort().getPortName() != null
- && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
- && port2.getPartnerPort().getPortName().equals(port.getPortName()))) {
- String lcp2 = new StringBuilder("XPDR1-").append(StringConstants.NETWORK_TOKEN)
- .append(line + 1).toString();
- if (!lcpMap.containsKey(lcp1) && !lcpMap.containsKey(lcp2)) {
- lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp1);
- lcpMap.put(cpOpt.get().getCircuitPackName() + '+' + port2.getPortName(), lcp2);
- mappingMap.put(lcp1, createXpdrMappingObject(nodeId, port, circuitPackName, lcp1,
- lcp2, null, null));
- mappingMap.put(lcp2, createXpdrMappingObject(nodeId, port2, cpOpt.get()
- .getCircuitPackName(), lcp2, lcp1, null, null));
+ if (PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
+ && port.getPortDirection().getIntValue() == Direction.Bidirectional.getIntValue()) {
+ String lcp = "XPDR1-" + StringConstants.NETWORK_TOKEN + line;
+ lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+ mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null,
+ null));
+ line++;
+ } else if (PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
+ && port.getPortDirection().getIntValue() != Direction.Bidirectional.getIntValue()
+ && port.getPartnerPort() != null
+ && port.getPartnerPort().getCircuitPackName() != null
+ && port.getPartnerPort().getPortName() != null) {
+ if (lcpMap.containsKey(circuitPackName + '+' + port.getPortName())) {
+ continue;
+ }
+ String lcp1 = "XPDR1-" + StringConstants.NETWORK_TOKEN + line;
+ Optional<CircuitPacks> cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName()
+ .equals(port.getPartnerPort().getCircuitPackName())).findFirst();
+ if (cpOpt.isPresent()) {
+ Optional<Ports> poOpt = cpOpt.get().getPorts().stream().filter(p -> p.getPortName()
+ .equals(port.getPartnerPort().getPortName().toString())).findFirst();
+ if (poOpt.isPresent()) {
+ Ports port2 = poOpt.get();
+ if (checkPartnerPort(circuitPackName, port, port2)) {
+ String lcp2 = new StringBuilder("XPDR1-").append(StringConstants.NETWORK_TOKEN)
+ .append(line + 1).toString();
+ if (!lcpMap.containsKey(lcp1) && !lcpMap.containsKey(lcp2)) {
+ lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp1);
+ lcpMap.put(cpOpt.get().getCircuitPackName() + '+' + port2.getPortName(), lcp2);
+ mappingMap.put(lcp1, createXpdrMappingObject(nodeId, port, circuitPackName,
+ lcp1, lcp2, null, null));
+ mappingMap.put(lcp2, createXpdrMappingObject(nodeId, port2, cpOpt.get()
+ .getCircuitPackName(), lcp2, lcp1, null, null));
+ } else {
+ LOG.warn("mapping already exists for {} or {}", lcp1, lcp2);
+ }
+ line += 2;
} else {
- LOG.warn("mapping already exists for {} or {}", lcp1, lcp2);
+ LOG.error("port {} on {} is not a correct partner port of {} on {}",
+ port2.getPortName(), cpOpt.get().getCircuitPackName(), port.getPortName(),
+ circuitPackName);
}
- line += 2;
} else {
- LOG.error("port {} on {} is not a correct partner port of {} on {}",
- port2.getPortName(), cpOpt.get().getCircuitPackName(), port.getPortName(),
- circuitPackName);
+ LOG.error("Error fetching port {} on {} for {}", port.getPartnerPort().getPortName(),
+ port.getPartnerPort().getCircuitPackName(), nodeId);
}
} else {
- LOG.error("Error fetching port {} on {} for {}", port.getPartnerPort().getPortName(),
- port.getPartnerPort().getCircuitPackName(), nodeId);
+ LOG.error("Error fetching circuit-pack {} for {}", port.getPartnerPort()
+ .getCircuitPackName(), nodeId);
}
+ } else if (PortQual.XpdrClient.getIntValue() == port.getPortQual().getIntValue()) {
+ String lcp = "XPDR1-" + StringConstants.CLIENT_TOKEN + client;
+ lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+ mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null,
+ null));
+ client++;
} else {
- LOG.error("Error fetching circuit-pack {} for {}", port.getPartnerPort().getCircuitPackName(),
+ LOG.warn("Error in the configuration of port {} of {} for {}", port.getPortName(),
+ circuitPackName,
nodeId);
}
- } else if (Port.PortQual.XpdrClient.getIntValue() == port.getPortQual().getIntValue()) {
- String lcp = "XPDR1-" + StringConstants.CLIENT_TOKEN + client;
- lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
- mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null));
- client++;
- } else {
- LOG.warn("Error in the configuration of port {} of {} for {}", port.getPortName(), circuitPackName,
- nodeId);
}
}
- }
- List<ConnectionMap> connectionMap = deviceObject.get().getConnectionMap();
- String slcp = null;
- String dlcp = null;
- for (ConnectionMap cm : connectionMap) {
- String skey = cm.getSource().getCircuitPackName() + "+" + cm.getSource().getPortName();
- if (lcpMap.containsKey(skey)) {
- slcp = lcpMap.get(skey);
- }
- String dkey = cm.getDestination().get(0).getCircuitPackName() + "+"
- + cm.getDestination().get(0).getPortName();
- if (lcpMap.containsKey(dkey)) {
- dlcp = lcpMap.get(dkey);
+ } else {
+ LOG.info("{} configuration contains a list of xponders", nodeId);
+ for (Xponder xponder:deviceObject.get().getXponder()) {
+ xpdrPreFix += xponder.getXpdrNumber();
+ for (XpdrPort xpdrPort : xponder.getXpdrPort()) {
+ CircuitPacks cp = circuitPackList.stream().filter(x -> x.getCircuitPackName()
+ .equals(xpdrPort.getCircuitPackName()))
+ .collect(Collectors.toList()).get(0);
+ String circuitPackName = cp.getCircuitPackName();
+ Boolean isExisting = false;
+ for (String keys : lcpMap.keySet()) {
+ LOG.info("Keys are {}", keys);
+ if (keys.contains(cp.getCircuitPackName() + "+" + xpdrPort.getPortName().toString())) {
+ isExisting = true;
+ break;
+ }
+ }
+ if (isExisting) {
+ continue;
+ }
+ List<Ports> portList = cp.getPorts();
+ portList.sort(Comparator.comparing(Ports::getPortName));
+ for (Ports port : portList) {
+ if (port.getPortQual() == null) {
+ LOG.warn("PortQual was not found for port {} on circuit pack: {}", port.getPortName(),
+ circuitPackName);
+ continue;
+ }
+ if ((PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
+ || PortQual.SwitchNetwork.getIntValue() == port.getPortQual().getIntValue())
+ && port.getPortDirection().getIntValue() == Direction.Bidirectional.getIntValue()) {
+ String lcp = xpdrPreFix + "-" + StringConstants.NETWORK_TOKEN + line;
+ lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+ mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null,
+ null));
+ line++;
+ } else if (PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
+ && port.getPortDirection().getIntValue() != Direction.Bidirectional.getIntValue()
+ && port.getPartnerPort() != null
+ && port.getPartnerPort().getCircuitPackName() != null
+ && port.getPartnerPort().getPortName() != null) {
+ if (lcpMap.containsKey(circuitPackName + '+' + port.getPortName())) {
+ continue;
+ }
+ String lcp1 = xpdrPreFix + "-" + StringConstants.NETWORK_TOKEN + line;
+ Optional<CircuitPacks> cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName()
+ .equals(port.getPartnerPort().getCircuitPackName())).findFirst();
+ if (cpOpt.isPresent()) {
+ Optional<Ports> poOpt = cpOpt.get().getPorts().stream().filter(p -> p.getPortName()
+ .equals(port.getPartnerPort().getPortName().toString())).findFirst();
+ if (poOpt.isPresent()) {
+ Ports port2 = poOpt.get();
+ if (checkPartnerPort(circuitPackName, port, port2)) {
+ String lcp2 = new StringBuilder(xpdrPreFix)
+ .append(StringConstants.NETWORK_TOKEN)
+ .append(line + 1)
+ .toString();
+ if (!lcpMap.containsKey(lcp1) && !lcpMap.containsKey(lcp2)) {
+ lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp1);
+ lcpMap.put(cpOpt.get().getCircuitPackName() + '+' + port2.getPortName(),
+ lcp2);
+ mappingMap.put(lcp1, createXpdrMappingObject(nodeId, port, circuitPackName,
+ lcp1, lcp2, null, null));
+ mappingMap.put(lcp2, createXpdrMappingObject(nodeId, port2, cpOpt.get()
+ .getCircuitPackName(), lcp2, lcp1, null, null));
+ } else {
+ LOG.warn("mapping already exists for {} or {}", lcp1, lcp2);
+ }
+ line += 2;
+ } else {
+ LOG.error("port {} on {} is not a correct partner port of {} on {}",
+ port2.getPortName(), cpOpt.get().getCircuitPackName(), port.getPortName(),
+ circuitPackName);
+ }
+ } else {
+ LOG.error("Error fetching port {} on {} for {}",
+ port.getPartnerPort().getPortName(), port.getPartnerPort().getCircuitPackName(),
+ nodeId);
+ }
+ } else {
+ LOG.error("Error fetching circuit-pack {} for {}",
+ port.getPartnerPort().getCircuitPackName(), nodeId);
+ }
+ } else if (PortQual.XpdrClient.getIntValue() == port.getPortQual().getIntValue()
+ || PortQual.SwitchClient.getIntValue() == port.getPortQual().getIntValue()) {
+ String lcp = xpdrPreFix + "-" + StringConstants.CLIENT_TOKEN + client;
+ lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+ mappingMap.put(lcp,
+ createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null));
+ client++;
+ } else {
+ LOG.warn("Error in the configuration of port {} of {} for {}",
+ port.getPortName(), circuitPackName, nodeId);
+ }
+ }
+ }
}
- if (slcp != null) {
- Mapping mapping = mappingMap.get(slcp);
- mappingMap.remove(slcp);
- portMapList.add(createXpdrMappingObject(nodeId, null, null, null, null, mapping, dlcp));
- } else {
- LOG.error("Error in connection-map analysis");
+ }
+
+ if (device.getConnectionMap() != null) {
+ List<ConnectionMap> connectionMap = deviceObject.get().getConnectionMap();
+ String slcp = null;
+ String dlcp = null;
+ for (ConnectionMap cm : connectionMap) {
+ String skey = cm.getSource().getCircuitPackName() + "+" + cm.getSource().getPortName();
+ if (lcpMap.containsKey(skey)) {
+ slcp = lcpMap.get(skey);
+ }
+ String dkey = cm.getDestination().get(0).getCircuitPackName() + "+"
+ + cm.getDestination().get(0).getPortName();
+ if (lcpMap.containsKey(dkey)) {
+ dlcp = lcpMap.get(dkey);
+ }
+ if (slcp != null) {
+ Mapping mapping = mappingMap.get(slcp);
+ mappingMap.remove(slcp);
+ portMapList.add(createXpdrMappingObject(nodeId, null, null, null, null, mapping, dlcp));
+ } else {
+ LOG.error("Error in connection-map analysis");
+ }
}
+ } else {
+ LOG.warn("No connection-map inside device configuration");
}
if (!mappingMap.isEmpty()) {
for (Mapping m : mappingMap.values()) {
return true;
}
+ private boolean checkPartnerPort(String circuitPackName, Ports port1, Ports port2) {
+ if ((Direction.Rx.getIntValue() == port1.getPortDirection().getIntValue()
+ && Direction.Tx.getIntValue() == port2.getPortDirection().getIntValue()
+ && port2.getPartnerPort() != null
+ && port2.getPartnerPort().getCircuitPackName() != null
+ && port2.getPartnerPort().getPortName() != null
+ && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
+ && port2.getPartnerPort().getPortName().equals(port1.getPortName()))
+ ||
+ (Direction.Tx.getIntValue() == port1.getPortDirection().getIntValue()
+ && Direction.Rx.getIntValue() == port2.getPortDirection().getIntValue()
+ && port2.getPartnerPort() != null
+ && port2.getPartnerPort().getCircuitPackName() != null
+ && port2.getPartnerPort().getPortName() != null
+ && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
+ && port2.getPartnerPort().getPortName().equals(port1.getPortName()))) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
private HashMap<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.srg
.CircuitPacks>> getSrgCps(String deviceId, Info ordmInfo) {
HashMap<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.srg
String currentKey = circuitPackName + "-" + port.getPortName();
if (port.getPortQual() == null) {
continue;
- } else if (Port.PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
+ } else if (PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
&& Direction.Bidirectional.getIntValue() == port.getPortDirection().getIntValue()
&& !keys.contains(currentKey)) {
String logicalConnectionPoint = createLogicalConnectionPort(port, k, portIndex);
portMapList.add(createMappingObject(nodeId, port, circuitPackName, logicalConnectionPoint));
portIndex++;
keys.add(currentKey);
- } else if (Port.PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
+ } else if (PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
&& (Direction.Rx.getIntValue() == port.getPortDirection().getIntValue()
|| Direction.Tx.getIntValue() == port.getPortDirection().getIntValue())
&& !keys.contains(currentKey)
Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
if (port2Object.isPresent()
&& port2Object.get().getPortQual().getIntValue()
- == Port.PortQual.RoadmExternal.getIntValue()) {
+ == PortQual.RoadmExternal.getIntValue()) {
Ports port2 = port2Object.get();
- if ((port.getPortDirection().getIntValue() == Direction.Rx.getIntValue()
- && port2.getPortDirection().getIntValue() == Direction.Tx.getIntValue()
- && port2.getPartnerPort() != null
- && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
- && port2.getPartnerPort().getPortName().toString().equals(port.getPortName()))
- ||
- (port.getPortDirection().getIntValue() == Direction.Tx.getIntValue()
- && port2.getPortDirection().getIntValue() == Direction.Rx.getIntValue()
- && port2.getPartnerPort() != null
- && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
- && port2.getPartnerPort().getPortName().toString().equals(port.getPortName()))) {
+ if (checkPartnerPort(circuitPackName, port, port2)) {
String logicalConnectionPoint2 = createLogicalConnectionPort(port2, k, portIndex);
LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId, circuitPackName,
port2.getPortName(), logicalConnectionPoint2);
portIndex++;
}
} else {
- LOG.error("error getting partner port {} of {} - {}", port.getPartnerPort().getPortName()
- .toString(), port.getPartnerPort().getCircuitPackName(), nodeId);
+ LOG.error("error getting partner port {} of {} - {}",
+ port.getPartnerPort().getPortName().toString(),
+ port.getPartnerPort().getCircuitPackName(), nodeId);
continue;
}
} else {
- LOG.info("{} : port {} on {} is not roadm-external or has already been handled. No logicalConnectionPoint assignment for this port.",
+ LOG.info("{} : port {} on {} is not roadm-external or has already been handled."
+ + " No logicalConnectionPoint assignment for this port.",
nodeId, port.getPortName(), circuitPackName);
}
}
Ports port = portObject.get();
if (port.getPortQual() == null) {
continue;
- } else if (Port.PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
+ } else if (PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
&& Direction.Bidirectional.getIntValue() == port.getPortDirection().getIntValue()) {
String logicalConnectionPoint = new StringBuilder("DEG").append(k).append("-TTP-TXRX")
.toString();
connectionPortMap.get(k).get(0).getCircuitPackName(), logicalConnectionPoint));
} else {
LOG.error(
- "Impossible to create logical connection point for port {} of {} on node {} - Error in configuration with port-qual or port-direction",
+ "Impossible to create logical connection point for port {} of {} on node {}"
+ + "- Error in configuration with port-qual or port-direction",
port.getPortName(), connectionPortMap.get(k).get(0).getCircuitPackName(), nodeId);
}
} else {
Ports port2 = port2Object.get();
if (port1.getPortQual() == null || port2.getPortQual() == null) {
continue;
- } else if ((Port.PortQual.RoadmExternal.getIntValue() == port1.getPortQual().getIntValue()
- && Port.PortQual.RoadmExternal.getIntValue() == port2.getPortQual().getIntValue()
+ } else if ((PortQual.RoadmExternal.getIntValue() == port1.getPortQual().getIntValue()
+ && PortQual.RoadmExternal.getIntValue() == port2.getPortQual().getIntValue()
&& Direction.Rx.getIntValue() == port1.getPortDirection().getIntValue()
&& Direction.Tx.getIntValue() == port2.getPortDirection().getIntValue()
&& port1.getPartnerPort() != null && port2.getPartnerPort() != null
&& port2.getPartnerPort().getCircuitPackName().equals(cp1Name)
&& port2.getPartnerPort().getPortName().equals(port1.getPortName()))
||
- (Port.PortQual.RoadmExternal.getIntValue() == port1.getPortQual().getIntValue()
- && Port.PortQual.RoadmExternal.getIntValue() == port2.getPortQual().getIntValue()
+ (PortQual.RoadmExternal.getIntValue() == port1.getPortQual().getIntValue()
+ && PortQual.RoadmExternal.getIntValue() == port2.getPortQual().getIntValue()
&& Direction.Rx.getIntValue() == port2.getPortDirection().getIntValue()
&& Direction.Tx.getIntValue() == port1.getPortDirection().getIntValue()
&& port1.getPartnerPort() != null && port2.getPartnerPort() != null
.getCircuitPackName(), logicalConnectionPoint2));
} else {
LOG.error(
- "impossible to create logical connection point for port {} or port {} on node {} - Error in configuration with port-qual, port-direction or partner-port configuration",
+ "impossible to create logical connection point for port {} or port {} on node {} - "
+ + "Error in configuration with port-qual, port-direction or partner-port configuration",
port1.getPortName(), port2.getPortName(), nodeId);
}
} else {
org.opendaylight.yang.gen.v1.gnpy.gnpy.eqpt.config.rev181119.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.gnpy.path.rev190502.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.$YangModuleInfoImpl.getInstance(),
ClliNetwork.createClliLayer(dataBroker);
OpenRoadmNetwork.createOpenRoadmNetworkLayer(dataBroker);
openRoadmFactory.createTopoLayerVersionControl(networkTransactionService);
+ openRoadmFactory.createOtnTopoLayerVersionControl(networkTransactionService);
dataTreeChangeListenerRegistration =
dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
InstanceIdentifiers.NETCONF_TOPOLOGY_II.child(Node.class)), topologyListener);
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
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.rev190702.Network;
-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.CpToDegree;
-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.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Protocols;
import org.opendaylight.transportpce.networkmodel.util.ClliNetwork;
import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory;
import org.opendaylight.transportpce.networkmodel.util.OpenRoadmNetwork;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.transportpce.networkmodel.util.OpenRoadmOtnTopology22;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
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;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
private final OpenRoadmFactory openRoadmFactory;
private final PortMapping portMapping;
private HashMap<String,TopologyShard> topologyShardMountedDevice;
+ private HashMap<String,TopologyShard> otnTopologyShardMountedDevice;
public NetworkModelServiceImpl(final NetworkTransactionService networkTransactionService,
final R2RLinkDiscovery linkDiscovery, DeviceTransactionManager deviceTransactionManager,
this.openRoadmFactory = openRoadmFactory;
this.portMapping = portMapping;
this.topologyShardMountedDevice = new HashMap<String,TopologyShard>();
+ this.otnTopologyShardMountedDevice = new HashMap<String,TopologyShard>();
}
public void init() {
networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOpenRoadmTopologyLink,
openRoadmTopologyLink, CREATE_MISSING_PARENTS);
}
+ if (nodeInfo.getNodeType().equals(NodeTypes.Xpdr) && (nodeInfo.getOpenroadmVersion().getIntValue() != 1)) {
+ TopologyShard otnTopologyShard = new OpenRoadmOtnTopology22(this.networkTransactionService,
+ this.deviceTransactionManager).createTopologyShard(portMapping.getNode(nodeId));
+ if (otnTopologyShard == null) {
+ LOG.error("Unable to create OTN topology shard for node {}!", nodeId);
+ return;
+ }
+ this.otnTopologyShardMountedDevice.put(nodeId, otnTopologyShard);
+
+ for (Node openRoadmOtnTopologyNode: otnTopologyShard.getNodes()) {
+ LOG.info("creating node {} in {}", openRoadmOtnTopologyNode.getNodeId().getValue(),
+ // NetworkUtils.OVERLAY_NETWORK_ID);
+ NetworkUtils.OTN_NETWORK_ID);
+ InstanceIdentifier<Node> iiOpenRoadmOtnTopologyNode = InstanceIdentifier.builder(Networks.class)
+ // .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
+ .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID)))
+ .child(Node.class, openRoadmOtnTopologyNode.key())
+ .build();
+ networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOpenRoadmOtnTopologyNode,
+ openRoadmOtnTopologyNode);
+ }
+ }
networkTransactionService.commit().get();
LOG.info("all nodes and links created");
} catch (InterruptedException | ExecutionException e) {
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.NetworkTypes1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.NetworkTypes1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.Node1;
import org.opendaylight.transportpce.common.mapping.MappingUtils;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
-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.rev191115.network.Nodes;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class OpenRoadmFactory {
private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmFactory.class);
OpenRoadmTopology22 openRoadmTopology22;
+ OpenRoadmOtnTopology22 openRoadmOtnTopology22;
private final MappingUtils mappingUtils;
- public OpenRoadmFactory(MappingUtils mappingUtils, OpenRoadmTopology22 openRoadmTopology22) {
+ public OpenRoadmFactory(MappingUtils mappingUtils, OpenRoadmTopology22 openRoadmTopology22,
+ OpenRoadmOtnTopology22 openRoadmOtnTopology22) {
this.mappingUtils = mappingUtils;
this.openRoadmTopology22 = openRoadmTopology22;
+ this.openRoadmOtnTopology22 = openRoadmOtnTopology22;
}
public void createTopoLayerVersionControl(NetworkTransactionService networkTransactionService) {
openRoadmTopology22.createTopoLayer();
}
+ public void createOtnTopoLayerVersionControl(NetworkTransactionService networkTransactionService) {
+ openRoadmOtnTopology22.createTopoLayer();
+ }
+
public TopologyShard createTopologyShardVersionControl(Nodes mappingNode) {
return openRoadmTopology22.createTopologyShard(mappingNode);
}
+ public TopologyShard createOtnTopologyShardVersionControl(Nodes mappingNode) {
+ return openRoadmOtnTopology22.createTopologyShard(mappingNode);
+ }
+
public boolean deleteLink(String srcNode, String dstNode, String srcTp, String destTp,
NetworkTransactionService networkTransactionService) {
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder;
--- /dev/null
+/*
+ * Copyright © 2016 AT&T and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.networkmodel.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.common.Timeouts;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder;
+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.rev161014.NodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.XpdrNodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.OrgOpenroadmDevice;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.Xponder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.odu.switching.pools.non.blocking.list.PortList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.xponder.XpdrPort;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder;
+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;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU0;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU2e;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU4;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.TerminationPoint1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.SwitchingPoolsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.switching.pool.types.rev181130.SwitchingPoolTypes;
+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;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NetworkTypesBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1Builder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.DestinationBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SourceBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OpenRoadmOtnTopology22 {
+
+ private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmTopology22.class);
+
+ private NetworkTransactionService networkTransactionService;
+ private final DeviceTransactionManager deviceTransactionManager;
+
+ public OpenRoadmOtnTopology22(NetworkTransactionService networkTransactionService,
+ DeviceTransactionManager deviceTransactionManager) {
+ this.networkTransactionService = networkTransactionService;
+ this.deviceTransactionManager = deviceTransactionManager;
+ }
+
+ /**
+ * This public method creates the OTN OpenROADM Topology
+ * Layer and posts it to the controller.
+ */
+ public void createTopoLayer() {
+ try {
+ Network openRoadmOtnTopology = createOpenRoadmOtnTopology();
+ InstanceIdentifierBuilder<Network> nwIID = InstanceIdentifier.builder(Networks.class).child(Network.class,
+ new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID)));
+
+ this.networkTransactionService.put(LogicalDatastoreType.CONFIGURATION, nwIID.build(), openRoadmOtnTopology);
+ this.networkTransactionService.commit().get(1, TimeUnit.SECONDS);
+ LOG.info("OpenRoadm-OTN-Topology created successfully.");
+ } catch (ExecutionException | TimeoutException | InterruptedException e) {
+ LOG.warn("Failed to create OpenRoadm-OTN-Topology", e);
+ }
+ }
+
+ /**
+ * Create empty OpenROADM topology.
+ */
+ private Network createOpenRoadmOtnTopology() {
+ NetworkId nwId = new NetworkId(NetworkUtils.OTN_NETWORK_ID);
+ NetworkTypes1Builder topoNetworkTypesBldr = new NetworkTypes1Builder()
+ .setOpenroadmCommonNetwork(new OpenroadmCommonNetworkBuilder().build());
+ NetworkTypesBuilder nwTypeBuilder = new NetworkTypesBuilder()
+ .addAugmentation(NetworkTypes1.class, topoNetworkTypesBldr.build());
+ // Array to store nodes in the topolayer of a roadm/Xponder
+ Network1Builder nwBldr1 = new Network1Builder()
+ // adding expressLinks
+ .setLink(Collections.emptyList());
+ NetworkBuilder nwBuilder = new NetworkBuilder()
+ .setNetworkId(nwId)
+ .withKey(new NetworkKey(nwId))
+ .setNetworkTypes(nwTypeBuilder.build())
+ .addAugmentation(Network1.class, nwBldr1.build())
+ .setNode(Collections.emptyList());
+ return nwBuilder.build();
+ }
+
+ public TopologyShard createTopologyShard(Nodes mappingNode) {
+ List<Node> nodes = new ArrayList<>();
+
+ LOG.info("Topology create request received for Node {}",mappingNode.getNodeId());
+ InstanceIdentifier<OrgOpenroadmDevice> deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class);
+ // .child(Xponder.class,new XponderKey(2));
+ Optional<OrgOpenroadmDevice> deviceOptional = deviceTransactionManager
+ .getDataFromDevice(mappingNode.getNodeId(),LogicalDatastoreType.OPERATIONAL, deviceIID,
+ Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+ OrgOpenroadmDevice device;
+ List<Xponder> xponders;
+ if (deviceOptional.isPresent()) {
+ device = deviceOptional.get();
+ xponders = device.getXponder();
+ } else {
+ LOG.error("Unable to get xponder for the device {}", mappingNode.getNodeId());
+ return null;
+ }
+ LOG.info("Xponder subtree is found and now calling create XPDR");
+ if (NodeTypes.Xpdr.getIntValue() == mappingNode.getNodeInfo().getNodeType().getIntValue()) {
+ // Check if node is XPONDER
+ LOG.info("creating xpdr node in openroadmotntopology for node {}", mappingNode.getNodeId());
+ if (xponders != null) {
+ for (Xponder xponder: xponders) {
+ LOG.info("Calling create XPDR for xponder number {}",xponder.getXpdrNumber());
+ NodeBuilder ietfNode = createXpdr(xponder,mappingNode);
+ nodes.add(ietfNode.build());
+ }
+ }
+ LOG.info("Coming to return topology");
+ return new TopologyShard(nodes, null);
+ }
+ LOG.error("Device node Type not managed yet");
+ return null;
+ }
+
+ private NodeBuilder createXpdr(Xponder xponder,Nodes mappingNode) {
+ // set node-id
+ String nodeIdtopo = new StringBuilder().append(mappingNode.getNodeId()).append("-XPDR" + xponder
+ .getXpdrNumber()).toString();
+ LOG.info("Node is {}",nodeIdtopo);
+
+ // Create ietf node setting supporting-node data
+ NodeBuilder ietfNodeBldr = createOtnTopoLayerNode(mappingNode.getNodeId())
+ .setNodeId(new NodeId(nodeIdtopo))
+ .withKey((new NodeKey(new NodeId(nodeIdtopo))));
+ // Create openroadm-network-topo augmentation to set node type to Xponder
+ Node1Builder ontNode1Bldr = new Node1Builder()
+ .setNodeType(OpenroadmNodeType.XPONDER);
+ if (xponder.getXpdrType().equals(XpdrNodeTypes.Switch)) {
+ LOG.info("Xponder type is OTN switch and it is calling switching pool");
+ SwitchingPoolsBuilder switchingPoolsBuilder = new SwitchingPoolsBuilder()
+ .setOduSwitchingPools(getSwitchingPools(mappingNode.getNodeId(), mappingNode));
+ ontNode1Bldr.setSwitchingPools(switchingPoolsBuilder.build());
+ LOG.info("Switching pool object is created {}",
+ switchingPoolsBuilder.build().getOduSwitchingPools().size());
+ }
+ ietfNodeBldr.addAugmentation(Node1.class, ontNode1Bldr.build());
+
+ // Create tp-list
+ LOG.info("Now createing TP list");
+ List<TerminationPoint> tpList = new ArrayList<>();
+ TerminationPointBuilder ietfTpBldr;
+
+ for (XpdrPort xponderPort: xponder.getXpdrPort()) {
+ Mapping ma = mappingNode.getMapping().stream().filter(x -> x.getSupportingCircuitPackName()
+ .equals(xponderPort.getCircuitPackName()) && x.getSupportingPort()
+ .equals(xponderPort.getPortName())).collect(Collectors.toList()).get(0);
+ ietfTpBldr = createTpBldr(ma.getLogicalConnectionPoint());
+ TerminationPoint1Builder ontTp1Bldr = new TerminationPoint1Builder();
+ if (ma.getPortQual().equals("xpdr-network") || ma.getPortQual().equals("switch-network")) {
+ ontTp1Bldr.setTpType(OpenroadmTpType.XPONDERNETWORK);
+ XpdrTpPortConnectionAttributesBuilder xpdrTpBuilder = new XpdrTpPortConnectionAttributesBuilder();
+ if (ma.getPortQual().equals("switch-network") && ma.getRate() != null) {
+ if (ma.getRate().equals("10G")) {
+ xpdrTpBuilder.setRate(ODU2e.class);
+ }
+ else if (ma.getRate().equals("1G")) {
+ xpdrTpBuilder.setRate(ODU0.class);
+ }
+ else if (ma.getRate().equals("100G")) {
+ xpdrTpBuilder.setRate(ODU4.class);
+ List<Integer> tpSlots = new ArrayList<Integer>();
+ IntStream.range(1, 81).forEach(nbr -> tpSlots.add(nbr));
+ xpdrTpBuilder.setTsPool(tpSlots);
+ }
+ } else {
+ LOG.warn("no rate in portmapping for lcp {} of {}", ma.getLogicalConnectionPoint(),
+ mappingNode.getNodeId());
+ }
+ xpdrTpBuilder.setTailEquipmentId(ma.getAssociatedLcp());
+ ontTp1Bldr.setXpdrTpPortConnectionAttributes(xpdrTpBuilder.build());
+ ietfTpBldr.addAugmentation(TerminationPoint1.class, ontTp1Bldr.build());
+ tpList.add(ietfTpBldr.build());
+ } else if (ma.getPortQual().equals("xpdr-client") || ma.getPortQual().equals("switch-client")) {
+ ontTp1Bldr.setTpType(OpenroadmTpType.XPONDERCLIENT);
+ XpdrTpPortConnectionAttributesBuilder xpdrTpBuilder = new XpdrTpPortConnectionAttributesBuilder();
+ if (ma.getPortQual().equals("switch-client") && ma.getRate() != null) {
+ if (ma.getRate().equals("10G")) {
+ xpdrTpBuilder.setRate(ODU2e.class);
+ }
+ else if (ma.getRate().equals("1G")) {
+ xpdrTpBuilder.setRate(ODU0.class);
+ }
+ else if (ma.getRate().equals("100G")) {
+ xpdrTpBuilder.setRate(ODU4.class);
+ }
+ } else {
+ LOG.warn("no rate in portmapping for lcp {} of {}", ma.getLogicalConnectionPoint(),
+ mappingNode.getNodeId());
+ }
+ xpdrTpBuilder.setTailEquipmentId(ma.getAssociatedLcp());
+ ontTp1Bldr.setXpdrTpPortConnectionAttributes(xpdrTpBuilder.build());
+ ietfTpBldr.addAugmentation(TerminationPoint1.class, ontTp1Bldr.build());
+ tpList.add(ietfTpBldr.build());
+ }
+ }
+ for (int i = 0;i < tpList.size();i++) {
+ LOG.info("Tps are {},{}",tpList.get(i).getTpId());
+ }
+ // Create ietf node augmentation to support ietf tp-list
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder tpNode1 =
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder();
+ tpNode1.setTerminationPoint(tpList);
+ ietfNodeBldr.addAugmentation(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class,
+ tpNode1.build());
+
+ /**Node1Builder ietfNode1 = new Node1Builder();
+ ietfNodeBldr.addAugmentation(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class,
+ ietfNode1.build());**/
+ LOG.info("Now all TPS and network node is ready and calling return");
+ return ietfNodeBldr;
+ }
+
+ private NodeBuilder createOtnTopoLayerNode(String nodeId) {
+ // Sets the value of Network-ref and Node-ref as a part of the supporting node
+ // attribute
+ LOG.info("Settting up supporting node and interface");
+ SupportingNodeBuilder supportbldr = new SupportingNodeBuilder()
+ .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID), new NodeId(nodeId)))
+ .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+ .setNodeRef(new NodeId(nodeId));
+ ArrayList<SupportingNode> supportlist = new ArrayList<>();
+ supportlist.add(supportbldr.build());
+ NodeBuilder nodebldr = new NodeBuilder()
+ .setSupportingNode(supportlist);
+ LOG.info("Returning node builder");
+ return nodebldr;
+ }
+
+ // This method returns a generic termination point builder for a given tpid
+ private TerminationPointBuilder createTpBldr(String tpId) {
+ return new TerminationPointBuilder()
+ .withKey(new TerminationPointKey(new TpId(tpId)))
+ .setTpId(new TpId(tpId));
+ }
+
+ private LinkBuilder createLink(String srcNode, String destNode, String srcTp, String destTp) {
+ //create source link
+ SourceBuilder ietfSrcLinkBldr = new SourceBuilder()
+ .setSourceNode(new NodeId(srcNode))
+ .setSourceTp(srcTp);
+ //create destination link
+ DestinationBuilder ietfDestLinkBldr = new DestinationBuilder()
+ .setDestNode(new NodeId(destNode))
+ .setDestTp(destTp);
+
+ LinkBuilder ietfLinkBldr = new LinkBuilder()
+ .setSource(ietfSrcLinkBldr.build())
+ .setDestination(ietfDestLinkBldr.build())
+ .setLinkId(LinkIdUtil.buildLinkId(srcNode, srcTp, destNode, destTp));
+ return ietfLinkBldr.withKey(new LinkKey(ietfLinkBldr.getLinkId()));
+ }
+
+ private List<OduSwitchingPools> getSwitchingPools(String nodeId,Nodes mappingNode) {
+ InstanceIdentifier<OrgOpenroadmDevice> deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class);
+ // .child(Xponder.class,new XponderKey(2));
+ Optional<OrgOpenroadmDevice> deviceOptional = deviceTransactionManager.getDataFromDevice(nodeId,
+ LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT,
+ Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+ OrgOpenroadmDevice device;
+ List<OduSwitchingPools> oduSwitchingPools = new ArrayList<>();
+ if (deviceOptional.isPresent()) {
+ device = deviceOptional.get();
+ for (org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org
+ .openroadm.device.OduSwitchingPools odupool:device.getOduSwitchingPools()) {
+ OduSwitchingPoolsBuilder oduSwitchingPoolsBuilder = new OduSwitchingPoolsBuilder();
+ List<NonBlockingList> nonBlockingLists = new ArrayList<>();
+ for (org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org
+ .openroadm.device.odu.switching.pools.NonBlockingList nbList: odupool.getNonBlockingList()) {
+ NonBlockingListBuilder nonBlockingListBuilder = new NonBlockingListBuilder()
+ .setNblNumber(nbList.getNblNumber())
+ .setAvailableInterconnectBandwidth(nbList.getInterconnectBandwidth())
+ .setInterconnectBandwidthUnit(nbList.getInterconnectBandwidth());
+ List<TpId> tpList = new ArrayList<>();
+ if (nbList.getPortList() != null) {
+ for (PortList portList:nbList.getPortList()) {
+ LOG.info("Inside switching pool now collecting ports {},{},{}", portList.getPortName(),
+ portList.getCircuitPackName(), nbList.getNblNumber());
+ Mapping mapping = mappingNode.getMapping().stream()
+ .filter(x -> x.getSupportingCircuitPackName().equals(portList.getCircuitPackName())
+ && x.getSupportingPort().equals(portList.getPortName()))
+ .collect(Collectors.toList()).get(0);
+ LOG.info("Mapping TP is coming is {}",mapping);
+ tpList.add(new TpId(mapping.getLogicalConnectionPoint()));
+ }
+ nonBlockingListBuilder.setTpList(tpList);
+ nonBlockingLists.add(nonBlockingListBuilder.build());
+ } else {
+ LOG.warn("no portList for non-blocking-list {} of {}", nbList.getNblNumber(), nodeId);
+ }
+ }
+ oduSwitchingPoolsBuilder.setNonBlockingList(nonBlockingLists)
+ .setSwitchingPoolNumber(odupool.getSwitchingPoolNumber())
+ .setSwitchingPoolType(SwitchingPoolTypes.forValue(odupool.getSwitchingPoolType().getIntValue()));
+ oduSwitchingPools.add(oduSwitchingPoolsBuilder.build());
+ }
+ return oduSwitchingPools;
+ } else {
+ LOG.error("Unable to get xponder for the device {}", nodeId);
+ return null;
+ }
+ }
+
+ // This method returns the linkBuilder object for given source and destination
+ public static boolean deleteLink(String srcNode, String dstNode, String srcTp, String destTp,
+ NetworkTransactionService networkTransactionService) {
+ LOG.info("deleting link for {}-{}", srcNode, dstNode);
+ LinkId linkId = LinkIdUtil.buildLinkId(srcNode, srcTp, dstNode, destTp);
+ if (deleteLinkLinkId(linkId, networkTransactionService)) {
+ LOG.debug("Link Id {} updated to have admin state down");
+ return true;
+ } else {
+ LOG.debug("Link Id not found for Source {} and Dest {}", srcNode, dstNode);
+ return false;
+ }
+ }
+
+ // This method returns the linkBuilder object for given source and destination
+ public static boolean deleteLinkLinkId(LinkId linkId , NetworkTransactionService networkTransactionService) {
+ LOG.info("deleting link for LinkId: {}", linkId);
+ try {
+ InstanceIdentifierBuilder<Link> linkIID = InstanceIdentifier.builder(Networks.class).child(Network.class,
+ new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID))).augmentation(Network1.class)
+ .child(Link.class, new LinkKey(linkId));
+ java.util.Optional<Link> link =
+ networkTransactionService.read(LogicalDatastoreType.CONFIGURATION,linkIID.build()).get();
+ if (link.isPresent()) {
+ Link1Builder link1Builder = new Link1Builder().setAdministrativeState(State.OutOfService);
+ LinkBuilder linkBuilder = new LinkBuilder(link.get())
+ .removeAugmentation(Link1.class)
+ .addAugmentation(Link1.class,link1Builder.build());
+ networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, linkIID.build(),
+ linkBuilder.build());
+ networkTransactionService.commit().get(1, TimeUnit.SECONDS);
+ return true;
+ } else {
+ LOG.error("No link found for given LinkId: {}", linkId);
+ return false;
+ }
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error(e.getMessage(), e);
+ return false;
+ }
+ }
+}
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
-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.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder;
<bean id="openRoadmFactory" class="org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory">
<argument ref="mappingUtils" />
<argument ref="openRoadmTopology22" />
+ <argument ref="openRoadmOtnTopology22" />
</bean>
<bean id="openRoadmTopology22" class="org.opendaylight.transportpce.networkmodel.util.OpenRoadmTopology22">
<argument ref="deviceTransactionManager" />
</bean>
+ <bean id="openRoadmOtnTopology22" class="org.opendaylight.transportpce.networkmodel.util.OpenRoadmOtnTopology22">
+ <argument ref="networkTransactionImpl" />
+ <argument ref="deviceTransactionManager" />
+ </bean>
<bean id="networkModelService" class="org.opendaylight.transportpce.networkmodel.service.NetworkModelServiceImpl">
<argument ref="networkTransactionImpl" />
import org.opendaylight.transportpce.olm.util.OlmUtils;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerSetupInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerTurndownInput;
-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.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.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.calculate.spanloss.base.output.Spans;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.calculate.spanloss.base.output.SpansBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.get.pm.output.Measurements;
-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.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.GetPmInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.GetPmOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-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.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.transportpce.olm.util.OlmUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerSetupInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-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.NodesBuilder;
-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.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-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.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
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.rev161014.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
mappingList.add(map1);
Nodes nodes = new NodesBuilder()
.setNodeId(nodeId)
- .setNodeType(NodeTypes.Xpdr)
+ .setNodeInfo(new NodeInfoBuilder()
+ .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes.Xpdr)
+ .setOpenroadmVersion(OpenroadmVersion._121)
+ .build())
.setCpToDegree(cpList)
.setMapping(mappingList)
- .setOpenroadmVersion(Nodes.OpenroadmVersion._121)
.build();
return nodes;
}
mappingList.add(map1);
Nodes nodes = new NodesBuilder()
.setNodeId(nodeId)
- .setNodeType(null)
+ .setNodeInfo(new NodeInfoBuilder()
+ .setNodeType(null)
+ .setOpenroadmVersion(OpenroadmVersion._121)
+ .build())
.setCpToDegree(cpList)
.setMapping(mappingList)
- .setOpenroadmVersion(Nodes.OpenroadmVersion._121)
.build();
return nodes;
}
mappingList.add(map1);
Nodes nodes = new NodesBuilder()
.setNodeId(nodeId)
- .setNodeType(NodeTypes.Rdm)
+ .setNodeInfo(new NodeInfoBuilder()
+ .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes.Rdm)
+ .setOpenroadmVersion(OpenroadmVersion._121)
+ .build())
.setCpToDegree(cpList)
.setMapping(mappingList)
- .setOpenroadmVersion(Nodes.OpenroadmVersion._121)
.build();
return nodes;
}
import org.opendaylight.transportpce.common.mapping.PortMapping;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-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.rev191115.network.nodes.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.PowerDBm;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
import org.opendaylight.transportpce.common.mapping.PortMapping;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-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.rev191115.network.nodes.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyGHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PowerDBm;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.mapping.MappingUtils;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
-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.rev191115.network.nodes.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.OchAttributes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.RateIdentity;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.ServiceNodelist;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.NodelistBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.NodelistKey;
-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.rev191115.network.nodes.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsOutputBuilder;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
public class OpenRoadMInterface221Test extends AbstractTest {
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.renderer.stub.MountPointStub;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-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.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceService;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.InstanceIdentifiers;
import org.opendaylight.transportpce.common.NetworkUtils;
-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.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.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.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
.getAssociatedConnectionMapPort();
@NonNull
KeyedInstanceIdentifier<Mapping, MappingKey> 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.rev191115.Network.class)
+ .child(Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp));
@NonNull
FluentFuture<Optional<Mapping>> mappingOpt = dataBroker.newReadOnlyTransaction().read(
LogicalDatastoreType.CONFIGURATION, pmIID);
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.DataStoreContext;
import org.opendaylight.transportpce.common.converter.XMLDataObjectConverter;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInputBuilder;
}
public static void writePortmappingFromFileToDatastore(DataStoreContext dataStoreContextUtil) {
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network result = null;
+ Network result = null;
File portmappingFile = new File(PORTMAPPING_FILE);
if (portmappingFile.exists()) {
String fileName = portmappingFile.getName();
"Could not transform the input %s into normalized nodes", fileName));
}
Optional<DataObject> dataObject = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContextUtil)
- .getDataObject(transformIntoNormalizedNode.get(), org.opendaylight.yang.gen.v1.http.org.opendaylight
- .transportpce.portmapping.rev190702.Network.QNAME);
+ .getDataObject(transformIntoNormalizedNode.get(), Network.QNAME);
if (!dataObject.isPresent()) {
throw new IllegalStateException("Could not transform normalized nodes into data object");
} else {
- result = (org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702
- .Network) dataObject.get();
+ result = (Network) dataObject.get();
}
} catch (FileNotFoundException e) {
LOG.error("File not found : {} at {}", e.getMessage(), e.getLocalizedMessage());
} else {
LOG.error("xml file {} not found at {}", portmappingFile.getName(), portmappingFile.getAbsolutePath());
}
- InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702
- .Network> portmappingIID = InstanceIdentifier.builder(org.opendaylight.yang.gen.v1.http.org.opendaylight
- .transportpce.portmapping.rev190702.Network.class).build();
+ InstanceIdentifier<Network> portmappingIID = InstanceIdentifier.builder(Network.class).build();
writeTransaction(dataStoreContextUtil.getDataBroker(), portmappingIID, result);
LOG.info("portmapping-example stored with success in datastore");
}