authors: Dhruv Bhardwaj ( db929a@att.com )
Shweta Vachhani ( sv111y@att.com )";
+ revision 2021-10-04 {
+ description
+ "Add source and destinatin API info in service-path";
+ }
revision 2021-06-18 {
description
"Replace service-type by service-format.
}
}
+ grouping az-api-info {
+ container a-end-api-info {
+ leaf node-id {
+ type string;
+ }
+ uses org-transportpce-common-types:api-info;
+ }
+ container z-end-api-info {
+ leaf node-id {
+ type string;
+ }
+ uses org-transportpce-common-types:api-info;
+ }
+ }
+
rpc service-path {
input {
leaf modulation-format {
leaf operation {
type action;
}
+ uses az-api-info;
uses org-transportpce-common-types:optical-renderer-input;
}
output {
leaf operation {
type action;
}
- container a-end-api-info {
- leaf node-id {
- type string;
- }
- uses org-transportpce-common-types:api-info;
- }
- container z-end-api-info {
- leaf node-id {
- type string;
- }
- uses org-transportpce-common-types:api-info;
- }
+ uses az-api-info;
uses org-transportpce-common-types:otn-renderer-input;
}
output {
authors: Dhruv Bhardwaj ( db929a@att.com ) Shweta Vachhani ( sv111y@att.com )
Balagangadhar Bathula ( bb4341@att.com )";
+ revision 2021-09-27 {
+ description
+ "Add supporting-otu interface in mapping";
+ }
revision 2021-04-26 {
description
"Adding mux-profile information to support 400G Muxponder";
description
"Ethernet interface provisioned on the port";
}
+ leaf supporting-otu4 {
+ type string;
+ description
+ "OTU4 interface provisioned on the port";
+ }
+ leaf supporting-otuc4 {
+ type string;
+ description
+ "OTUC4 interface provisioned on the port";
+ }
leaf supporting-odu4 {
- type string;
- description
- "ODU4 interface provisioned on the port";
- }
+ type string;
+ description
+ "ODU4 interface provisioned on the port";
+ }
leaf supporting-oduc4 {
type string;
description
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.ModulationFormat;
package org.opendaylight.transportpce.common.mapping;
import java.util.List;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilities;
public interface MappingUtils {
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.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If100GE;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If100GEODU4;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If10GE;
import java.util.List;
import java.util.Map;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.OduSwitchingPools;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.odu.switching.pools.non.blocking.list.PortList;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
boolean createMappingData(String nodeId, String nodeVersion);
/**
- * This method removes mapping data from the datastore after disconnecting ODL
- * from a Netconf device.
+ * This method removes all mapping data of a given node from the datastore
+ * after disconnecting ODL from a Netconf device.
*
* @param nodeId
* node ID
*/
- void deleteMappingData(String nodeId);
+ void deletePortMappingNode(String nodeId);
/**
* This method for a given node's termination point returns the Mapping object
*/
Mapping getMapping(String nodeId, String circuitPackName, String portName);
+ /**
+ * This method removes a given mapping data from the mapping list
+ * stored in the datastore while the Netconf device is already
+ * connected to the controller.
+ *
+ * @param nodeId
+ * node ID
+ * @param logicalConnectionPoint
+ * key of the mapping inside the mapping list
+ */
+ void deleteMapping(String nodeId, String logicalConnectionPoint);
+
/**
* This method, for a given node media channel-capabilities, returns the object
* based on portmapping.yang model stored in the MD-SAL data store which is
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.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilitiesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilitiesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.OduSwitchingPools;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.odu.switching.pools.non.blocking.list.PortList;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
return null;
}
+
+ @Override
+ public void deleteMapping(String nodeId, String logicalConnectionPoint) {
+ LOG.info("Deleting Mapping {} of node '{}'", logicalConnectionPoint, nodeId);
+ WriteTransaction rw = this.dataBroker.newWriteOnlyTransaction();
+ InstanceIdentifier<Mapping> mappingIID = InstanceIdentifier.create(Network.class)
+ .child(Nodes.class, new NodesKey(nodeId)).child(Mapping.class, new MappingKey(logicalConnectionPoint));
+ rw.delete(LogicalDatastoreType.CONFIGURATION, mappingIID);
+ try {
+ rw.commit().get(1, TimeUnit.SECONDS);
+ LOG.info("Mapping {} removed for node '{}'", logicalConnectionPoint, nodeId);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("Error for removing mapping {} for node '{}'", logicalConnectionPoint, nodeId);
+ }
+ }
+
@Override
public McCapabilities getMcCapbilities(String nodeId, String mcLcp) {
/*
@Override
- public void deleteMappingData(String nodeId) {
+ public void deletePortMappingNode(String nodeId) {
LOG.info("Deleting Mapping Data corresponding at node '{}'", nodeId);
WriteTransaction rw = this.dataBroker.newWriteOnlyTransaction();
InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
} catch (InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("Error for removing port mapping infos for node '{}'", nodeId, e);
}
-
}
@Override
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.Timeouts;
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.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.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.device.rev170206.CircuitPack;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.Port;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.Destination;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.port.Interfaces;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.EthernetCsmacd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.InterfaceType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpenROADMOpticalMultiplex;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpticalTransport;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OtnOdu;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OtnOtu;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.Protocols1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.Lldp;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfig;
private final DataBroker dataBroker;
private final DeviceTransactionManager deviceTransactionManager;
- private final OpenRoadmInterfaces openRoadmInterfaces;
static {
SUFFIX = Map.of(
Direction.Bidirectional, "TXRX");
}
- public PortMappingVersion121(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager,
- OpenRoadmInterfaces openRoadmInterfaces) {
+ public PortMappingVersion121(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager) {
this.dataBroker = dataBroker;
this.deviceTransactionManager = deviceTransactionManager;
- this.openRoadmInterfaces = openRoadmInterfaces;
}
public boolean createMappingData(String nodeId) {
private Mapping updateMappingObject(String nodeId, Ports port, Mapping oldmapping) {
MappingBuilder mpBldr = new MappingBuilder(oldmapping);
updateMappingStates(mpBldr, port, oldmapping);
- if ((port.getInterfaces() == null)
- || (!oldmapping.getLogicalConnectionPoint().contains(StringConstants.TTP_TOKEN)
- && !oldmapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN))) {
+ if (port.getInterfaces() == null) {
return mpBldr.build();
}
// Get interfaces provisioned on the port
}
private MappingBuilder updateMappingInterfaces(String nodeId, MappingBuilder mpBldr, Ports port) {
+ mpBldr.setSupportingOtu4(null)
+ .setSupportingOdu4(null);
for (Interfaces interfaces : port.getInterfaces()) {
- try {
- Optional<Interface> openRoadmInterface = this.openRoadmInterfaces.getInterface(nodeId,
- interfaces.getInterfaceName());
- if (openRoadmInterface.isEmpty()) {
- LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG,
- nodeId, interfaces.getInterfaceName() + "- empty interface");
- continue;
- }
- LOG.debug(PortMappingUtils.GOT_INTF_LOGMSG,
- nodeId, openRoadmInterface.get().getName(), openRoadmInterface.get().getType());
- Class<? extends InterfaceType> interfaceType
- = (Class<? extends InterfaceType>) openRoadmInterface.get().getType();
- // Check if interface type is OMS or OTS
- if (interfaceType.equals(OpenROADMOpticalMultiplex.class)) {
- mpBldr.setSupportingOms(interfaces.getInterfaceName());
- }
- if (interfaceType.equals(OpticalTransport.class)) {
- mpBldr.setSupportingOts(interfaces.getInterfaceName());
- }
- } catch (OpenRoadmInterfaceException ex) {
- LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG, nodeId, interfaces.getInterfaceName(), ex);
+ Optional<Interface> openRoadmInterface = getInterfaceFromDevice(nodeId, interfaces.getInterfaceName());
+ if (openRoadmInterface.isEmpty()) {
+ LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG,
+ nodeId, interfaces.getInterfaceName() + "- empty interface");
+ continue;
+ }
+ LOG.debug(PortMappingUtils.GOT_INTF_LOGMSG,
+ nodeId, openRoadmInterface.get().getName(), openRoadmInterface.get().getType());
+ Class<? extends InterfaceType> interfaceType
+ = (Class<? extends InterfaceType>) openRoadmInterface.get().getType();
+ // Check if interface type is OMS or OTS
+ if (interfaceType.equals(OpenROADMOpticalMultiplex.class)) {
+ mpBldr.setSupportingOms(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(OpticalTransport.class)) {
+ mpBldr.setSupportingOts(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(OtnOtu.class)) {
+ mpBldr.setSupportingOtu4(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(OtnOdu.class)) {
+ mpBldr.setSupportingOdu4(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(EthernetCsmacd.class)) {
+ mpBldr.setSupportingEthernet(interfaces.getInterfaceName());
}
}
return mpBldr;
.setSupportingCircuitPackName(circuitPackName)
.setSupportingPort(port.getPortName())
.setPortDirection(port.getPortDirection().getName())
+ .setXponderType(XpdrNodeTypes.Tpdr)
.setLcpHashVal(PortMappingUtils.fnv1size64(nodeId + "-" + logicalConnectionPoint));
if (port.getPortQual() != null) {
mpBldr.setPortQual(port.getPortQual().getName());
return nodeInfoBldr.build();
}
+ private Optional<Interface> getInterfaceFromDevice(String nodeId, String interfaceName) {
+ InstanceIdentifier<Interface> interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(Interface.class, new InterfaceKey(interfaceName));
+ return deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION,
+ interfacesIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+ }
}
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.Timeouts;
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.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilitiesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcp;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcpBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcpKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilitiesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.SwitchingPoolLcp;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.SwitchingPoolLcpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.SwitchingPoolLcpKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual;
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.device.types.rev191129.NodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.EthernetCsmacd;
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;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OtnOdu;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OtnOtu;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.Protocols1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.lldp.container.Lldp;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.lldp.container.lldp.PortConfig;
private final DataBroker dataBroker;
private final DeviceTransactionManager deviceTransactionManager;
- private final OpenRoadmInterfaces openRoadmInterfaces;
static {
SUFFIX = Map.of(
Direction.Bidirectional, "TXRX");
}
- public PortMappingVersion221(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager,
- OpenRoadmInterfaces openRoadmInterfaces) {
+ public PortMappingVersion221(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager) {
this.dataBroker = dataBroker;
this.deviceTransactionManager = deviceTransactionManager;
- this.openRoadmInterfaces = openRoadmInterfaces;
}
public boolean createMappingData(String nodeId) {
portList.sort(Comparator.comparing(Ports::getPortName));
for (Ports port : portList) {
int[] counters = fillXpdrLcpsMaps(line, client, nodeId,
- 1, null, circuitPackName, port,
+ 1, XpdrNodeTypes.Tpdr, circuitPackName, port,
circuitPackList, lcpMap, mappingMap);
line = counters[0];
client = counters[1];
private Mapping updateMappingObject(String nodeId, Ports port, Mapping oldmapping) {
MappingBuilder mpBldr = new MappingBuilder(oldmapping);
updateMappingStates(mpBldr, port, oldmapping);
- if ((port.getInterfaces() == null)
- || (!oldmapping.getLogicalConnectionPoint().contains(StringConstants.TTP_TOKEN)
- && !oldmapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN))) {
+ if (port.getInterfaces() == null) {
return mpBldr.build();
}
// Get interfaces provisioned on the port
}
private MappingBuilder updateMappingInterfaces(String nodeId, MappingBuilder mpBldr, Ports port) {
+ mpBldr.setSupportingOtu4(null)
+ .setSupportingOdu4(null);
for (Interfaces interfaces : port.getInterfaces()) {
- try {
- Optional<Interface> openRoadmInterface = this.openRoadmInterfaces.getInterface(nodeId,
- interfaces.getInterfaceName());
- if (openRoadmInterface.isEmpty()) {
- LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG,
- nodeId, interfaces.getInterfaceName() + "- empty interface");
- continue;
- }
- LOG.debug(PortMappingUtils.GOT_INTF_LOGMSG,
- nodeId, openRoadmInterface.get().getName(), openRoadmInterface.get().getType());
- Class<? extends InterfaceType> interfaceType
- = (Class<? extends InterfaceType>) openRoadmInterface.get().getType();
- // Check if interface type is OMS or OTS
- if (interfaceType.equals(OpenROADMOpticalMultiplex.class)) {
- mpBldr.setSupportingOms(interfaces.getInterfaceName());
- }
- if (interfaceType.equals(OpticalTransport.class)) {
- mpBldr.setSupportingOts(interfaces.getInterfaceName());
- }
- if (interfaceType.equals(OtnOdu.class)) {
- mpBldr.setSupportingOdu4(interfaces.getInterfaceName());
- }
- } catch (OpenRoadmInterfaceException ex) {
- LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG, nodeId, interfaces.getInterfaceName(), ex);
+ Optional<Interface> openRoadmInterface = getInterfaceFromDevice(nodeId,
+ interfaces.getInterfaceName());
+ if (openRoadmInterface.isEmpty()) {
+ LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG,
+ nodeId, interfaces.getInterfaceName() + "- empty interface");
+ continue;
+ }
+ LOG.debug(PortMappingUtils.GOT_INTF_LOGMSG,
+ nodeId, openRoadmInterface.get().getName(), openRoadmInterface.get().getType());
+ Class<? extends InterfaceType> interfaceType
+ = (Class<? extends InterfaceType>) openRoadmInterface.get().getType();
+ // Check if interface type is OMS or OTS
+ if (interfaceType.equals(OpenROADMOpticalMultiplex.class)) {
+ mpBldr.setSupportingOms(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(OpticalTransport.class)) {
+ mpBldr.setSupportingOts(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(OtnOtu.class)) {
+ mpBldr.setSupportingOtu4(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(OtnOdu.class)) {
+ mpBldr.setSupportingOdu4(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(EthernetCsmacd.class)) {
+ mpBldr.setSupportingEthernet(interfaces.getInterfaceName());
}
}
return mpBldr;
return nodeInfoBldr.build();
}
+ private Optional<Interface> getInterfaceFromDevice(String nodeId, String interfaceName) {
+ InstanceIdentifier<Interface> interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(Interface.class, new InterfaceKey(interfaceName));
+ return deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION,
+ interfacesIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+ }
}
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.Timeouts;
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.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilitiesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mpdr.restrictions.grp.MpdrRestrictionsBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcp;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcpBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcpKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilitiesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mpdr.restrictions.grp.MpdrRestrictionsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.SwitchingPoolLcp;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.SwitchingPoolLcpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.SwitchingPoolLcpKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.alarm.pm.types.rev191129.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.CircuitPack;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OpenROADMOpticalMultiplex;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OpticalTransport;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtnOdu;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtnOtu;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.Protocols1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.lldp.container.Lldp;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.lldp.container.lldp.PortConfig;
private final DataBroker dataBroker;
private final DeviceTransactionManager deviceTransactionManager;
- private final OpenRoadmInterfaces openRoadmInterfaces;
static {
SUFFIX = Map.of(
Direction.Bidirectional, "TXRX");
}
- public PortMappingVersion710(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager,
- OpenRoadmInterfaces openRoadmInterfaces) {
+ public PortMappingVersion710(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager) {
this.dataBroker = dataBroker;
this.deviceTransactionManager = deviceTransactionManager;
- this.openRoadmInterfaces = openRoadmInterfaces;
}
public boolean createMappingData(String nodeId) {
portList.sort(Comparator.comparing(Ports::getPortName));
for (Ports port : portList) {
int[] counters = fillXpdrLcpsMaps(line, client, nodeId,
- 1, null, circuitPackName, port,
+ 1, XpdrNodeTypes.Tpdr, circuitPackName, port,
circuitPackList, lcpMap, mappingMap);
line = counters[0];
client = counters[1];
private Mapping updateMappingObject(String nodeId, Ports port, Mapping oldmapping) {
MappingBuilder mpBldr = new MappingBuilder(oldmapping);
updateMappingStates(mpBldr, port, oldmapping);
- if ((port.getInterfaces() == null)
- || (!oldmapping.getLogicalConnectionPoint().contains(StringConstants.TTP_TOKEN)
- && !oldmapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN))) {
+ if (port.getInterfaces() == null) {
return mpBldr.build();
}
// Get interfaces provisioned on the port
}
private MappingBuilder updateMappingInterfaces(String nodeId, MappingBuilder mpBldr, Ports port) {
+ mpBldr.setSupportingOtu4(null)
+ .setSupportingOdu4(null);
for (Interfaces interfaces : port.getInterfaces()) {
- try {
- Optional<Interface> openRoadmInterface = this.openRoadmInterfaces.getInterface(nodeId,
- interfaces.getInterfaceName());
- if (openRoadmInterface.isEmpty()) {
- LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG,
- nodeId, interfaces.getInterfaceName() + "- empty interface");
- continue;
- }
- LOG.debug(PortMappingUtils.GOT_INTF_LOGMSG,
- nodeId, openRoadmInterface.get().getName(), openRoadmInterface.get().getType());
- Class<? extends InterfaceType> interfaceType
- = (Class<? extends InterfaceType>) openRoadmInterface.get().getType();
- // Check if interface type is OMS or OTS
- if (interfaceType.equals(OpenROADMOpticalMultiplex.class)) {
- mpBldr.setSupportingOms(interfaces.getInterfaceName());
- }
- if (interfaceType.equals(OpticalTransport.class)) {
- mpBldr.setSupportingOts(interfaces.getInterfaceName());
- }
- String interfaceName = interfaces.getInterfaceName();
- if (interfaceType.equals(OtnOdu.class)
- && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
- .equals("ODU"))) {
- mpBldr.setSupportingOdu4(interfaces.getInterfaceName());
- }
- if ((interfaceType.equals(OtnOdu.class))
- && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
- .equals("ODUC4"))) {
- mpBldr.setSupportingOduc4(interfaces.getInterfaceName());
- }
-
- } catch (OpenRoadmInterfaceException ex) {
+ Optional<Interface> openRoadmInterface = getInterfaceFromDevice(nodeId,
+ interfaces.getInterfaceName());
+ if (openRoadmInterface.isEmpty()) {
LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG,
- nodeId, interfaces.getInterfaceName(), ex);
+ nodeId, interfaces.getInterfaceName() + "- empty interface");
+ continue;
+ }
+ LOG.debug(PortMappingUtils.GOT_INTF_LOGMSG,
+ nodeId, openRoadmInterface.get().getName(), openRoadmInterface.get().getType());
+ Class<? extends InterfaceType> interfaceType
+ = (Class<? extends InterfaceType>) openRoadmInterface.get().getType();
+ // Check if interface type is OMS or OTS
+ if (interfaceType.equals(OpenROADMOpticalMultiplex.class)) {
+ mpBldr.setSupportingOms(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(OpticalTransport.class)) {
+ mpBldr.setSupportingOts(interfaces.getInterfaceName());
+ }
+ String interfaceName = interfaces.getInterfaceName();
+ if (interfaceType.equals(OtnOtu.class)
+ && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
+ .equals("OTU"))) {
+ mpBldr.setSupportingOtu4(interfaces.getInterfaceName());
+ }
+ if ((interfaceType.equals(OtnOtu.class))
+ && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
+ .equals("OTUC4"))) {
+ mpBldr.setSupportingOtuc4(interfaces.getInterfaceName());
+ }
+ if (interfaceType.equals(OtnOdu.class)
+ && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
+ .equals("ODU"))) {
+ mpBldr.setSupportingOdu4(interfaces.getInterfaceName());
+ }
+ if ((interfaceType.equals(OtnOdu.class))
+ && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
+ .equals("ODUC4"))) {
+ mpBldr.setSupportingOduc4(interfaces.getInterfaceName());
}
}
return mpBldr;
return null;
}
+ private Optional<Interface> getInterfaceFromDevice(String nodeId, String interfaceName) {
+ InstanceIdentifier<Interface> interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(Interface.class, new InterfaceKey(interfaceName));
+ return deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION,
+ interfacesIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+ }
}
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransaction;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.Ports;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.PortsKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacks;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacksBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacksKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceKey;
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.port.Interfaces;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev161014.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev161014.States;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OtnOdu;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.odu.container.OduBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev161014.otu.container.OtuBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
deviceTx.merge(LogicalDatastoreType.CONFIGURATION, interfacesIID, ifBuilder.build());
FluentFuture<? extends @NonNull CommitInfo> txSubmitFuture =
deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT);
+ // TODO: instead of using this infinite loop coupled with this timeout,
+ // it would be better to use a notification mechanism from the device to be advertised
+ // that the new created interface is present in the device circuit-pack/port
+ final Thread current = Thread.currentThread();
+ Thread timer = new Thread() {
+ public void run() {
+ try {
+ Thread.sleep(3000);
+ current.interrupt();
+ } catch (InterruptedException e) {
+ LOG.error("Timeout before the new created interface appears on the deivce circuit-pack port", e);
+ }
+ }
+ };
try {
txSubmitFuture.get();
LOG.info("Successfully posted interface {} on node {}", ifBuilder.getName(), nodeId);
+ boolean devicePortIsUptodated = false;
+ while (!devicePortIsUptodated) {
+ devicePortIsUptodated = checkIfDevicePortIsUpdatedWithInterface(nodeId, ifBuilder);
+ }
+ LOG.info("{} - {} - interface {} updated on port {}", nodeId, ifBuilder.getSupportingCircuitPackName(),
+ ifBuilder.getName(), ifBuilder.getSupportingPort());
+ timer.interrupt();
} catch (InterruptedException | ExecutionException e) {
throw new OpenRoadmInterfaceException(String.format("Failed to post interface %s on node %s!", ifBuilder
.getName(), nodeId), e);
}
- public void deleteInterface(String nodeId, String interfaceName) throws OpenRoadmInterfaceException {
+ public synchronized void deleteInterface(String nodeId, String interfaceName) throws OpenRoadmInterfaceException {
Optional<Interface> intf2DeleteOpt;
try {
intf2DeleteOpt = getInterface(nodeId, interfaceName);
}
}
+ private boolean checkIfDevicePortIsUpdatedWithInterface(String nodeId, InterfaceBuilder ifBuilder) {
+ KeyedInstanceIdentifier<Ports, PortsKey> portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(CircuitPacks.class, new CircuitPacksKey(ifBuilder.getSupportingCircuitPackName()))
+ .child(Ports.class, new PortsKey(ifBuilder.getSupportingPort()));
+ Ports port = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL,
+ portIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT).get();
+ if (port.getInterfaces() == null) {
+ return false;
+ }
+ for (Interfaces interf : port.getInterfaces()) {
+ if (interf.getInterfaceName().equals(ifBuilder.getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
}
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransaction;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
+import org.opendaylight.transportpce.common.mapping.PortMappingVersion221;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+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.circuit.packs.CircuitPacks;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.packs.CircuitPacksBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.packs.CircuitPacksKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceKey;
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.port.Interfaces;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev171215.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev171215.States;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OtnOdu;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.odu.container.OduBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.otu.container.OtuBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmInterfacesImpl221.class);
private final DeviceTransactionManager deviceTransactionManager;
+ private final PortMapping portMapping;
+ private final PortMappingVersion221 portMapping221;
- public OpenRoadmInterfacesImpl221(DeviceTransactionManager deviceTransactionManager) {
+ public OpenRoadmInterfacesImpl221(DeviceTransactionManager deviceTransactionManager,
+ PortMapping portMapping, PortMappingVersion221 portMapping221) {
this.deviceTransactionManager = deviceTransactionManager;
+ this.portMapping = portMapping;
+ this.portMapping221 = portMapping221;
}
public void postInterface(String nodeId, InterfaceBuilder ifBuilder) throws OpenRoadmInterfaceException {
deviceTx.merge(LogicalDatastoreType.CONFIGURATION, interfacesIID, ifBuilder.build());
FluentFuture<? extends @NonNull CommitInfo> txSubmitFuture =
deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT);
+ // TODO: instead of using this infinite loop coupled with this timeout,
+ // it would be better to use a notification mechanism from the device to be advertised
+ // that the new created interface is present in the device circuit-pack/port
+ final Thread current = Thread.currentThread();
+ Thread timer = new Thread() {
+ public void run() {
+ try {
+ Thread.sleep(3000);
+ current.interrupt();
+ } catch (InterruptedException e) {
+ LOG.error("Timeout before the new created interface appears on the deivce circuit-pack port", e);
+ }
+ }
+ };
try {
txSubmitFuture.get();
LOG.info("Successfully posted interface {} on node {}", ifBuilder.getName(), nodeId);
+ boolean devicePortIsUptodated = false;
+ while (!devicePortIsUptodated) {
+ devicePortIsUptodated = checkIfDevicePortIsUpdatedWithInterface(nodeId, ifBuilder);
+ }
+ LOG.info("{} - {} - interface {} updated on port {}", nodeId, ifBuilder.getSupportingCircuitPackName(),
+ ifBuilder.getName(), ifBuilder.getSupportingPort());
+ timer.interrupt();
} catch (InterruptedException | ExecutionException e) {
throw new OpenRoadmInterfaceException(String.format("Failed to post interface %s on node %s!", ifBuilder
.getName(), nodeId), e);
if (intf2Delete.getName().contains(StringConstants.CLIENT_TOKEN) || intf2Delete.getName().contains(
StringConstants.NETWORK_TOKEN)) {
postEquipmentState(nodeId, intf2Delete.getSupportingCircuitPackName(), false);
+ Mapping oldmapping = this.portMapping.getMapping(nodeId, intf2Delete.getSupportingCircuitPackName(),
+ intf2Delete.getSupportingPort());
+ this.portMapping.deleteMapping(nodeId, oldmapping.getLogicalConnectionPoint());
+ this.portMapping221.updateMapping(nodeId, oldmapping);
}
} else {
}
}
+ private boolean checkIfDevicePortIsUpdatedWithInterface(String nodeId, InterfaceBuilder ifBuilder) {
+ KeyedInstanceIdentifier<Ports, PortsKey> portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(CircuitPacks.class, new CircuitPacksKey(ifBuilder.getSupportingCircuitPackName()))
+ .child(Ports.class, new PortsKey(ifBuilder.getSupportingPort()));
+ Ports port = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL,
+ portIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT).get();
+ if (port.getInterfaces() == null) {
+ return false;
+ }
+ for (Interfaces interf : port.getInterfaces()) {
+ if (interf.getInterfaceName().equals(ifBuilder.getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
}
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransaction;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.pack.Ports;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.pack.PortsKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.packs.CircuitPacks;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.packs.CircuitPacksBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.packs.CircuitPacksKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.interfaces.grp.InterfaceBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.interfaces.grp.InterfaceKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.OrgOpenroadmDevice;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.port.Interfaces;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.States;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
deviceTx.merge(LogicalDatastoreType.CONFIGURATION, interfacesIID, ifBuilder.build());
FluentFuture<? extends @NonNull CommitInfo> txSubmitFuture =
deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT);
+ // TODO: instead of using this infinite loop coupled with this timeout,
+ // it would be better to use a notification mechanism from the device to be advertised
+ // that the new created interface is present in the device circuit-pack/port
+ final Thread current = Thread.currentThread();
+ Thread timer = new Thread() {
+ public void run() {
+ try {
+ Thread.sleep(3000);
+ current.interrupt();
+ } catch (InterruptedException e) {
+ LOG.error("Timeout before the new created interface appears on the deivce circuit-pack port", e);
+ }
+ }
+ };
try {
txSubmitFuture.get();
LOG.info("Successfully posted interface {} on node {}", ifBuilder.getName(), nodeId);
+ boolean devicePortIsUptodated = false;
+ while (!devicePortIsUptodated) {
+ devicePortIsUptodated = checkIfDevicePortIsUpdatedWithInterface(nodeId, ifBuilder);
+ }
+ LOG.info("{} - {} - interface {} updated on port {}", nodeId, ifBuilder.getSupportingCircuitPackName(),
+ ifBuilder.getName(), ifBuilder.getSupportingPort());
+ timer.interrupt();
} catch (InterruptedException | ExecutionException e) {
throw new OpenRoadmInterfaceException(String.format("Failed to post interface %s on node %s!", ifBuilder
.getName(), nodeId), e);
}
- public void deleteInterface(String nodeId, String interfaceName) throws OpenRoadmInterfaceException {
+ public synchronized void deleteInterface(String nodeId, String interfaceName) throws OpenRoadmInterfaceException {
LOG.info("deleting interface {} on device71 {}", interfaceName, nodeId);
Optional<Interface> intf2DeleteOpt;
try {
if (intf2DeleteOpt.isPresent()) {
Interface intf2Delete = intf2DeleteOpt.get();
// State admin state to out of service
- InterfaceBuilder ifBuilder = new InterfaceBuilder();
- ifBuilder.setName(intf2Delete.getName());
- ifBuilder.setType(intf2Delete.getType());
+ InterfaceBuilder ifBuilder = new InterfaceBuilder(intf2Delete);
ifBuilder.setAdministrativeState(AdminStates.OutOfService);
// post interface with updated admin state
try {
}
}
+ private boolean checkIfDevicePortIsUpdatedWithInterface(String nodeId, InterfaceBuilder ifBuilder) {
+ KeyedInstanceIdentifier<Ports, PortsKey> portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(CircuitPacks.class, new CircuitPacksKey(ifBuilder.getSupportingCircuitPackName()))
+ .child(Ports.class, new PortsKey(ifBuilder.getSupportingPort()));
+ Ports port = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL,
+ portIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT).get();
+ if (port.getInterfaces() == null) {
+ return false;
+ }
+ for (Interfaces interf : port.getInterfaces()) {
+ if (interf.getInterfaceName().equals(ifBuilder.getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
}
import java.util.Map;
import org.opendaylight.transportpce.common.StringConstants;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.PortQual;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
import org.opendaylight.yangtools.yang.common.Uint32;
<bean id="openRoadmInterfaces221" class="org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl221" >
<argument ref="deviceTransactionManager" />
+ <argument ref="portMapping" />
+ <argument ref="portMapping221" />
</bean>
<bean id="openRoadmInterfaces710" class="org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl710" >
<bean id="portMapping121" class="org.opendaylight.transportpce.common.mapping.PortMappingVersion121" >
<argument ref="dataBroker" />
<argument ref="deviceTransactionManager" />
- <argument ref="openRoadmInterfaces" />
</bean>
<bean id="portMapping221" class="org.opendaylight.transportpce.common.mapping.PortMappingVersion221" >
<argument ref="dataBroker" />
<argument ref="deviceTransactionManager" />
- <argument ref="openRoadmInterfaces" />
</bean>
<bean id="portMapping710" class="org.opendaylight.transportpce.common.mapping.PortMappingVersion710" >
<argument ref="dataBroker" />
<argument ref="deviceTransactionManager" />
- <argument ref="openRoadmInterfaces" />
</bean>
<bean id="requestProcessor" class="org.opendaylight.transportpce.common.network.RequestProcessor" scope="singleton" >
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
import org.opendaylight.transportpce.common.fixedflex.SpectrumInformation;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPorts;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPortsBuilder;
import java.util.Map;
import org.junit.Test;
import org.opendaylight.transportpce.common.ServiceRateConstant;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.ModulationFormat;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.converter.DataObjectConverter;
import org.opendaylight.transportpce.test.converter.JSONDataObjectConverter;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.test.DataStoreContext;
import org.opendaylight.transportpce.test.DataStoreContextImpl;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class PortMappingImplTest {
.getMapping("node", "logicalConnectionPoint"), mapping);
//test delete portmapping for existing node
- portMapping.deleteMappingData("node");
+ portMapping.deletePortMappingNode("node");
//test get portmapping that was deleted above and doesn't exist anymore
assertNull(portMapping.getMapping("node", "logicalConnectionPoint"));
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
-import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
-import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.transportpce.test.DataStoreContext;
import org.opendaylight.transportpce.test.DataStoreContextImpl;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.Port;
private static final Logger LOG = LoggerFactory.getLogger(PortMappingVersion121Test.class);
private static DataBroker dataBroker;
private static DeviceTransactionManager deviceTransactionManager;
- private static OpenRoadmInterfaces openRoadmInterfaces;
private static PortMappingVersion121 portMappingVersion121;
private Random ran = new Random();
DataStoreContext dataStoreContext = new DataStoreContextImpl();
dataBroker = dataStoreContext.getDataBroker();
deviceTransactionManager = mock(DeviceTransactionManager.class);
- openRoadmInterfaces = mock(OpenRoadmInterfaces.class);
- portMappingVersion121 = new PortMappingVersion121(dataBroker, deviceTransactionManager, openRoadmInterfaces);
+ portMappingVersion121 = new PortMappingVersion121(dataBroker, deviceTransactionManager);
}
@Test
.setType(OpticalTransport.class).build();
Interface ifc2 = new InterfaceBuilder().withKey(new InterfaceKey("ifc2"))
.setType(OpenROADMOpticalMultiplex.class).build();
- try {
- when(openRoadmInterfaces.getInterface("node", "i1")).thenReturn(Optional.of(ifc1));
- when(openRoadmInterfaces.getInterface("node", "i2")).thenReturn(Optional.of(ifc2));
- } catch (OpenRoadmInterfaceException e) {
- LOG.error("Failed to mock interafce.", e);
- fail();
- }
// test createMappingData with a node with 3 dgree + 3 srg + bidirectional & unidirectional ports
assertTrue("creating mappingdata for existed node returns true",
portMappingVersion121.createMappingData("node"));
- // verify 2 interfaces were processed
- try {
- verify(openRoadmInterfaces).getInterface("node", "i1");
- verify(openRoadmInterfaces).getInterface("node", "i2");
- } catch (OpenRoadmInterfaceException e) {
- LOG.error("Failed to read interface", e);
- fail();
- }
-
// assert all portmappings have been created for the roadm node
ReadTransaction rr = dataBroker.newReadOnlyTransaction();
InstanceIdentifier<Network> mappingIID = InstanceIdentifier.create(Network.class);
import static org.junit.Assert.assertNull;
import org.junit.Test;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.PortQual;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.transportpce.tapi.topology.TapiNetworkModelServiceImpl;
import org.opendaylight.transportpce.tapi.topology.TapiNetworkUtilsImpl;
import org.opendaylight.transportpce.tapi.topology.TapiPortMappingListener;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiListener;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
networkModelListenerImpl, servicehandler);
LOG.info("Creating tapi beans ...");
- R2RTapiLinkDiscovery tapilinkDiscoveryImpl = new R2RTapiLinkDiscovery(lightyServices.getBindingDataBroker(),
- deviceTransactionManager);
+ R2RTapiLinkDiscovery tapilinkDiscoveryImpl = new R2RTapiLinkDiscovery(networkTransaction,
+ deviceTransactionManager, tapiLink);
TapiRendererListenerImpl tapiRendererListenerImpl = new TapiRendererListenerImpl(lightyServices
.getBindingDataBroker());
TapiPceListenerImpl tapiPceListenerImpl = new TapiPceListenerImpl(lightyServices.getBindingDataBroker());
TapiServiceHandlerListenerImpl tapiServiceHandlerListener = new TapiServiceHandlerListenerImpl(lightyServices
.getBindingDataBroker());
TransportpceTapinetworkutilsService tapiNetworkutilsServiceImpl = new TapiNetworkUtilsImpl(
- networkTransaction);
+ networkTransaction, tapiLink);
TapiNetworkModelService tapiNetworkModelService = new TapiNetworkModelServiceImpl(
- tapilinkDiscoveryImpl, networkTransaction);
+ tapilinkDiscoveryImpl, networkTransaction, tapiLink);
TapiNetconfTopologyListener tapiNetConfTopologyListener =
new TapiNetconfTopologyListener(tapiNetworkModelService);
TapiPortMappingListener tapiPortMappingListener =
.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.$YangModuleInfoImpl
.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408
.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116
.$YangModuleInfoImpl.getInstance(),
import org.opendaylight.transportpce.networkmodel.service.FrequenciesService;
import org.opendaylight.transportpce.networkmodel.util.TpceNetwork;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.TransportpceServicehandlerListener;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
private static final Logger LOG = LoggerFactory.getLogger(NetworkModelProvider.class);
private static final InstanceIdentifier<Mapping> MAPPING_II = InstanceIdentifier.create(Network.class)
- .child(org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network
+ .child(org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network
.Nodes.class)
.child(Mapping.class);
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.networkmodel.util.TopologyUtils;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
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 java.util.List;
import java.util.Map;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
public class OtnTopoNode {
import java.util.LinkedList;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OtdrScanResult;
import java.util.LinkedList;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.CreateTechInfoNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OrgOpenroadmDeviceListener;
import java.util.List;
import java.util.Map;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.CreateTechInfoNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.OrgOpenroadmDeviceListener;
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
import org.slf4j.Logger;
package org.opendaylight.transportpce.networkmodel.service;
import java.util.List;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link;
import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev210511.OtnLinkType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus;
/**
* create new otn link in otn-topology.
*
- * @param nodeA
- * OpenROADM node ID for link termination point A
- * @param tpA
- * OpenROADM tp id on nodeA for link termination point A
- * @param nodeZ
- * OpenROADM node ID for link termination point Z
- * @param tpZ
- * OpenROADM tp id on nodeZ for link termination point Z
+ * @param notifLink
+ * Expressed by the means of a link, specifies the
+ * termination points of the otn link to create.
+ * @param suppLinks
+ * list of link-id supported the service (used when more than one supported link)
* @param linkType
* OtnLinkType, as OTU4, ODTU, etc
*/
- void createOtnLinks(String nodeA, String tpA, String nodeZ, String tpZ, OtnLinkType linkType);
+ void createOtnLinks(
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link
+ notifLink, List<String> suppLinks, OtnLinkType linkType);
/**
* delete otn links from otn-topology.
*
- * @param nodeA
- * OpenROADM node ID for link termination point A
- * @param tpA
- * OpenROADM tp id on nodeA for link termination point A
- * @param nodeZ
- * OpenROADM node ID for link termination point Z
- * @param tpZ
- * OpenROADM tp id on nodeZ for link termination point Z
+ * @param notifLink
+ * Expressed by the means of a link, specifies the
+ * termination points of the otn link to create.
+ * @param suppLinks
+ * list of link-id supported the service (used when more than one supported link)
* @param linkType
* OtnLinkType, as OTU4, ODTU, etc
*/
- void deleteOtnLinks(String nodeA, String tpA, String nodeZ, String tpZ, OtnLinkType linkType);
+ void deleteOtnLinks(
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link
+ notifLink, List<String> suppLinks, OtnLinkType linkType);
/**
* Update otn links from otn-topology.
* otu link.
*
* @param link
- * link containing termination points to be updated
+ * link containing termination points to be updated (used for use
+ * case with a single supported link)
+ * @param supportedLinks
+ * list of link-id supported the service (used for use case with
+ * several supported links)
* @param serviceRate
* Service rate may be 1G, 10G, 100G or 400G
* @param tribPortNb
* @param isDeletion
* True indicates if the low-order otn service must be deleted
*/
- void updateOtnLinks(Link link, Uint32 serviceRate, Short tribPortNb, Short minTribSoltNb, Short maxTribSoltNb,
- boolean isDeletion);
+ void updateOtnLinks(Link link, List<String> supportedLinks, Uint32 serviceRate, Short tribPortNb,
+ Short minTribSoltNb, Short maxTribSoltNb, boolean isDeletion);
/**
* Update otn links from otn-topology.
* For services using directly a high-order odu, updates bandwidth parameters
* of the direct parent otu link.
*
- * @param link
- * link containing termination points to be updated
* @param supportedLinks
- * list of link-id supported the service (used when more than one supported link)
+ * list of link-id supported the service (used for use case with
+ * several supported links)
* @param isDeletion
* True indicates if the low-order otn service must be deleted
*/
- void updateOtnLinks(Link link, List<String> supportedLinks, boolean isDeletion);
+ void updateOtnLinks(List<String> supportedLinks, boolean isDeletion);
}
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChanges;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChangesBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChangesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.TerminationPoint1;
}
LOG.info("deleteOpenROADMnode: {} version {}", nodeId, deviceVersion.getName());
- this.portMapping.deleteMappingData(nodeId);
+ this.portMapping.deletePortMappingNode(nodeId);
this.networkTransactionService.commit().get(1, TimeUnit.SECONDS);
LOG.info("all nodes and links deleted ! ");
}
@Override
- public void createOtnLinks(String nodeA, String tpA, String nodeZ, String tpZ, OtnLinkType linkType) {
+ public void createOtnLinks(
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link
+ notifLink, List<String> suppLinks, OtnLinkType linkType) {
+
TopologyShard otnTopologyShard;
switch (linkType) {
case OTU4:
case OTUC4:
- otnTopologyShard = OpenRoadmOtnTopology.createOtnLinks(nodeA, tpA, nodeZ, tpZ, linkType);
+ otnTopologyShard = OpenRoadmOtnTopology.createOtnLinks(notifLink, null, null, linkType);
break;
case ODTU4:
case ODUC4:
List<LinkId> linkIdList = new ArrayList<>();
- String prefix;
- if (OtnLinkType.ODTU4.equals(linkType)) {
- prefix = OtnLinkType.OTU4.getName();
- } else {
- prefix = OtnLinkType.OTUC4.getName();
+ if (suppLinks != null) {
+ suppLinks.forEach(lk -> linkIdList.add(new LinkId(lk)));
}
- linkIdList.add(LinkIdUtil.buildOtnLinkId(convertNetconfNodeIdToTopoNodeId(nodeA, tpA), tpA,
- convertNetconfNodeIdToTopoNodeId(nodeZ, tpZ), tpZ, prefix));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(convertNetconfNodeIdToTopoNodeId(nodeZ, tpZ), tpZ,
- convertNetconfNodeIdToTopoNodeId(nodeA, tpA), tpA, prefix));
List<Link> supportedOtu4links = getOtnLinks(linkIdList);
- List<TerminationPoint> tps = getOtnNodeTps(convertNetconfNodeIdToTopoNodeId(nodeA, tpA), tpA,
- convertNetconfNodeIdToTopoNodeId(nodeZ, tpZ), tpZ);
- otnTopologyShard = OpenRoadmOtnTopology.createOtnLinks(supportedOtu4links, tps, linkType);
+ String nodeTopoA = convertNetconfNodeIdToTopoNodeId(notifLink.getATermination().getNodeId(),
+ notifLink.getATermination().getTpId());
+ String nodeTopoZ = convertNetconfNodeIdToTopoNodeId(notifLink.getZTermination().getNodeId(),
+ notifLink.getZTermination().getTpId());
+ List<TerminationPoint> tps = getOtnNodeTps(nodeTopoA, notifLink.getATermination().getTpId(), nodeTopoZ,
+ notifLink.getZTermination().getTpId());
+ otnTopologyShard = OpenRoadmOtnTopology.createOtnLinks(notifLink, supportedOtu4links, tps, linkType);
break;
default:
LOG.error("unknown otn link type {}", linkType);
}
@Override
- public void deleteOtnLinks(String nodeA, String tpA, String nodeZ, String tpZ, OtnLinkType linkType) {
+ public void deleteOtnLinks(
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link
+ notifLink, List<String> suppLinks, OtnLinkType linkType) {
+
TopologyShard otnTopologyShard;
- String nodeTopoA = new StringBuilder(nodeA).append("-").append(tpA.split("-")[0]).toString();
- String nodeTopoZ = new StringBuilder(nodeZ).append("-").append(tpZ.split("-")[0]).toString();
+ String nodeTopoA = convertNetconfNodeIdToTopoNodeId(notifLink.getATermination().getNodeId(),
+ notifLink.getATermination().getTpId());
+ String nodeTopoZ = convertNetconfNodeIdToTopoNodeId(notifLink.getZTermination().getNodeId(),
+ notifLink.getZTermination().getTpId());
+ String tpA = notifLink.getATermination().getTpId();
+ String tpZ = notifLink.getZTermination().getTpId();
List<Link> otuLinks;
List<LinkId> linkIdList = new ArrayList<>();
- String prefix;
switch (linkType) {
case OTU4:
case OTUC4:
- if (OtnLinkType.OTU4.equals(linkType)) {
- prefix = OtnLinkType.OTU4.getName();
- } else {
- prefix = OtnLinkType.OTUC4.getName();
- }
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, prefix));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, prefix));
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, linkType.getName()));
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, linkType.getName()));
otuLinks = getOtnLinks(linkIdList);
if (checkLinks(otuLinks)) {
deleteLinks(otuLinks);
break;
case ODTU4:
case ODUC4:
- String prefix2;
- if (OtnLinkType.ODTU4.equals(linkType)) {
- prefix = OtnLinkType.ODTU4.getName();
- prefix2 = OtnLinkType.OTU4.getName();
- } else {
- prefix = OtnLinkType.ODUC4.getName();
- prefix2 = OtnLinkType.OTUC4.getName();
- }
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, prefix));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, prefix));
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, linkType.getName()));
+ linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, linkType.getName()));
List<Link> oduLinks = getOtnLinks(linkIdList);
List<TerminationPoint> tps = getOtnNodeTps(nodeTopoA, tpA, nodeTopoZ, tpZ);
if (checkLinks(oduLinks) && checkTerminationPoints(tps)) {
deleteLinks(oduLinks);
linkIdList.clear();
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, tpA, nodeTopoZ, tpZ, prefix2));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, tpZ, nodeTopoA, tpA, prefix2));
+ if (suppLinks != null) {
+ suppLinks.forEach(lk -> linkIdList.add(new LinkId(lk)));
+ }
otuLinks = getOtnLinks(linkIdList);
+
otnTopologyShard = OpenRoadmOtnTopology.deleteOtnLinks(otuLinks, tps, linkType);
} else {
LOG.error("Error deleting ODU4 links");
LOG.error("unknown otn link type {}", linkType);
otnTopologyShard = new TopologyShard(null, null);
}
+
if (otnTopologyShard.getLinks() != null) {
for (Link otnTopologyLink : otnTopologyShard.getLinks()) {
LOG.info("deleting and updating otn links {} in {}", otnTopologyLink.getLinkId().getValue(),
@Override
public void updateOtnLinks(
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link
- notifLink, Uint32 serviceRate, Short tribPortNb, Short minTribSoltNb, Short maxTribSlotNb,
- boolean isDeletion) {
+ notifLink, List<String> suppLinks, Uint32 serviceRate, Short tribPortNb, Short minTribSoltNb,
+ Short maxTribSlotNb, boolean isDeletion) {
- LinkTp atermination = new LinkTpBuilder()
- .setNodeId(notifLink.getATermination().getNodeId())
- .setTpId(notifLink.getATermination().getTpId())
- .build();
- LinkTp ztermination = new LinkTpBuilder()
- .setNodeId(notifLink.getZTermination().getNodeId())
- .setTpId(notifLink.getZTermination().getTpId())
- .build();
List<LinkTp> linkTerminations = new ArrayList<>();
- linkTerminations.add(atermination);
- linkTerminations.add(ztermination);
-
- List<Link> supportedOdu4Links = getSupportingOdu4Links(linkTerminations, serviceRate);
+ List<Link> supportedOdu4Links = null;
+ if (notifLink != null) {
+ // retreive termination-points to be updated
+ linkTerminations.add(new LinkTpBuilder()
+ .setNodeId(notifLink.getATermination().getNodeId())
+ .setTpId(notifLink.getATermination().getTpId())
+ .build());
+ linkTerminations.add(new LinkTpBuilder()
+ .setNodeId(notifLink.getZTermination().getNodeId())
+ .setTpId(notifLink.getZTermination().getTpId())
+ .build());
+ // retreive supported links
+ supportedOdu4Links = getSupportingOdu4Links(linkTerminations, serviceRate);
+ } else if (suppLinks != null) {
+ // retreive supported links
+ List<LinkId> linkIdList = new ArrayList<>();
+ if (suppLinks != null) {
+ suppLinks.forEach(lk -> linkIdList.add(new LinkId(lk)));
+ }
+ supportedOdu4Links = getOtnLinks(linkIdList);
+ // retreive termination-points to be updated
+ for (Link link : supportedOdu4Links) {
+ LinkTp atermination = new LinkTpBuilder()
+ .setNodeId(link.getSource().getSourceNode().getValue())
+ .setTpId(link.getSource().getSourceTp().getValue())
+ .build();
+ linkTerminations.add(atermination);
+ }
+ } else {
+ LOG.error("Impossible to update OTN links and their associated termination points in otn-topology");
+ return;
+ }
List<TerminationPoint> tps = getOtnNodeTps(linkTerminations);
TopologyShard otnTopologyShard;
otnTopologyShard = OpenRoadmOtnTopology.updateOtnLinks(supportedOdu4Links, tps, serviceRate, tribPortNb,
}
@Override
- public void updateOtnLinks(
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link
- notifLink, List<String> suppLinks, boolean isDeletion) {
-
+ public void updateOtnLinks(List<String> suppLinks, boolean isDeletion) {
List<LinkId> linkIdList = new ArrayList<>();
- if (notifLink != null) {
- String nodeTopoA = convertNetconfNodeIdToTopoNodeId(notifLink.getATermination().getNodeId(),
- notifLink.getATermination().getTpId());
- String nodeTopoZ = convertNetconfNodeIdToTopoNodeId(notifLink.getZTermination().getNodeId(),
- notifLink.getZTermination().getTpId());
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoA, notifLink.getATermination().getTpId(),
- nodeTopoZ, notifLink.getZTermination().getTpId(), OtnLinkType.OTU4.getName()));
- linkIdList.add(LinkIdUtil.buildOtnLinkId(nodeTopoZ, notifLink.getZTermination().getTpId(),
- nodeTopoA, notifLink.getATermination().getTpId(), OtnLinkType.OTU4.getName()));
- } else if (suppLinks != null) {
+ if (suppLinks != null) {
suppLinks.forEach(lk -> linkIdList.add(new LinkId(lk)));
- } else {
- LOG.error("Impossible to determine supported otn links without correct input data");
}
List<Link> supportedOtu4links = getOtnLinks(linkIdList);
List<TerminationPoint> tps = new ArrayList<>();
for (LinkTp linkTp : linkTerminations) {
String tp = linkTp.getTpId();
- String nodeId = new StringBuilder(linkTp.getNodeId()).append("-")
- .append(tp.split("-")[0]).toString();
+ String nodeId = formatNodeName(linkTp.getNodeId(), tp);
InstanceIdentifier<TerminationPoint> iiTp = InstanceIdentifier.builder(Networks.class)
.child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID)))
.child(Node.class, new NodeKey(new NodeId(nodeId)))
LOG.error("error getting node termination points from the datastore");
}
}
- if (tps.isEmpty()) {
- LOG.warn("returning null");
- return null;
- } else {
- LOG.info("returning tps = {}", tps.toString());
- return tps;
- }
+ return tps;
}
private void deleteLinks(List<Link> links) {
return new StringBuilder(nodeId).append("-").append(tpId.split("-")[0]).toString();
}
+ private static String formatNodeName(String nodeName, String tpName) {
+ return nodeName.contains("-XPDR")
+ ? nodeName
+ : new StringBuilder(nodeName).append("-").append(tpName.split("-")[0]).toString();
+ }
+
@SuppressFBWarnings(
value = "UPM_UNCALLED_PRIVATE_METHOD",
justification = "false positive, this method is used by public updateOpenRoadmNetworkTopology")
package org.opendaylight.transportpce.networkmodel.util;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev191129.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev191129.Node1Builder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
import com.google.common.collect.ImmutableMap;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.rev200529.Node1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.transportpce.common.NetworkUtils;
import org.opendaylight.transportpce.networkmodel.dto.OtnTopoNode;
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
return new TopologyShard(null, links);
}
+ public static TopologyShard createOtnLinks(
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp
+ .Link notifLink,
+ OtnLinkType linkType) {
+
+ return new TopologyShard(null, initialiseOtnLinks(notifLink.getATermination().getNodeId(),
+ notifLink.getATermination().getTpId(), notifLink.getZTermination().getNodeId(),
+ notifLink.getZTermination().getTpId(), linkType));
+ }
+
+ public static TopologyShard createOtnLinks(
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp
+ .Link notifLink,
+ List<Link> supportedOtu4links,
+ List<TerminationPoint> supportedTPs,
+ OtnLinkType linkType) {
+
+ List<Link> links;
+ switch (linkType) {
+ case OTU4:
+ case OTUC4:
+ links = initialiseOtnLinks(
+ notifLink.getATermination().getNodeId(), notifLink.getATermination().getTpId(),
+ notifLink.getZTermination().getNodeId(), notifLink.getZTermination().getTpId(), linkType);
+ return new TopologyShard(null, links);
+ case ODTU4:
+ case ODUC4:
+ links = initialiseOtnLinks(
+ notifLink.getATermination().getNodeId(), notifLink.getATermination().getTpId(),
+ notifLink.getZTermination().getNodeId(), notifLink.getZTermination().getTpId(), linkType);
+ links.addAll(updateOtnLinkBwParameters(supportedOtu4links, linkType));
+ List<TerminationPoint> updatedTPs = new ArrayList<>();
+ for (TerminationPoint tp : supportedTPs) {
+ updatedTPs.add(updateTp(tp, true, linkType));
+ }
+ return new TopologyShard(null, links, updatedTPs);
+ default:
+ return null;
+ }
+ }
+
public static TopologyShard createOtnLinks(List<Link> suppOtuLinks, List<TerminationPoint> oldTps,
OtnLinkType linkType) {
List<Link> links = new ArrayList<>();
for (TerminationPoint tp : oldTps) {
tps.add(updateTp(tp, false, linkType));
}
- if (links.size() == 2 && tps.size() == 2) {
+ if (!links.isEmpty() && !tps.isEmpty()) {
return new TopologyShard(null, links, tps);
} else {
return new TopologyShard(null, null, null);
return updatedLinkBldr.build();
}
+ private static List<Link> updateOtnLinkBwParameters(List<Link> supportedLinks, OtnLinkType linkType) {
+ LOG.debug("in updateOtnLinkBwParameters with supportedLinks = {}, linkType = {}", supportedLinks, linkType);
+ Uint32 usedBw;
+ switch (linkType) {
+ case ODTU4:
+ usedBw = Uint32.valueOf(100000);
+ break;
+ case ODUC4:
+ usedBw = Uint32.valueOf(400000);
+ break;
+ default:
+ usedBw = Uint32.valueOf(0);
+ break;
+ }
+ List<Link> updatedlinks = new ArrayList<>();
+ for (Link link : supportedLinks) {
+ LinkBuilder updatedLinkBldr = new LinkBuilder(link);
+ updatedLinkBldr.addAugmentation(new Link1Builder(link.augmentation(Link1.class))
+ .setAvailableBandwidth(Uint32.valueOf(0))
+ .setUsedBandwidth(usedBw)
+ .build());
+ updatedlinks.add(updatedLinkBldr.build());
+ }
+ return updatedlinks;
+ }
+
private static TerminationPoint updateTp(TerminationPoint originalTp, boolean addingTsTpnPoolTermination,
OtnLinkType linkType) {
LOG.debug("in updateTp");
.setSupportedInterfaceCapability(supIfMap)
.build();
otnTp1Bldr.setTpSupportedInterfaces(tpSupIf);
+ //TODO: It is not logical to assign a priori one of the possible rate to the TP.
+ //Would be worth assigning per default "unallocated" at the tp creation step,
+ //and updating it with correct rate when it supports a specific service.
if (withRate) {
- xtpcaBldr.setRate(fixRate(mapping.getSupportedInterfaceCapability().get(0)));
+ xtpcaBldr.setRate(fixRate(mapping.getSupportedInterfaceCapability()));
otnTp1Bldr.setXpdrTpPortConnectionAttributes(xtpcaBldr.build());
}
} else {
}
}
- private static Class<? extends OduRateIdentity> fixRate(Class<? extends
- SupportedIfCapability> ifCapType) {
- switch (ifCapType.getSimpleName()) {
- case "If100GEODU4":
- case "IfOCHOTU4ODU4":
- return ODU4.class;
- case "If1GEODU0":
- return ODU0.class;
- case "If10GEODU2":
- return ODU2.class;
- case "If10GEODU2e":
- return ODU2e.class;
- default:
- return null;
+ private static Class<? extends OduRateIdentity> fixRate(List<Class<? extends SupportedIfCapability>> list) {
+ Map<String, Class<? extends OduRateIdentity>> rateMap = Map.of(
+ "If100GEODU4", ODU4.class,
+ "IfOCHOTU4ODU4", ODU4.class,
+ "If1GEODU0", ODU0.class,
+ "If10GEODU2", ODU2.class,
+ "If10GEODU2e", ODU2e.class);
+ for (Class<? extends SupportedIfCapability> class1 : list) {
+ if (rateMap.containsKey(class1.getSimpleName())) {
+ return rateMap.get(class1.getSimpleName());
+ }
}
+ return null;
}
private static Map<SupportingNodeKey,SupportingNode> createSupportingNodes(OtnTopoNode node) {
import org.opendaylight.transportpce.common.fixedflex.GridUtils;
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.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.transportpce.common.NetworkUtils;
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.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.change.notification.Edit;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.change.notification.EditBuilder;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.change.notification.Edit;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.change.notification.EditBuilder;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.change.notification.Edit;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.change.notification.EditBuilder;
import static org.junit.Assert.assertNull;
import org.junit.Test;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev191129.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev191129.Node1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.junit.Ignore;
import org.junit.Test;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
import org.opendaylight.transportpce.networkmodel.util.test.JsonUtil;
import org.opendaylight.transportpce.networkmodel.util.test.NetworkmodelTestUtil;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev200327.xpdr.odu.switching.pools.OduSwitchingPools;
try (Reader reader = new FileReader("src/test/resources/portMapping.json", StandardCharsets.UTF_8);
JsonReader portMappingReader = new JsonReader(reader)) {
Network portMapping = (Network) JsonUtil.getInstance().getDataObjectFromJson(portMappingReader,
- QName.create("http://org/opendaylight/transportpce/portmapping", "2021-04-26", "network"));
+ QName.create("http://org/opendaylight/transportpce/portmapping", "2021-09-27", "network"));
for (Nodes nodes : portMapping.nonnullNodes().values()) {
if (nodes.getNodeId().equals("XPDR-A1")) {
this.portMappingTpdr = nodes;
.or(containsString(String.valueOf(If10GEODU2.class)))
.or(containsString(String.valueOf(If10GE.class))));
}
- assertThat("the rate should be ODU2 or ODU2e or 10GE",
+ assertThat("the rate should be ODU2 or ODU2e",
String.valueOf(tpList.get(2)
.augmentation(
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
import org.opendaylight.transportpce.networkmodel.util.test.NetworkmodelTestUtil;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1;
import java.util.List;
import java.util.Map;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.transportpce.olm.util.OlmUtils;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.Interface1;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.calculate.spanloss.base.output.Spans;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.calculate.spanloss.base.output.SpansBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
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.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
this.crossConnectImpl710 = new CrossConnectImpl710(deviceTransactionManager);
this.crossConnect = new CrossConnectImpl(deviceTransactionManager, this.mappingUtils, this.crossConnectImpl121,
this.crossConnectImpl22, this.crossConnectImpl710);
+ this.portMappingVersion710 = new PortMappingVersion710(getDataBroker(), deviceTransactionManager);
+ this.portMappingVersion22 = new PortMappingVersion221(getDataBroker(), deviceTransactionManager);
+ this.portMappingVersion121 = new PortMappingVersion121(getDataBroker(), deviceTransactionManager);
+ this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710,
+ this.portMappingVersion22, this.portMappingVersion121);
this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager);
- this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl221(deviceTransactionManager);
+ this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl221(deviceTransactionManager, this.portMapping,
+ this.portMappingVersion22);
this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager);
this.openRoadmInterfaces = new OpenRoadmInterfacesImpl((this.deviceTransactionManager),
this.mappingUtils,this.openRoadmInterfacesImpl121,this.openRoadmInterfacesImpl22,
this.openRoadmInterfacesImpl710);
- this.portMappingVersion710 =
- new PortMappingVersion710(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion22 =
- new PortMappingVersion221(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion121 =
- new PortMappingVersion121(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
- this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710,
- this.portMappingVersion22, this.portMappingVersion121);
this.portMapping = Mockito.spy(this.portMapping);
this.powerMgmt = new PowerMgmtImpl(getDataBroker(), this.openRoadmInterfaces, this.crossConnect,
this.deviceTransactionManager);
import org.opendaylight.transportpce.olm.util.OlmUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.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.device.rev170206.interfaces.grp.InterfaceBuilder;
this.crossConnectImpl22 = new CrossConnectImpl221(deviceTransactionManager);
this.crossConnect = new CrossConnectImpl(deviceTransactionManager, this.mappingUtils, this.crossConnectImpl121,
this.crossConnectImpl22, this.crossConnectImpl710);
+ this.portMappingVersion22 = new PortMappingVersion221(getDataBroker(), deviceTransactionManager);
+ this.portMappingVersion121 = new PortMappingVersion121(getDataBroker(), deviceTransactionManager);
+ this.portMappingVersion710 = new PortMappingVersion710(getDataBroker(), deviceTransactionManager);
+ this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710,
+ this.portMappingVersion22, this.portMappingVersion121);
this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager);
- this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl221(deviceTransactionManager);
+ this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl221(deviceTransactionManager, this.portMapping,
+ this.portMappingVersion22);
this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager);
this.openRoadmInterfaces = new OpenRoadmInterfacesImpl((this.deviceTransactionManager),
this.mappingUtils,this.openRoadmInterfacesImpl121,this.openRoadmInterfacesImpl22,
this.openRoadmInterfacesImpl710);
this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
- this.portMappingVersion22 =
- new PortMappingVersion221(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion121 =
- new PortMappingVersion121(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion710 =
- new PortMappingVersion710(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
- this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710,
- this.portMappingVersion22, this.portMappingVersion121);
this.portMapping = Mockito.spy(this.portMapping);
this.powerMgmt = new PowerMgmtImpl(getDataBroker(), this.openRoadmInterfaces, this.crossConnect,
this.deviceTransactionManager);
this.crossConnectImpl22 = new CrossConnectImpl221(deviceTransactionManager);
this.crossConnect = new CrossConnectImpl(deviceTransactionManager, this.mappingUtils, this.crossConnectImpl121,
this.crossConnectImpl22, this.crossConnectImpl710);
+ this.portMappingVersion22 = new PortMappingVersion221(dataBroker, deviceTransactionManager);
+ this.portMappingVersion121 = new PortMappingVersion121(dataBroker, deviceTransactionManager);
+ this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710,
+ this.portMappingVersion22, this.portMappingVersion121);
this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager);
- this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl221(deviceTransactionManager);
+ this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl221(deviceTransactionManager, this.portMapping,
+ this.portMappingVersion22);
this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager);
this.openRoadmInterfaces = new OpenRoadmInterfacesImpl((this.deviceTransactionManager),
this.mappingUtils,this.openRoadmInterfacesImpl121,this.openRoadmInterfacesImpl22,
this.openRoadmInterfacesImpl710);
this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
- this.portMappingVersion22 =
- new PortMappingVersion221(dataBroker, deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion121 =
- new PortMappingVersion121(dataBroker, deviceTransactionManager, this.openRoadmInterfaces);
- this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710,
- this.portMappingVersion22, this.portMappingVersion121);
this.portMapping = Mockito.spy(this.portMapping);
this.powerMgmt = new PowerMgmtImpl(this.dataBroker, this.openRoadmInterfaces, this.crossConnect,
this.deviceTransactionManager);
this.crossConnectImpl22 = new CrossConnectImpl221(deviceTransactionManager);
this.crossConnect = new CrossConnectImpl(deviceTransactionManager, this.mappingUtils, this.crossConnectImpl121,
this.crossConnectImpl22, this.crossConnectImpl710);
+ this.portMappingVersion22 = new PortMappingVersion221(dataBroker, deviceTransactionManager);
+ this.portMappingVersion121 = new PortMappingVersion121(dataBroker, deviceTransactionManager);
+ this.portMappingVersion710 = new PortMappingVersion710(dataBroker, deviceTransactionManager);
+ this.portMapping = new PortMappingImpl(dataBroker, this.portMappingVersion710,
+ this.portMappingVersion22, this.portMappingVersion121);
this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager);
- this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl221(deviceTransactionManager);
+ this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl221(deviceTransactionManager, this.portMapping,
+ this.portMappingVersion22);
this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager);
this.openRoadmInterfaces = new OpenRoadmInterfacesImpl((this.deviceTransactionManager),
this.mappingUtils,this.openRoadmInterfacesImpl121,this.openRoadmInterfacesImpl22,
this.openRoadmInterfacesImpl710);
- this.portMappingVersion22 =
- new PortMappingVersion221(dataBroker, deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion121 =
- new PortMappingVersion121(dataBroker, deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion710 =
- new PortMappingVersion710(dataBroker, deviceTransactionManager, this.openRoadmInterfaces);
- this.portMapping = new PortMappingImpl(dataBroker, this.portMappingVersion710,
- this.portMappingVersion22, this.portMappingVersion121);
this.portMapping = Mockito.spy(this.portMapping);
this.powerMgmt = new PowerMgmtImpl(this.dataBroker, this.openRoadmInterfaces, this.crossConnect,
this.deviceTransactionManager);
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.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Direction;
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.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
import org.opendaylight.transportpce.pce.PceComplianceCheck;
import org.opendaylight.transportpce.pce.constraints.PceConstraints;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mc.capabilities.McCapabilities;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.transportpce.common.fixedflex.GridConstant;
import org.opendaylight.transportpce.common.mapping.PortMapping;
import org.opendaylight.transportpce.pce.SortPortsByName;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
}
}
- if (((StringConstants.SERVICE_TYPE_ODU4.equals(this.otnServiceType)
- || StringConstants.SERVICE_TYPE_ODUC4.equals(this.otnServiceType)) && mode.equals("AZ"))
+ if ((StringConstants.SERVICE_TYPE_ODU4.equals(this.otnServiceType)
+ || StringConstants.SERVICE_TYPE_ODUC4.equals(this.otnServiceType))
|| ((StringConstants.SERVICE_TYPE_10GE.equals(this.otnServiceType)
|| StringConstants.SERVICE_TYPE_100GE_M.equals(this.otnServiceType)
|| StringConstants.SERVICE_TYPE_1GE.equals(this.otnServiceType))
import org.opendaylight.transportpce.pce.utils.PceTestData;
import org.opendaylight.transportpce.pce.utils.PceTestUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
@RunWith(MockitoJUnitRunner.class)
import org.opendaylight.transportpce.pce.utils.TransactionUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
//import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.fixedflex.GridUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1Builder;
import java.util.Map;
import java.util.Optional;
import java.util.TreeMap;
+import java.util.stream.Collectors;
import org.opendaylight.transportpce.common.NodeIdPair;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.fixedflex.GridConstant;
import org.opendaylight.transportpce.common.fixedflex.GridUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.Action;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInputBuilder;
+import org.opendaylight.transportpce.common.mapping.PortMappingUtils;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.Action;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutput;
optionalModulationFormat.get())));
}
}
- servicePathInputBuilder.setModulationFormat(atoZDirection.getModulationFormat());
+ servicePathInputBuilder.setModulationFormat(atoZDirection.getModulationFormat())
+ .setAEndApiInfo(createAendApiInfo(pathDescription, false))
+ .setZEndApiInfo(createZendApiInfo(pathDescription, false));
return new ServicePathInputData(servicePathInputBuilder.build(), nodeLists);
}
optionalModulationFormat.get())));
}
}
- servicePathInputBuilder.setModulationFormat(ztoADirection.getModulationFormat());
+ servicePathInputBuilder.setModulationFormat(ztoADirection.getModulationFormat())
+ .setAEndApiInfo(createAendApiInfo(pathDescription, false))
+ .setZEndApiInfo(createZendApiInfo(pathDescription, false));
return new ServicePathInputData(servicePathInputBuilder.build(), nodeLists);
}
.setOperation(operation)
.setServiceFormat(serviceFormat)
.setServiceRate(serviceRate)
- .setNodes(nodes);
+ .setNodes(nodes)
+ .setAEndApiInfo(createAendApiInfo(pathDescription, true))
+ .setZEndApiInfo(createZendApiInfo(pathDescription, true));
// set the trib-slots and trib-ports for the lower oder odu
if (serviceRate.intValue() == 1 || (serviceRate.intValue() == 10)) {
}
}
+ private static AEndApiInfo createAendApiInfo(PathDescription pathDescription, boolean isForOtn) {
+ String anodeId = null;
+ String sapi = null;
+ String dapi = null;
+ if (isForOtn) {
+ anodeId = extractAendFromPathDescriptionForOtn(pathDescription).get("nodeId");
+ sapi = PortMappingUtils.fnv1size64(
+ String.join("-", anodeId, extractAendFromPathDescriptionForOtn(pathDescription).get("tpid")));
+ dapi = PortMappingUtils.fnv1size64(
+ String.join("-", extractZendFromPathDescriptionForOtn(pathDescription).get("nodeId"),
+ extractZendFromPathDescriptionForOtn(pathDescription).get("tpid")));
+ } else {
+ anodeId = extractAendFromPathDescriptionForOptical(pathDescription).get("nodeId");
+ sapi = PortMappingUtils.fnv1size64(
+ String.join("-", anodeId, extractAendFromPathDescriptionForOptical(pathDescription).get("tpid")));
+ dapi = PortMappingUtils.fnv1size64(
+ String.join("-", extractZendFromPathDescriptionForOptical(pathDescription).get("nodeId"),
+ extractZendFromPathDescriptionForOptical(pathDescription).get("tpid")));
+ }
+ return new AEndApiInfoBuilder()
+ .setSapi(sapi)
+ .setExpectedDapi(sapi)
+ .setDapi(dapi)
+ .setExpectedSapi(dapi)
+ .setNodeId(anodeId)
+ .build();
+ }
- @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
- value = "PZLA_PREFER_ZERO_LENGTH_ARRAYS",
- justification = "not relevant to return a zero length array"
- + " as we need real pos")
- public static int[] findTheLongestSubstring(String s1, String s2) {
- if ((s1 == null) || (s2 == null)) {
- return null;
+ private static ZEndApiInfo createZendApiInfo(PathDescription pathDescription, boolean isForOtn) {
+ String znodeId = null;
+ String sapi = null;
+ String dapi = null;
+ if (isForOtn) {
+ znodeId = extractZendFromPathDescriptionForOtn(pathDescription).get("nodeId");
+ sapi = PortMappingUtils.fnv1size64(
+ String.join("-", znodeId, extractZendFromPathDescriptionForOtn(pathDescription).get("tpid")));
+ dapi = PortMappingUtils.fnv1size64(
+ String.join("-", extractAendFromPathDescriptionForOtn(pathDescription).get("nodeId"),
+ extractAendFromPathDescriptionForOtn(pathDescription).get("tpid")));
+ } else {
+ znodeId = extractZendFromPathDescriptionForOptical(pathDescription).get("nodeId");
+ sapi = PortMappingUtils.fnv1size64(
+ String.join("-", znodeId, extractZendFromPathDescriptionForOptical(pathDescription).get("tpid")));
+ dapi = PortMappingUtils.fnv1size64(
+ String.join("-", extractAendFromPathDescriptionForOptical(pathDescription).get("nodeId"),
+ extractAendFromPathDescriptionForOptical(pathDescription).get("tpid")));
}
- int[][] dp = new int[s1.length() + 1][s2.length() + 1];
- int maxLen = 0;
- int endPos = 0;
- for (int i = 1; i < dp.length; i++) {
- for (int j = 1; j < dp[0].length; j++) {
- char ch1 = s1.charAt(i - 1);
- char ch2 = s2.charAt(j - 1);
- if (ch1 == ch2) {
- dp[i][j] = dp[i - 1][j - 1] + 1;
- if (dp[i][j] >= maxLen) {
- maxLen = dp[i][j];
- endPos = i;
- }
- }
+ return new ZEndApiInfoBuilder()
+ .setSapi(sapi)
+ .setExpectedDapi(sapi)
+ .setDapi(dapi)
+ .setExpectedSapi(dapi)
+ .setNodeId(znodeId)
+ .build();
+ }
+
+ private static Map<String, String> extractAendFromPathDescriptionForOtn(PathDescription pathDescription) {
+ List<AToZ> tpList = pathDescription.getAToZDirection().getAToZ().values().stream()
+ .sorted((az1, az2) -> Integer.compare(Integer.parseInt(az1.getId()), Integer.parseInt(az2.getId())))
+ .filter(az -> TERMINATION_POINT.equals(az.getResource().getResource().implementedInterface()
+ .getSimpleName()))
+ .collect(Collectors.toList());
+ for (AToZ atoZ : tpList) {
+ TerminationPoint tp = (TerminationPoint) atoZ.getResource().getResource();
+ if (!tp.getTpId().isEmpty() && !tp.getTpNodeId().isEmpty()) {
+ String nodeId = tp.getTpNodeId();
+ String lcp = tp.getTpId();
+ return Map.of("nodeId", nodeId, "tpid", lcp);
+ }
+ }
+ return null;
+ }
+
+ private static Map<String, String> extractZendFromPathDescriptionForOtn(PathDescription pathDescription) {
+ List<ZToA> tpList = pathDescription.getZToADirection().getZToA().values().stream()
+ .sorted((az1, az2) -> Integer.compare(Integer.parseInt(az1.getId()), Integer.parseInt(az2.getId())))
+ .filter(az -> TERMINATION_POINT.equals(az.getResource().getResource().implementedInterface()
+ .getSimpleName()))
+ .collect(Collectors.toList());
+ for (ZToA ztoA : tpList) {
+ TerminationPoint tp = (TerminationPoint) ztoA.getResource().getResource();
+ if (!tp.getTpId().isEmpty() && !tp.getTpNodeId().isEmpty()) {
+ String nodeId = tp.getTpNodeId();
+ String lcp = tp.getTpId();
+ return Map.of("nodeId", nodeId, "tpid", lcp);
}
}
- return new int[] { endPos - maxLen, endPos };
+ return null;
}
+ private static Map<String, String> extractAendFromPathDescriptionForOptical(PathDescription pathDescription) {
+ List<AToZ> tpList = pathDescription.getAToZDirection().getAToZ().values().stream()
+ .sorted((az1, az2) -> Integer.compare(Integer.parseInt(az1.getId()), Integer.parseInt(az2.getId())))
+ .filter(az -> TERMINATION_POINT.equals(az.getResource().getResource().implementedInterface()
+ .getSimpleName()))
+ .collect(Collectors.toList());
+ for (AToZ atoZ : tpList) {
+ TerminationPoint tp = (TerminationPoint) atoZ.getResource().getResource();
+ if (!tp.getTpId().contains("CLIENT") && !tp.getTpId().isEmpty() && !tp.getTpNodeId().isEmpty()) {
+// String nodeId = tp.getTpNodeId();
+// String lcp = tp.getTpId();
+ return Map.of("nodeId", tp.getTpNodeId(), "tpid", tp.getTpId());
+ }
+ }
+ return null;
+ }
+
+ private static Map<String, String> extractZendFromPathDescriptionForOptical(PathDescription pathDescription) {
+ List<ZToA> tpList = pathDescription.getZToADirection().getZToA().values().stream()
+ .sorted((az1, az2) -> Integer.compare(Integer.parseInt(az1.getId()), Integer.parseInt(az2.getId())))
+ .filter(az -> TERMINATION_POINT.equals(az.getResource().getResource().implementedInterface()
+ .getSimpleName()))
+ .collect(Collectors.toList());
+ for (ZToA ztoA : tpList) {
+ TerminationPoint tp = (TerminationPoint) ztoA.getResource().getResource();
+ if (!tp.getTpId().contains("CLIENT") && !tp.getTpId().isEmpty() && !tp.getTpNodeId().isEmpty()) {
+// String nodeId = tp.getTpNodeId();
+// String lcp = tp.getTpId();
+ return Map.of("nodeId", tp.getTpNodeId(), "tpid", tp.getTpId());
+ }
+ }
+ return null;
+ }
}
import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
import org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl;
import org.opendaylight.transportpce.renderer.rpcs.TransportPCEServicePathRPCImpl;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.TransportpceDeviceRendererService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.TransportpceDeviceRendererService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererService;
import org.opendaylight.yangtools.concepts.ObjectRegistration;
import org.slf4j.Logger;
*/
package org.opendaylight.transportpce.renderer;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
public class ServicePathInputData {
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.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.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.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceKey;
// Post interface on the device
this.openRoadmInterfaces.postInterface(nodeId, otuInterfaceBldr);
+ this.portMapping.updateMapping(nodeId, portMap);
return otuInterfaceBldr.getName();
}
*
* @param nodeId node ID
* @param logicalConnPoint logical Connection Point
- * @param supportingOtuInterface supporting OTU Interface
*
* @return Name of the interface if successful, otherwise return null.
* @throws OpenRoadmInterfaceException OpenRoadmInterfaceException
*/
- public String createOpenRoadmOdu4Interface(String nodeId, String logicalConnPoint, String supportingOtuInterface)
+ public String createOpenRoadmOdu4Interface(String nodeId, String logicalConnPoint)
throws OpenRoadmInterfaceException {
Mapping portMap = this.portMapping.getMapping(nodeId, logicalConnPoint);
if (portMap == null) {
}
InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(portMap, OtnOdu.class, logicalConnPoint
+ "-ODU");
- oduInterfaceBldr.setSupportingInterface(supportingOtuInterface);
+ if (portMap.getSupportingOtu4() != null) {
+ oduInterfaceBldr.setSupportingInterface(portMap.getSupportingOtu4());
+ }
// ODU interface specific data
// Set Opu attributes
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.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.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.ModulationFormat;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.ODU4;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.ODUCTP;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.ODUTTP;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.ODUTTPCTP;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.OTU4;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.OduFunctionIdentity;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.PayloadTypeDef;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.OduAttributes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.OduAttributes.MonitoringMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.odu.container.OduBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.opu.Opu;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.opu.OpuBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.OtuAttributes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.otu.container.OtuBuilder;
public String createOpenRoadmEthInterface(String nodeId, String logicalConnPoint)
throws OpenRoadmInterfaceException {
- Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
- if (portMap == null) {
+ Mapping mapping = portMapping.getMapping(nodeId, logicalConnPoint);
+ if (mapping == null) {
throw new OpenRoadmInterfaceException(
String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
}
.setFec(EthAttributes.Fec.Off)
.setSpeed(Uint32.valueOf(100000));
- InterfaceBuilder ethInterfaceBldr = createGenericInterfaceBuilder(portMap, EthernetCsmacd.class,
+ InterfaceBuilder ethInterfaceBldr = createGenericInterfaceBuilder(mapping, EthernetCsmacd.class,
logicalConnPoint + "-ETHERNET");
// Create Interface1 type object required for adding as augmentation
Interface1Builder ethIf1Builder = new Interface1Builder();
openRoadmInterfaces.postInterface(nodeId, ethInterfaceBldr);
// Post the equipment-state change on the device circuit-pack
- openRoadmInterfaces.postEquipmentState(nodeId, portMap.getSupportingCircuitPackName(), true);
-
+ openRoadmInterfaces.postEquipmentState(nodeId, mapping.getSupportingCircuitPackName(), true);
+ this.portMapping.updateMapping(nodeId, mapping);
return ethInterfaceBldr.getName();
}
return ochInterfaceBldr.getName();
}
- public String createOpenRoadmOdu4HOInterface(String nodeId, String logicalConnPoint, boolean isNetworkPort,
- String supportingInterface) throws OpenRoadmInterfaceException {
+ public String createOpenRoadmOdu4HOInterface(String nodeId, String logicalConnPoint, boolean isCTP,
+ AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ, String payloadType) throws OpenRoadmInterfaceException {
Mapping mapping = portMapping.getMapping(nodeId, logicalConnPoint);
if (mapping == null) {
throw new OpenRoadmInterfaceException(
}
InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(mapping, OtnOdu.class,
logicalConnPoint + "-ODU4");
- if (supportingInterface != null) {
- oduInterfaceBldr.setSupportingInterface(supportingInterface);
+ if (mapping.getSupportingOtu4() != null) {
+ oduInterfaceBldr.setSupportingInterface(mapping.getSupportingOtu4());
+ }
+ if (mapping.getSupportingEthernet() != null) {
+ oduInterfaceBldr.setSupportingInterface(mapping.getSupportingEthernet());
}
-
// ODU interface specific data
Class<? extends OduFunctionIdentity> oduFunction;
MonitoringMode monitoringMode;
- if (isNetworkPort) {
+ Opu opu = null;
+ if (isCTP) {
oduFunction = ODUCTP.class;
monitoringMode = MonitoringMode.Monitored;
} else {
- oduFunction = ODUTTPCTP.class;
+ oduFunction = ODUTTP.class;
monitoringMode = MonitoringMode.Terminated;
+ opu = new OpuBuilder()
+ .setPayloadType(PayloadTypeDef.getDefaultInstance(payloadType))
+ .setExpPayloadType(PayloadTypeDef.getDefaultInstance(payloadType))
+ .build();
+ }
+ OduBuilder oduIfBuilder = new OduBuilder()
+ .setRate(ODU4.class)
+ .setOduFunction(oduFunction)
+ .setMonitoringMode(monitoringMode)
+ .setOpu(opu);
+ if (apiInfoA != null) {
+ oduIfBuilder.setTxSapi(apiInfoA.getSapi())
+ .setTxDapi(apiInfoA.getDapi())
+ .setExpectedSapi(apiInfoA.getExpectedSapi())
+ .setExpectedDapi(apiInfoA.getExpectedDapi());
+ }
+ if (apiInfoZ != null) {
+ oduIfBuilder.setTxSapi(apiInfoZ.getSapi())
+ .setTxDapi(apiInfoZ.getDapi())
+ .setExpectedSapi(apiInfoZ.getExpectedSapi())
+ .setExpectedDapi(apiInfoZ.getExpectedDapi());
}
// Create Interface1 type object required for adding as augmentation
// TODO look at imports of different versions of class
oduInterfaceBldr.addAugmentation(
new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1Builder()
- .setOdu(new OduBuilder()
- .setRate(ODU4.class)
- .setOduFunction(oduFunction)
- .setMonitoringMode(monitoringMode)
- .setOpu(
- new OpuBuilder()
- .setPayloadType(PayloadTypeDef.getDefaultInstance("07"))
- .setExpPayloadType(PayloadTypeDef.getDefaultInstance("07")).build()).build())
+ .setOdu(oduIfBuilder.build())
.build());
// Post interface on the device
openRoadmInterfaces.postInterface(nodeId, oduInterfaceBldr);
+ if (!isCTP) {
+ LOG.info("{}-{} updating mapping with interface {}", nodeId, logicalConnPoint, oduInterfaceBldr.getName());
+ this.portMapping.updateMapping(nodeId, mapping);
+ }
return oduInterfaceBldr.getName();
}
return oduInterfaceBldr.getName();
}
- public String createOpenRoadmOtu4Interface(String nodeId, String logicalConnPoint, String supportOchInterface)
- throws OpenRoadmInterfaceException {
- Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
- if (portMap == null) {
+ public String createOpenRoadmOtu4Interface(String nodeId, String logicalConnPoint, String supportOchInterface,
+ AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ) throws OpenRoadmInterfaceException {
+
+ Mapping mapping = this.portMapping.getMapping(nodeId, logicalConnPoint);
+ if (mapping == null) {
throw new OpenRoadmInterfaceException(
- String.format("Unable to get mapping from PortMapping for node %s and logical connection port %s",
- nodeId, logicalConnPoint));
+ String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
}
- // Create generic interface
- InterfaceBuilder otuInterfaceBldr = createGenericInterfaceBuilder(portMap, OtnOtu.class,
+ InterfaceBuilder otuInterfaceBldr = createGenericInterfaceBuilder(mapping, OtnOtu.class,
logicalConnPoint + "-OTU");
otuInterfaceBldr.setSupportingInterface(supportOchInterface);
// OTU interface specific data
- OtuBuilder otuIfBuilder = new OtuBuilder();
- otuIfBuilder.setFec(OtuAttributes.Fec.Scfec);
- otuIfBuilder.setRate(OTU4.class);
+ OtuBuilder otuIfBuilder = new OtuBuilder()
+ .setFec(OtuAttributes.Fec.Scfec)
+ .setRate(OTU4.class);
+ if (apiInfoA != null) {
+ otuIfBuilder.setTxSapi(apiInfoA.getSapi())
+ .setTxDapi(apiInfoA.getDapi())
+ .setExpectedSapi(apiInfoA.getExpectedSapi())
+ .setExpectedDapi(apiInfoA.getExpectedDapi());
+ }
+ if (apiInfoZ != null) {
+ otuIfBuilder.setTxSapi(apiInfoZ.getSapi())
+ .setTxDapi(apiInfoZ.getDapi())
+ .setExpectedSapi(apiInfoZ.getExpectedSapi())
+ .setExpectedDapi(apiInfoZ.getExpectedDapi());
+ }
// Create Interface1 type object required for adding as augmentation
// TODO look at imports of different versions of class
// Post interface on the device
openRoadmInterfaces.postInterface(nodeId, otuInterfaceBldr);
+ this.portMapping.updateMapping(nodeId, mapping);
return otuInterfaceBldr.getName();
}
- public String createOpenRoadmOtu4Interface(String anodeId, String alogicalConnPoint, String asupportOchInterface,
- String znodeId, String zlogicalConnPoint)
- throws OpenRoadmInterfaceException {
- Mapping portMapA = portMapping.getMapping(anodeId, alogicalConnPoint);
- Mapping portMapZ = portMapping.getMapping(znodeId, zlogicalConnPoint);
- if (portMapA == null) {
- throw new OpenRoadmInterfaceException(
- String.format("Unable to get mapping from PortMapping for node %s and logical connection port %s ",
- anodeId, alogicalConnPoint));
- }
- // On the Zside
- if (portMapZ == null) {
- throw new OpenRoadmInterfaceException(
- String.format("Unable to get mapping from PortMapping for node %s and logical connection port %s ",
- znodeId, zlogicalConnPoint));
-
- }
- // Create generic interface builder
- InterfaceBuilder otuInterfaceBldr = createGenericInterfaceBuilder(portMapA, OtnOtu.class,
- alogicalConnPoint + "-OTU");
-
- // Set the supporting interface data
- otuInterfaceBldr.setSupportingInterface(asupportOchInterface);
-
- // OTU interface specific data
- OtuBuilder otuIfBuilder = new OtuBuilder()
- .setFec(OtuAttributes.Fec.Scfec)
- .setRate(OTU4.class)
- .setTxSapi(portMapA.getLcpHashVal())
- .setTxDapi(portMapZ.getLcpHashVal())
- // setting expected SAPI and DAPI values
- .setExpectedDapi(portMapA.getLcpHashVal())
- .setExpectedSapi(portMapZ.getLcpHashVal());
-
- org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.Interface1Builder otuIf1Builder =
- new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.Interface1Builder();
-
- otuInterfaceBldr.addAugmentation(otuIf1Builder.setOtu(otuIfBuilder.build()).build());
-
- // Post interface on the device
- openRoadmInterfaces.postInterface(anodeId, otuInterfaceBldr);
- return otuInterfaceBldr.getName();
-
- }
-
public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotName) {
return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotName);
}
// Post interface on the device
openRoadmInterfaces.postInterface(nodeId, oduInterfaceBldr);
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- LOG.error("Error waiting post interface on device", e);
- }
this.portMapping.updateMapping(nodeId, portMap);
return oduInterfaceBldr.getName();
}
// Post interface on the device
openRoadmInterfaces.postInterface(anodeId, oduInterfaceBldr);
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- LOG.error("Error waiting post interface on device", e);
- }
this.portMapping.updateMapping(anodeId, portMapA);
return oduInterfaceBldr.getName();
}
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.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.TrailTraceOther.TimDetectMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.parent.odu.allocation.ParentOduAllocationBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.parent.odu.allocation.parent.odu.allocation.trib.slots.choice.OpucnBuilder;
}
public String createOpenRoadmOtucnInterface(String nodeId, String logicalConnPoint,
- String supportingOtsiGroupInterface)
+ String supportingOtsiGroupInterface, AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ)
throws OpenRoadmInterfaceException {
- Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
- if (portMap == null) {
+ Mapping mapping = portMapping.getMapping(nodeId, logicalConnPoint);
+ if (mapping == null) {
throw new OpenRoadmInterfaceException(
String.format(MAPPING_ERROR_EXCEPTION_MESSAGE,
nodeId, logicalConnPoint));
.setDegmIntervals(Uint8.valueOf(2))
.setDegthrPercentage(Uint16.valueOf(100))
.setMaintLoopback(maintLoopbackBuilder.build());
-
- InterfaceBuilder otuInterfaceBuilder = createGenericInterfaceBuilder(portMap, OtnOtu.class,
- logicalConnPoint + "-OTUC4");
-
- // Create a list
- List<String> listSupportingOtsiGroupInterface = new ArrayList<>();
- listSupportingOtsiGroupInterface.add(supportingOtsiGroupInterface);
-
- otuInterfaceBuilder.setSupportingInterfaceList(listSupportingOtsiGroupInterface);
- org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev200529.Interface1Builder otuIf1Builder =
- new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev200529.Interface1Builder();
-
- otuInterfaceBuilder.addAugmentation(otuIf1Builder.setOtu(otuBuilder.build()).build());
-
- // Post interface on the device
- openRoadmInterfaces.postInterface(nodeId, otuInterfaceBuilder);
-
- // Post the equipment-state change on the device circuit-pack if xpdr node
- if (portMap.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN)) {
- this.openRoadmInterfaces.postEquipmentState(nodeId, portMap.getSupportingCircuitPackName(), true);
- }
-
- return otuInterfaceBuilder.getName();
-
- }
-
- // Adding method to have SAPI/DAPI information for the OTUCn
- public String createOpenRoadmOtucnInterface(String anodeId, String alogicalConnPoint,
- String supportingOtsiGroupInterface, String znodeId, String zlogicalConnPoint)
- throws OpenRoadmInterfaceException {
- Mapping portMapA = portMapping.getMapping(anodeId, alogicalConnPoint);
- Mapping portMapZ = portMapping.getMapping(znodeId, zlogicalConnPoint);
- if (portMapA == null) {
- throw new OpenRoadmInterfaceException(
- String.format(MAPPING_ERROR_EXCEPTION_MESSAGE,
- anodeId, alogicalConnPoint));
+ if (apiInfoA != null) {
+ otuBuilder.setTxSapi(apiInfoA.getSapi())
+ .setTxDapi(apiInfoA.getDapi())
+ .setExpectedSapi(apiInfoA.getExpectedSapi())
+ .setExpectedDapi(apiInfoA.getExpectedDapi());
}
- // On the Zside
- if (portMapZ == null) {
- throw new OpenRoadmInterfaceException(
- String.format(MAPPING_ERROR_EXCEPTION_MESSAGE,
- znodeId, zlogicalConnPoint));
-
+ if (apiInfoZ != null) {
+ otuBuilder.setTxSapi(apiInfoZ.getSapi())
+ .setTxDapi(apiInfoZ.getDapi())
+ .setExpectedSapi(apiInfoZ.getExpectedSapi())
+ .setExpectedDapi(apiInfoZ.getExpectedDapi());
}
- // Create an OTUCn object
- MaintLoopbackBuilder maintLoopbackBuilder = new MaintLoopbackBuilder();
- maintLoopbackBuilder.setEnabled(false);
- OtuBuilder otuBuilder = new OtuBuilder()
- .setRate(OTUCn.class)
- .setOtucnNRate(Uint16.valueOf(4))
- .setTimActEnabled(false)
- .setTimDetectMode(TimDetectMode.Disabled)
- .setDegmIntervals(Uint8.valueOf(2))
- .setDegthrPercentage(Uint16.valueOf(100))
- .setMaintLoopback(maintLoopbackBuilder.build())
- .setTxSapi(portMapA.getLcpHashVal())
- .setTxDapi(portMapZ.getLcpHashVal())
- // setting expected SAPI and DAPI values
- .setExpectedDapi(portMapA.getLcpHashVal())
- .setExpectedSapi(portMapZ.getLcpHashVal());
- InterfaceBuilder otuInterfaceBuilder = createGenericInterfaceBuilder(portMapA, OtnOtu.class,
- alogicalConnPoint + "-OTUC4");
+ InterfaceBuilder otuInterfaceBuilder = createGenericInterfaceBuilder(mapping, OtnOtu.class,
+ logicalConnPoint + "-OTUC4");
// Create a list
List<String> listSupportingOtsiGroupInterface = new ArrayList<>();
otuInterfaceBuilder.addAugmentation(otuIf1Builder.setOtu(otuBuilder.build()).build());
// Post interface on the device
- openRoadmInterfaces.postInterface(anodeId, otuInterfaceBuilder);
-
+ openRoadmInterfaces.postInterface(nodeId, otuInterfaceBuilder);
// Post the equipment-state change on the device circuit-pack if xpdr node
- if (portMapA.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN)) {
- this.openRoadmInterfaces.postEquipmentState(anodeId, portMapA.getSupportingCircuitPackName(), true);
+ if (mapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN)) {
+ this.openRoadmInterfaces.postEquipmentState(nodeId, mapping.getSupportingCircuitPackName(), true);
}
-
+ this.portMapping.updateMapping(nodeId, mapping);
return otuInterfaceBuilder.getName();
-
}
- public String createOpenRoadmOducnInterface(String nodeId, String logicalConnPoint,
- String supportingOtucn)
+ public String createOpenRoadmOducnInterface(String nodeId, String logicalConnPoint)
throws OpenRoadmInterfaceException {
- Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
- if (portMap == null) {
+ Mapping mapping = portMapping.getMapping(nodeId, logicalConnPoint);
+ if (mapping == null) {
throw new OpenRoadmInterfaceException(
String.format(MAPPING_ERROR_EXCEPTION_MESSAGE,
nodeId, logicalConnPoint));
.setOpu(opuBuilder.build())
.setMaintTestsignal(maintTestsignal.build());
- InterfaceBuilder oduInterfaceBuilder = createGenericInterfaceBuilder(portMap, OtnOdu.class,
- logicalConnPoint + ODUC4);
+ InterfaceBuilder oduInterfaceBuilder = createGenericInterfaceBuilder(mapping, OtnOdu.class,
+ logicalConnPoint + "-ODUC4");
// Create a list
List<String> listSupportingOtucnInterface = new ArrayList<>();
- listSupportingOtucnInterface.add(supportingOtucn);
+ if (mapping.getSupportingOtuc4() != null) {
+ listSupportingOtucnInterface.add(mapping.getSupportingOtuc4());
+ }
oduInterfaceBuilder.setSupportingInterfaceList(listSupportingOtucnInterface);
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev200529.Interface1Builder oduIf1Builder =
openRoadmInterfaces.postInterface(nodeId, oduInterfaceBuilder);
// Post the equipment-state change on the device circuit-pack if xpdr node
- if (portMap.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN)) {
- this.openRoadmInterfaces.postEquipmentState(nodeId, portMap.getSupportingCircuitPackName(), true);
+ if (mapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN)) {
+ this.openRoadmInterfaces.postEquipmentState(nodeId, mapping.getSupportingCircuitPackName(), true);
}
return oduInterfaceBuilder.getName();
import org.opendaylight.transportpce.common.fixedflex.SpectrumInformation;
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.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.OpucnTribSlotDef;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
*
* @param nodeId node ID
* @param logicalConnPoint logical connection point
- * @param supportingOtuInterface supporting OTU interface
+ * @param isCTP to distinguish with a TTP odu interface
+ * @param apiInfoA sapi and dapi for A end of the service
+ * @param apiInfoZ sapi and dapi for Z end of the service
+ * @param payloadType payload type of the opu when terminated
* @return Name of the interface if successful, otherwise return null.
* @throws OpenRoadmInterfaceException OpenRoadm interface exception
*/
- public String createOpenRoadmOdu4Interface(String nodeId, String logicalConnPoint, String supportingOtuInterface)
+ public String createOpenRoadmOdu4HOInterface(String nodeId, String logicalConnPoint, boolean isCTP,
+ AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ, String payloadType)
throws OpenRoadmInterfaceException {
- switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
- case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
- return openRoadmInterface121.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint,
- supportingOtuInterface);
- case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmInterface221.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint,
- supportingOtuInterface);
- case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
- // Here ODUCn and ODUflex are combined
- String interfaceNameOduc4 = openRoadmInterface710.createOpenRoadmOducnInterface(nodeId,
- logicalConnPoint, supportingOtuInterface);
- return openRoadmInterface710.createOpenRoadmOduflexInterface(nodeId, logicalConnPoint,
- interfaceNameOduc4);
- default:
- return null;
- }
- }
-
- /**
- * This methods creates an ODU interface on the given termination point.
- *
- * @param anodeId node ID for A side
- * @param alogicalConnPoint logical connection point for A side
- * @param asupportingOtuInterface supporting OTU interface
- * @param znodeId node ID for Z side
- * @param zlogicalConnPoint logical connection point for Z side
- * @return Name of the interface if successful, otherwise return null.
- * @throws OpenRoadmInterfaceException OpenRoadm interface exception
- */
-
- public String createOpenRoadmOdu4Interface(String anodeId, String alogicalConnPoint, String asupportingOtuInterface,
- String znodeId, String zlogicalConnPoint)
- throws OpenRoadmInterfaceException {
- switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
- case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
- return openRoadmInterface121.createOpenRoadmOdu4Interface(anodeId, alogicalConnPoint,
- asupportingOtuInterface);
- case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmInterface221.createOpenRoadmOdu4Interface(anodeId, alogicalConnPoint,
- asupportingOtuInterface, znodeId, zlogicalConnPoint);
- case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
- // Here ODUCn and ODUflex are combined
- String interfaceNameOduc4 = openRoadmInterface710.createOpenRoadmOducnInterface(anodeId,
- alogicalConnPoint, asupportingOtuInterface, znodeId, zlogicalConnPoint);
- return openRoadmInterface710.createOpenRoadmOduflexInterface(anodeId, alogicalConnPoint,
- interfaceNameOduc4, znodeId, zlogicalConnPoint);
- default:
- return null;
- }
- }
- /**
- * This methods creates an ODU interface on the given termination point.
- *
- * @param nodeId node ID
- * @param logicalConnPoint logical connection point
- * @param isNetworkPort to distinguish a CTP from a TTP
- * @param supportingInterface supporting OTU4 or 100GE interface
- * @return Name of the interface if successful, otherwise return null.
- * @throws OpenRoadmInterfaceException OpenRoadm interface exception
- */
-
- public String createOpenRoadmOdu4HOInterface(String nodeId, String logicalConnPoint, boolean isNetworkPort,
- String supportingInterface) throws OpenRoadmInterfaceException {
switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
- LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
- return null;
+ return openRoadmInterface121.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint);
case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmInterface221.createOpenRoadmOdu4HOInterface(nodeId, logicalConnPoint, isNetworkPort,
- supportingInterface);
+ return openRoadmInterface221.createOpenRoadmOdu4HOInterface(nodeId, logicalConnPoint, isCTP,
+ apiInfoA, apiInfoZ, payloadType);
+ case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
+ return openRoadmInterface710.createOpenRoadmOducnInterface(nodeId, logicalConnPoint);
default:
return null;
}
* @param nodeId node ID
* @param logicalConnPoint logical connection point
* @param supportOchInterface supporting OCH interface
+ * @param apiInfoA sapi and dapi for A end of the service
+ * @param apiInfoZ sapi and dapi for Z end of the service
* @return Name of the interface if successful, otherwise return null.
* @throws OpenRoadmInterfaceException OpenRoadm interface exception
*/
- public String createOpenRoadmOtu4Interface(String nodeId, String logicalConnPoint, String supportOchInterface)
+ public String createOpenRoadmOtu4Interface(String nodeId, String logicalConnPoint, String supportOchInterface,
+ AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ)
throws OpenRoadmInterfaceException {
+
switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
return openRoadmInterface121
.createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportOchInterface);
case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmInterface221
- .createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportOchInterface);
+ return openRoadmInterface221.createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportOchInterface,
+ apiInfoA, apiInfoZ);
case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
return openRoadmInterface710.createOpenRoadmOtucnInterface(nodeId, logicalConnPoint,
- supportOchInterface);
+ supportOchInterface, apiInfoA, apiInfoZ);
default:
return null;
}
}
- /**
- * This methods creates an OTU interface on the given termination point.
- *
- * @param anodeId node ID for A side
- * @param alogicalConnPoint logical connection point for A side
- * @param asupportOchInterface supporting OCH interface
- * @param znodeId node ID for the Z side
- * @param zlogicalConnPoint logical connection point for Z side
- * @return Name of the interface if successful, otherwise return null.
- *
- * @throws OpenRoadmInterfaceException OpenRoadm interface exception
- */
-
- public String createOpenRoadmOtu4Interface(String anodeId, String alogicalConnPoint, String asupportOchInterface,
- String znodeId, String zlogicalConnPoint)
- throws OpenRoadmInterfaceException {
- switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
- case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
- return openRoadmInterface121.createOpenRoadmOtu4Interface(anodeId,
- alogicalConnPoint, asupportOchInterface);
- case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmInterface221.createOpenRoadmOtu4Interface(anodeId, alogicalConnPoint,
- asupportOchInterface, znodeId, zlogicalConnPoint);
- case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
- return openRoadmInterface710.createOpenRoadmOtucnInterface(anodeId, alogicalConnPoint,
- asupportOchInterface, znodeId, zlogicalConnPoint);
- default:
- return null;
- }
- }
public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotNumber) {
return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotNumber);
}
}
- public String createOpenRoadmEth1GInterface(String nodeId,
- String logicalConnPoint) throws OpenRoadmInterfaceException {
+ public String createOpenRoadmEth1GInterface(String nodeId,String logicalConnPoint)
+ throws OpenRoadmInterfaceException {
+
switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
}
}
- public String createOpenRoadmEth10GInterface(String nodeId,
- String logicalConnPoint) throws OpenRoadmInterfaceException {
+ public String createOpenRoadmEth10GInterface(String nodeId, String logicalConnPoint)
+ throws OpenRoadmInterfaceException {
+
switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
default:
return null;
}
-
}
- public String createOpenRoadmEth100GInterface(String nodeId,
- String logicalConnPoint) throws OpenRoadmInterfaceException {
+ public String createOpenRoadmEth100GInterface(String nodeId, String logicalConnPoint)
+ throws OpenRoadmInterfaceException {
switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
default:
return null;
}
-
}
public String createOpenRoadmOdu0Interface(String nodeId, String logicalConnPoint, String servicename,
- String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlot)
+ boolean isCTP, int tribPortNumber, int tribSlotIndex, AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ,
+ String payLoadType)
throws OpenRoadmInterfaceException {
+
switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
return null;
case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmOtnInterface221.createOpenRoadmOdu0Interface(
- nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlot);
+ return openRoadmOtnInterface221.createOpenRoadmOdu0Interface(nodeId, logicalConnPoint, servicename,
+ isCTP, tribPortNumber, tribSlotIndex, apiInfoA, apiInfoZ, payLoadType);
default:
return null;
}
}
public String createOpenRoadmOdu2Interface(String nodeId, String logicalConnPoint, String servicename,
- String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlotIndex)
+ boolean isCTP, int tribPortNumber, int tribSlotIndex, AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ,
+ String payLoadType)
throws OpenRoadmInterfaceException {
switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
return null;
case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmOtnInterface221.createOpenRoadmOdu2Interface(
- nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlotIndex);
+ return openRoadmOtnInterface221.createOpenRoadmOdu2Interface(nodeId, logicalConnPoint, servicename,
+ isCTP, tribPortNumber, tribSlotIndex, apiInfoA, apiInfoZ, payLoadType);
default:
return null;
}
}
public String createOpenRoadmOdu2eInterface(String nodeId, String logicalConnPoint, String servicename,
- String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlotIndex)
+ boolean isCTP, int tribPortNumber, int tribSlotIndex, AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ,
+ String payLoadType)
throws OpenRoadmInterfaceException {
+
switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
return null;
case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmOtnInterface221.createOpenRoadmOdu2eInterface(
- nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlotIndex);
+ return openRoadmOtnInterface221.createOpenRoadmOdu2eInterface(nodeId, logicalConnPoint, servicename,
+ isCTP, tribPortNumber, tribSlotIndex, apiInfoA, apiInfoZ, payLoadType);
default:
return null;
}
-
}
public String createOpenRoadmOtnOdu4LoInterface(String nodeId, String logicalConnPoint,
}
}
- public String createOpenRoadmOtnOdu4Interface(String nodeId, String logicalConnPoint, String supportingOtuInterface)
- throws OpenRoadmInterfaceException {
- switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
- case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
- return openRoadmInterface221
- .createOpenRoadmOtnOdu4Interface(nodeId, logicalConnPoint, supportingOtuInterface);
- default:
- return null;
- }
- }
public String createOpenRoadmOtnOdu4Interface(String anodeId, String alogicalConnPoint,
String asupportingOtuInterface, String znodeId, String zlogicalConnPoint)
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.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev171215.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.ODU2e;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.ODUCTP;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.ODUTTPCTP;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.OduFunctionIdentity;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev171215.PayloadTypeDef;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.OduAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.OduAttributes.MonitoringMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.odu.container.OduBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.opu.Opu;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.opu.OpuBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.parent.odu.allocation.ParentOduAllocation;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.parent.odu.allocation.ParentOduAllocationBuilder;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.opendaylight.yangtools.yang.common.Uint32;
public class OpenRoadmOtnInterface221 {
+ private static final String MAPPING_ERROR_EXCEPTION_MESSAGE =
+ "Unable to get mapping from PortMapping for node % and logical connection port %s";
private final PortMapping portMapping;
private final OpenRoadmInterfaces openRoadmInterfaces;
private static final Logger LOG = LoggerFactory
return ethernetInterfaceName;
}
- public String createOpenRoadmOdu2eInterface(String nodeId,
- String logicalConnPoint, String serviceName, String payLoad,
- boolean isNetworkPort, int tribPortNumber, int tribSlotIndex)
- throws OpenRoadmInterfaceException {
- Mapping portMap = this.portMapping.getMapping(nodeId, logicalConnPoint);
- if (portMap == null) {
- throwException(nodeId, logicalConnPoint);
- }
- String supportingInterface = null;
+ public String createOpenRoadmOdu2eInterface(String nodeId, String logicalConnPoint, String serviceName,
+ boolean isCTP, int tribPortNumber, int tribSlotIndex, AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ,
+ String payloadType) throws OpenRoadmInterfaceException {
- if (isNetworkPort) {
- supportingInterface = portMap.getSupportingOdu4();
- } else {
- supportingInterface = logicalConnPoint + "-ETHERNET10G";
- }
-
- if (supportingInterface == null) {
+ Mapping mapping = this.portMapping.getMapping(nodeId, logicalConnPoint);
+ if (mapping == null) {
throw new OpenRoadmInterfaceException(
- "Interface Creation failed because of missing supported "
- + "ODU4 on network end or Ethernet on client");
+ String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
+ }
+ InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(mapping, OtnOdu.class,
+ logicalConnPoint + "-ODU2e-" + serviceName);
+ if (mapping.getSupportingOdu4() != null) {
+ oduInterfaceBldr.setSupportingInterface(mapping.getSupportingOdu4());
+ }
+ if (mapping.getSupportingEthernet() != null) {
+ oduInterfaceBldr.setSupportingInterface(mapping.getSupportingEthernet());
}
- InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(
- portMap, OtnOdu.class,
- logicalConnPoint + "-ODU2e-" + serviceName)
- .setSupportingInterface(supportingInterface);
-
- // ODU interface specific data
- OduBuilder oduIfBuilder = new OduBuilder().setRate(ODU2e.class)
- .setOduFunction(ODUTTPCTP.class)
- .setMonitoringMode(OduAttributes.MonitoringMode.Terminated);
- LOG.debug("Inside the ODU2e creation {} {} {}", isNetworkPort,
- tribPortNumber, tribSlotIndex);
- if (isNetworkPort) {
+ Class<? extends OduFunctionIdentity> oduFunction;
+ MonitoringMode monitoringMode;
+ Opu opu = null;
+ ParentOduAllocation parentOduAllocation = null;
+ if (isCTP) {
+ oduFunction = ODUCTP.class;
+ monitoringMode = MonitoringMode.Monitored;
List<Uint16> tribSlots = new ArrayList<>();
Uint16 newIdx = Uint16.valueOf(tribSlotIndex);
tribSlots.add(newIdx);
IntStream.range(tribSlotIndex, tribSlotIndex + 8)
.forEach(nbr -> tribSlots.add(Uint16.valueOf(nbr)));
- ParentOduAllocationBuilder parentOduAllocationBuilder = new ParentOduAllocationBuilder()
+ parentOduAllocation = new ParentOduAllocationBuilder()
.setTribPortNumber(Uint16.valueOf(tribPortNumber))
- .setTribSlots(tribSlots);
- oduIfBuilder.setOduFunction(ODUCTP.class)
- .setMonitoringMode(OduAttributes.MonitoringMode.Monitored)
- .setParentOduAllocation(parentOduAllocationBuilder.build());
+ .setTribSlots(tribSlots)
+ .build();
} else {
- // Set Opu attributes
- OpuBuilder opuBldr = new OpuBuilder()
- .setPayloadType(new PayloadTypeDef(payLoad))
- .setExpPayloadType(new PayloadTypeDef(payLoad));
- oduIfBuilder.setOpu(opuBldr.build());
+ oduFunction = ODUTTPCTP.class;
+ monitoringMode = MonitoringMode.Terminated;
+ opu = new OpuBuilder()
+ .setPayloadType(PayloadTypeDef.getDefaultInstance(payloadType))
+ .setExpPayloadType(PayloadTypeDef.getDefaultInstance(payloadType))
+ .build();
+ }
+ OduBuilder oduIfBuilder = new OduBuilder()
+ .setRate(ODU2e.class)
+ .setOduFunction(oduFunction)
+ .setMonitoringMode(monitoringMode)
+ .setOpu(opu)
+ .setParentOduAllocation(parentOduAllocation);
+ if (apiInfoA != null) {
+ oduIfBuilder.setTxSapi(apiInfoA.getSapi())
+ .setTxDapi(apiInfoA.getDapi())
+ .setExpectedSapi(apiInfoA.getExpectedSapi())
+ .setExpectedDapi(apiInfoA.getExpectedDapi());
+ }
+ if (apiInfoZ != null) {
+ oduIfBuilder.setTxSapi(apiInfoZ.getSapi())
+ .setTxDapi(apiInfoZ.getDapi())
+ .setExpectedSapi(apiInfoZ.getExpectedSapi())
+ .setExpectedDapi(apiInfoZ.getExpectedDapi());
}
// Create Interface1 type object required for adding as augmentation
// TODO look at imports of different versions of class
// Post interface on the device
this.openRoadmInterfaces.postOTNInterface(nodeId, oduInterfaceBldr);
- LOG.info("returning the ODU2e inteface {}", oduInterfaceBldr.getName());
+ if (!isCTP) {
+ LOG.info("{}-{} updating mapping with interface {}", nodeId, logicalConnPoint, oduInterfaceBldr.getName());
+ this.portMapping.updateMapping(nodeId, mapping);
+ }
return oduInterfaceBldr.getName();
}
- public String createOpenRoadmOdu0Interface(String nodeId,
- String logicalConnPoint, String serviceName, String payLoad,
- boolean isNetworkPort, int tribPortNumber, int tribSlot)
- throws OpenRoadmInterfaceException {
- Mapping portMap = this.portMapping.getMapping(nodeId, logicalConnPoint);
- String supportingInterface = null;
+ public String createOpenRoadmOdu0Interface(String nodeId, String logicalConnPoint, String serviceName,
+ boolean isCTP, int tribPortNumber, int tribSlotIndex, AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ,
+ String payloadType) throws OpenRoadmInterfaceException {
- if (isNetworkPort) {
- supportingInterface = portMap.getSupportingOdu4();
- } else {
- supportingInterface = logicalConnPoint + "-ETHERNET1G";
+ Mapping mapping = this.portMapping.getMapping(nodeId, logicalConnPoint);
+ if (mapping == null) {
+ throw new OpenRoadmInterfaceException(
+ String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
}
- if (portMap == null) {
- throwException(nodeId, logicalConnPoint);
+ InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(mapping, OtnOdu.class,
+ logicalConnPoint + "-ODU0-" + serviceName);
+ if (mapping.getSupportingOdu4() != null) {
+ oduInterfaceBldr.setSupportingInterface(mapping.getSupportingOdu4());
+ }
+ if (mapping.getSupportingEthernet() != null) {
+ oduInterfaceBldr.setSupportingInterface(mapping.getSupportingEthernet());
}
- InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(
- portMap, OtnOdu.class,
- logicalConnPoint + "-ODU0-" + serviceName);
- oduInterfaceBldr.setSupportingInterface(supportingInterface);
- // ODU interface specific data
- OduBuilder oduIfBuilder = new OduBuilder().setRate(ODU0.class)
- .setOduFunction(ODUTTPCTP.class)
- .setMonitoringMode(OduAttributes.MonitoringMode.Terminated);
- if (isNetworkPort) {
- LOG.debug("Network port is true");
+ Class<? extends OduFunctionIdentity> oduFunction;
+ MonitoringMode monitoringMode;
+ Opu opu = null;
+ ParentOduAllocation parentOduAllocation = null;
+ if (isCTP) {
+ oduFunction = ODUCTP.class;
+ monitoringMode = MonitoringMode.Monitored;
List<Uint16> tribSlots = new ArrayList<>();
- // add trib slots
- tribSlots.add(Uint16.valueOf(tribSlot));
- ParentOduAllocationBuilder parentOduAllocationBuilder = new ParentOduAllocationBuilder()
- // set trib port numbers
+ Uint16 newIdx = Uint16.valueOf(tribSlotIndex);
+ tribSlots.add(newIdx);
+ IntStream.range(tribSlotIndex, tribSlotIndex + 8)
+ .forEach(nbr -> tribSlots.add(Uint16.valueOf(nbr)));
+ parentOduAllocation = new ParentOduAllocationBuilder()
.setTribPortNumber(Uint16.valueOf(tribPortNumber))
- .setTribSlots(tribSlots);
- oduIfBuilder.setOduFunction(ODUCTP.class)
- .setMonitoringMode(OduAttributes.MonitoringMode.Monitored)
- .setParentOduAllocation(parentOduAllocationBuilder.build());
- LOG.debug("Network port is true {} {} {}",
- oduIfBuilder.getParentOduAllocation().getTribSlots(),
- oduIfBuilder.getRate(),
- oduIfBuilder.getParentOduAllocation().getTribPortNumber());
+ .setTribSlots(tribSlots)
+ .build();
} else {
- LOG.debug("Current port is a client port");
- OpuBuilder opuBldr = new OpuBuilder()
- .setPayloadType(new PayloadTypeDef(payLoad))
- .setExpPayloadType(new PayloadTypeDef(payLoad));
- oduIfBuilder.setOpu(opuBldr.build());
+ oduFunction = ODUTTPCTP.class;
+ monitoringMode = MonitoringMode.Terminated;
+ opu = new OpuBuilder()
+ .setPayloadType(PayloadTypeDef.getDefaultInstance(payloadType))
+ .setExpPayloadType(PayloadTypeDef.getDefaultInstance(payloadType))
+ .build();
+ }
+ OduBuilder oduIfBuilder = new OduBuilder()
+ .setRate(ODU0.class)
+ .setOduFunction(oduFunction)
+ .setMonitoringMode(monitoringMode)
+ .setOpu(opu)
+ .setParentOduAllocation(parentOduAllocation);
+ if (apiInfoA != null) {
+ oduIfBuilder.setTxSapi(apiInfoA.getSapi())
+ .setTxDapi(apiInfoA.getDapi())
+ .setExpectedSapi(apiInfoA.getExpectedSapi())
+ .setExpectedDapi(apiInfoA.getExpectedDapi());
+ }
+ if (apiInfoZ != null) {
+ oduIfBuilder.setTxSapi(apiInfoZ.getSapi())
+ .setTxDapi(apiInfoZ.getDapi())
+ .setExpectedSapi(apiInfoZ.getExpectedSapi())
+ .setExpectedDapi(apiInfoZ.getExpectedDapi());
}
// Create Interface1 type object required for adding as augmentation
// TODO look at imports of different versions of class
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1Builder
oduIf1Builder = new
- org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1Builder();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1Builder();
oduInterfaceBldr.addAugmentation(oduIf1Builder.setOdu(oduIfBuilder.build()).build());
// Post interface on the device
this.openRoadmInterfaces.postOTNInterface(nodeId, oduInterfaceBldr);
- LOG.info("returning the ODU0 inteface {}", oduInterfaceBldr.getName());
+ if (!isCTP) {
+ LOG.info("{}-{} updating mapping with interface {}", nodeId, logicalConnPoint, oduInterfaceBldr.getName());
+ this.portMapping.updateMapping(nodeId, mapping);
+ }
return oduInterfaceBldr.getName();
}
- public String createOpenRoadmOdu2Interface(String nodeId,
- String logicalConnPoint, String serviceName, String payLoad,
- boolean isNetworkPort, int tribPortNumber, int tribSlotIndex)
- throws OpenRoadmInterfaceException {
- Mapping portMap = this.portMapping.getMapping(nodeId, logicalConnPoint);
- String supportingInterface = null;
+ public String createOpenRoadmOdu2Interface(String nodeId, String logicalConnPoint, String serviceName,
+ boolean isCTP, int tribPortNumber, int tribSlotIndex, AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ,
+ String payloadType) throws OpenRoadmInterfaceException {
- if (portMap != null) {
- if (isNetworkPort) {
- supportingInterface = portMap.getSupportingOdu4();
- } else {
- supportingInterface = portMap.getSupportingEthernet();
- }
- } else {
- throwException(nodeId, logicalConnPoint);
+ Mapping mapping = this.portMapping.getMapping(nodeId, logicalConnPoint);
+ if (mapping == null) {
+ throw new OpenRoadmInterfaceException(
+ String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
+ }
+ InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(mapping, OtnOdu.class,
+ logicalConnPoint + "-ODU2-" + serviceName);
+ if (mapping.getSupportingOdu4() != null) {
+ oduInterfaceBldr.setSupportingInterface(mapping.getSupportingOdu4());
+ }
+ if (mapping.getSupportingEthernet() != null) {
+ oduInterfaceBldr.setSupportingInterface(mapping.getSupportingEthernet());
}
- InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(
- portMap, OtnOdu.class,
- logicalConnPoint + "-ODU2-" + serviceName)
- .setSupportingInterface(supportingInterface);
- OduBuilder oduIfBuilder = new OduBuilder().setRate(ODU2.class)
- .setOduFunction(ODUTTPCTP.class)
- .setMonitoringMode(OduAttributes.MonitoringMode.Terminated);
- if (isNetworkPort) {
+ Class<? extends OduFunctionIdentity> oduFunction;
+ MonitoringMode monitoringMode;
+ Opu opu = null;
+ ParentOduAllocation parentOduAllocation = null;
+ if (isCTP) {
+ oduFunction = ODUCTP.class;
+ monitoringMode = MonitoringMode.Monitored;
List<Uint16> tribSlots = new ArrayList<>();
+ Uint16 newIdx = Uint16.valueOf(tribSlotIndex);
+ tribSlots.add(newIdx);
IntStream.range(tribSlotIndex, tribSlotIndex + 8)
.forEach(nbr -> tribSlots.add(Uint16.valueOf(nbr)));
- ParentOduAllocationBuilder parentOduAllocationBuilder = new ParentOduAllocationBuilder()
- // set trib port numbers
+ parentOduAllocation = new ParentOduAllocationBuilder()
.setTribPortNumber(Uint16.valueOf(tribPortNumber))
- .setTribSlots(tribSlots);
- oduIfBuilder.setOduFunction(ODUCTP.class)
- .setMonitoringMode(OduAttributes.MonitoringMode.Monitored)
- .setParentOduAllocation(parentOduAllocationBuilder.build());
+ .setTribSlots(tribSlots)
+ .build();
} else {
- // Set Opu attributes
- OpuBuilder opuBldr = new OpuBuilder()
- .setPayloadType(new PayloadTypeDef(payLoad))
- .setExpPayloadType(new PayloadTypeDef(payLoad));
- oduIfBuilder.setOpu(opuBldr.build());
+ oduFunction = ODUTTPCTP.class;
+ monitoringMode = MonitoringMode.Terminated;
+ opu = new OpuBuilder()
+ .setPayloadType(PayloadTypeDef.getDefaultInstance(payloadType))
+ .setExpPayloadType(PayloadTypeDef.getDefaultInstance(payloadType))
+ .build();
+ }
+ OduBuilder oduIfBuilder = new OduBuilder()
+ .setRate(ODU2.class)
+ .setOduFunction(oduFunction)
+ .setMonitoringMode(monitoringMode)
+ .setOpu(opu)
+ .setParentOduAllocation(parentOduAllocation);
+ if (apiInfoA != null) {
+ oduIfBuilder.setTxSapi(apiInfoA.getSapi())
+ .setTxDapi(apiInfoA.getDapi())
+ .setExpectedSapi(apiInfoA.getExpectedSapi())
+ .setExpectedDapi(apiInfoA.getExpectedDapi());
+ }
+ if (apiInfoZ != null) {
+ oduIfBuilder.setTxSapi(apiInfoZ.getSapi())
+ .setTxDapi(apiInfoZ.getDapi())
+ .setExpectedSapi(apiInfoZ.getExpectedSapi())
+ .setExpectedDapi(apiInfoZ.getExpectedDapi());
}
-
- // Create Interface1 type object required for adding as augmentation
- // TODO look at imports of different versions of class
// Create Interface1 type object required for adding as augmentation
// TODO look at imports of different versions of class
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1Builder
// Post interface on the device
this.openRoadmInterfaces.postOTNInterface(nodeId, oduInterfaceBldr);
- LOG.info("returning the ODU2 inteface {}", oduInterfaceBldr.getName());
+ if (!isCTP) {
+ LOG.info("{}-{} updating mapping with interface {}", nodeId, logicalConnPoint, oduInterfaceBldr.getName());
+ this.portMapping.updateMapping(nodeId, mapping);
+ }
return oduInterfaceBldr.getName();
}
}
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.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.parent.odu.allocation.ParentOduAllocationBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.parent.odu.allocation.parent.odu.allocation.trib.slots.choice.OpucnBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev200529.Off;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.renderer.provisiondevice.servicepath.ServicePathDirection;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutput;
public interface DeviceRendererService {
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.device.renderer.rev210618.CreateOtsOmsInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.renderer.rollback.output.FailedToRollback;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.renderer.rollback.output.FailedToRollbackBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.renderer.rollback.output.FailedToRollbackKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.renderer.rollback.output.FailedToRollback;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.renderer.rollback.output.FailedToRollbackBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.renderer.rollback.output.FailedToRollbackKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.Topology;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
public class DeviceRendererServiceImpl implements DeviceRendererService {
private static final String IS_NOT_MOUNTED_ON_THE_CONTROLLER = " is not mounted on the controller";
private static final Logger LOG = LoggerFactory.getLogger(DeviceRendererServiceImpl.class);
+ private static final String PT_07 = "07";
private final DataBroker dataBroker;
private final DeviceTransactionManager deviceTransactionManager;
private final OpenRoadmInterfaceFactory openRoadmInterfaceFactory;
// take the index of the node
int nodeIndex = nodes.indexOf(node);
LOG.info("Starting provisioning for node : {}", nodeId);
+ AEndApiInfo apiInfoA = null;
+ ZEndApiInfo apiInfoZ = null;
+ if (input.getAEndApiInfo() != null && input.getAEndApiInfo().getNodeId().contains(nodeId)) {
+ apiInfoA = input.getAEndApiInfo();
+ }
+ if (input.getZEndApiInfo() != null && input.getZEndApiInfo().getNodeId().contains(nodeId)) {
+ apiInfoZ = input.getZEndApiInfo();
+ }
List<String> createdEthInterfaces = new ArrayList<>();
List<String> createdOtuInterfaces = new ArrayList<>();
List<String> createdOduInterfaces = new ArrayList<>();
String supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface(
nodeId, destTp, spectrumInformation);
createdOchInterfaces.add(supportingOchInterface);
- // Here we pass logical connection-point of z-end to set SAPI and DAPI
- Nodes tgtNode =
- nodeIndex + 1 == nodes.size()
- // For the end node, tgtNode becomes the first node in the list
- ? nodes.get(0)
- : nodes.get(nodeIndex + 1);
- // tgtNode srcTp is null in this last cond
String supportingOtuInterface = this.openRoadmInterfaceFactory.createOpenRoadmOtu4Interface(
- nodeId, destTp, supportingOchInterface, tgtNode.getNodeId(), tgtNode.getDestTp());
+ nodeId, destTp, supportingOchInterface, apiInfoA, apiInfoZ);
createdOtuInterfaces.add(supportingOtuInterface);
if (srcTp == null) {
otnLinkTps.add(new LinkTpBuilder().setNodeId(nodeId).setTpId(destTp).build());
} else {
- createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4Interface(nodeId,
- destTp, supportingOtuInterface));
+ createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(
+ nodeId, destTp, false, apiInfoA, apiInfoZ, PT_07));
}
}
if ((srcTp != null) && srcTp.contains(StringConstants.CLIENT_TOKEN)) {
nodeId, srcTp, spectrumInformation);
createdOchInterfaces.add(supportingOchInterface);
String supportingOtuInterface = this.openRoadmInterfaceFactory.createOpenRoadmOtu4Interface(
- nodeId, srcTp, supportingOchInterface);
+ nodeId, srcTp, supportingOchInterface, apiInfoA, apiInfoZ);
createdOtuInterfaces.add(supportingOtuInterface);
- createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4Interface(
- nodeId, srcTp, supportingOtuInterface));
- Mapping mapping = this.portMapping.getMapping(nodeId,srcTp);
- createdOduInterfaces.add(
- mapping != null
- && mapping.getXponderType() != null
- && (mapping.getXponderType().getIntValue() == 3
- || mapping.getXponderType().getIntValue() == 2)
- ? this.openRoadmInterfaceFactory.createOpenRoadmOtnOdu4Interface(
- nodeId, destTp, supportingOtuInterface)
- : this.openRoadmInterfaceFactory.createOpenRoadmOdu4Interface(
- nodeId, destTp, supportingOtuInterface));
+ if (destTp == null) {
+ otnLinkTps.add(new LinkTpBuilder().setNodeId(nodeId).setTpId(srcTp).build());
+ } else {
+ createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(
+ nodeId, srcTp, false, apiInfoA, apiInfoZ, PT_07));
+ }
}
if ((destTp != null) && destTp.contains(StringConstants.CLIENT_TOKEN)) {
LOG.info("Adding supporting EThernet interface for node {}, dest tp {}", nodeId, destTp);
*/
package org.opendaylight.transportpce.renderer.provisiondevice;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathOutput;
public interface OtnDeviceRendererService {
OtnServicePathOutput setupOtnServicePath(OtnServicePathInput input, String serviceType);
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.Collectors;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.OpucnTribSlotDef;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTpBuilder;
}
break;
case StringConstants.SERVICE_TYPE_ODU4:
- createODU4TtpInterface(input, nodeInterfaces, otnLinkTps);
+ createHighOrderInterfaces(input, nodeInterfaces, otnLinkTps);
break;
case StringConstants.SERVICE_TYPE_ODUC4:
createOduc4TtpInterface(input, nodeInterfaces, otnLinkTps);
break;
case StringConstants.SERVICE_TYPE_100GE_M:
connectionNumber = getConnectionNumber(input.getServiceName(), node, networkTp, "ODU4");
+ otnLinkTps.add(new LinkTpBuilder()
+ .setNodeId(nodeId)
+ .setTpId(networkTp)
+ .build());
break;
case StringConstants.SERVICE_TYPE_ODU4:
- interfacesToDelete.add(networkTp + "-ODU4");
- if (node.getNetwork2Tp() != null) {
+ if (node.getClientTp() == null && node.getNetwork2Tp() == null) {
+ interfacesToDelete.add(networkTp + "-ODU4");
+ otnLinkTps.add(new LinkTpBuilder()
+ .setNodeId(nodeId)
+ .setTpId(networkTp)
+ .build());
+ }
+ if (node.getClientTp() == null && node.getNetwork2Tp() != null) {
+ interfacesToDelete.add(networkTp + "-ODU4");
interfacesToDelete.add(node.getNetwork2Tp() + "-ODU4");
+ connectionNumber = getConnectionNumber(null, node, networkTp, "ODU4");
}
break;
case StringConstants.SERVICE_TYPE_ODUC4:
- interfacesToDelete.add(networkTp + "-ODUC4");
- if (node.getNetwork2Tp() != null) {
+ if (node.getClientTp() == null && node.getNetwork2Tp() == null) {
+ interfacesToDelete.add(networkTp + "-ODUC4");
+ otnLinkTps.add(new LinkTpBuilder()
+ .setNodeId(nodeId)
+ .setTpId(networkTp)
+ .build());
+ }
+ if (node.getClientTp() == null && node.getNetwork2Tp() != null) {
+ interfacesToDelete.add(networkTp + "-ODUC4");
interfacesToDelete.add(node.getNetwork2Tp() + "-ODUC4");
+ connectionNumber = getConnectionNumber(null, node, networkTp, "ODUC4");
}
break;
case StringConstants.SERVICE_TYPE_10GE:
connectionNumber = getConnectionNumber(input.getServiceName(), node, networkTp, "ODU2e");
+ otnLinkTps.add(new LinkTpBuilder()
+ .setNodeId(nodeId)
+ .setTpId(networkTp)
+ .build());
break;
case StringConstants.SERVICE_TYPE_1GE:
connectionNumber = getConnectionNumber(input.getServiceName(), node, networkTp, "ODU0");
+ otnLinkTps.add(new LinkTpBuilder()
+ .setNodeId(nodeId)
+ .setTpId(networkTp)
+ .build());
break;
default:
LOG.error("service-type {} not managed yet", serviceType);
results.add(result);
}
}
- List<String> interList =
- interfacesToDelete.stream().filter(ele -> ele.contains("NETWORK")).collect(Collectors.toList());
- if (!interList.isEmpty()) {
- for (String inter : interList) {
- otnLinkTps.add(new LinkTpBuilder()
- .setNodeId(nodeId)
- .setTpId(inter.split("-ODU")[0])
- .build());
- }
- }
}));
try {
forkJoinTask.get();
private void createLowOrderInterfaces(OtnServicePathInput input, List<NodeInterface> nodeInterfaces,
CopyOnWriteArrayList<LinkTp> linkTpList) throws OpenRoadmInterfaceException {
for (Nodes node : input.getNodes()) {
+ AEndApiInfo apiInfoA = null;
+ ZEndApiInfo apiInfoZ = null;
+ if (input.getAEndApiInfo() != null && input.getAEndApiInfo().getNodeId().contains(node.getNodeId())) {
+ apiInfoA = input.getAEndApiInfo();
+ }
+ if (input.getZEndApiInfo() != null && input.getZEndApiInfo().getNodeId().contains(node.getNodeId())) {
+ apiInfoZ = input.getZEndApiInfo();
+ }
// check if the node is mounted or not?
List<String> createdEthInterfaces = new ArrayList<>();
List<String> createdOduInterfaces = new ArrayList<>();
createdOduInterfaces.add(
// suppporting interface?, payload ?
openRoadmInterfaceFactory.createOpenRoadmOdu0Interface(node.getNodeId(), node.getClientTp(),
- input.getServiceName(), PT_07, false, input.getTribPortNumber(), input.getTribSlot()));
+ input.getServiceName(), false, input.getTribPortNumber(), input.getTribSlot(), apiInfoA,
+ apiInfoZ, PT_07));
}
createdOduInterfaces.add(
openRoadmInterfaceFactory.createOpenRoadmOdu0Interface(node.getNodeId(), node.getNetworkTp(),
- input.getServiceName(), PT_07, true, input.getTribPortNumber(), input.getTribSlot()));
+ input.getServiceName(), true, input.getTribPortNumber(), input.getTribSlot(), null, null,
+ null));
linkTpList.add(
new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp()).build());
if (node.getNetwork2Tp() != null) {
createdOduInterfaces.add(
// supporting interface? payload ?
openRoadmInterfaceFactory.createOpenRoadmOdu0Interface(node.getNodeId(),
- node.getNetwork2Tp(), input.getServiceName(), PT_07, true, input.getTribPortNumber(),
- input.getTribSlot()));
+ node.getNetwork2Tp(), input.getServiceName(), true, input.getTribPortNumber(),
+ input.getTribSlot(), null, null, null));
linkTpList.add(
new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp()).build());
}
createdOduInterfaces.add(
// suppporting interface?, payload ?
openRoadmInterfaceFactory.createOpenRoadmOdu2eInterface(node.getNodeId(),
- node.getClientTp(), input.getServiceName(), PT_03, false, input.getTribPortNumber(),
- input.getTribSlot()));
+ node.getClientTp(), input.getServiceName(), false, input.getTribPortNumber(),
+ input.getTribSlot(), apiInfoA, apiInfoZ, PT_03));
}
createdOduInterfaces.add(
// supporting interface? payload ?
openRoadmInterfaceFactory.createOpenRoadmOdu2eInterface(node.getNodeId(), node.getNetworkTp(),
- input.getServiceName(), PT_03, true, input.getTribPortNumber(), input.getTribSlot()));
+ input.getServiceName(), true, input.getTribPortNumber(), input.getTribSlot(), null,
+ null, null));
linkTpList.add(
new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp()).build());
if (node.getNetwork2Tp() != null) {
createdOduInterfaces.add(
// supporting interface? payload ?
openRoadmInterfaceFactory.createOpenRoadmOdu2eInterface(node.getNodeId(),
- node.getNetwork2Tp(), input.getServiceName(), PT_03, true, input.getTribPortNumber(),
- input.getTribSlot()));
+ node.getNetwork2Tp(), input.getServiceName(), true, input.getTribPortNumber(),
+ input.getTribSlot(), null, null, null));
linkTpList.add(
new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp()).build());
}
private void createHighOrderInterfaces(OtnServicePathInput input, List<NodeInterface> nodeInterfaces,
CopyOnWriteArrayList<LinkTp> linkTpList) throws OpenRoadmInterfaceException {
- for (Nodes node : input.getNodes()) {
+ for (Nodes node : input.nonnullNodes()) {
+ AEndApiInfo apiInfoA = null;
+ ZEndApiInfo apiInfoZ = null;
+ if (input.getAEndApiInfo() != null && input.getAEndApiInfo().getNodeId().contains(node.getNodeId())) {
+ apiInfoA = input.getAEndApiInfo();
+ }
+ if (input.getZEndApiInfo() != null && input.getZEndApiInfo().getNodeId().contains(node.getNodeId())) {
+ apiInfoZ = input.getZEndApiInfo();
+ }
// check if the node is mounted or not?
List<String> createdEthInterfaces = new ArrayList<>();
List<String> createdOduInterfaces = new ArrayList<>();
switch (input.getServiceRate().intValue()) {
case 100:
LOG.info("Input service is 100G");
- if (node.getClientTp() != null) {
- String supEthInter = openRoadmInterfaceFactory.createOpenRoadmEth100GInterface(
- node.getNodeId(), node.getClientTp());
- createdEthInterfaces.add(supEthInter);
+ if (node.getClientTp() != null && node.getNetwork2Tp() == null) {
+ createdEthInterfaces.add(openRoadmInterfaceFactory.createOpenRoadmEth100GInterface(
+ node.getNodeId(), node.getClientTp()));
createdOduInterfaces.add(openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(
- node.getNodeId(), node.getClientTp(), false, supEthInter));
+ node.getNodeId(), node.getClientTp(), false, apiInfoA, apiInfoZ, "21"));
+ // supporting interface? payload ?
+ createdOduInterfaces.add(openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(
+ node.getNodeId(), node.getNetworkTp(), true, null, null, null));
+ linkTpList.add(new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getClientTp())
+ .build());
}
- createdOduInterfaces.add(
+ if (node.getClientTp() == null && node.getNetwork2Tp() == null) {
+ createdOduInterfaces.add(openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(
+ node.getNodeId(), node.getNetworkTp(), false, apiInfoA, apiInfoZ, "21"));
+ linkTpList.add(new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp())
+ .build());
+ }
+ if (node.getClientTp() == null && node.getNetwork2Tp() != null) {
// supporting interface? payload ?
- openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(node.getNodeId(), node.getNetworkTp(),
- true, null));
- linkTpList.add(
- new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp()).build());
- if (node.getNetwork2Tp() != null) {
- createdOduInterfaces.add(
- // supporting interface? payload ?
- openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(node.getNodeId(),
- node.getNetwork2Tp(), true, null));
- linkTpList.add(
- new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp()).build());
+ createdOduInterfaces.add(openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(
+ node.getNodeId(), node.getNetworkTp(), true, null, null, null));
+ createdOduInterfaces.add(openRoadmInterfaceFactory.createOpenRoadmOdu4HOInterface(
+ node.getNodeId(), node.getNetwork2Tp(), true, null, null, null));
}
break;
default:
// implement cross connect
List<String> createdConnections = new ArrayList<>();
- if (!createdOduInterfaces.isEmpty()) {
+ if (createdOduInterfaces.size() == 2) {
Optional<String> connectionNameOpt = postCrossConnect(createdOduInterfaces, node);
createdConnections.add(connectionNameOpt.get());
LOG.info("Created cross connects");
linkTpList.add(new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp()).build());
}
}
-
- private void createODU4TtpInterface(OtnServicePathInput input, List<NodeInterface> nodeInterfaces,
- CopyOnWriteArrayList<LinkTp> linkTpList) throws OpenRoadmInterfaceException {
- if (input.getNodes() == null) {
- return;
- }
- LOG.info("Creation of ODU4 tp interface {}", input);
- for (int i = 0; i < input.getNodes().size(); i++) {
- Nodes node = input.getNodes().get(i);
- String supportingOtuInterface = node.getNetworkTp() + "-OTU";
-
- Nodes tgtNode =
- i + 1 == input.getNodes().size()
- // For the end node, tgtNode becomes the first node in the list
- ? input.getNodes().get(0)
- : input.getNodes().get(i + 1);
-
- nodeInterfaces.add(new NodeInterfaceBuilder()
- .withKey(new NodeInterfaceKey(node.getNodeId()))
- .setNodeId(node.getNodeId())
- .setOduInterfaceId(List.of(
- openRoadmInterfaceFactory.createOpenRoadmOtnOdu4Interface(node.getNodeId(),
- node.getNetworkTp(), supportingOtuInterface, tgtNode.getNodeId(), tgtNode.getNetworkTp())))
- .build());
- linkTpList.add(new LinkTpBuilder().setNodeId(node.getNodeId()).setTpId(node.getNetworkTp()).build());
- }
- }
}
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import java.util.stream.Collectors;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.transportpce.renderer.provisiondevice.tasks.OlmPowerSetupTask;
import org.opendaylight.transportpce.renderer.provisiondevice.tasks.OtnDeviceRenderingTask;
import org.opendaylight.transportpce.renderer.provisiondevice.tasks.RollbackProcessor;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.Action;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.Action;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSp;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSpBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInput;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifierBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev210511.OtnLinkType;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Notification;
import org.opendaylight.yangtools.yang.common.RpcResult;
List<LinkTp> otnLinkTerminationPoints = new ArrayList<>();
renderingResults.forEach(rr -> otnLinkTerminationPoints.addAll(rr.getOtnLinkTps()));
Link notifLink = createLinkForNotif(otnLinkTerminationPoints);
- List<String> supportedLinks = (notifLink == null && !otnLinkTerminationPoints.isEmpty())
- ? ModelMappingUtils.getLinksFromServicePathDescription(input.getPathDescription())
- : null;
+ List<String> allSupportLinks = ModelMappingUtils.getLinksFromServicePathDescription(input.getPathDescription());
+ List<String> supportedLinks = getSupportedLinks(allSupportLinks, serviceType);
sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceImplementationRequest,
input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL, input.getPathDescription(),
List<LinkTp> otnLinkTerminationPoints = new ArrayList<>();
renderingResults.forEach(rr -> otnLinkTerminationPoints.addAll(rr.getOtnLinkTps()));
Link notifLink = createLinkForNotif(otnLinkTerminationPoints);
- List<String> supportedLinks = (notifLink == null && !otnLinkTerminationPoints.isEmpty())
- ? ModelMappingUtils.getLinksFromServicePathDescription(pathDescription)
- : null;
+ List<String> allSupportLinks = ModelMappingUtils.getLinksFromServicePathDescription(pathDescription);
+ List<String> supportedLinks = getSupportedLinks(allSupportLinks, serviceType);
sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceDelete,
serviceName, RpcStatusEx.Successful, OPERATION_SUCCESSFUL, pathDescription, notifLink, supportedLinks,
.build())
.build();
}
+
+ private List<String> getSupportedLinks(List<String> allSupportLinks, String serviceType) {
+ switch (serviceType) {
+ case StringConstants.SERVICE_TYPE_10GE:
+ case StringConstants.SERVICE_TYPE_1GE:
+ return allSupportLinks.stream()
+ .filter(lk -> lk.startsWith(OtnLinkType.ODTU4.getName())).collect(Collectors.toList());
+ case StringConstants.SERVICE_TYPE_100GE_M:
+ return allSupportLinks.stream()
+ .filter(lk -> lk.startsWith(OtnLinkType.ODUC4.getName())).collect(Collectors.toList());
+ case StringConstants.SERVICE_TYPE_ODU4:
+ case StringConstants.SERVICE_TYPE_100GE_S:
+ return allSupportLinks.stream()
+ .filter(lk -> lk.startsWith(OtnLinkType.OTU4.getName())).collect(Collectors.toList());
+ case StringConstants.SERVICE_TYPE_ODUC4:
+ return allSupportLinks.stream()
+ .filter(lk -> lk.startsWith(OtnLinkType.OTUC4.getName())).collect(Collectors.toList());
+ default:
+ return null;
+ }
+ }
}
import java.util.List;
import java.util.Map;
import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.renderer.rollback.output.FailedToRollback;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.renderer.rollback.output.FailedToRollback;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterface;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterfaceKey;
import org.slf4j.Logger;
import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRenderingResult;
import org.opendaylight.transportpce.renderer.provisiondevice.servicepath.ServicePathDirection;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutput;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.Callable;
import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService;
import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRenderingResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathOutput;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.transportpce.common.service.ServiceTypes;
import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.TransportpceDeviceRendererService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.TransportpceDeviceRendererService;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.slf4j.Logger;
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.rev210426.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
import org.opendaylight.yangtools.yang.common.Uint32;
@Ignore
String supportOchInterface = "supportOchInterface";
Mockito.when(portMapping.getMapping(nodeId, logicalConnPoint))
.thenReturn(new MappingBuilder().setLogicalConnectionPoint(logicalConnPoint).build());
- Assert.assertEquals(
- openRoadMInterface221.createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportOchInterface),
+ Assert.assertEquals(openRoadMInterface221.createOpenRoadmOtu4Interface(
+ nodeId, logicalConnPoint, supportOchInterface, null, null),
logicalConnPoint + "-OTU");
}
import org.opendaylight.transportpce.renderer.utils.MountPointUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.nodes.NodeInfoBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@Ignore
private void setMountPoint(MountPoint mountPoint) {
MountPointService mountPointService = new MountPointServiceStub(mountPoint);
this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
- this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(this.deviceTransactionManager);
- this.openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(this.deviceTransactionManager);
- this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(this.deviceTransactionManager);
this.mappingUtils = new MappingUtilsImpl(getDataBroker());
this.mappingUtils = Mockito.spy(MappingUtils.class);
this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils,
openRoadmInterfacesImpl121, openRoadmInterfacesImpl221, openRoadmInterfacesImpl710);
this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
- this.portMappingVersion22 = new PortMappingVersion221(getDataBroker(), this.deviceTransactionManager,
- this.openRoadmInterfaces);
- this.portMappingVersion121 = new PortMappingVersion121(getDataBroker(), this.deviceTransactionManager,
- this.openRoadmInterfaces);
- this.portMappingVersion710 =
- new PortMappingVersion710(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
+ this.portMappingVersion22 = new PortMappingVersion221(getDataBroker(), this.deviceTransactionManager);
+ this.portMappingVersion121 = new PortMappingVersion121(getDataBroker(), this.deviceTransactionManager);
+ this.portMappingVersion710 = new PortMappingVersion710(getDataBroker(), deviceTransactionManager);
+ this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(this.deviceTransactionManager);
+ this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(this.deviceTransactionManager);
PortMapping portMapping =
new PortMappingImpl(getDataBroker(), this.portMappingVersion710, this.portMappingVersion22,
this.portMappingVersion121);
+ this.openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(this.deviceTransactionManager, portMapping,
+ this.portMappingVersion22);
OpenRoadmInterface121 openRoadmInterface121 = new OpenRoadmInterface121(portMapping,openRoadmInterfaces);
OpenRoadmInterface221 openRoadmInterface221 = new OpenRoadmInterface221(portMapping,openRoadmInterfaces);
OpenRoadmInterface710 openRoadmInterface710 = new OpenRoadmInterface710(portMapping, openRoadmInterfaces);
private void setMountPoint(MountPoint mountPoint) {
MountPointService mountPointService = new MountPointServiceStub(mountPoint);
this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
- this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager);
- this.openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(deviceTransactionManager);
- this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager);
this.mappingUtils = new MappingUtilsImpl(getDataBroker());
this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils,
openRoadmInterfacesImpl121, openRoadmInterfacesImpl221, openRoadmInterfacesImpl710);
this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
- this.portMappingVersion710 =
- new PortMappingVersion710(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion22 =
- new PortMappingVersion221(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
- this.portMappingVersion121 =
- new PortMappingVersion121(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
+ this.portMappingVersion710 = new PortMappingVersion710(getDataBroker(), deviceTransactionManager);
+ this.portMappingVersion22 = new PortMappingVersion221(getDataBroker(), deviceTransactionManager);
+ this.portMappingVersion121 = new PortMappingVersion121(getDataBroker(), deviceTransactionManager);
this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710, this.portMappingVersion22,
this.portMappingVersion121);
+ this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager);
+ this.openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(deviceTransactionManager, this.portMapping,
+ this.portMappingVersion22);
+ this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager);
this.crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager);
this.crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager);
this.crossConnect = new CrossConnectImpl(deviceTransactionManager, this.mappingUtils, this.crossConnectImpl121,
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
import org.opendaylight.transportpce.test.stub.MountPointStub;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutput;
private void setMountPoint(MountPoint mountPoint) {
this.mountPointService = new MountPointServiceStub(mountPoint);
this.deviceTransactionManager = new DeviceTransactionManagerImpl(this.mountPointService, 3000);
- this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager);
- this.openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(deviceTransactionManager);
- this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager);
this.mappingUtils = new MappingUtilsImpl(getDataBroker());
this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils,
openRoadmInterfacesImpl121, openRoadmInterfacesImpl221, openRoadmInterfacesImpl710);
this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
this.portMappingVersion22 =
- new PortMappingVersion221(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
+ new PortMappingVersion221(getDataBroker(), deviceTransactionManager);
this.portMappingVersion121 =
- new PortMappingVersion121(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
+ new PortMappingVersion121(getDataBroker(), deviceTransactionManager);
this.portMappingVersion710 =
- new PortMappingVersion710(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
+ new PortMappingVersion710(getDataBroker(), deviceTransactionManager);
this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710, this.portMappingVersion22,
this.portMappingVersion121);
OpenRoadmInterface121 openRoadmInterface121 = new OpenRoadmInterface121(portMapping,openRoadmInterfaces);
import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.Action;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.Action;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
@Ignore
public class DeviceRendererRPCImplTest extends AbstractTest {
package org.opendaylight.transportpce.renderer.utils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsInputBuilder;
public final class CreateOtsOmsDataUtils {
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.test.stub.MountPointStub;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
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 java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.PathDescription;
StringConstants.SERVICE_TYPE_ODUC4, OtnLinkType.ODUC4);
if (isDeletion) {
LOG.info("updating otn-topology removing links");
- this.networkModelService.deleteOtnLinks(link.getATermination().getNodeId(),
- link.getATermination().getTpId(), link.getZTermination().getNodeId(),
- link.getZTermination().getTpId(), otnLinkTypeMap.get(serviceType));
+ this.networkModelService.deleteOtnLinks(link, supportedLinkIds, otnLinkTypeMap.get(serviceType));
} else {
LOG.info("updating otn-topology adding links");
- this.networkModelService.createOtnLinks(link.getATermination().getNodeId(),
- link.getATermination().getTpId(), link.getZTermination().getNodeId(),
- link.getZTermination().getTpId(), otnLinkTypeMap.get(serviceType));
+ this.networkModelService.createOtnLinks(link, supportedLinkIds, otnLinkTypeMap.get(serviceType));
}
break;
case StringConstants.SERVICE_TYPE_1GE:
Short maxTribSlot = Short.valueOf(notification.getAToZDirection().getMaxTribSlot().getValue()
.split("\\.")[1]);
LOG.info("updating otn-topology node tps -tps and tpn pools");
- this.networkModelService.updateOtnLinks(link, notification.getAToZDirection().getRate(),
- tribPort, minTribSlot, maxTribSlot, isDeletion);
+ this.networkModelService.updateOtnLinks(link, supportedLinkIds,
+ notification.getAToZDirection().getRate(), tribPort, minTribSlot, maxTribSlot, isDeletion);
break;
case StringConstants.SERVICE_TYPE_100GE_S:
- this.networkModelService.updateOtnLinks(link, supportedLinkIds, isDeletion);
+ this.networkModelService.updateOtnLinks(supportedLinkIds, isDeletion);
break;
default:
LOG.warn("service-type {} not managed yet", serviceType);
*/
package org.opendaylight.transportpce.tapi;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.MountPoint;
-import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
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.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.NbrList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.nbr.list.IfName;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ProtectionType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RestorationPolicy;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.ResilienceTypeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanism;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanismBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(R2RTapiLinkDiscovery.class);
- private final DataBroker dataBroker;
+ private final NetworkTransactionService networkTransactionService;
private final DeviceTransactionManager deviceTransactionManager;
- private static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
+ private final TapiLink tapiLink;
- public R2RTapiLinkDiscovery(final DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager) {
- this.dataBroker = dataBroker;
+ public R2RTapiLinkDiscovery(NetworkTransactionService networkTransactionService,
+ DeviceTransactionManager deviceTransactionManager, TapiLink tapiLink) {
+ this.networkTransactionService = networkTransactionService;
this.deviceTransactionManager = deviceTransactionManager;
+ this.tapiLink = tapiLink;
}
public Map<LinkKey, Link> readLLDP(NodeId nodeId, int nodeVersion, Uuid tapiTopoUuid) {
// Create OMS Tapi Link
LOG.info("Tapi R2R Link Found a neighbor SrcNodeId: {} , SrcDegId: {} , SrcTPId: {}, DestNodeId:{} , "
+ "DestDegId: {}, DestTPId: {}", nodeId.getValue(), srcDegId, srcTpTx, destNodeId, destDegId, destTpRx);
- Link omsLink = createTapiLink(nodeId.getValue(), srcTpTx, destNodeId.getValue(), destTpRx, tapiTopoUuid);
+ Link omsLink = this.tapiLink.createTapiLink(nodeId.getValue(), srcTpTx, destNodeId.getValue(), destTpTx,
+ TapiStringConstants.OMS_RDM_RDM_LINK, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ this.tapiLink.getAdminState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
+ this.tapiLink.getOperState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
+ List.of(LayerProtocolName.PHOTONICMEDIA), List.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
LOG.info("Tapi R2R Link OMS link created = {}", omsLink);
return omsLink;
}
- private Link createTapiLink(String sourceNode, String sourceTp, String destNode, String destTp, Uuid tapiTopoUuid) {
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- Uuid sourceUuidNode = new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode,
- PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
- Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode, PHTNC_MEDIA, sourceTp))
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid destUuidNode = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode,
- PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
- Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode, PHTNC_MEDIA, destTp))
- .getBytes(Charset.forName("UTF-8"))).toString());
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(sourceUuidNode)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(destUuidNode)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- OperationalState sourceOperState = getOperState(tapiTopoUuid, sourceUuidTp, sourceUuidNode);
- OperationalState destOperState = getOperState(tapiTopoUuid, destUuidTp, destUuidNode);
- if (sourceOperState == null || destOperState == null) {
- LOG.error("No link can be created, as the operational state was not found in the TAPI topology");
- return null;
- }
- AdministrativeState sourceAdminState = getAdminState(tapiTopoUuid, sourceUuidTp, sourceUuidNode);
- AdministrativeState destAdminState = getAdminState(tapiTopoUuid, destUuidTp, destUuidNode);
- if (sourceAdminState == null || destAdminState == null) {
- LOG.error("No link can be created, as the administrative state was not found in the TAPI topology");
- return null;
- }
- OperationalState operState = (OperationalState.ENABLED.equals(sourceOperState)
- && OperationalState.ENABLED.equals(destOperState))
- ? OperationalState.ENABLED : OperationalState.DISABLED;
- AdministrativeState adminState = (AdministrativeState.UNLOCKED.equals(sourceAdminState)
- && AdministrativeState.UNLOCKED.equals(destAdminState))
- ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
- String linkNameValue = String.join("-", sourceNode, sourceTp.split("-")[0], sourceTp)
- + "to" + String.join("-", destNode, destTp.split("-")[0], destTp);
- Name linkName = new NameBuilder().setValueName("OMS link name")
- .setValue(linkNameValue)
- .build();
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue("12345678")
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic("12345678")
- .setQueingLatencyCharacteristic("12345678")
- .setJitterCharacteristic("12345678")
- .setWanderCharacteristic("12345678")
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
- .build();
- ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
- .setValidationMechanism("validation mechanism")
- .setValidationRobustness("validation robustness")
- .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
- .build();
- return new LinkBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(linkNameValue.getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setLayerProtocolName(List.of(LayerProtocolName.PHOTONICMEDIA))
- .setTransitionedLayerProtocolName(new ArrayList<>())
- .setNodeEdgePoint(nepList)
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
- .setRestorationPolicy(RestorationPolicy.NA)
- .build())
- .setAdministrativeState(adminState)
- .setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(100)).build()).build())
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
- .setValue(Uint64.valueOf(100)).build())
- .build())
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
- .build();
- }
-
private Integer getDegFromInterface(NodeId nodeId, String interfaceName) {
InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.builder(Network.class)
.child(Nodes.class, new NodesKey(nodeId.getValue())).build();
- try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) {
- Optional<Nodes> nodesObject = readTx.read(LogicalDatastoreType.CONFIGURATION, nodesIID).get();
+ try {
+
+ Optional<Nodes> nodesObject = this.networkTransactionService.read(LogicalDatastoreType.CONFIGURATION,
+ nodesIID).get();
if (nodesObject.isEmpty() || (nodesObject.get().getCpToDegree() == null)) {
LOG.warn("Could not find mapping for Interface {} for nodeId {}", interfaceName,
nodeId.getValue());
public Direction getDegreeDirection(Integer degreeCounter, NodeId nodeId) {
InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.builder(Network.class)
.child(Nodes.class, new NodesKey(nodeId.getValue())).build();
- try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) {
- Optional<Nodes> nodesObject = readTx.read(LogicalDatastoreType.CONFIGURATION, nodesIID).get();
+ try {
+ Optional<Nodes> nodesObject = this.networkTransactionService.read(LogicalDatastoreType.CONFIGURATION,
+ nodesIID).get();
if (nodesObject.isPresent() && (nodesObject.get().getMapping() != null)) {
Collection<Mapping> mappingList = nodesObject.get().nonnullMapping().values();
mappingList = mappingList.stream().filter(mp -> mp.getLogicalConnectionPoint().contains("DEG"
}
return Direction.NotApplicable;
}
-
- private OperationalState getOperState(Uuid tapiTopoUuid, Uuid nepUuid, Uuid nodeUuid) {
- InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(Context1.class).child(TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
- .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
- .build();
- try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) {
- Optional<OwnedNodeEdgePoint> optionalOnep = readTx.read(LogicalDatastoreType.OPERATIONAL, onepIID).get();
- if (optionalOnep.isPresent()) {
- return optionalOnep.get().getOperationalState();
- }
- return null;
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Failed getting Mapping data from portMapping",e);
- return null;
- }
- }
-
- private AdministrativeState getAdminState(Uuid tapiTopoUuid, Uuid nepUuid, Uuid nodeUuid) {
- InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(Context1.class).child(TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
- .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
- .build();
- try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) {
- Optional<OwnedNodeEdgePoint> optionalOnep = readTx.read(LogicalDatastoreType.OPERATIONAL, onepIID).get();
- if (optionalOnep.isPresent()) {
- return optionalOnep.get().getAdministrativeState();
- }
- return null;
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Failed getting Mapping data from portMapping",e);
- return null;
- }
- }
}
--- /dev/null
+/*
+ * Copyright © 2021 Nokia. 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.tapi;
+
+public final class TapiStringConstants {
+
+ public static final String TRANSITIONAL_LINK = "tapi-transitional-link";
+ public static final String OMS_RDM_RDM_LINK = "tapi-rdm-rdm-link";
+ public static final String OMS_XPDR_RDM_LINK = "tapi-xpdr-rdm-link";
+ public static final String OTN_XPDR_XPDR_LINK = "tapi-otn-xpdr-xpdr-link";
+ public static final String T0_MULTILAYER = "T0 - Multi-layer topology";
+ public static final String T0_FULL_MULTILAYER = "T0 - Full Multi-layer topology";
+ public static final String TPDR_100G = "Transponder 100GE";
+ public static final String DSR = "DSR";
+ public static final String ODU = "ODU";
+ public static final String I_ODU = "iODU";
+ public static final String E_ODU = "eODU";
+ public static final String OTSI = "OTSi";
+ public static final String E_OTSI = "eOTSi";
+ public static final String I_OTSI = "iOTSi";
+ public static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
+ public static final String MC = "MEDIA_CHANNEL";
+ public static final String OTSI_MC = "OTSi_MEDIA_CHANNEL";
+ public static final String RDM_INFRA = "ROADM-infra";
+ public static final String CLIENT = "-CLIENT";
+ public static final String NETWORK = "-NETWORK";
+ public static final String XPDR = "-XPDR";
+ public static final String TP = "TerminationPoint";
+ public static final String NODE = "Node";
+ public static final String LGX_PORT_NAME = "Some lgx-port-name";
+ public static final String PORT_TYPE = "some port type";
+ public static final String LGX_DEVICE_NAME = "Some lgx-device-name";
+ public static final String PORT_RACK_VALUE = "000000.00";
+
+ private TapiStringConstants() {
+ // hiding the default constructor
+ }
+}
import java.util.UUID;
import java.util.stream.Collectors;
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
-import org.opendaylight.transportpce.tapi.topology.TopologyUtils;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.GenericServiceEndpoint;
import org.opendaylight.transportpce.tapi.utils.ServiceEndpointType;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
public final class ConnectivityUtils {
- private static final String LGX_PORT_NAME = "Some lgx-port-name";
- private static final String PORT_TYPE = "some port type";
- private static final String LGX_DEVICE_NAME = "Some lgx-device-name";
- private static final String PORT_RACK_VALUE = "000000.00";
- private static final String DSR = "DSR";
- private static final String ODU = "ODU";
- private static final String E_ODU = "eODU";
- private static final String I_ODU = "iODU";
- private static final String OTSI = "OTSi";
- private static final String E_OTSI = "eOTSi";
- private static final String I_OTSI = "iOTSi";
- private static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
- private static final String MC = "MEDIA_CHANNEL";
- private static final String OTSI_MC = "OTSi_MEDIA_CHANNEL";
- private static final String TP = "TerminationPoint";
- private static final String NODE = "Node";
- private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
private static final Logger LOG = LoggerFactory.getLogger(ConnectivityUtils.class);
.setPort(new PortBuilder()
.setPortDeviceName(txPortDeviceName)
.setPortName(txPortName)
- .setPortRack(PORT_RACK_VALUE)
+ .setPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setPortShelf("00")
- .setPortType(PORT_TYPE)
+ .setPortType(TapiStringConstants.PORT_TYPE)
.build())
.setLgx(new LgxBuilder()
- .setLgxDeviceName(LGX_DEVICE_NAME)
- .setLgxPortName(LGX_PORT_NAME)
- .setLgxPortRack(PORT_RACK_VALUE)
+ .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME)
+ .setLgxPortName(TapiStringConstants.LGX_PORT_NAME)
+ .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setLgxPortShelf("00")
.build())
.build())
.setPort(new PortBuilder()
.setPortDeviceName(rxPortDeviceName)
.setPortName(rxPortName)
- .setPortRack(PORT_RACK_VALUE)
+ .setPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setPortShelf("00")
- .setPortType(PORT_TYPE)
+ .setPortType(TapiStringConstants.PORT_TYPE)
.build())
.setLgx(new LgxBuilder()
- .setLgxDeviceName(LGX_DEVICE_NAME)
- .setLgxPortName(LGX_PORT_NAME)
- .setLgxPortRack(PORT_RACK_VALUE)
+ .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME)
+ .setLgxPortName(TapiStringConstants.LGX_PORT_NAME)
+ .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setLgxPortShelf("00")
.build())
.build())
.setPort(new PortBuilder()
.setPortDeviceName(txPortDeviceName)
.setPortName(txPortName)
- .setPortRack(PORT_RACK_VALUE)
+ .setPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setPortShelf("00")
- .setPortType(PORT_TYPE)
+ .setPortType(TapiStringConstants.PORT_TYPE)
.build())
.setLgx(new LgxBuilder()
- .setLgxDeviceName(LGX_DEVICE_NAME)
- .setLgxPortName(LGX_PORT_NAME)
- .setLgxPortRack(PORT_RACK_VALUE)
+ .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME)
+ .setLgxPortName(TapiStringConstants.LGX_PORT_NAME)
+ .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setLgxPortShelf("00")
.build())
.build())
.setPort(new PortBuilder()
.setPortDeviceName(rxPortDeviceName)
.setPortName(rxPortName)
- .setPortRack(PORT_RACK_VALUE)
+ .setPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setPortShelf("00")
- .setPortType(PORT_TYPE)
+ .setPortType(TapiStringConstants.PORT_TYPE)
.build())
.setLgx(new LgxBuilder()
- .setLgxDeviceName(LGX_DEVICE_NAME)
- .setLgxPortName(LGX_PORT_NAME)
- .setLgxPortRack(PORT_RACK_VALUE)
+ .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME)
+ .setLgxPortName(TapiStringConstants.LGX_PORT_NAME)
+ .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setLgxPortShelf("00")
.build())
.build())
.sorted(Comparator.comparing(AToZ::getId)).collect(Collectors.toList())) {
resourceType = elem.getResource().getResource().implementedInterface().getSimpleName();
switch (resourceType) {
- case TP:
+ case TapiStringConstants.TP:
TerminationPoint tp = (TerminationPoint) elem.getResource().getResource();
String tpID = tp.getTpId();
String tpNode;
}
}
break;
- case NODE:
+ case TapiStringConstants.NODE:
Node node = (Node) elem.getResource().getResource();
String nodeId = node.getNodeId();
if (nodeId.contains("XPDR") || nodeId.contains("SPDR") || nodeId.contains("MXPDR")) {
// create corresponding CEPs and Connections. Connections should be added to the corresponding context
// CEPs must be included in the topology context as an augmentation for each ONEP!!
ServiceFormat serviceFormat = serviceAEnd.getServiceFormat(); // should be equal to serviceZEnd
- // TODO -> better mechanism to map services???
+ // TODO -> Maybe we dont need to create the connections and ceps if the previous service doesnt exist??
+ // As mentioned above, for 100GbE service creation there are ROADMs in the path description.
+ // What are the configurations needed here? No OTU, ODU... what kind of cross connections is needed?
+ // this needs to be changed
switch (serviceFormat) {
case OC:
// Identify number of ROADMs
connectionServMap.putAll(createXpdrCepsAndConnectionsOdu(xpdrNetworkTplist, xpdrNodelist));
}
// Top connection in the DSR layer, between client ports of the xpdrs
- connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNodelist));
+ // TODO differentiate between 100GbE and OTN 10GbE services
+ connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNetworkTplist,
+ xpdrNodelist));
break;
default:
LOG.error("Service type format not supported");
}
private Map<ConnectionKey,Connection> createXpdrCepsAndConnectionsDsr(List<String> xpdrClientTplist,
+ List<String> xpdrNetworkTplist,
List<String> xpdrNodelist) {
Map<ConnectionKey, Connection> connServMap = new HashMap<>();
Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMap = new HashMap<>();
+ ConnectionEndPoint> cepMapDsr = new HashMap<>();
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
+ ConnectionEndPoint> cepMapOdu = new HashMap<>();
- // Create 1 cep per Xpdr in the CLIENT and a top connection DSR between the CLIENT xpdrs
+ // Create 1 cep per Xpdr in the CLIENT, 1 cep per Xpdr eODU, 1 XC between eODU and iODE,
+ // 1 top connection between eODU and a top connection DSR between the CLIENT xpdrs
for (String xpdr:xpdrNodelist) {
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst().get();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, DSR, DSR, LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, DSR, DSR, netCep1);
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
+ LayerProtocolName.DSR);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
- cepMap.put(netCep1.key(), netCep1);
+ ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
+ TapiStringConstants.DSR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.DSR,
+ netCep2);
+
+ String spcXpdrNetwork = getAssociatedNetworkPort(spcXpdrClient, xpdrNetworkTplist);
+ ConnectionEndPoint netCep3 = getAssociatediODUCep(spcXpdrNetwork);
+
+ cepMapDsr.put(netCep1.key(), netCep1);
+ cepMapOdu.put(netCep2.key(), netCep2);
+ // Create x connection between I_ODU and E_ODU within xpdr
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
+ TapiStringConstants.ODU, LayerProtocolName.ODU);
+ this.connectionFullMap.put(connection.key(), connection);
+
+ // Create X connection that will be added to the service object
+ Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
+ connServMap.put(conn.key(), conn);
}
// DSR top connection between edge xpdr CLIENT DSR
.get(0))).findFirst().get();
String spcXpdr2 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().get();
+
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, DSR, LayerProtocolName.DSR);
- this.connectionFullMap.put(connection.key(), connection);
+ connectionOdu = createTopConnection(spcXpdr1, spcXpdr2, cepMapOdu, TapiStringConstants.E_ODU,
+ LayerProtocolName.ODU);
+ this.connectionFullMap.put(connectionOdu.key(), connectionOdu);
// ODU top connection that will be added to the service object
- Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
+ Connection conn = new ConnectionBuilder().setConnectionUuid(connectionOdu.getUuid()).build();
connServMap.put(conn.key(), conn);
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR,
+ LayerProtocolName.DSR);
+ this.connectionFullMap.put(connectionDsr.key(), connectionDsr);
+
+ // DSR top connection that will be added to the service object
+ Connection conn1 = new ConnectionBuilder().setConnectionUuid(connectionDsr.getUuid()).build();
+ connServMap.put(conn1.key(), conn1);
+
return connServMap;
}
Map<ConnectionKey, Connection> connServMap = new HashMap<>();
Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMap = new HashMap<>();
- // Create 1 cep per Xpdr in the I_ODU and E_ODU, X connection between iODU and eODU and a top
+ // Create 1 cep per Xpdr in the I_ODU and a top
// connection iODU between the xpdrs
for (String xpdr:xpdrNodelist) {
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst().get();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, E_ODU, DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, E_ODU, DSR, netCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, I_ODU, DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, I_ODU, DSR, netCep2);
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_ODU,
+ TapiStringConstants.DSR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.DSR,
+ netCep1);
cepMap.put(netCep1.key(), netCep1);
- cepMap.put(netCep2.key(), netCep2);
-
- // Create x connection between I_ODU and E_ODU within xpdr
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep1, netCep2, spcXpdrNetwork, spcXpdrNetwork, ODU,
- LayerProtocolName.ODU);
- this.connectionFullMap.put(connection.key(), connection);
-
- // Create X connection that will be added to the service object
- Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- connServMap.put(conn.key(), conn);
}
- // ODU top connection between edge xpdr e_ODU
+ // ODU top connection between edge xpdr i_ODU
String spcXpdr1 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(0))).findFirst().get();
String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().get();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, E_ODU, LayerProtocolName.ODU);
+ connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_ODU,
+ LayerProtocolName.ODU);
this.connectionFullMap.put(connection.key(), connection);
// ODU top connection that will be added to the service object
// TODO photonic media model should be updated to have the corresponding CEPs. I will just create
// 3 different MC CEPs giving different IDs to show that they are different
// Create 3 CEPs for each xpdr otsi node and the corresponding cross connection matchin the NEPs
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, PHTNC_MEDIA, OTSI,
- LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, PHTNC_MEDIA, OTSI, netCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, E_OTSI, OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, E_OTSI, OTSI, netCep2);
- ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, I_OTSI, OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, I_OTSI, OTSI, netCep3);
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.OTSI,
+ netCep1);
+ ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.E_OTSI,
+ TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.E_OTSI, TapiStringConstants.OTSI,
+ netCep2);
+ ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
+ TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
+ netCep3);
cepMap.put(netCep1.key(), netCep1);
cepMap.put(netCep2.key(), netCep2);
cepMap.put(netCep3.key(), netCep3);
// Create x connection between I_OTSi and E_OTSi within xpdr
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork, OTSI,
- LayerProtocolName.PHOTONICMEDIA);
+ connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork,
+ TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
this.connectionFullMap.put(connection.key(), connection);
// Create X connection that will be added to the service object
String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().get();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, I_OTSI, LayerProtocolName.PHOTONICMEDIA);
+ connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI,
+ LayerProtocolName.PHOTONICMEDIA);
this.connectionFullMap.put(connection.key(), connection);
// OTSi top connection that will be added to the service object
// Create 3 CEPs for each AD and DEG and the corresponding cross connections, matching the NEPs
// created in the topology creation
// add CEPs to the topology to the corresponding ONEP
- ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmAD, PHTNC_MEDIA, adCep1);
- ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, MC);
- putRdmCepInTopologyContext(roadm, spcRdmAD, MC, adCep2);
- ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, OTSI_MC);
- putRdmCepInTopologyContext(roadm, spcRdmAD, OTSI_MC, adCep3);
+ ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA, adCep1);
+ ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, TapiStringConstants.MC);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.MC, adCep2);
+ ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, TapiStringConstants.OTSI_MC);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.OTSI_MC, adCep3);
cepMap.put(adCep1.key(), adCep1);
cepMap.put(adCep2.key(), adCep2);
cepMap.put(adCep3.key(), adCep3);
String spcRdmDEG = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().get();
LOG.info("Degree port of ROADm {} = {}", roadm, spcRdmDEG);
- ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, PHTNC_MEDIA, degCep1);
- ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, MC, degCep2);
- ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, OTSI_MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, OTSI_MC, degCep3);
+ ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA, degCep1);
+ ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, TapiStringConstants.MC);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.MC, degCep2);
+ ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, TapiStringConstants.OTSI_MC);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.OTSI_MC, degCep3);
cepMap.put(degCep1.key(), degCep1);
cepMap.put(degCep2.key(), degCep2);
cepMap.put(degCep3.key(), degCep3);
LOG.info("Going to create cross connections for ROADM {}", roadm);
// Create X connections between MC and OTSi_MC for full map
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection1 = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, MC,
+ connection1 = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, TapiStringConstants.MC,
LayerProtocolName.PHOTONICMEDIA);
LOG.info("Cross connection 1 created = {}", connection1);
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection2 = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, OTSI_MC,
+ connection2 = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, TapiStringConstants.OTSI_MC,
LayerProtocolName.PHOTONICMEDIA);
LOG.info("Cross connection 2 created = {}", connection2);
this.connectionFullMap.put(connection1.key(), connection1);
// Create top connections between MC for full map
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, MC, LayerProtocolName.PHOTONICMEDIA);
+ connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.MC,
+ LayerProtocolName.PHOTONICMEDIA);
this.connectionFullMap.put(connection.key(), connection);
LOG.info("Top connection created = {}", connection);
String spcRdmAD1 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm1)).findFirst().get();
String spcRdmAD2 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm2)).findFirst().get();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, OTSI_MC,
+ connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.OTSI_MC,
LayerProtocolName.PHOTONICMEDIA);
this.connectionFullMap.put(connection.key(), connection);
LOG.info("Top connection created = {}", connection);
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
qualifier)).getBytes(Charset.forName("UTF-8")))
.toString()))
- .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString()))
.build();
// TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...)
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
nodeLayer)).getBytes(Charset.forName("UTF-8")))
.toString()))
- .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString()))
.build();
// TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...)
ZToA firstElement = mapztoa.values().stream().filter(ztoa -> ztoa.getId().equals("0")).findFirst().get();
TerminationPoint tp = (TerminationPoint) firstElement.getResource().getResource();
Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP",
- tp.getTpNodeId(), MC, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
+ tp.getTpNodeId(), TapiStringConstants.MC, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
.toString());
- LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), MC, tp.getTpId()));
+ LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.MC, tp.getTpId()));
for (ServiceInterfacePoint sip:this.sipMap.values()) {
if (!sip.getUuid().equals(sipUuid)) {
LOG.info("SIP {} doesn match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
tp = (TerminationPoint) firstElement.getResource().getResource();
// Network-Network ports --> iODU layer SIPs TODO --> updated to E_ODU
sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP",
- tp.getTpNodeId(), E_ODU, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
+ tp.getTpNodeId(), TapiStringConstants.I_ODU, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
.toString());
- LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), E_ODU, tp.getTpId()));
+ LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.I_ODU,
+ tp.getTpId()));
break;
case OTU:
firstElement = mapztoa.values().stream().filter(ztoa -> ztoa.getId().equals("2")).findFirst().get();
tp = (TerminationPoint) firstElement.getResource().getResource();
// Network-Network ports --> iOTSi layer SIPs
sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP",
- tp.getTpNodeId(), I_OTSI, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
+ tp.getTpNodeId(), TapiStringConstants.I_OTSI, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
.toString());
- LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), I_OTSI, tp.getTpId()));
+ LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.I_OTSI,
+ tp.getTpId()));
break;
case Ethernet:
+ LOG.info("Elements ZA = {}", mapztoa.values().toString());
firstElement = mapztoa.values().stream().filter(ztoa -> ztoa.getId().equals("0")).findFirst().get();
tp = (TerminationPoint) firstElement.getResource().getResource();
// Client-client ports --> DSR layer SIPs
sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP",
- tp.getTpNodeId(), DSR, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
+ tp.getTpNodeId(), TapiStringConstants.DSR, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
.toString());
- LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), DSR, tp.getTpId()));
+ LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.DSR,
+ tp.getTpId()));
break;
default:
sipUuid = null;
LOG.info("First element of service path = {}", firstElement.getResource().getResource());
TerminationPoint tp = (TerminationPoint) firstElement.getResource().getResource();
Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP",
- tp.getTpNodeId(), MC, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
+ tp.getTpNodeId(), TapiStringConstants.MC, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
.toString());
- LOG.info("ROADM SIP name = {}", String.join("+", tp.getTpNodeId(), MC, tp.getTpId()));
+ LOG.info("ROADM SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.MC,
+ tp.getTpId()));
for (ServiceInterfacePoint sip:this.sipMap.values()) {
if (!sip.getUuid().equals(sipUuid)) {
LOG.info("SIP {} doesn match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
tp = (TerminationPoint) firstElement.getResource().getResource();
// Network-Network ports --> iODU layer SIPs. TODO -> updated to eODU
sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP",
- tp.getTpNodeId(), E_ODU, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
+ tp.getTpNodeId(), TapiStringConstants.I_ODU, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
.toString());
- LOG.info("ODU XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), E_ODU, tp.getTpId()));
+ LOG.info("ODU XPDR SIP name = {}", String.join("+", tp.getTpNodeId(),
+ TapiStringConstants.I_ODU, tp.getTpId()));
break;
case OTU:
firstElement = mapatoz.values().stream().filter(atoz -> atoz.getId().equals("2")).findFirst().get();
tp = (TerminationPoint) firstElement.getResource().getResource();
// Network-Network ports --> iOTSi layer SIPs
sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP",
- tp.getTpNodeId(), I_OTSI, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
+ tp.getTpNodeId(), TapiStringConstants.I_OTSI, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
.toString());
- LOG.info("OTU XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), I_OTSI, tp.getTpId()));
+ LOG.info("OTU XPDR SIP name = {}", String.join("+", tp.getTpNodeId(),
+ TapiStringConstants.I_OTSI, tp.getTpId()));
break;
case Ethernet:
+ LOG.info("Elements AZ = {}", mapatoz.values().toString());
firstElement = mapatoz.values().stream().filter(atoz -> atoz.getId().equals("0")).findFirst().get();
tp = (TerminationPoint) firstElement.getResource().getResource();
// Client-client ports --> DSR layer SIPs
sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP",
- tp.getTpNodeId(), DSR, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
+ tp.getTpNodeId(), TapiStringConstants.DSR, tp.getTpId())).getBytes(Charset.forName("UTF-8")))
.toString());
- LOG.info("DSR XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), DSR, tp.getTpId()));
+ LOG.info("DSR XPDR SIP name = {}", String.join("+", tp.getTpNodeId(),
+ TapiStringConstants.DSR, tp.getTpId()));
break;
default:
sipUuid = null;
private void putRdmCepInTopologyContext(String node, String spcRdmAD, String qual, ConnectionEndPoint cep) {
LOG.info("NEP id before Merge = {}", String.join("+", node, qual, spcRdmAD.split("\\+")[1]));
- LOG.info("Node of NEP id before Merge = {}", String.join("+", node, PHTNC_MEDIA));
+ LOG.info("Node of NEP id before Merge = {}", String.join("+", node, TapiStringConstants.PHTNC_MEDIA));
// Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, PHTNC_MEDIA)
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, TapiStringConstants.PHTNC_MEDIA)
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, qual, spcRdmAD.split("\\+")[1])
.getBytes(Charset.forName("UTF-8"))).toString());
private void putXpdrCepInTopologyContext(String node, String spcXpdrNet, String qual, String nodeLayer,
ConnectionEndPoint cep) {
// Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, nodeLayer)
.getBytes(Charset.forName("UTF-8"))).toString());
}
private String getIdBasedOnModelVersion(String nodeid) {
- return nodeid.matches("[A-Z]{5}-[A-Z0-9]{2}-.*") ? String.join("-", nodeid.split("-")[0], nodeid.split("-")[1])
- : nodeid.split("-")[0];
+ return nodeid.matches("[A-Z]{5}-[A-Z0-9]{2}-.*") ? String.join("-", nodeid.split("-")[0],
+ nodeid.split("-")[1]) : nodeid.split("-")[0];
}
public ServiceCreateInput createORServiceInput(CreateConnectivityServiceInput input, Uuid serviceUuid) {
ConnectivityConstraint constraint = input.getConnectivityConstraint();
ConnectionType connType = null;
ServiceFormat serviceFormat = null;
- String nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(), DSR);
- String nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().get().getLocalId(), DSR);
+ String nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(),
+ TapiStringConstants.DSR);
+ String nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().get().getLocalId(),
+ TapiStringConstants.DSR);
LOG.debug("Node a = {}", nodeAid);
LOG.debug("Node z = {}", nodeZid);
switch (constraint.getServiceLayer().getIntValue()) {
connType = ConnectionType.Infrastructure;
serviceFormat = ServiceFormat.ODU;
break;
+ case 1:
+ LOG.info("ETH, no need to create OTU and ODU");
+ connType = ConnectionType.Service;
+ serviceFormat = ServiceFormat.Ethernet;
+ break;
case 2:
- LOG.info("DSR");
+ LOG.info("DSR, need to create OTU and ODU");
connType = ConnectionType.Service;
serviceFormat = ServiceFormat.Ethernet;
break;
serviceFormat = getServiceFormatPhtnc(endPointMap.values());
if (serviceFormat.equals(ServiceFormat.OC)) {
nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(),
- PHTNC_MEDIA);
+ TapiStringConstants.PHTNC_MEDIA);
nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().get().getLocalId(),
- PHTNC_MEDIA);
+ TapiStringConstants.PHTNC_MEDIA);
} else {
- nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(), OTSI);
+ nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(),
+ TapiStringConstants.OTSI);
nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().get().getLocalId(),
- OTSI);
+ TapiStringConstants.OTSI);
}
LOG.debug("Node a photonic = {}", nodeAid);
LOG.debug("Node z photonic = {}", nodeZid);
.setPort(new PortBuilder()
.setPortDeviceName(txPortDeviceName)
.setPortName(txPortName)
- .setPortRack(PORT_RACK_VALUE)
+ .setPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setPortShelf("00")
- .setPortType(PORT_TYPE)
+ .setPortType(TapiStringConstants.PORT_TYPE)
.build())
.setLgx(new LgxBuilder()
- .setLgxDeviceName(LGX_DEVICE_NAME)
- .setLgxPortName(LGX_PORT_NAME)
- .setLgxPortRack(PORT_RACK_VALUE)
+ .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME)
+ .setLgxPortName(TapiStringConstants.LGX_PORT_NAME)
+ .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setLgxPortShelf("00")
.build())
.build())
.setPort(new PortBuilder()
.setPortDeviceName(rxPortDeviceName)
.setPortName(rxPortName)
- .setPortRack(PORT_RACK_VALUE)
+ .setPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setPortShelf("00")
- .setPortType(PORT_TYPE)
+ .setPortType(TapiStringConstants.PORT_TYPE)
.build())
.setLgx(new LgxBuilder()
- .setLgxDeviceName(LGX_DEVICE_NAME)
- .setLgxPortName(LGX_PORT_NAME)
- .setLgxPortRack(PORT_RACK_VALUE)
+ .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME)
+ .setLgxPortName(TapiStringConstants.LGX_PORT_NAME)
+ .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setLgxPortShelf("00")
.build())
.build());
.setPort(new PortBuilder()
.setPortDeviceName(txPortDeviceName)
.setPortName(txPortName)
- .setPortRack(PORT_RACK_VALUE)
+ .setPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setPortShelf("00")
- .setPortType(PORT_TYPE)
+ .setPortType(TapiStringConstants.PORT_TYPE)
.build())
.setLgx(new LgxBuilder()
- .setLgxDeviceName(LGX_DEVICE_NAME)
- .setLgxPortName(LGX_PORT_NAME)
- .setLgxPortRack(PORT_RACK_VALUE)
+ .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME)
+ .setLgxPortName(TapiStringConstants.LGX_PORT_NAME)
+ .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setLgxPortShelf("00")
.build())
.build())
.setPort(new PortBuilder()
.setPortDeviceName(rxPortDeviceName)
.setPortName(rxPortName)
- .setPortRack(PORT_RACK_VALUE)
+ .setPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setPortShelf("00")
- .setPortType(PORT_TYPE)
+ .setPortType(TapiStringConstants.PORT_TYPE)
.build())
.setLgx(new LgxBuilder()
- .setLgxDeviceName(LGX_DEVICE_NAME)
- .setLgxPortName(LGX_PORT_NAME)
- .setLgxPortRack(PORT_RACK_VALUE)
+ .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME)
+ .setLgxPortName(TapiStringConstants.LGX_PORT_NAME)
+ .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE)
.setLgxPortShelf("00")
.build())
.build());
// EndPoints ar not ROADMs -> XPDR, MUXPDR, SWTICHPDR
return ServiceFormat.OTU;
}
+
+ private ConnectionEndPoint getAssociatediODUCep(String spcXpdrNetwork) {
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
+ TapiStringConstants.DSR).getBytes(Charset.forName("UTF-8")))).toString());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
+ TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]).getBytes(Charset.forName("UTF-8"))))
+ .toString());
+ Uuid cepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP",
+ spcXpdrNetwork.split("\\+")[0], TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]))
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ return this.tapiContext.getTapiCEP(this.tapiTopoUuid, nodeUuid, nepUuid, cepUuid);
+ }
+
+ private String getAssociatedNetworkPort(String spcXpdrClient, List<String> xpdrNetworkTplist) {
+ for (String networkPort:xpdrNetworkTplist) {
+ if (networkPort.split("\\+")[0].equals(spcXpdrClient.split("\\+")[0])) {
+ return networkPort;
+ }
+ }
+ return null;
+ }
}
&& sipMap.containsKey(new ServiceInterfacePointKey(input.getEndPoint().values().stream().skip(1)
.findFirst().get().getServiceInterfacePoint().getServiceInterfacePointUuid()))) {
LOG.info("SIPs found in sipMap");
+ // TODO: differentiate between OTN service and GbE service in TAPI
ServiceCreateInput sci = this.connectivityUtils.createORServiceInput(input, serviceUuid);
if (sci == null) {
return RpcResultBuilder.<CreateConnectivityServiceOutput>failed().withError(RpcError.ErrorType.RPC,
import org.opendaylight.transportpce.tapi.topology.TopologyUtils;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
import org.opendaylight.transportpce.tapi.utils.TapiInitialORMapping;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiListener;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.TransportpcePceListener;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererListener;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.TransportpceServicehandlerListener;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService;
private static final InstanceIdentifier<Nodes> MAPPING_II = InstanceIdentifier.create(Network.class)
.child(org.opendaylight.yang.gen.v1.http
- .org.opendaylight.transportpce.portmapping.rev210426.network.Nodes.class);
+ .org.opendaylight.transportpce.portmapping.rev210927.network.Nodes.class);
private final DataBroker dataBroker;
private final RpcProviderService rpcProviderService;
private ObjectRegistration<TapiConnectivityService> rpcRegistration;
LOG.info("TapiProvider Session Initiated");
TapiContext tapiContext = new TapiContext(this.networkTransactionService);
LOG.info("Empty TAPI context created: {}", tapiContext.getTapiContext());
-
- TopologyUtils topologyUtils = new TopologyUtils(this.networkTransactionService, this.dataBroker);
+ TapiLink tapiLink = new TapiLink(this.networkTransactionService);
+ TopologyUtils topologyUtils = new TopologyUtils(this.networkTransactionService, this.dataBroker, tapiLink);
ConnectivityUtils connectivityUtils = new ConnectivityUtils(this.serviceDataStoreOperations, new HashMap<>(),
tapiContext);
TapiInitialORMapping tapiInitialORMapping = new TapiInitialORMapping(topologyUtils, connectivityUtils,
TapiConnectivityImpl tapi = new TapiConnectivityImpl(this.serviceHandler, tapiContext, connectivityUtils,
pceListenerImpl, rendererListenerImpl, serviceHandlerListenerImpl);
- TapiTopologyImpl topo = new TapiTopologyImpl(this.dataBroker, tapiContext, topologyUtils);
+ TapiTopologyImpl topo = new TapiTopologyImpl(this.dataBroker, tapiContext, topologyUtils, tapiLink);
rpcRegistration = rpcProviderService.registerRpcImplementation(TapiConnectivityService.class, tapi);
rpcProviderService.registerRpcImplementation(TapiTopologyService.class, topo);
rpcProviderService.registerRpcImplementation(TapiCommonService.class, topo);
import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.common.network.RequestProcessor;
-import org.opendaylight.transportpce.tapi.topology.TopologyUtils;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.ServicePathRpcResult;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.TransportpcePceListener;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.service.path.rpc.result.PathDescription;
public class TapiPceListenerImpl implements TransportpcePceListener {
- private static final String DSR = "DSR";
- private static final String ODU = "ODU";
- private static final String E_ODU = "eODU";
- private static final String I_ODU = "iODU";
- private static final String OTSI = "OTSi";
- private static final String E_OTSI = "eOTSi";
- private static final String I_OTSI = "iOTSi";
- private static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
- private static final String MC = "MEDIA_CHANNEL";
- private static final String OTSI_MC = "OTSi_MEDIA_CHANNEL";
- private static final String TP = "TerminationPoint";
- private static final String NODE = "Node";
private static final Logger LOG = LoggerFactory.getLogger(TapiPceListenerImpl.class);
private ServicePathRpcResult servicePathRpcResult;
.setAToZDirection(servicePathRpcResult.getPathDescription().getAToZDirection())
.setZToADirection(servicePathRpcResult.getPathDescription().getZToADirection())
.build();
- LOG.info("PathDescription gets : {}", pathDescription);
+ LOG.info("PathDescription for TAPI gets : {}", pathDescription);
if (input == null) {
LOG.error("Input is null !");
return;
.sorted(Comparator.comparing(AToZ::getId)).collect(Collectors.toList())) {
resourceType = elem.getResource().getResource().implementedInterface().getSimpleName();
switch (resourceType) {
- case TP:
+ case TapiStringConstants.TP:
TerminationPoint tp = (TerminationPoint) elem.getResource().getResource();
String tpID = tp.getTpId();
String tpNode;
}
}
break;
- case NODE:
+ case TapiStringConstants.NODE:
Node node = (Node) elem.getResource().getResource();
String nodeId = node.getNodeId();
if (nodeId.contains("XPDR") || nodeId.contains("SPDR") || nodeId.contains("MXPDR")) {
}
// create corresponding CEPs and Connections. Connections should be added to the corresponding context
// CEPs must be included in the topology context as an augmentation for each ONEP!!
+ // TODO -> Maybe we dont need to create the connections and ceps if the previous service doesnt exist??
+ // As mentioned above, for 100GbE service creation there are ROADMs in the path description.
+ // What are the configurations needed here? No OTU, ODU... what kind of cross connections is needed?
+ // this needs to be changed
switch (serviceProtName) {
case PHOTONICMEDIA:
// Identify number of ROADMs
case DSR:
// Check if OC, OTU and ODU are created
// Check if OC, OTU and ODU are created
+ // TODO differentiate between 100GbE and OTN 10GbE services
if (!rdmNodelist.isEmpty()) {
connectionServMap.putAll(createRoadmCepsAndConnections(rdmAddDropTplist, rdmDegTplist, rdmNodelist,
edgeRoadm1, edgeRoadm2));
connectionServMap.putAll(createXpdrCepsAndConnectionsOdu(xpdrNetworkTplist, xpdrNodelist));
}
// Top connection in the DSR layer, between client ports of the xpdrs
- connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNodelist));
+ connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNetworkTplist,
+ xpdrNodelist));
break;
default:
LOG.error("Service type format {} not supported", serviceProtName.getName());
}
private Map<ConnectionKey,Connection> createXpdrCepsAndConnectionsDsr(List<String> xpdrClientTplist,
+ List<String> xpdrNetworkTplist,
List<String> xpdrNodelist) {
Map<ConnectionKey, Connection> connServMap = new HashMap<>();
Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMap = new HashMap<>();
+ ConnectionEndPoint> cepMapDsr = new HashMap<>();
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
+ ConnectionEndPoint> cepMapOdu = new HashMap<>();
- // Create 1 cep per Xpdr in the CLIENT and a top connection DSR between the CLIENT xpdrs
+ // Create 1 cep per Xpdr in the CLIENT, 1 cep per Xpdr eODU, 1 XC between eODU and iODE,
+ // 1 top connection between eODU and a top connection DSR between the CLIENT xpdrs
for (String xpdr:xpdrNodelist) {
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst().get();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, DSR, DSR, LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, DSR, DSR, netCep1);
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
+ LayerProtocolName.DSR);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
- cepMap.put(netCep1.key(), netCep1);
+ ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
+ TapiStringConstants.DSR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.DSR,
+ netCep2);
+
+ String spcXpdrNetwork = getAssociatedNetworkPort(spcXpdrClient, xpdrNetworkTplist);
+ ConnectionEndPoint netCep3 = getAssociatediODUCep(spcXpdrNetwork);
+
+ cepMapDsr.put(netCep1.key(), netCep1);
+ cepMapOdu.put(netCep2.key(), netCep2);
+ // Create x connection between I_ODU and E_ODU within xpdr
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
+ TapiStringConstants.ODU, LayerProtocolName.ODU);
+ this.connectionFullMap.put(connection.key(), connection);
+
+ // Create X connection that will be added to the service object
+ Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
+ connServMap.put(conn.key(), conn);
}
// DSR top connection between edge xpdr CLIENT DSR
.get(0))).findFirst().get();
String spcXpdr2 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().get();
+
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, DSR, LayerProtocolName.DSR);
- this.connectionFullMap.put(connection.key(), connection);
+ connectionOdu = createTopConnection(spcXpdr1, spcXpdr2, cepMapOdu, TapiStringConstants.E_ODU,
+ LayerProtocolName.ODU);
+ this.connectionFullMap.put(connectionOdu.key(), connectionOdu);
// ODU top connection that will be added to the service object
- Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
+ Connection conn = new ConnectionBuilder().setConnectionUuid(connectionOdu.getUuid()).build();
connServMap.put(conn.key(), conn);
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR,
+ LayerProtocolName.DSR);
+ this.connectionFullMap.put(connectionDsr.key(), connectionDsr);
+
+ // DSR top connection that will be added to the service object
+ Connection conn1 = new ConnectionBuilder().setConnectionUuid(connectionDsr.getUuid()).build();
+ connServMap.put(conn1.key(), conn1);
+
return connServMap;
}
Map<ConnectionKey, Connection> connServMap = new HashMap<>();
Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMap = new HashMap<>();
- // Create 1 cep per Xpdr in the I_ODU and E_ODU, X connection between iODU and eODU and a top
+ // Create 1 cep per Xpdr in the I_ODU and a top
// connection iODU between the xpdrs
for (String xpdr:xpdrNodelist) {
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst().get();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, E_ODU, DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, E_ODU, DSR, netCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, I_ODU, DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, I_ODU, DSR, netCep2);
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_ODU,
+ TapiStringConstants.DSR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.DSR,
+ netCep1);
cepMap.put(netCep1.key(), netCep1);
- cepMap.put(netCep2.key(), netCep2);
-
- // Create x connection between I_ODU and E_ODU within xpdr
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep1, netCep2, spcXpdrNetwork, spcXpdrNetwork, ODU,
- LayerProtocolName.ODU);
- this.connectionFullMap.put(connection.key(), connection);
-
- // Create X connection that will be added to the service object
- Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- connServMap.put(conn.key(), conn);
}
- // ODU top connection between edge xpdr e_ODU
+ // ODU top connection between edge xpdr i_ODU
String spcXpdr1 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(0))).findFirst().get();
String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().get();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, E_ODU, LayerProtocolName.ODU);
+ connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_ODU,
+ LayerProtocolName.ODU);
this.connectionFullMap.put(connection.key(), connection);
// ODU top connection that will be added to the service object
// TODO photonic media model should be updated to have the corresponding CEPs. I will just create
// 3 different MC CEPs giving different IDs to show that they are different
// Create 3 CEPs for each xpdr otsi node and the corresponding cross connection matchin the NEPs
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, PHTNC_MEDIA, OTSI,
- LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, PHTNC_MEDIA, OTSI, netCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, E_OTSI, OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, E_OTSI, OTSI, netCep2);
- ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, I_OTSI, OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, I_OTSI, OTSI, netCep3);
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.OTSI,
+ netCep1);
+ ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.E_OTSI,
+ TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.E_OTSI, TapiStringConstants.OTSI,
+ netCep2);
+ ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
+ TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
+ netCep3);
cepMap.put(netCep1.key(), netCep1);
cepMap.put(netCep2.key(), netCep2);
cepMap.put(netCep3.key(), netCep3);
// Create x connection between I_OTSi and E_OTSi within xpdr
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork, OTSI,
- LayerProtocolName.PHOTONICMEDIA);
+ connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork,
+ TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
this.connectionFullMap.put(connection.key(), connection);
// Create X connection that will be added to the service object
String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().get();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, I_OTSI, LayerProtocolName.PHOTONICMEDIA);
+ connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI,
+ LayerProtocolName.PHOTONICMEDIA);
this.connectionFullMap.put(connection.key(), connection);
// OTSi top connection that will be added to the service object
// Create 3 CEPs for each AD and DEG and the corresponding cross connections, matching the NEPs
// created in the topology creation
// add CEPs to the topology to the corresponding ONEP
- ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmAD, PHTNC_MEDIA, adCep1);
- ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, MC);
- putRdmCepInTopologyContext(roadm, spcRdmAD, MC, adCep2);
- ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, OTSI_MC);
- putRdmCepInTopologyContext(roadm, spcRdmAD, OTSI_MC, adCep3);
+ ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA, adCep1);
+ ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, TapiStringConstants.MC);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.MC, adCep2);
+ ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, TapiStringConstants.OTSI_MC);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.OTSI_MC, adCep3);
cepMap.put(adCep1.key(), adCep1);
cepMap.put(adCep2.key(), adCep2);
cepMap.put(adCep3.key(), adCep3);
String spcRdmDEG = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().get();
LOG.info("Degree port of ROADm {} = {}", roadm, spcRdmDEG);
- ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, PHTNC_MEDIA, degCep1);
- ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, MC, degCep2);
- ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, OTSI_MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, OTSI_MC, degCep3);
+ ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA, degCep1);
+ ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, TapiStringConstants.MC);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.MC, degCep2);
+ ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, TapiStringConstants.OTSI_MC);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.OTSI_MC, degCep3);
cepMap.put(degCep1.key(), degCep1);
cepMap.put(degCep2.key(), degCep2);
cepMap.put(degCep3.key(), degCep3);
LOG.info("Going to create cross connections for ROADM {}", roadm);
// Create X connections between MC and OTSi_MC for full map
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection1 = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, MC,
+ connection1 = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, TapiStringConstants.MC,
LayerProtocolName.PHOTONICMEDIA);
LOG.info("Cross connection 1 created = {}", connection1.toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection2 = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, OTSI_MC,
+ connection2 = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, TapiStringConstants.OTSI_MC,
LayerProtocolName.PHOTONICMEDIA);
LOG.info("Cross connection 2 created = {}", connection2.toString());
this.connectionFullMap.put(connection1.key(), connection1);
// Create top connections between MC for full map
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, MC, LayerProtocolName.PHOTONICMEDIA);
+ connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.MC,
+ LayerProtocolName.PHOTONICMEDIA);
this.connectionFullMap.put(connection.key(), connection);
LOG.info("Top connection created = {}", connection.toString());
String spcRdmAD1 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm1)).findFirst().get();
String spcRdmAD2 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm2)).findFirst().get();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, OTSI_MC,
+ connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.OTSI_MC,
LayerProtocolName.PHOTONICMEDIA);
this.connectionFullMap.put(connection.key(), connection);
LOG.info("Top connection created = {}", connection.toString());
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
qualifier)).getBytes(Charset.forName("UTF-8")))
.toString()))
- .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString()))
.build();
// TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...)
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
nodeLayer)).getBytes(Charset.forName("UTF-8")))
.toString()))
- .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString()))
.build();
// TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...)
private void putRdmCepInTopologyContext(String node, String spcRdmAD, String qual, ConnectionEndPoint cep) {
LOG.info("NEP id before Merge = {}", String.join("+", node, qual, spcRdmAD.split("\\+")[1]));
- LOG.info("Node of NEP id before Merge = {}", String.join("+", node, PHTNC_MEDIA));
+ LOG.info("Node of NEP id before Merge = {}", String.join("+", node, TapiStringConstants.PHTNC_MEDIA));
// Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, PHTNC_MEDIA)
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, TapiStringConstants.PHTNC_MEDIA)
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, qual, spcRdmAD.split("\\+")[1])
.getBytes(Charset.forName("UTF-8"))).toString());
private void putXpdrCepInTopologyContext(String node, String spcXpdrNet, String qual, String nodeLayer,
ConnectionEndPoint cep) {
// Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, nodeLayer)
.getBytes(Charset.forName("UTF-8"))).toString());
? String.join("-", nodeid.split("-")[0], nodeid.split("-")[1]) : nodeid.split("-")[0];
}
+ private ConnectionEndPoint getAssociatediODUCep(String spcXpdrNetwork) {
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
+ TapiStringConstants.DSR).getBytes(Charset.forName("UTF-8")))).toString());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
+ TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]).getBytes(Charset.forName("UTF-8"))))
+ .toString());
+ Uuid cepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP",
+ spcXpdrNetwork.split("\\+")[0], TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]))
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ InstanceIdentifier<OwnedNodeEdgePoint> nepIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
+ .child(Topology.class, new TopologyKey(topoUuid))
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
+ new NodeKey(nodeUuid)).child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)).build();
+ try {
+ Optional<OwnedNodeEdgePoint> optNode = this.networkTransactionService
+ .read(LogicalDatastoreType.OPERATIONAL, nepIID).get();
+ if (!optNode.isPresent()) {
+ LOG.error("Node is not present in datastore");
+ return null;
+ }
+ if (optNode.get().augmentation(OwnedNodeEdgePoint1.class) == null) {
+ LOG.error("Node doesnt have ceps");
+ return null;
+ }
+ return optNode.get().augmentation(OwnedNodeEdgePoint1.class).getCepList().getConnectionEndPoint()
+ .get(new org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(cepUuid));
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Couldnt read node in topology", e);
+ return null;
+ }
+ }
+
+ private String getAssociatedNetworkPort(String spcXpdrClient, List<String> xpdrNetworkTplist) {
+ for (String networkPort:xpdrNetworkTplist) {
+ if (networkPort.split("\\+")[0].equals(spcXpdrClient.split("\\+")[0])) {
+ return networkPort;
+ }
+ }
+ return null;
+ }
+
public void setInput(CreateConnectivityServiceInput input) {
this.input = input;
}
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmTpType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Node1;
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.network.Node;
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.node.TerminationPoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ProtectionType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RestorationPolicy;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.ResilienceTypeBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanism;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanismBuilder;
import org.opendaylight.yangtools.yang.common.Uint16;
-import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ConvertORTopoToTapiFullTopo {
- private static final String DSR = "DSR";
- private static final String I_ODU = "iODU";
- private static final String E_ODU = "eODU";
- private static final String OTSI = "OTSi";
- private static final String E_OTSI = "eOTSi";
- private static final String I_OTSI = "iOTSi";
- private static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
- private static final String MC = "MEDIA_CHANNEL";
- private static final String OTSI_MC = "OTSi_MEDIA_CHANNEL";
private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiFullTopo.class);
private String ietfNodeId;
private OpenroadmNodeType ietfNodeType;
private Map<LinkKey, Link> tapiLinks;
private Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSips;
private Map<String, Uuid> uuidMap;
+ private final TapiLink tapiLink;
- public ConvertORTopoToTapiFullTopo(Uuid tapiTopoUuid) {
+ public ConvertORTopoToTapiFullTopo(Uuid tapiTopoUuid, TapiLink tapiLink) {
this.tapiTopoUuid = tapiTopoUuid;
this.tapiNodes = new HashMap<>();
this.tapiLinks = new HashMap<>();
this.uuidMap = new HashMap<>();
this.tapiSips = new HashMap<>();
+ this.tapiLink = tapiLink;
}
public void convertNode(Node ietfNode, List<String> networkPorts) {
// node creation [DSR/ODU]
LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId);
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, DSR))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, DSR), nodeUuid);
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR)).getBytes(Charset.forName("UTF-8"))).toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR), nodeUuid);
Name nameDsr = new NameBuilder().setValueName("dsr/odu node name").setValue(
- String.join("+", this.ietfNodeId, DSR)).build();
+ String.join("+", this.ietfNodeId, TapiStringConstants.DSR)).build();
List<LayerProtocolName> dsrLayerProtocols = Arrays.asList(LayerProtocolName.DSR, LayerProtocolName.ODU);
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
.Node dsrNode = createTapiNode(Map.of(nameDsr.key(), nameDsr), dsrLayerProtocols);
// node creation [otsi]
LOG.info("creation of an OTSi node for {}", this.ietfNodeId);
- nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, OTSI))
+ nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, TapiStringConstants.OTSI))
.getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, OTSI), nodeUuid);
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI), nodeUuid);
Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(
- String.join("+", this.ietfNodeId, OTSI)).build();
+ String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)).build();
List<LayerProtocolName> otsiLayerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
.Node otsiNode = createTapiNode(Map.of(nameOtsi.key(), nameOtsi), otsiLayerProtocols);
if (!linksToNotConvert.contains(otnlink.getLinkId().getValue())) {
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks
.network.Link oppositeLink = otnLinkMap.get(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns
- .yang.ietf.network.topology.rev180226.networks.network.LinkKey(otnlink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
+ .yang.ietf.network.topology.rev180226.networks.network.LinkKey(otnlink.augmentation(Link1.class)
.getOppositeLink()));
- Link tapiLink = createTapiLink(otnlink, oppositeLink);
- linksToNotConvert.add(oppositeLink.getLinkId().getValue());
- tapiLinks.put(tapiLink.key(), tapiLink);
+
+ AdminStates oppLnkAdmState = null;
+ State oppLnkOpState = null;
+ String oppositeLinkId = null;
+ if (oppositeLink != null) {
+ oppLnkAdmState = oppositeLink.augmentation(Link1.class).getAdministrativeState();
+ oppLnkOpState = oppositeLink.augmentation(Link1.class).getOperationalState();
+ oppositeLinkId = oppositeLink.getLinkId().getValue();
+ }
+ String adminState =
+ otnlink.augmentation(Link1.class).getAdministrativeState() == null
+ || oppLnkAdmState == null
+ ? null
+ : this.tapiLink.setTapiAdminState(
+ otnlink.augmentation(Link1.class).getAdministrativeState(), oppLnkAdmState).getName();
+ String operState =
+ otnlink.augmentation(Link1.class).getOperationalState() == null
+ || oppLnkOpState == null
+ ? null
+ : this.tapiLink.setTapiOperationalState(
+ otnlink.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName();
+
+ String prefix = otnlink.getLinkId().getValue().split("-")[0];
+ String nodesQual = prefix.equals("OTU4") ? TapiStringConstants.OTSI : TapiStringConstants.DSR;
+ String tpsQual = prefix.equals("OTU4") ? TapiStringConstants.I_OTSI : TapiStringConstants.E_ODU;
+ LayerProtocolName layerProtocolName = prefix.equals("OTU4") ? LayerProtocolName.PHOTONICMEDIA
+ : LayerProtocolName.ODU;
+
+ Link tapLink = this.tapiLink.createTapiLink(otnlink.getSource().getSourceNode().getValue(),
+ otnlink.getSource().getSourceTp().getValue(), otnlink.getDestination().getDestNode().getValue(),
+ otnlink.getDestination().getDestTp().getValue(), TapiStringConstants.OTN_XPDR_XPDR_LINK, nodesQual,
+ nodesQual, tpsQual, tpsQual, adminState, operState, List.of(layerProtocolName),
+ List.of(layerProtocolName.getName()), this.tapiTopoUuid);
+ linksToNotConvert.add(oppositeLinkId);
+ tapiLinks.put(tapLink.key(), tapLink);
}
}
}
for (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network
.Link link : rdmTordmLinkList) {
if (!linksToNotConvert.contains(link.getLinkId().getValue())) {
- Link tapiLink = createTapiOmsLink(link, rdmTordmLinkList.stream()
- .filter(l -> l.getLinkId().equals(link.augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev200529.Link1.class).getOppositeLink()))
- .findAny().orElse(null));
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
+ .ietf.network.topology.rev180226.networks.network.Link oppositeLink = rdmTordmLinkList.stream()
+ .filter(l -> l.getLinkId().equals(link.augmentation(Link1.class).getOppositeLink()))
+ .findAny().orElse(null);
+
+ AdminStates oppLnkAdmState = null;
+ State oppLnkOpState = null;
+ if (oppositeLink != null) {
+ oppLnkAdmState = oppositeLink.augmentation(Link1.class).getAdministrativeState();
+ oppLnkOpState = oppositeLink.augmentation(Link1.class).getOperationalState();
+ }
+ String adminState =
+ link.augmentation(Link1.class).getAdministrativeState() == null
+ || oppLnkAdmState == null
+ ? null
+ : this.tapiLink.setTapiAdminState(
+ link.augmentation(Link1.class).getAdministrativeState(), oppLnkAdmState).getName();
+ String operState =
+ link.augmentation(Link1.class).getOperationalState() == null
+ || oppLnkOpState == null
+ ? null
+ : this.tapiLink.setTapiOperationalState(
+ link.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName();
+
+ Link tapLink = this.tapiLink.createTapiLink(String.join("-",
+ link.getSource().getSourceNode().getValue().split("-")[0],
+ link.getSource().getSourceNode().getValue().split("-")[1]),
+ link.getSource().getSourceTp().getValue(), String.join("-",
+ link.getDestination().getDestNode().getValue().split("-")[0],
+ link.getDestination().getDestNode().getValue().split("-")[1]),
+ link.getDestination().getDestTp().getValue(), TapiStringConstants.OMS_RDM_RDM_LINK,
+ TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA, adminState, operState, List.of(LayerProtocolName.PHOTONICMEDIA),
+ List.of(LayerProtocolName.PHOTONICMEDIA.getName()), this.tapiTopoUuid);
linksToNotConvert.add(link
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
+ .augmentation(Link1.class)
.getOppositeLink().getValue());
- tapiLinks.put(tapiLink.key(), tapiLink);
+ tapiLinks.put(tapLink.key(), tapLink);
}
}
}
// UUID
LOG.info("Creation of PHOTONIC node for {}", roadm.getNodeId().getValue());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", roadm.getNodeId().getValue(),
- PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
// Names
Name nodeNames = new NameBuilder().setValueName("roadm node name")
- .setValue(String.join("+", roadm.getNodeId().getValue(), PHTNC_MEDIA)).build();
+ .setValue(String.join("+", roadm.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA)).build();
// Protocol Layer
List<LayerProtocolName> layerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
// Build tapi node
.setUuid(nodeUuid)
.setName(nodeNames)
.setLayerProtocolName(layerProtocols)
- .setAdministrativeState(setTapiAdminState(this.ietfNodeAdminState))
- .setOperationalState(setTapiOperationalState(this.ietfNodeOperState))
+ .setAdministrativeState(this.tapiLink.setTapiAdminState(this.ietfNodeAdminState.getName()))
+ .setOperationalState(this.tapiLink.setTapiOperationalState(this.ietfNodeOperState.getName()))
.setLifecycleState(LifecycleState.INSTALLED)
.setOwnedNodeEdgePoint(onepl)
.setNodeRuleGroup(nodeRuleGroupList)
.build();
}
- private AdministrativeState setTapiAdminState(AdminStates adminState) {
- if (adminState == null) {
- return null;
- }
- return adminState.equals(AdminStates.InService)
- ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
- }
-
- private AdministrativeState setTapiAdminState(AdminStates adminState1, AdminStates adminState2) {
- if (adminState1 == null || adminState2 == null) {
- return null;
- }
- LOG.info("Admin state 1 = {}, andmin state 2 = {}", adminState1.getName(), adminState2.getName());
- if (AdminStates.InService.equals(adminState1) && AdminStates.InService.equals(adminState2)) {
- return AdministrativeState.UNLOCKED;
- } else {
- return AdministrativeState.LOCKED;
- }
- }
-
- private OperationalState setTapiOperationalState(State operState) {
- if (operState == null) {
- return null;
- }
- return operState.getName().equals("inService") ? OperationalState.ENABLED : OperationalState.DISABLED;
- }
-
- private OperationalState setTapiOperationalState(State operState1, State operState2) {
- if (operState1 == null || operState2 == null) {
- return null;
- }
- LOG.info("Oper state 1 = {}, Oper state 2 = {}", operState1.getName(), operState2.getName());
- if (State.InService.equals(operState1) && State.InService.equals(operState2)) {
- return OperationalState.ENABLED;
- } else {
- return OperationalState.DISABLED;
- }
- }
-
private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node
createRoadmTapiNode(Uuid nodeUuid, Name nodeNames, List<LayerProtocolName> layerProtocols,
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist) {
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList,
Map<RuleKey, Rule> ruleList) {
Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, OTSI));
+ nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI));
// iNep creation on otsi node
for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, I_OTSI,
+ LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
oorNetworkPortList.get(i).getTpId().getValue()));
Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, I_OTSI, oorNetworkPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8")))
+ (String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
.toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, I_OTSI,
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
Name onedName = new NameBuilder()
.setValueName("iNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, I_OTSI, oorNetworkPortList.get(i).getTpId().getValue()))
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
+ oorNetworkPortList.get(i).getTpId().getValue()))
.build();
OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, I_OTSI));
+ String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI));
onepl.put(onep.key(), onep);
}
// eNep creation on otsi node
for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, E_OTSI,
+ LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
oorNetworkPortList.get(i).getTpId().getValue()));
Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, E_OTSI, oorNetworkPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8")))
+ (String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
.toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, E_OTSI,
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
Name onedName = new NameBuilder()
.setValueName("eNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, E_OTSI, oorNetworkPortList.get(i).getTpId().getValue()))
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
+ oorNetworkPortList.get(i).getTpId().getValue()))
.build();
OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, false,
- String.join("+", this.ietfNodeId, E_OTSI));
+ String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI));
onepl.put(onep.key(), onep);
}
// Photonic Media Nep creation on otsi node
for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, PHTNC_MEDIA,
+ LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
oorNetworkPortList.get(i).getTpId().getValue()));
Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, PHTNC_MEDIA,
+ (String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
.toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, PHTNC_MEDIA,
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
oorNetworkPortList.get(i).getTpId().getValue()), nepUuid3);
Name onedName = new NameBuilder()
.setValueName("PhotMedNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, PHTNC_MEDIA,
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
oorNetworkPortList.get(i).getTpId().getValue()))
.build();
OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, false,
- String.join("+", this.ietfNodeId, PHTNC_MEDIA));
+ String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA));
onepl.put(onep.key(), onep);
}
// create NodeRuleGroup
.NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
.node.rule.group.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, OTSI)))
+ .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)))
.setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, I_OTSI, tp.getTpId().getValue())))
+ this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
+ tp.getTpId().getValue())))
.build();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
.NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
.node.rule.group.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, OTSI)))
+ .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)))
.setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, E_OTSI, tp.getTpId().getValue())))
+ this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
+ tp.getTpId().getValue())))
.build();
nepList.put(inep.key(), inep);
nepList.put(enep.key(), enep);
private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, DSR));
+ nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.DSR));
// client nep creation on DSR node
for (int i = 0; i < oorClientPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, DSR,
+ LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
oorClientPortList.get(i).getTpId().getValue()));
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, DSR, oorClientPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, DSR, oorClientPortList.get(i).getTpId().getValue()),
- nepUuid);
+ (String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
+ oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
+ oorClientPortList.get(i).getTpId().getValue()), nepUuid);
NameBuilder nameBldr = new NameBuilder().setValue(
- String.join("+", this.ietfNodeId, DSR, oorClientPortList.get(i).getTpId().getValue()));
+ String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
+ oorClientPortList.get(i).getTpId().getValue()));
Name name;
if (OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
name = nameBldr.setValueName("100G-tpdr").build();
}
OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(name.key(), name),
- LayerProtocolName.DSR, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId, DSR));
+ LayerProtocolName.DSR, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR));
onepl.put(onep.key(), onep);
}
// network nep creation on I_ODU node
for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, I_ODU,
+ LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
oorNetworkPortList.get(i).getTpId().getValue()));
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, I_ODU, oorNetworkPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, I_ODU, oorNetworkPortList.get(i).getTpId().getValue()),
- nepUuid);
+ (String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
+ oorNetworkPortList.get(i).getTpId().getValue()), nepUuid);
Name onedName = new NameBuilder()
.setValueName("iNodeEdgePoint_N")
- .setValue(String.join("+", this.ietfNodeId, I_ODU, oorNetworkPortList.get(i).getTpId().getValue()))
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
+ oorNetworkPortList.get(i).getTpId().getValue()))
.build();
OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, false, String.join("+", this.ietfNodeId, I_ODU));
+ LayerProtocolName.ODU, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
+ TapiStringConstants.I_ODU));
onepl.put(onep.key(), onep);
}
// network nep creation on E_ODU node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, E_ODU,
- oorNetworkPortList.get(i).getTpId().getValue()));
+ for (int i = 0; i < oorClientPortList.size(); i++) {
+ LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
+ oorClientPortList.get(i).getTpId().getValue()));
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, E_ODU, oorNetworkPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, E_ODU, oorNetworkPortList.get(i).getTpId().getValue()),
- nepUuid);
+ (String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
+ oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
+ oorClientPortList.get(i).getTpId().getValue()), nepUuid);
Name onedName = new NameBuilder()
.setValueName("eNodeEdgePoint_N")
- .setValue(String.join("+", this.ietfNodeId, E_ODU, oorNetworkPortList.get(i).getTpId().getValue()))
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
+ oorClientPortList.get(i).getTpId().getValue()))
.build();
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId, E_ODU));
+ OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(onedName.key(), onedName),
+ LayerProtocolName.ODU, LayerProtocolName.DSR, false, String.join("+", this.ietfNodeId,
+ TapiStringConstants.E_ODU));
onepl.put(onep.key(), onep);
}
// create NodeRuleGroup
LOG.info("TP list = {}", nbl.getTpList());
for (TpId tp : nbl.getTpList()) {
LOG.info("TP={}", tp.getValue());
- LOG.info("UuidKey={}", String.join("+", this.ietfNodeId, E_ODU, tp.getValue()));
- if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, E_ODU, tp.getValue()))
- || this.uuidMap.containsKey(String.join("+", this.ietfNodeId, DSR, tp.getValue()))) {
+ LOG.info("UuidKey={}", String.join("+", this.ietfNodeId,
+ TapiStringConstants.E_ODU, tp.getValue()));
+ if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId,
+ TapiStringConstants.E_ODU, tp.getValue()))
+ && this.uuidMap.containsKey(String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR, tp.getValue()))) {
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
- nep = new org.opendaylight.yang.gen.v1.urn
+ nep1 = new org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR)))
- .setNodeEdgePointUuid((tp.getValue().contains("CLIENT")) ? this.uuidMap.get(String.join(
- "+", this.ietfNodeId, DSR, tp.getValue())) : this.uuidMap.get(String.join(
- "+", this.ietfNodeId, E_ODU, tp.getValue())))
+ .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR)))
+ .setNodeEdgePointUuid(this.uuidMap.get(String.join(
+ "+", this.ietfNodeId, TapiStringConstants.DSR, tp.getValue())))
.build();
- nepList.put(nep.key(), nep);
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
+ nep2 = new org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR)))
+ .setNodeEdgePointUuid(this.uuidMap.get(String.join(
+ "+", this.ietfNodeId, TapiStringConstants.E_ODU, tp.getValue())))
+ .build();
+ nepList.put(nep1.key(), nep1);
+ nepList.put(nep2.key(), nep2);
}
}
// Empty random creation of mandatory fields for avoiding errors....
if (withSip) {
onepBldr.setMappedServiceInterfacePoint(createMSIP(1, nepProtocol, oorTp, keyword));
}
- onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedLayerProtocolQualifier(oorTp, nodeProtocol))
+ AdministrativeState adminState = null;
+ OperationalState operState = null;
+ if (oorTp.augmentation(TerminationPoint1.class).getAdministrativeState() != null) {
+ adminState = this.tapiLink.setTapiAdminState(oorTp.augmentation(TerminationPoint1.class)
+ .getAdministrativeState().getName());
+ }
+ if (oorTp.augmentation(TerminationPoint1.class).getOperationalState() != null) {
+ operState = this.tapiLink.setTapiOperationalState(oorTp.augmentation(TerminationPoint1.class)
+ .getOperationalState().getName());
+ }
+ onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedLayerProtocolQualifier(oorTp, nepProtocol))
.setLinkPortDirection(PortDirection.BIDIRECTIONAL)
.setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(setTapiAdminState(
- oorTp.augmentation(TerminationPoint1.class).getAdministrativeState()))
- .setOperationalState(setTapiOperationalState(
- oorTp.augmentation(TerminationPoint1.class).getOperationalState()))
+ .setAdministrativeState(adminState)
+ .setOperationalState(operState)
.setLifecycleState(LifecycleState.INSTALLED)
.setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
.setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
AdminStates admin = tp.augmentation(TerminationPoint1.class).getAdministrativeState();
State oper = tp.augmentation(TerminationPoint1.class).getOperationalState();
// PHOTONIC MEDIA nep
- LOG.info("PHOTO NEP = {}", String.join("+", this.ietfNodeId, PHTNC_MEDIA, tp.getTpId().getValue()));
+ LOG.info("PHOTO NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
+ tp.getTpId().getValue()));
Name nepName = new NameBuilder()
- .setValueName(PHTNC_MEDIA + "NodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, PHTNC_MEDIA, tp.getTpId().getValue()))
+ .setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint")
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
+ tp.getTpId().getValue()))
.build();
OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, PHTNC_MEDIA,
- tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString()))
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
+ TapiStringConstants.PHTNC_MEDIA, tp.getTpId().getValue()))
+ .getBytes(Charset.forName("UTF-8"))).toString()))
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
.setName(Map.of(nepName.key(), nepName))
.setSupportedCepLayerProtocolQualifier(List.of(PHOTONICLAYERQUALIFIEROMS.class))
.setLinkPortDirection(PortDirection.BIDIRECTIONAL)
.setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(setTapiAdminState(admin))
- .setOperationalState(setTapiOperationalState(oper))
+ .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName()))
+ .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName()))
.setLifecycleState(LifecycleState.INSTALLED)
.setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
.setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
onepMap.put(onep.key(), onep);
// MC nep
- LOG.info("MC NEP = {}", String.join("+", this.ietfNodeId, MC, tp.getTpId().getValue()));
+ LOG.info("MC NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.MC,
+ tp.getTpId().getValue()));
Name nepName1 = new NameBuilder()
- .setValueName(MC + "NodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, MC, tp.getTpId().getValue()))
+ .setValueName(TapiStringConstants.MC + "NodeEdgePoint")
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.MC, tp.getTpId().getValue()))
.build();
OwnedNodeEdgePointBuilder onepBldr1 = new OwnedNodeEdgePointBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, MC,
- tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString()))
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
+ TapiStringConstants.MC, tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString()))
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
.setName(Map.of(nepName1.key(), nepName1))
.setSupportedCepLayerProtocolQualifier(List.of(PHOTONICLAYERQUALIFIEROMS.class))
.setLinkPortDirection(PortDirection.BIDIRECTIONAL)
.setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(setTapiAdminState(admin))
- .setOperationalState(setTapiOperationalState(oper))
+ .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName()))
+ .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName()))
.setLifecycleState(LifecycleState.INSTALLED)
.setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
.setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
if (withSip) {
onepBldr1.setMappedServiceInterfacePoint(createMSIP(1, LayerProtocolName.PHOTONICMEDIA,
- tp, String.join("+", this.ietfNodeId, MC)));
+ tp, String.join("+", this.ietfNodeId, TapiStringConstants.MC)));
}
OwnedNodeEdgePoint onep1 = onepBldr1.build();
onepMap.put(onep1.key(), onep1);
// OTSiMC nep
- LOG.info("OTSi NEP = {}", String.join("+", this.ietfNodeId, OTSI_MC, tp.getTpId().getValue()));
+ LOG.info("OTSi NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
+ tp.getTpId().getValue()));
Name nepName2 = new NameBuilder()
- .setValueName(OTSI_MC + "NodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, OTSI_MC, tp.getTpId().getValue()))
+ .setValueName(TapiStringConstants.OTSI_MC + "NodeEdgePoint")
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
+ tp.getTpId().getValue()))
.build();
OwnedNodeEdgePoint onep2 = new OwnedNodeEdgePointBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, OTSI_MC,
- tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString()))
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
+ TapiStringConstants.OTSI_MC, tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
+ .toString()))
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
.setName(Map.of(nepName2.key(), nepName2))
.setSupportedCepLayerProtocolQualifier(List.of(PHOTONICLAYERQUALIFIEROMS.class))
.setLinkPortDirection(PortDirection.BIDIRECTIONAL)
.setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(setTapiAdminState(admin))
- .setOperationalState(setTapiOperationalState(oper))
+ .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName()))
+ .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName()))
.setLifecycleState(LifecycleState.INSTALLED)
.setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
.setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
.setValueName("SIP name")
.setValue(String.join("+", nodeid, tp.getTpId().getValue()))
.build();
+ AdministrativeState adminState = null;
+ OperationalState operState = null;
+ if (tp.augmentation(TerminationPoint1.class).getAdministrativeState() != null) {
+ adminState = this.tapiLink.setTapiAdminState(tp.augmentation(TerminationPoint1.class)
+ .getAdministrativeState().getName());
+ }
+ if (tp.augmentation(TerminationPoint1.class).getOperationalState() != null) {
+ operState = this.tapiLink.setTapiOperationalState(tp.augmentation(TerminationPoint1.class)
+ .getOperationalState().getName());
+ }
return new ServiceInterfacePointBuilder()
.setUuid(sipUuid)
.setName(Map.of(sipName.key(), sipName))
.setLayerProtocolName(layerProtocol)
- .setAdministrativeState(setTapiAdminState(
- tp.augmentation(TerminationPoint1.class).getAdministrativeState()))
- .setOperationalState(setTapiOperationalState(
- tp.augmentation(TerminationPoint1.class).getOperationalState()))
+ .setAdministrativeState(adminState)
+ .setOperationalState(operState)
.setLifecycleState(LifecycleState.INSTALLED)
.setAvailableCapacity(new AvailableCapacityBuilder().build())
.setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().build())
for (SupportedInterfaceCapability sic : sicList) {
switch (lpn.getName()) {
case "DSR":
- case "ODU":
switch (sic.getIfCapType().getSimpleName()) {
// TODO: it may be needed to add more cases clauses if the interface capabilities of a
// port are extended in the config file
break;
}
break;
+ case "ODU":
+ switch (sic.getIfCapType().getSimpleName()) {
+ // TODO: it may be needed to add more cases clauses if the interface capabilities of a
+ // port are extended in the config file
+ case "If1GEODU0":
+ sclpqSet.add(ODUTYPEODU0.class);
+ break;
+ case "If10GEODU2e":
+ sclpqSet.add(ODUTYPEODU2E.class);
+ break;
+ case "If10GEODU2":
+ case "If10GE":
+ sclpqSet.add(ODUTYPEODU2.class);
+ break;
+ case "If100GEODU4":
+ case "If100GE":
+ case "IfOCHOTU4ODU4":
+ case "IfOCH":
+ sclpqSet.add(ODUTYPEODU4.class);
+ break;
+ default:
+ LOG.error("IfCapability type not managed");
+ break;
+ }
+ break;
case "PHOTONIC_MEDIA":
if (sic.getIfCapType().getSimpleName().equals("IfOCHOTU4ODU4")
- || sic.getIfCapType().getSimpleName().equals("IfOCH")) {
+ || sic.getIfCapType().getSimpleName().equals("IfOCH")) {
sclpqSet.add(PHOTONICLAYERQUALIFIEROTSi.class);
sclpqSet.add(PHOTONICLAYERQUALIFIEROMS.class);
}
private void createTapiTransitionalLinks() {
for (TerminationPoint tp : this.oorNetworkPortList) {
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- String sourceKey = String.join("+", this.ietfNodeId, I_ODU, tp.getTpId().getValue());
- Uuid sourceUuidTp = this.uuidMap.get(sourceKey);
- String destKey = String.join("+", this.ietfNodeId, I_OTSI, tp.getTpId().getValue());
- Uuid destUuidTp = this.uuidMap.get(destKey);
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR)))
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, OTSI)))
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- Name linkName = new NameBuilder().setValueName("transitional link name")
- .setValue(String.join("--", this.ietfNodeId, sourceKey, destKey))
- .build();
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue("12345678")
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic("12345678")
- .setQueingLatencyCharacteristic("12345678")
- .setJitterCharacteristic("12345678")
- .setWanderCharacteristic("12345678")
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
- .build();
- ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
- .setValidationMechanism("validation mechanism")
- .setValidationRobustness("validation robustness")
- .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
- .build();
- Link transiLink = new LinkBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes((String.join("--", this.ietfNodeId, sourceKey, destKey))
- .getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setTransitionedLayerProtocolName(Arrays.asList(LayerProtocolName.ODU.getName(),
- LayerProtocolName.PHOTONICMEDIA.getName()))
- .setLayerProtocolName(Arrays.asList(LayerProtocolName.ODU, LayerProtocolName.PHOTONICMEDIA))
- .setNodeEdgePoint(nepList)
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build())
- .build())
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
- .setRestorationPolicy(RestorationPolicy.NA)
- .build())
- .setAdministrativeState(AdministrativeState.UNLOCKED)
- .setOperationalState(OperationalState.ENABLED)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build())
- .build())
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
- .build();
+ Link transiLink = tapiLink.createTapiLink(this.ietfNodeId, tp.getTpId().getValue(), this.ietfNodeId,
+ tp.getTpId().getValue(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR,
+ TapiStringConstants.OTSI, TapiStringConstants.I_ODU, TapiStringConstants.I_OTSI,
+ "inService", "inService", Arrays.asList(LayerProtocolName.ODU,
+ LayerProtocolName.PHOTONICMEDIA),
+ Arrays.asList(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()),
+ this.tapiTopoUuid);
this.tapiLinks.put(transiLink.key(), transiLink);
}
}
- private Link createTapiLink(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link link,
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link oppositeLink) {
- String prefix = link.getLinkId().getValue().split("-")[0];
- String sourceNode = link.getSource().getSourceNode().getValue();
- String sourceTp = link.getSource().getSourceTp().getValue();
- String destNode = link.getDestination().getDestNode().getValue();
- String destTp = link.getDestination().getDestTp().getValue();
- LOG.info("prefix = {}, sourceNode = {}, sourceTp = {}, destNode = {}, destTp = {}",
- prefix, sourceNode, sourceTp, destNode, destTp);
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- Uuid sourceUuidTp;
- Uuid sourceUuidNode;
- Uuid destUuidTp;
- Uuid destUuidNode;
- Name linkName;
- AdminStates oppositeLinkAdminState = null;
- State oppositeLinkOperState = null;
- if (oppositeLink != null) {
- oppositeLinkAdminState = oppositeLink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState();
- oppositeLinkOperState = oppositeLink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState();
- }
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue("12345678")
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic("12345678")
- .setQueingLatencyCharacteristic("12345678")
- .setJitterCharacteristic("12345678")
- .setWanderCharacteristic("12345678")
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
- .build();
- ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
- .setValidationMechanism("validation mechanism")
- .setValidationRobustness("validation robustness")
- .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
- .build();
- switch (prefix) {
- case "OTU4":
- sourceUuidTp = this.uuidMap.get(String.join("+", sourceNode, I_OTSI, sourceTp));
- sourceUuidNode = this.uuidMap.get(String.join("+", sourceNode, OTSI));
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(sourceUuidNode)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- destUuidTp = this.uuidMap.get(String.join("+", destNode, I_OTSI, destTp));
- destUuidNode = this.uuidMap.get(String.join("+", destNode, OTSI));
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(destUuidNode)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- linkName = new NameBuilder().setValueName("otn link name")
- .setValue(link.getLinkId().getValue())
- .build();
- return new LinkBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((link.getLinkId().getValue())
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setLayerProtocolName(Arrays.asList(LayerProtocolName.PHOTONICMEDIA))
- .setTransitionedLayerProtocolName(new ArrayList<>())
- .setAdministrativeState(setTapiAdminState(link
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState(), oppositeLinkAdminState))
- .setOperationalState(setTapiOperationalState(link
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState(), oppositeLinkOperState))
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setNodeEdgePoint(nepList)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(100)).build()).build())
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
- .setValue(Uint64.valueOf(link.augmentation(Link1.class).getAvailableBandwidth())).build())
- .build())
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
- .setRestorationPolicy(RestorationPolicy.NA)
- .build())
- .setLifecycleState(LifecycleState.INSTALLED)
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
- .build();
- case "ODTU4":
- sourceUuidTp = this.uuidMap.get(String.join("+", sourceNode, E_ODU, sourceTp));
- sourceUuidNode = this.uuidMap.get(String.join("+", sourceNode, DSR));
- NodeEdgePoint sourceNep2 = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(sourceUuidNode)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep2.key(), sourceNep2);
- destUuidTp = this.uuidMap.get(String.join("+", destNode, E_ODU, destTp));
- destUuidNode = this.uuidMap.get(String.join("+", destNode, DSR));
- NodeEdgePoint destNep2 = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(destUuidNode)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep2.key(), destNep2);
- linkName = new NameBuilder().setValueName("otn link name")
- .setValue(link.getLinkId().getValue())
- .build();
- return new LinkBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((link.getLinkId().getValue())
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setLayerProtocolName(Arrays.asList(LayerProtocolName.ODU))
- .setTransitionedLayerProtocolName(new ArrayList<>())
- .setAdministrativeState(setTapiAdminState(link
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState(), oppositeLinkAdminState))
- .setOperationalState(setTapiOperationalState(link
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState(), oppositeLinkOperState))
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setNodeEdgePoint(nepList)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(100)).build()).build())
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
- .setValue(Uint64.valueOf(link.augmentation(Link1.class).getAvailableBandwidth())).build())
- .build())
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
- .setRestorationPolicy(RestorationPolicy.NA)
- .build())
- .setLifecycleState(LifecycleState.INSTALLED)
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
- .build();
- default:
- LOG.error("OTN link of type {} not managed yet", prefix);
- return null;
- }
- }
-
- private Link createTapiOmsLink(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link link,
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link oppositeLink) {
- String sourceNode = getIdBasedOnModelVersion(link.getSource().getSourceNode().getValue());
- String sourceTp = link.getSource().getSourceTp().getValue();
- String destNode = getIdBasedOnModelVersion(link.getDestination().getDestNode().getValue());
- String destTp = link.getDestination().getDestTp().getValue();
- AdminStates oppositeLinkAdminState = null;
- State oppositeLinkOperState = null;
- if (oppositeLink != null) {
- oppositeLinkAdminState = oppositeLink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState();
- oppositeLinkOperState = oppositeLink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState();
- }
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- Uuid sourceUuidNode = new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode,
- PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
- Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode, PHTNC_MEDIA, sourceTp))
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid destUuidNode = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode,
- PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
- Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode, PHTNC_MEDIA, destTp))
- .getBytes(Charset.forName("UTF-8"))).toString());
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(sourceUuidNode)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(destUuidNode)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- Name linkName = new NameBuilder().setValueName("OMS link name")
- .setValue(link.getLinkId().getValue())
- .build();
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue("12345678")
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic("12345678")
- .setQueingLatencyCharacteristic("12345678")
- .setJitterCharacteristic("12345678")
- .setWanderCharacteristic("12345678")
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
- .build();
- ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
- .setValidationMechanism("validation mechanism")
- .setValidationRobustness("validation robustness")
- .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
- .build();
- return new LinkBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes((link.getLinkId().getValue()).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setLayerProtocolName(List.of(LayerProtocolName.PHOTONICMEDIA))
- .setTransitionedLayerProtocolName(new ArrayList<>())
- .setNodeEdgePoint(nepList)
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
- .setRestorationPolicy(RestorationPolicy.NA)
- .build())
- .setAdministrativeState(setTapiAdminState(link
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState(), oppositeLinkAdminState))
- .setOperationalState(setTapiOperationalState(link
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState(), oppositeLinkOperState))
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(100)).build()).build())
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
- .setValue(Uint64.valueOf(100)).build())
- .build())
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
- .build();
- }
-
public void convertXpdrToRdmLinks(List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
.ietf.network.topology.rev180226.networks.network.Link> xpdrRdmLinkList) {
List<String> linksToNotConvert = new ArrayList<>();
if (!linksToNotConvert.contains(link.getLinkId().getValue())) {
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
.ietf.network.topology.rev180226.networks.network.Link oppositeLink = xpdrRdmLinkList.stream()
- .filter(l -> l.getLinkId().equals(link.augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev200529.Link1.class).getOppositeLink())).findAny().orElse(null);
+ .filter(l -> l.getLinkId().equals(link.augmentation(Link1.class).getOppositeLink())).findAny()
+ .orElse(null);
- AdminStates oppositeLinkAdminState = null;
- State oppositeLinkOperState = null;
+ AdminStates oppLnkAdmState = null;
+ State oppLnkOpState = null;
if (oppositeLink != null) {
- oppositeLinkAdminState = oppositeLink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState();
- oppositeLinkOperState = oppositeLink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState();
+ oppLnkAdmState = oppositeLink.augmentation(Link1.class).getAdministrativeState();
+ oppLnkOpState = oppositeLink.augmentation(Link1.class).getOperationalState();
}
+ String adminState =
+ link.augmentation(Link1.class).getAdministrativeState() == null
+ || oppLnkAdmState == null
+ ? null
+ : this.tapiLink.setTapiAdminState(
+ link.augmentation(Link1.class).getAdministrativeState(), oppLnkAdmState).getName();
+ String operState =
+ link.augmentation(Link1.class).getOperationalState() == null
+ || oppLnkOpState == null
+ ? null
+ : this.tapiLink.setTapiOperationalState(
+ link.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName();
String sourceNode = (link.getSource().getSourceNode().getValue().contains("ROADM"))
? getIdBasedOnModelVersion(link.getSource().getSourceNode().getValue())
: link.getSource().getSourceNode().getValue();
String sourceTp = link.getSource().getSourceTp().getValue();
+ String sourceNodeQual = sourceNode.contains("ROADM") ? TapiStringConstants.PHTNC_MEDIA
+ : TapiStringConstants.OTSI;
String destNode = (link.getDestination().getDestNode().getValue().contains("ROADM"))
? getIdBasedOnModelVersion(link.getDestination().getDestNode().getValue())
: link.getDestination().getDestNode().getValue();
String destTp = link.getDestination().getDestTp().getValue();
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- Uuid sourceUuidNode = (sourceNode.contains("ROADM")) ? new Uuid(UUID.nameUUIDFromBytes((
- String.join("+", sourceNode, PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString())
- : new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode, OTSI))
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", sourceNode, PHTNC_MEDIA, sourceTp))
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid destUuidNode = (destNode.contains("ROADM")) ? new Uuid(UUID.nameUUIDFromBytes((
- String.join("+", destNode, PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString())
- : new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode, OTSI))
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode,
- PHTNC_MEDIA, destTp)).getBytes(Charset.forName("UTF-8"))).toString());
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(sourceUuidNode)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(destUuidNode)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- Name linkName = new NameBuilder().setValueName("XPDR-RDM link name")
- .setValue(link.getLinkId().getValue())
- .build();
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue("12345678")
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic("12345678")
- .setQueingLatencyCharacteristic("12345678")
- .setJitterCharacteristic("12345678")
- .setWanderCharacteristic("12345678")
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
- .build();
- ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
- .setValidationMechanism("validation mechanism")
- .setValidationRobustness("validation robustness")
- .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
- .build();
- Link tapiLink = new LinkBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes((link.getLinkId().getValue()).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setLayerProtocolName(List.of(LayerProtocolName.PHOTONICMEDIA))
- .setTransitionedLayerProtocolName(new ArrayList<>())
- .setNodeEdgePoint(nepList)
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
- .setRestorationPolicy(RestorationPolicy.NA)
- .build())
- .setAdministrativeState(setTapiAdminState(link
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState(), oppositeLinkAdminState))
- .setOperationalState(setTapiOperationalState(link
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState(), oppositeLinkOperState))
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(100)).build()).build())
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
- .setValue(Uint64.valueOf(100)).build())
- .build())
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
- .build();
- linksToNotConvert.add(link
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOppositeLink().getValue());
- this.tapiLinks.put(tapiLink.key(), tapiLink);
+ String destNodeQual = destNode.contains("ROADM") ? TapiStringConstants.PHTNC_MEDIA
+ : TapiStringConstants.OTSI;
+ Link tapLink = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
+ TapiStringConstants.OMS_XPDR_RDM_LINK, sourceNodeQual, destNodeQual,
+ TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, adminState,
+ operState, List.of(LayerProtocolName.PHOTONICMEDIA),
+ List.of(LayerProtocolName.PHOTONICMEDIA.getName()), this.tapiTopoUuid);
+ linksToNotConvert.add(link.augmentation(Link1.class).getOppositeLink().getValue());
+ this.tapiLinks.put(tapLink.key(), tapLink);
}
}
}
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmTpType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Node1;
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.topology.rev180226.TpId;
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.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
import org.opendaylight.yangtools.yang.common.Uint16;
-import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ConvertORTopoToTapiTopo {
- private static final String DSR = "DSR";
- private static final String OTSI = "OTSi";
- private static final String E_OTSI = "eOTSi";
- private static final String I_OTSI = "iOTSi";
- private static final String RDM_INFRA = "ROADM-infra";
private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiTopo.class);
private String ietfNodeId;
private OpenroadmNodeType ietfNodeType;
tapiNodes;
private Map<LinkKey, Link> tapiLinks;
private Map<String, Uuid> uuidMap;
+ private final TapiLink tapiLink;
- public ConvertORTopoToTapiTopo(Uuid tapiTopoUuid) {
+ public ConvertORTopoToTapiTopo(Uuid tapiTopoUuid, TapiLink tapiLink) {
this.tapiTopoUuid = tapiTopoUuid;
this.tapiNodes = new HashMap<>();
this.tapiLinks = new HashMap<>();
this.uuidMap = new HashMap<>();
+ this.tapiLink = tapiLink;
}
public void convertNode(Node ietfNode, List<String> networkPorts) {
// node creation [DSR/ODU]
LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId);
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, DSR))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, DSR), nodeUuid);
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR)).getBytes(Charset.forName("UTF-8"))).toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR), nodeUuid);
Name nameDsr = new NameBuilder().setValueName("dsr/odu node name").setValue(this.ietfNodeId).build();
List<LayerProtocolName> dsrLayerProtocols = Arrays.asList(LayerProtocolName.DSR, LayerProtocolName.ODU);
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
// node creation [otsi]
LOG.info("creation of an OTSi node for {}", this.ietfNodeId);
- nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, OTSI))
+ nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, TapiStringConstants.OTSI))
.getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, OTSI), nodeUuid);
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI), nodeUuid);
Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(this.ietfNodeId).build();
List<LayerProtocolName> otsiLayerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
if (!linksToNotConvert.contains(otnlink.getLinkId().getValue())) {
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks
.network.Link oppositeLink = otnLinkMap.get(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns
- .yang.ietf.network.topology.rev180226.networks.network.LinkKey(otnlink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
+ .yang.ietf.network.topology.rev180226.networks.network.LinkKey(otnlink.augmentation(Link1.class)
.getOppositeLink()));
- Link tapiLink = createTapiLink(otnlink, oppositeLink);
- linksToNotConvert.add(oppositeLink.getLinkId().getValue());
- tapiLinks.put(tapiLink.key(), tapiLink);
+
+ AdminStates oppLnkAdmState = null;
+ State oppLnkOpState = null;
+ String oppositeLinkId = null;
+ if (oppositeLink != null) {
+ oppLnkAdmState = oppositeLink.augmentation(Link1.class).getAdministrativeState();
+ oppLnkOpState = oppositeLink.augmentation(Link1.class).getOperationalState();
+ oppositeLinkId = oppositeLink.getLinkId().getValue();
+ }
+ String adminState =
+ otnlink.augmentation(Link1.class).getAdministrativeState() == null
+ || oppLnkAdmState == null
+ ? null
+ : this.tapiLink.setTapiAdminState(
+ otnlink.augmentation(Link1.class).getAdministrativeState(), oppLnkAdmState).getName();
+ String operState = otnlink.augmentation(Link1.class).getOperationalState() == null
+ || oppLnkOpState == null
+ ? null
+ : this.tapiLink.setTapiOperationalState(
+ otnlink.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName();
+
+ String prefix = otnlink.getLinkId().getValue().split("-")[0];
+ String nodesQual = prefix.equals("OTU4") ? TapiStringConstants.OTSI : TapiStringConstants.DSR;
+ String tpsQual = prefix.equals("OTU4") ? TapiStringConstants.I_OTSI : TapiStringConstants.E_ODU;
+ LayerProtocolName layerProtocolName = prefix.equals("OTU4") ? LayerProtocolName.PHOTONICMEDIA
+ : LayerProtocolName.ODU;
+
+ Link tapLink = this.tapiLink.createTapiLink(otnlink.getSource().getSourceNode().getValue(),
+ otnlink.getSource().getSourceTp().getValue(), otnlink.getDestination().getDestNode().getValue(),
+ otnlink.getDestination().getDestTp().getValue(), TapiStringConstants.OTN_XPDR_XPDR_LINK, nodesQual,
+ nodesQual, tpsQual, tpsQual, adminState, operState, List.of(layerProtocolName),
+ List.of(layerProtocolName.getName()), this.tapiTopoUuid);
+ linksToNotConvert.add(oppositeLinkId);
+ tapiLinks.put(tapLink.key(), tapLink);
}
}
}
public void convertRoadmInfrastructure() {
LOG.info("abstraction of the ROADM infrastructure towards a photonic node");
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(RDM_INFRA.getBytes(Charset.forName("UTF-8"))).toString());
- Name nodeName = new NameBuilder().setValueName("otsi node name").setValue(RDM_INFRA).build();
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.RDM_INFRA
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Name nodeName = new NameBuilder().setValueName("otsi node name").setValue(TapiStringConstants.RDM_INFRA)
+ .build();
List<LayerProtocolName> nodeLayerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiPhotonicNodes
.setUuid(nodeUuid)
.setName(nodeNames)
.setLayerProtocolName(layerProtocols)
- .setAdministrativeState(setTapiAdminState(this.ietfNodeAdminState))
- .setOperationalState(setTapiOperationalState(this.ietfNodeOperState))
+ .setAdministrativeState(this.tapiLink.setTapiAdminState(this.ietfNodeAdminState.getName()))
+ .setOperationalState(this.tapiLink.setTapiOperationalState(this.ietfNodeOperState.getName()))
.setLifecycleState(LifecycleState.INSTALLED)
.setOwnedNodeEdgePoint(onepl)
.setNodeRuleGroup(nodeRuleGroupList)
.build();
}
- private AdministrativeState setTapiAdminState(AdminStates adminState) {
- if (adminState == null) {
- return null;
- }
- return adminState.equals(AdminStates.InService) ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
- }
-
- private AdministrativeState setTapiAdminState(AdminStates adminState1, AdminStates adminState2) {
- if (adminState1 == null || adminState2 == null) {
- return null;
- }
- if (AdminStates.InService.equals(adminState1) && AdminStates.InService.equals(adminState2)) {
- return AdministrativeState.UNLOCKED;
- } else {
- return AdministrativeState.LOCKED;
- }
- }
-
- private OperationalState setTapiOperationalState(State operState) {
- if (operState == null) {
- return null;
- }
- return operState.getName().equals("inService") ? OperationalState.ENABLED : OperationalState.DISABLED;
- }
-
- private OperationalState setTapiOperationalState(State operState1, State operState2) {
- if (operState1 == null || operState2 == null) {
- return null;
- }
- if (State.InService.equals(operState1) && State.InService.equals(operState2)) {
- return OperationalState.ENABLED;
- } else {
- return OperationalState.DISABLED;
- }
- }
-
private Uuid getNodeUuid4Photonic(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, OTSI));
+ nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI));
// iNep creation on otsi node
for (int i = 0; i < oorNetworkPortList.size(); i++) {
Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, I_OTSI, oorNetworkPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8")))
+ (String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
.toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, I_OTSI, oorNetworkPortList.get(i).getTpId().getValue()),
- nepUuid1);
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
+ oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
Name onedName = new NameBuilder()
.setValueName("iNodeEdgePoint")
.setValue(oorNetworkPortList.get(i).getTpId().getValue())
OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, I_OTSI));
+ String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI));
onepl.put(onep.key(), onep);
}
// eNep creation on otsi node
for (int i = 0; i < oorNetworkPortList.size(); i++) {
Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, E_OTSI, oorNetworkPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8")))
+ (String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
.toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, E_OTSI, oorNetworkPortList.get(i).getTpId().getValue()),
- nepUuid2);
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
+ oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
Name onedName = new NameBuilder()
.setValueName("eNodeEdgePoint")
.setValue(oorNetworkPortList.get(i).getTpId().getValue())
OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, E_OTSI));
+ String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI));
onepl.put(onep.key(), onep);
}
// create NodeRuleGroup
.NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
.node.rule.group.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, OTSI)))
+ .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)))
.setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, I_OTSI, tp.getTpId().getValue())))
- .build();
+ this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
+ tp.getTpId().getValue()))).build();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
.NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
.node.rule.group.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, OTSI)))
+ .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)))
.setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, E_OTSI, tp.getTpId().getValue())))
+ this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
+ tp.getTpId().getValue())))
.build();
nepList.put(inep.key(), inep);
nepList.put(enep.key(), enep);
private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, DSR));
+ nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.DSR));
// client nep creation on DSR/ODU node
for (int i = 0; i < oorClientPortList.size(); i++) {
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, DSR, oorClientPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, DSR, oorClientPortList.get(i).getTpId().getValue()),
- nepUuid);
+ (String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
+ oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
+ oorClientPortList.get(i).getTpId().getValue()), nepUuid);
NameBuilder nameBldr = new NameBuilder().setValue(oorClientPortList.get(i).getTpId().getValue());
Name name;
if (OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
}
OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(name.key(), name),
- LayerProtocolName.ETH, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId, DSR));
+ LayerProtocolName.ETH, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR));
onepl.put(onep.key(), onep);
}
// network nep creation on DSR/ODU node
for (int i = 0; i < oorNetworkPortList.size(); i++) {
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, DSR, oorNetworkPortList.get(i).getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, DSR, oorNetworkPortList.get(i).getTpId().getValue()),
- nepUuid);
+ (String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
+ oorNetworkPortList.get(i).getTpId().getValue()), nepUuid);
Name onedName = new NameBuilder()
.setValueName("NodeEdgePoint_N")
.setValue(oorNetworkPortList.get(i).getTpId().getValue())
.build();
OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId, DSR));
+ LayerProtocolName.ODU, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR));
onepl.put(onep.key(), onep);
}
// create NodeRuleGroup
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
nepList = new HashMap<>();
for (TpId tp : nbl.getTpList()) {
- if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, DSR, tp.getValue()))) {
+ if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
+ tp.getValue()))) {
+
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR)))
- .setNodeEdgePointUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR, tp.getValue())))
+ .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR)))
+ .setNodeEdgePointUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
+ TapiStringConstants.DSR, tp.getValue())))
.build();
nepList.put(nep.key(), nep);
}
private OwnedNodeEdgePoint createNep(TerminationPoint oorTp, Map<NameKey, Name> nepNames,
LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip, String keyword) {
String key = String.join("+", keyword, oorTp.getTpId().getValue());
+ AdministrativeState adminState = (oorTp.augmentation(TerminationPoint1.class).getAdministrativeState() != null)
+ ? this.tapiLink.setTapiAdminState(oorTp.augmentation(TerminationPoint1.class).getAdministrativeState()
+ .getName())
+ : null;
+ OperationalState operState = (oorTp.augmentation(TerminationPoint1.class).getOperationalState() != null)
+ ? this.tapiLink.setTapiOperationalState(oorTp.augmentation(TerminationPoint1.class).getOperationalState()
+ .getName())
+ : null;
OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
.setUuid(this.uuidMap.get(key))
.setLayerProtocolName(nepProtocol)
.setSupportedCepLayerProtocolQualifier(createSupportedCepLayerProtocolQualifier(oorTp, nodeProtocol))
.setLinkPortDirection(PortDirection.BIDIRECTIONAL)
.setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(setTapiAdminState(
- oorTp.augmentation(TerminationPoint1.class).getAdministrativeState()))
- .setOperationalState(setTapiOperationalState(
- oorTp.augmentation(TerminationPoint1.class).getOperationalState()))
+ .setAdministrativeState(adminState)
+ .setOperationalState(operState)
.setLifecycleState(LifecycleState.INSTALLED)
.setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
.setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
private void createTapiTransitionalLinks() {
for (TerminationPoint tp : this.oorNetworkPortList) {
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- String sourceKey = String.join("+", this.ietfNodeId, DSR, tp.getTpId().getValue());
- Uuid sourceUuidTp = this.uuidMap.get(sourceKey);
- String destKey = String.join("+", this.ietfNodeId, I_OTSI, tp.getTpId().getValue());
- Uuid destUuidTp = this.uuidMap.get(destKey);
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR)))
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, OTSI)))
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- Name linkName = new NameBuilder().setValueName("transitional link name")
- .setValue(String.join("--", this.ietfNodeId, sourceKey, destKey))
- .build();
- Link transiLink = new LinkBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes((String.join("--", this.ietfNodeId, sourceKey, destKey))
- .getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setTransitionedLayerProtocolName(Arrays.asList(LayerProtocolName.ODU.getName(),
- LayerProtocolName.PHOTONICMEDIA.getName()))
- .setNodeEdgePoint(nepList)
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build()).build())
- .build();
+ Link transiLink = tapiLink.createTapiLink(this.ietfNodeId, tp.getTpId().getValue(), this.ietfNodeId,
+ tp.getTpId().getValue(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR,
+ TapiStringConstants.OTSI, TapiStringConstants.DSR, TapiStringConstants.I_OTSI,
+ "inService", "inService", Arrays.asList(LayerProtocolName.ODU,
+ LayerProtocolName.PHOTONICMEDIA),
+ Arrays.asList(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()),
+ this.tapiTopoUuid);
this.tapiLinks.put(transiLink.key(), transiLink);
}
}
- private Link createTapiLink(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link link,
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link oppositeLink) {
- String prefix = link.getLinkId().getValue().split("-")[0];
- String sourceNode = link.getSource().getSourceNode().getValue();
- String sourceTp = link.getSource().getSourceTp().getValue();
- String destNode = link.getDestination().getDestNode().getValue();
- String destTp = link.getDestination().getDestTp().getValue();
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- Uuid sourceUuidTp;
- Uuid sourceUuidNode;
- Uuid destUuidTp;
- Uuid destUuidNode;
- Name linkName;
- AdminStates oppositeLinkAdminState = null;
- State oppositeLinkOperState = null;
- if (oppositeLink != null) {
- oppositeLinkAdminState = oppositeLink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState();
- oppositeLinkOperState = oppositeLink.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState();
- }
- switch (prefix) {
- case "OTU4":
- sourceUuidTp = this.uuidMap.get(String.join("+", sourceNode, I_OTSI, sourceTp));
- sourceUuidNode = this.uuidMap.get(String.join("+", sourceNode, OTSI));
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(sourceUuidNode)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- destUuidTp = this.uuidMap.get(String.join("+", destNode, I_OTSI, destTp));
- destUuidNode = this.uuidMap.get(String.join("+", destNode, OTSI));
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(destUuidNode)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- linkName = new NameBuilder().setValueName("otn link name")
- .setValue(link.getLinkId().getValue())
- .build();
- return new LinkBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes((link.getLinkId().getValue())
- .getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setLayerProtocolName(Arrays.asList(LayerProtocolName.PHOTONICMEDIA))
- .setAdministrativeState(setTapiAdminState(link
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState(), oppositeLinkAdminState))
- .setOperationalState(setTapiOperationalState(link
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState(), oppositeLinkOperState))
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setNodeEdgePoint(nepList)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(100)).build()).build())
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
- .setValue(Uint64.valueOf(link.augmentation(Link1.class).getAvailableBandwidth())).build())
- .build())
- .build();
- case "ODTU4":
- sourceUuidTp = this.uuidMap.get(String.join("+", sourceNode, DSR, sourceTp));
- sourceUuidNode = this.uuidMap.get(String.join("+", sourceNode, DSR));
- NodeEdgePoint sourceNep2 = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(sourceUuidNode)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep2.key(), sourceNep2);
- destUuidTp = this.uuidMap.get(String.join("+", destNode, DSR, destTp));
- destUuidNode = this.uuidMap.get(String.join("+", destNode, DSR));
- NodeEdgePoint destNep2 = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(destUuidNode)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep2.key(), destNep2);
- linkName = new NameBuilder().setValueName("otn link name")
- .setValue(link.getLinkId().getValue())
- .build();
- return new LinkBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((link.getLinkId().getValue())
- .getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setLayerProtocolName(Arrays.asList(LayerProtocolName.ODU))
- .setAdministrativeState(setTapiAdminState(link
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getAdministrativeState(), oppositeLinkAdminState))
- .setOperationalState(setTapiOperationalState(link
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)
- .getOperationalState(), oppositeLinkOperState))
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setNodeEdgePoint(nepList)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(100)).build()).build())
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
- .setValue(Uint64.valueOf(link.augmentation(Link1.class).getAvailableBandwidth())).build())
- .build())
- .build();
- default:
- LOG.error("OTN link of type {} not managed yet", prefix);
- return null;
- }
- }
-
private void createTapiOmsLinks(Map<String, String> photonicNepUuisMap, Map<String, String> rdmInfraNepUuisMap) {
Iterator<Entry<String, String>> it1 = photonicNepUuisMap.entrySet().iterator();
Iterator<Entry<String, String>> it2 = rdmInfraNepUuisMap.entrySet().iterator();
*/
package org.opendaylight.transportpce.tapi.topology;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
public interface TapiNetworkModelService {
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.R2RTapiLinkDiscovery;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
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.topology.rev180226.TpId;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ProtectionType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RestorationPolicy;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.ResilienceTypeBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanism;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanismBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.opendaylight.yangtools.yang.common.Uint32;
-import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TapiNetworkModelServiceImpl implements TapiNetworkModelService {
private static final Logger LOG = LoggerFactory.getLogger(TapiNetworkModelServiceImpl.class);
- private static final String DSR = "DSR";
- private static final String I_ODU = "iODU";
- private static final String E_ODU = "eODU";
- private static final String OTSI = "OTSi";
- private static final String E_OTSI = "eOTSi";
- private static final String I_OTSI = "iOTSi";
- private static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
- private static final String MC = "MEDIA_CHANNEL";
- private static final String OTSI_MC = "OTSi_MEDIA_CHANNEL";
- private static final String CLIENT = "-CLIENT";
- private static final String NETWORK = "-NETWORK";
- private static final String XPDR = "-XPDR";
- private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
private final NetworkTransactionService networkTransactionService;
private Map<ServiceInterfacePointKey, ServiceInterfacePoint> sipMap;
private final R2RTapiLinkDiscovery linkDiscovery;
+ private final TapiLink tapiLink;
public TapiNetworkModelServiceImpl(final R2RTapiLinkDiscovery linkDiscovery,
- NetworkTransactionService networkTransactionService) {
+ NetworkTransactionService networkTransactionService, TapiLink tapiLink) {
this.networkTransactionService = networkTransactionService;
this.sipMap = new HashMap<>();
this.linkDiscovery = linkDiscovery;
+ this.tapiLink = tapiLink;
}
@Override
onepMap.putAll(transformSrgToOnep(orNodeId, mapSrg));
// create tapi Node
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node roadmNode =
- createRoadmTapiNode(orNodeId, onepMap);
+ Node roadmNode = createRoadmTapiNode(orNodeId, onepMap);
mergeNodeinTopology(Map.of(roadmNode.key(), roadmNode));
mergeSipsinContext(this.sipMap);
// TODO add states corresponding to device config -> based on mapping.
if (!rdm2rdmLinks.isEmpty()) {
mergeLinkinTopology(rdm2rdmLinks);
}
-
+ LOG.info("TAPI node for or node {} successfully merged", orNodeId);
} else if (NodeTypes.Xpdr.getIntValue() == node.getNodeInfo().getNodeType().getIntValue()) {
List<Mapping> networkMappings = node.nonnullMapping().values()
.stream().filter(k -> k.getLogicalConnectionPoint()
Map<Integer, String> xpdrMap = new HashMap<>();
for (Mapping mapping : networkMappings) {
Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
- String nodeId = node.getNodeId() + XPDR + xpdrNb;
+ String nodeId = node.getNodeId() + TapiStringConstants.XPDR + xpdrNb;
if (!xpdrMap.containsKey(xpdrNb)) {
List<Mapping> xpdrNetMaps = node.nonnullMapping().values()
- .stream().filter(k -> k.getLogicalConnectionPoint()
- .contains("XPDR" + xpdrNb + NETWORK)).collect(Collectors.toList());
+ .stream().filter(k -> k.getLogicalConnectionPoint()
+ .contains("XPDR" + xpdrNb + TapiStringConstants.NETWORK)).collect(Collectors.toList());
List<Mapping> xpdrClMaps = node.nonnullMapping().values()
- .stream().filter(k -> k.getLogicalConnectionPoint()
- .contains("XPDR" + xpdrNb + CLIENT)).collect(Collectors.toList());
+ .stream().filter(k -> k.getLogicalConnectionPoint()
+ .contains("XPDR" + xpdrNb + TapiStringConstants.CLIENT)).collect(Collectors.toList());
xpdrMap.put(xpdrNb, node.getNodeId());
// create switching pool
mergeSipsinContext(this.sipMap);
}
}
+ LOG.info("TAPI node for or node {} successfully merged", orNodeId);
}
// Device not managed yet
}
OduSwitchingPools oorOduSwitchingPool) {
Map<NodeKey, Node> nodeMap = new HashMap<>();
LOG.info("creation of a DSR/ODU node for {}", nodeId);
- Uuid nodeUuidDsr = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, DSR))
+ Uuid nodeUuidDsr = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.DSR))
.getBytes(Charset.forName("UTF-8"))).toString());
Name nameDsr = new NameBuilder().setValueName("dsr/odu node name").setValue(
- String.join("+", nodeId, DSR)).build();
+ String.join("+", nodeId, TapiStringConstants.DSR)).build();
List<LayerProtocolName> dsrLayerProtocols = Arrays.asList(LayerProtocolName.DSR,
LayerProtocolName.ODU);
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
- .Node dsrNode = createTapiXpdrNode(Map.of(nameDsr.key(), nameDsr), dsrLayerProtocols,
+ Node dsrNode = createTapiXpdrNode(Map.of(nameDsr.key(), nameDsr), dsrLayerProtocols,
nodeId, nodeUuidDsr, xpdrClMaps, xpdrNetMaps, xponderType, oorOduSwitchingPool);
nodeMap.put(dsrNode.key(), dsrNode);
// node creation [otsi]
LOG.info("creation of an OTSi node for {}", nodeId);
- Uuid nodeUuidOtsi = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, OTSI))
+ Uuid nodeUuidOtsi = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.OTSI))
.getBytes(Charset.forName("UTF-8"))).toString());
Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(
- String.join("+", nodeId, OTSI)).build();
+ String.join("+", nodeId, TapiStringConstants.OTSI)).build();
List<LayerProtocolName> otsiLayerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
- .Node otsiNode = createTapiXpdrNode(Map.of(nameOtsi.key(), nameOtsi), otsiLayerProtocols,
+ Node otsiNode = createTapiXpdrNode(Map.of(nameOtsi.key(), nameOtsi), otsiLayerProtocols,
nodeId, nodeUuidOtsi, xpdrClMaps, xpdrNetMaps, xponderType, null);
nodeMap.put(otsiNode.key(), otsiNode);
}
if (nodeId.contains("ROADM")) {
// Node is in photonic media layer and UUID can be built from nodeId + PHTN_MEDIA
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, PHTNC_MEDIA))
- .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
deleteNodeFromTopo(nodeUuid);
}
if (nodeId.contains("XPDR") || nodeId.contains("SPDR") || nodeId.contains("MXPDR")) {
// iNep creation on otsi node
for (int i = 0; i < xpdrNetMaps.size(); i++) {
Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, I_OTSI, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8")))
- .toString());
+ (String.join("+", nodeId, TapiStringConstants.I_OTSI,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(Charset.forName("UTF-8"))).toString());
Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint")
- .setValue(String.join("+", nodeId, I_OTSI, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .build();
+ .setValueName("iNodeEdgePoint")
+ .setValue(String.join("+", nodeId, TapiStringConstants.I_OTSI,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint()))
+ .build();
OwnedNodeEdgePoint onep = createNep(nepUuid1, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- true, String.join("+", nodeId, I_OTSI),
+ true, String.join("+", nodeId, TapiStringConstants.I_OTSI),
xpdrNetMaps.get(i).getSupportedInterfaceCapability(),
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
// eNep creation on otsi node
for (int i = 0; i < xpdrNetMaps.size(); i++) {
Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, E_OTSI, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString());
+ (String.join("+", nodeId, TapiStringConstants.E_OTSI,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(Charset.forName("UTF-8"))).toString());
Name onedName = new NameBuilder()
- .setValueName("eNodeEdgePoint")
- .setValue(String.join("+", nodeId, E_OTSI, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .build();
+ .setValueName("eNodeEdgePoint")
+ .setValue(String.join("+", nodeId, TapiStringConstants.E_OTSI,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint()))
+ .build();
OwnedNodeEdgePoint onep = createNep(nepUuid2, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- false, String.join("+", nodeId, E_OTSI),
+ false, String.join("+", nodeId, TapiStringConstants.E_OTSI),
xpdrNetMaps.get(i).getSupportedInterfaceCapability(),
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
// Photonic Media Nep creation on otsi node
for (int i = 0; i < xpdrNetMaps.size(); i++) {
Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, PHTNC_MEDIA, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString());
+ (String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(Charset.forName("UTF-8"))).toString());
Name onedName = new NameBuilder()
- .setValueName("PhotMedNodeEdgePoint")
- .setValue(String.join("+", nodeId, PHTNC_MEDIA, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .build();
+ .setValueName("PhotMedNodeEdgePoint")
+ .setValue(String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint()))
+ .build();
OwnedNodeEdgePoint onep = createNep(nepUuid3, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- false, String.join("+", nodeId, PHTNC_MEDIA),
+ false, String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA),
xpdrNetMaps.get(i).getSupportedInterfaceCapability(),
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
// client nep creation on DSR node
for (int i = 0; i < xpdrClMaps.size(); i++) {
- LOG.info("Client NEP = {}", String.join("+", nodeId, DSR, xpdrClMaps.get(i).getLogicalConnectionPoint()));
+ LOG.info("Client NEP = {}", String.join("+", nodeId, TapiStringConstants.DSR,
+ xpdrClMaps.get(i).getLogicalConnectionPoint()));
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, DSR, xpdrClMaps.get(i).getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString());
- NameBuilder nameBldr = new NameBuilder().setValue(
- String.join("+", nodeId, DSR, xpdrClMaps.get(i).getLogicalConnectionPoint()));
+ (String.join("+", nodeId, TapiStringConstants.DSR,
+ xpdrClMaps.get(i).getLogicalConnectionPoint())).getBytes(Charset.forName("UTF-8"))).toString());
+ NameBuilder nameBldr = new NameBuilder().setValue(String.join("+", nodeId,
+ TapiStringConstants.DSR, xpdrClMaps.get(i).getLogicalConnectionPoint()));
Name name;
if (OpenroadmNodeType.TPDR.getName().equalsIgnoreCase(xponderType.getName())) {
name = nameBldr.setValueName("100G-tpdr").build();
OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(),
Map.of(name.key(), name), LayerProtocolName.DSR, LayerProtocolName.DSR, true,
- String.join("+", nodeId, DSR), xpdrClMaps.get(i).getSupportedInterfaceCapability(),
+ String.join("+", nodeId, TapiStringConstants.DSR),
+ xpdrClMaps.get(i).getSupportedInterfaceCapability(),
transformOperState(xpdrClMaps.get(i).getPortOperState()),
transformAdminState(xpdrClMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
}
// network nep creation on I_ODU node
for (int i = 0; i < xpdrNetMaps.size(); i++) {
- LOG.info("iODU NEP = {}", String.join("+", nodeId, I_ODU, xpdrNetMaps.get(i).getLogicalConnectionPoint()));
+ LOG.info("iODU NEP = {}", String.join("+", nodeId, TapiStringConstants.I_ODU,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint()));
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, I_ODU, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString());
+ (String.join("+", nodeId, TapiStringConstants.I_ODU,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(Charset.forName("UTF-8"))).toString());
Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint_N")
- .setValue(String.join("+", nodeId, I_ODU, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .build();
+ .setValueName("iNodeEdgePoint_N")
+ .setValue(String.join("+", nodeId, TapiStringConstants.I_ODU,
+ xpdrNetMaps.get(i).getLogicalConnectionPoint()))
+ .build();
OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, false,
- String.join("+", nodeId, I_ODU), xpdrNetMaps.get(i).getSupportedInterfaceCapability(),
+ LayerProtocolName.ODU, LayerProtocolName.DSR, true,
+ String.join("+", nodeId, TapiStringConstants.I_ODU),
+ xpdrNetMaps.get(i).getSupportedInterfaceCapability(),
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
}
// network nep creation on E_ODU node
- for (int i = 0; i < xpdrNetMaps.size(); i++) {
- LOG.info("eODU NEP = {}", String.join("+", nodeId, E_ODU,
- xpdrNetMaps.get(i).getLogicalConnectionPoint()));
+ for (int i = 0; i < xpdrClMaps.size(); i++) {
+ LOG.info("eODU NEP = {}", String.join("+", nodeId, TapiStringConstants.E_ODU,
+ xpdrClMaps.get(i).getLogicalConnectionPoint()));
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, E_ODU, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString());
+ (String.join("+", nodeId, TapiStringConstants.E_ODU,
+ xpdrClMaps.get(i).getLogicalConnectionPoint())).getBytes(Charset.forName("UTF-8"))).toString());
Name onedName = new NameBuilder()
- .setValueName("eNodeEdgePoint_N")
- .setValue(String.join("+", nodeId, E_ODU, xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .build();
+ .setValueName("eNodeEdgePoint_N")
+ .setValue(String.join("+", nodeId, TapiStringConstants.E_ODU,
+ xpdrClMaps.get(i).getLogicalConnectionPoint()))
+ .build();
- OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
+ OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, true,
- String.join("+", nodeId, E_ODU), xpdrNetMaps.get(i).getSupportedInterfaceCapability(),
- transformOperState(xpdrNetMaps.get(i).getPortOperState()),
- transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
+ LayerProtocolName.ODU, LayerProtocolName.DSR, false,
+ String.join("+", nodeId, TapiStringConstants.E_ODU),
+ xpdrClMaps.get(i).getSupportedInterfaceCapability(),
+ transformOperState(xpdrClMaps.get(i).getPortOperState()),
+ transformAdminState(xpdrClMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
}
return onepl;
private AdministrativeState transformAdminState(String adminString) {
AdminStates adminState = org.opendaylight.transportpce.networkmodel.util.TopologyUtils
- .setNetworkAdminState(adminString);
+ .setNetworkAdminState(adminString);
return adminState.equals(AdminStates.InService) ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
}
}
LOG.debug("Node layer {}", nodeProtocol.getName());
onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedLayerProtocolQualifier(
- supportedInterfaceCapability, nodeProtocol));
+ supportedInterfaceCapability, nepProtocol));
onepBldr.setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
.setAdministrativeState(adminState).setOperationalState(operState)
.setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
AdministrativeState adminState) {
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = new HashMap<>();
// PHOTONIC MEDIA nep
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, PHTNC_MEDIA, tpId))
- .getBytes(Charset.forName("UTF-8")))
- .toString());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId,
+ TapiStringConstants.PHTNC_MEDIA, tpId)).getBytes(Charset.forName("UTF-8"))).toString());
Name nepName = new NameBuilder()
- .setValueName(PHTNC_MEDIA + "NodeEdgePoint")
- .setValue(String.join("+", orNodeId, PHTNC_MEDIA, tpId))
+ .setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint")
+ .setValue(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA, tpId))
.build();
OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
.setUuid(nepUuid)
onepMap.put(onep.key(), onep);
// MC nep
- Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, MC, tpId))
- .getBytes(Charset.forName("UTF-8")))
- .toString());
+ Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId,
+ TapiStringConstants.MC, tpId)).getBytes(Charset.forName("UTF-8"))).toString());
Name nepName1 = new NameBuilder()
- .setValueName(MC + "NodeEdgePoint")
- .setValue(String.join("+", orNodeId, MC, tpId))
+ .setValueName(TapiStringConstants.MC + "NodeEdgePoint")
+ .setValue(String.join("+", orNodeId, TapiStringConstants.MC, tpId))
.build();
OwnedNodeEdgePointBuilder onepBldr1 = new OwnedNodeEdgePointBuilder()
.setUuid(nepUuid1)
.setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
if (withSip) {
onepBldr1.setMappedServiceInterfacePoint(createMSIP(1, LayerProtocolName.PHOTONICMEDIA,
- tpId, String.join("+", orNodeId, MC), null, operState, adminState));
+ tpId, String.join("+", orNodeId, TapiStringConstants.MC), null,
+ operState, adminState));
}
OwnedNodeEdgePoint onep1 = onepBldr1.build();
onepMap.put(onep1.key(), onep1);
// OTSiMC nep
- Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, OTSI_MC, tpId))
- .getBytes(Charset.forName("UTF-8")))
- .toString());
+ Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, TapiStringConstants.OTSI_MC,
+ tpId)).getBytes(Charset.forName("UTF-8"))).toString());
Name nepName2 = new NameBuilder()
- .setValueName(OTSI_MC + "NodeEdgePoint")
- .setValue(String.join("+", orNodeId, OTSI_MC, tpId))
+ .setValueName(TapiStringConstants.OTSI_MC + "NodeEdgePoint")
+ .setValue(String.join("+", orNodeId, TapiStringConstants.OTSI_MC, tpId))
.build();
OwnedNodeEdgePoint onep2 = new OwnedNodeEdgePointBuilder()
tpid)).getBytes(Charset.forName("UTF-8"))).toString());
MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
.setServiceInterfacePointUuid(sipUuid).build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint sip
- = createSIP(sipUuid, layerProtocol, tpid, nodeid, supportedInterfaceCapability,
- operState, adminState);
+ ServiceInterfacePoint sip = createSIP(sipUuid, layerProtocol, tpid, nodeid, supportedInterfaceCapability,
+ operState, adminState);
this.sipMap.put(sip.key(), sip);
LOG.info("SIP created {}", sip.getUuid());
// this.tapiSips.put(sip.key(), sip);
.build();
}
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node
- createRoadmTapiNode(String orNodeId, Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist) {
+ private Node createRoadmTapiNode(String orNodeId, Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist) {
// UUID
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId,
- PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
// Names
Name nodeNames = new NameBuilder().setValueName("roadm node name")
- .setValue(String.join("+", orNodeId, PHTNC_MEDIA)).build();
+ .setValue(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA)).build();
// Protocol Layer
List<LayerProtocolName> layerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
// Empty random creation of mandatory fields for avoiding errors....
private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForRdmNode(String orNodeId, Uuid nodeUuid,
Collection<OwnedNodeEdgePoint> onepl) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
+ Map<NodeEdgePointKey, NodeEdgePoint>
nepMap = new HashMap<>();
for (OwnedNodeEdgePoint onep : onepl) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
- nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(nodeUuid)
- .setNodeEdgePointUuid(onep.key().getUuid())
- .build();
+ NodeEdgePoint nep = new NodeEdgePointBuilder()
+ .setTopologyUuid(this.tapiTopoUuid)
+ .setNodeUuid(nodeUuid)
+ .setNodeEdgePointUuid(onep.key().getUuid())
+ .build();
nepMap.put(nep.key(), nep);
}
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
Uuid nodeUuidOtsi) {
Map<LinkKey, Link> linkMap = new HashMap<>();
for (Mapping mapping : xpdrNetMaps) {
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- String sourceKey = String.join("+", nodeId, I_ODU, mapping.getLogicalConnectionPoint());
- Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, I_ODU, mapping.getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString());
- String destKey = String.join("+", nodeId, I_OTSI, mapping.getLogicalConnectionPoint());
- Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, I_OTSI, mapping.getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString());
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(nodeUuidDsr)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(nodeUuidOtsi)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- Name linkName = new NameBuilder().setValueName("transitional link name")
- .setValue(String.join("--",nodeId, sourceKey, destKey))
- .build();
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue("12345678")
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic("12345678")
- .setQueingLatencyCharacteristic("12345678")
- .setJitterCharacteristic("12345678")
- .setWanderCharacteristic("12345678")
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
- .build();
- ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
- .setValidationMechanism("validation mechanism")
- .setValidationRobustness("validation robustness")
- .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
- .build();
- Link transiLink = new LinkBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes((String.join("--", nodeId, sourceKey, destKey))
- .getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setTransitionedLayerProtocolName(Arrays.asList(LayerProtocolName.ODU.getName(),
- LayerProtocolName.PHOTONICMEDIA.getName()))
- .setNodeEdgePoint(nepList)
- .setLayerProtocolName(Arrays.asList(LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.ODU))
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build())
- .build())
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
- .setRestorationPolicy(RestorationPolicy.NA)
- .build())
- .setAdministrativeState(transformAdminState(mapping.getPortAdminState()))
- .setOperationalState(transformOperState(mapping.getPortOperState()))
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build())
- .build())
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
- .build();
+ Link transiLink = tapiLink.createTapiLink(nodeId, mapping.getLogicalConnectionPoint(), nodeId,
+ mapping.getLogicalConnectionPoint(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR,
+ TapiStringConstants.OTSI, TapiStringConstants.I_ODU, TapiStringConstants.I_OTSI,
+ "inService", "inService", Arrays.asList(LayerProtocolName.ODU,
+ LayerProtocolName.PHOTONICMEDIA),
+ Arrays.asList(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()),
+ this.tapiTopoUuid);
linkMap.put(transiLink.key(), transiLink);
}
// return a map of links and then we can do merge the corresponding link map into the topology context
List<TpId> tpl = new ArrayList<>();
TpId tpId = null;
for (int i = 1; i <= xpdrClMaps.size(); i++) {
- tpId = new TpId("XPDR" + xpdrNb + CLIENT + i);
+ tpId = new TpId("XPDR" + xpdrNb + TapiStringConstants.CLIENT + i);
tpl.add(tpId);
}
for (int i = 1; i <= xpdrNetMaps.size(); i++) {
- tpId = new TpId("XPDR" + xpdrNb + NETWORK + i);
+ tpId = new TpId("XPDR" + xpdrNb + TapiStringConstants.NETWORK + i);
tpl.add(tpId);
}
Map<NonBlockingListKey, NonBlockingList> nbMap = new HashMap<>();
NonBlockingList nbl = new NonBlockingListBuilder()
- .setNblNumber(Uint16.valueOf(1))
- .setTpList(tpl)
- .build();
+ .setNblNumber(Uint16.valueOf(1))
+ .setTpList(tpl)
+ .build();
nbMap.put(nbl.key(),nbl);
return new OduSwitchingPoolsBuilder()
- .setSwitchingPoolNumber(Uint16.valueOf(1))
- .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking)
- .setNonBlockingList(nbMap)
- .build();
+ .setSwitchingPoolNumber(Uint16.valueOf(1))
+ .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking)
+ .setNonBlockingList(nbMap)
+ .build();
}
private OduSwitchingPools createMuxSwitchPool(List<Mapping> xpdrClMaps, List<Mapping> xpdrNetMaps, Integer xpdrNb) {
Map<NonBlockingListKey, NonBlockingList> nbMap = new HashMap<>();
for (int i = 1; i <= xpdrClMaps.size(); i++) {
List<TpId> tpList = new ArrayList<>();
- TpId tpId = new TpId("XPDR" + xpdrNb + CLIENT + i);
+ TpId tpId = new TpId("XPDR" + xpdrNb + TapiStringConstants.CLIENT + i);
tpList.add(tpId);
tpId = new TpId("XPDR" + xpdrNb + "-NETWORK1");
tpList.add(tpId);
NonBlockingList nbl = new NonBlockingListBuilder()
- .setNblNumber(Uint16.valueOf(i))
- .setTpList(tpList)
- .setAvailableInterconnectBandwidth(Uint32.valueOf(xpdrNetMaps.size() * 10L))
- .setInterconnectBandwidthUnit(Uint32.valueOf(1000000000))
- .build();
+ .setNblNumber(Uint16.valueOf(i))
+ .setTpList(tpList)
+ .setAvailableInterconnectBandwidth(Uint32.valueOf(xpdrNetMaps.size() * 10L))
+ .setInterconnectBandwidthUnit(Uint32.valueOf(1000000000))
+ .build();
nbMap.put(nbl.key(),nbl);
}
return new OduSwitchingPoolsBuilder()
// create NodeRuleGroup
int count = 1;
for (Mapping tpMapping : xpdrNetMaps) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
- nepList = new HashMap<>();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, OTSI)).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, I_OTSI, tpMapping.getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, OTSI)).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, E_OTSI, tpMapping.getLogicalConnectionPoint()))
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .build();
+ Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
+ NodeEdgePoint inep = new NodeEdgePointBuilder()
+ .setTopologyUuid(this.tapiTopoUuid)
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
+ TapiStringConstants.OTSI)).getBytes(Charset.forName("UTF-8"))).toString()))
+ .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
+ TapiStringConstants.I_OTSI, tpMapping.getLogicalConnectionPoint()))
+ .getBytes(Charset.forName("UTF-8"))).toString()))
+ .build();
+ NodeEdgePoint enep = new NodeEdgePointBuilder()
+ .setTopologyUuid(this.tapiTopoUuid)
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
+ TapiStringConstants.OTSI)).getBytes(Charset.forName("UTF-8"))).toString()))
+ .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes(
+ (String.join("+", nodeId, TapiStringConstants.E_OTSI,
+ tpMapping.getLogicalConnectionPoint())).getBytes(Charset.forName("UTF-8"))).toString()))
+ .build();
nepList.put(inep.key(), inep);
nepList.put(enep.key(), enep);
// Empty random creation of mandatory fields for avoiding errors....
int count = 1;
for (NonBlockingList nbl : oorOduSwitchingPool.nonnullNonBlockingList().values()) {
LOG.info("Non blocking list = {}", nbl);
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
- nepList = new HashMap<>();
+ Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
for (TpId tp : nbl.getTpList()) {
- LOG.info("EDOU TP = {}", String.join("+", nodeId, E_ODU, tp.getValue()));
- LOG.info("DSR TP = {}", String.join("+", nodeId, DSR, tp.getValue()));
- Uuid tpUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, E_ODU, tp.getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, DSR, tp.getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
+ LOG.info("EDOU TP = {}", String.join("+", nodeId, TapiStringConstants.E_ODU, tp.getValue()));
+ LOG.info("DSR TP = {}", String.join("+", nodeId, TapiStringConstants.DSR, tp.getValue()));
+ Uuid tpUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
+ TapiStringConstants.E_ODU, tp.getValue())).getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
+ TapiStringConstants.DSR, tp.getValue())).getBytes(Charset.forName("UTF-8"))).toString());
if (onepl.containsKey(new OwnedNodeEdgePointKey(tpUuid))
- || onepl.containsKey(new OwnedNodeEdgePointKey(tp1Uuid))) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
- nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, DSR)).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setNodeEdgePointUuid((tp.getValue().contains("CLIENT")) ? tp1Uuid : tpUuid)
- .build();
- nepList.put(nep.key(), nep);
+ && onepl.containsKey(new OwnedNodeEdgePointKey(tp1Uuid))) {
+ NodeEdgePoint nep1 = new NodeEdgePointBuilder()
+ .setTopologyUuid(this.tapiTopoUuid)
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes(
+ (String.join("+", nodeId,TapiStringConstants. DSR))
+ .getBytes(Charset.forName("UTF-8"))).toString()))
+ .setNodeEdgePointUuid(tp1Uuid)
+ .build();
+ NodeEdgePoint nep2 = new NodeEdgePointBuilder()
+ .setTopologyUuid(this.tapiTopoUuid)
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes(
+ (String.join("+", nodeId,TapiStringConstants. DSR))
+ .getBytes(Charset.forName("UTF-8"))).toString()))
+ .setNodeEdgePointUuid(tpUuid)
+ .build();
+ nepList.put(nep1.key(), nep1);
+ nepList.put(nep2.key(), nep2);
}
}
// Empty random creation of mandatory fields for avoiding errors....
for (SupportedInterfaceCapability sic : supIfMap.values()) {
switch (lpn.getName()) {
case "DSR":
- case "ODU":
switch (sic.getIfCapType().getSimpleName()) {
// TODO: it may be needed to add more cases clauses if the interface capabilities of a
// port are extended in the config file
break;
}
break;
+ case "ODU":
+ switch (sic.getIfCapType().getSimpleName()) {
+ // TODO: it may be needed to add more cases clauses if the interface capabilities of a
+ // port are extended in the config file
+ case "If1GEODU0":
+ sclpqList.add(ODUTYPEODU0.class);
+ break;
+ case "If10GEODU2e":
+ sclpqList.add(ODUTYPEODU2E.class);
+ break;
+ case "If10GEODU2":
+ case "If10GE":
+ sclpqList.add(ODUTYPEODU2.class);
+ break;
+ case "If100GEODU4":
+ case "If100GE":
+ case "IfOCHOTU4ODU4":
+ case "IfOCH":
+ sclpqList.add(ODUTYPEODU4.class);
+ break;
+ default:
+ LOG.error("IfCapability type not managed");
+ break;
+ }
+ break;
case "PHOTONIC_MEDIA":
if (sic.getIfCapType().getSimpleName().equals("IfOCHOTU4ODU4")
- || sic.getIfCapType().getSimpleName().equals("IfOCH")) {
+ || sic.getIfCapType().getSimpleName().equals("IfOCH")) {
sclpqList.add(PHOTONICLAYERQUALIFIEROTSi.class);
sclpqList.add(PHOTONICLAYERQUALIFIEROMS.class);
}
// TODO: verify this is correct. Should we identify the context IID with the context UUID??
LOG.info("Creating tapi node in TAPI topology context");
InstanceIdentifier<Topology> topoIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid))
+ .augmentation(Context1.class).child(TopologyContext.class)
+ .child(Topology.class, new TopologyKey(this.tapiTopoUuid))
.build();
- Topology topology = new TopologyBuilder().setUuid(tapiTopoUuid).setNode(nodeMap).build();
+ Topology topology = new TopologyBuilder().setUuid(this.tapiTopoUuid).setNode(nodeMap).build();
// merge in datastore
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, topoIID,
// TODO: verify this is correct. Should we identify the context IID with the context UUID??
LOG.info("Creating tapi node in TAPI topology context");
InstanceIdentifier<Topology> topoIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid))
- .build();
+ .augmentation(Context1.class).child(TopologyContext.class)
+ .child(Topology.class, new TopologyKey(this.tapiTopoUuid))
+ .build();
- Topology topology = new TopologyBuilder().setUuid(tapiTopoUuid).setLink(linkMap).build();
+ Topology topology = new TopologyBuilder().setUuid(this.tapiTopoUuid).setLink(linkMap).build();
// merge in datastore
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, topoIID,
try {
InstanceIdentifier<Link> linkIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class).child(Topology.class,
- new TopologyKey(tapiTopoUuid)).child(Link.class, new LinkKey(linkUuid)).build();
+ new TopologyKey(this.tapiTopoUuid)).child(Link.class, new LinkKey(linkUuid)).build();
this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, linkIID);
this.networkTransactionService.commit().get();
LOG.info("TAPI link deleted successfully.");
try {
InstanceIdentifier<Node> nodeIDD = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class).child(Topology.class,
- new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid)).build();
+ new TopologyKey(this.tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid)).build();
this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, nodeIDD);
this.networkTransactionService.commit().get();
LOG.info("TAPI Node deleted successfully.");
private void updateConnectivityServicesState(Uuid sipUuid, String nodeId) {
// TODO: check if this IID is correct
InstanceIdentifier<ConnectivityContext> connectivitycontextIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
- .child(ConnectivityContext.class)
- .build();
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .child(ConnectivityContext.class)
+ .build();
ConnectivityContext connContext = null;
try {
Optional<ConnectivityContext> optConnContext =
import com.google.common.util.concurrent.ListenableFuture;
import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ProtectionType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RestorationPolicy;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.ResilienceTypeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanism;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanismBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcError;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService {
private static final Logger LOG = LoggerFactory.getLogger(TapiNetworkUtilsImpl.class);
- private static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
- private static final String OTSI = "OTSi";
- private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
private final NetworkTransactionService networkTransactionService;
+ private final TapiLink tapiLink;
- public TapiNetworkUtilsImpl(NetworkTransactionService networkTransactionService) {
+ public TapiNetworkUtilsImpl(NetworkTransactionService networkTransactionService, TapiLink tapiLink) {
this.networkTransactionService = networkTransactionService;
+ this.tapiLink = tapiLink;
}
@Override
String sourceTp = input.getDegATp();
String destNode = input.getRdmZNode();
String destTp = input.getDegZTp();
- String linkId = String.join("-", sourceNode, sourceTp.split("-")[0], sourceTp)
- + "to" + String.join("-", destNode, destTp.split("-")[0], destTp);
- Link link = createTapiLink(sourceNode, sourceTp, destNode, destTp, linkId, "OMS link name", PHTNC_MEDIA);
+ Link link = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
+ TapiStringConstants.OMS_RDM_RDM_LINK, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ this.tapiLink.getAdminState(sourceNode, sourceTp, destNode, destTp),
+ this.tapiLink.getOperState(sourceNode, sourceTp, destNode, destTp),
+ List.of(LayerProtocolName.PHOTONICMEDIA), List.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
InitRoadmRoadmTapiLinkOutputBuilder output = new InitRoadmRoadmTapiLinkOutputBuilder();
if (link == null) {
LOG.error("Error creating link object");
String destTp = input.getAddDropTp();
String sourceNode = input.getXpdrNode();
String sourceTp = input.getNetworkTp();
- String linkId = String.join("-", sourceNode, sourceTp)
- + "to" + String.join("-", destNode, destTp.split("-")[0], destTp);
- Link link = createTapiLink(sourceNode, sourceTp, destNode, destTp, linkId, "XPDR-RDM link name", OTSI);
+ Link link = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
+ TapiStringConstants.OMS_XPDR_RDM_LINK, TapiStringConstants.OTSI, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ this.tapiLink.getAdminState(sourceNode, sourceTp, destNode, destTp),
+ this.tapiLink.getOperState(sourceNode, sourceTp, destNode, destTp),
+ List.of(LayerProtocolName.PHOTONICMEDIA), List.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
InitXpdrRdmTapiLinkOutputBuilder output = new InitXpdrRdmTapiLinkOutputBuilder();
if (link == null) {
LOG.error("Error creating link object");
}
}
- private Link createTapiLink(String sourceNode, String sourceTp, String destNode, String destTp, String linkId,
- String valueName, String sourceNodeQual) {
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- Uuid sourceUuidNode = new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode,
- sourceNodeQual)).getBytes(Charset.forName("UTF-8"))).toString());
- Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode, PHTNC_MEDIA,
- sourceTp)).getBytes(Charset.forName("UTF-8"))).toString());
- Uuid destUuidNode = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode,
- PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
- Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode, PHTNC_MEDIA,
- destTp)).getBytes(Charset.forName("UTF-8"))).toString());
- if (!(nodeExists(sourceUuidNode) && nodeExists(destUuidNode)
- && nepExists(sourceUuidTp, sourceUuidNode) && nepExists(destUuidTp, destUuidNode))) {
- LOG.error("Verify the input data. No link can be created, "
- + "as either the node or the tp doesnt exist in the TAPI topology");
- return null;
- }
-
- NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(sourceUuidNode)
- .setNodeEdgePointUuid(sourceUuidTp)
- .build();
- nepList.put(sourceNep.key(), sourceNep);
- NodeEdgePoint destNep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(destUuidNode)
- .setNodeEdgePointUuid(destUuidTp)
- .build();
- nepList.put(destNep.key(), destNep);
- OperationalState sourceOperState = getOperState(sourceUuidTp, sourceUuidNode);
- OperationalState destOperState = getOperState(destUuidTp, destUuidNode);
- if (sourceOperState == null || destOperState == null) {
- LOG.error("No link can be created, as the operational state was not found in the TAPI topology");
- return null;
- }
- AdministrativeState sourceAdminState = getAdminState(sourceUuidTp, sourceUuidNode);
- AdministrativeState destAdminState = getAdminState(destUuidTp, destUuidNode);
- if (sourceAdminState == null || destAdminState == null) {
- LOG.error("No link can be created, as the administrative state was not found in the TAPI topology");
- return null;
- }
- OperationalState operState = (OperationalState.ENABLED.equals(sourceOperState)
- && OperationalState.ENABLED.equals(destOperState))
- ? OperationalState.ENABLED : OperationalState.DISABLED;
- AdministrativeState adminState = (AdministrativeState.UNLOCKED.equals(sourceAdminState)
- && AdministrativeState.UNLOCKED.equals(destAdminState))
- ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
- Name linkName = new NameBuilder().setValueName(valueName)
- .setValue(linkId)
- .build();
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue("12345678")
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic("12345678")
- .setQueingLatencyCharacteristic("12345678")
- .setJitterCharacteristic("12345678")
- .setWanderCharacteristic("12345678")
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
- .build();
- ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
- .setValidationMechanism("validation mechanism")
- .setValidationRobustness("validation robustness")
- .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
- .build();
- return new LinkBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(linkId.getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setName(Map.of(linkName.key(), linkName))
- .setLayerProtocolName(List.of(LayerProtocolName.PHOTONICMEDIA))
- .setNodeEdgePoint(nepList)
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setTransitionedLayerProtocolName(new ArrayList<>())
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
- .setRestorationPolicy(RestorationPolicy.NA)
- .build())
- .setAdministrativeState(adminState)
- .setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(100)).build()).build())
- .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
- .setValue(Uint64.valueOf(100)).build())
- .build())
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
- .build();
- }
-
- private boolean nepExists(Uuid nepUuid, Uuid nodeUuid) {
- LOG.info("Checking if nep with uuid {} existis in tapi topology", nepUuid);
- try {
- InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(Context1.class).child(TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
- .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
- .build();
- Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
- LogicalDatastoreType.OPERATIONAL, onepIID).get();
- if (!optionalOnep.isPresent()) {
- LOG.error("ONEP is not present in datastore");
- return false;
- }
- return true;
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Couldnt retrieve nep from datastore");
- return false;
- }
- }
-
- private boolean nodeExists(Uuid nodeUuid) {
- LOG.info("Checking if node with uuid {} existis in tapi topology", nodeUuid);
- try {
- InstanceIdentifier<Node> nodeIID = InstanceIdentifier.builder(Context.class)
- .augmentation(Context1.class).child(TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
- .build();
- Optional<Node> optionalNode = this.networkTransactionService.read(
- LogicalDatastoreType.OPERATIONAL, nodeIID).get();
- if (!optionalNode.isPresent()) {
- LOG.error("Node is not present in datastore");
- return false;
- }
- return true;
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Couldnt retrieve nep from datastore");
- return false;
- }
- }
-
- private OperationalState getOperState(Uuid nepUuid, Uuid nodeUuid) {
- try {
- InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(Context1.class).child(TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
- .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
- .build();
- Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
- LogicalDatastoreType.OPERATIONAL, onepIID).get();
- if (optionalOnep.isPresent()) {
- return optionalOnep.get().getOperationalState();
- }
- return null;
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Couldnt retrieve nep from datastore");
- return null;
- }
- }
-
- private AdministrativeState getAdminState(Uuid nepUuid, Uuid nodeUuid) {
- try {
- InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(Context1.class).child(TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
- .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
- .build();
- Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
- LogicalDatastoreType.OPERATIONAL, onepIID).get();
- if (optionalOnep.isPresent()) {
- return optionalOnep.get().getAdministrativeState();
- }
- return null;
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Couldnt retrieve nep from datastore");
- return null;
- }
- }
-
- private boolean putLinkInTopology(Link tapiLink) {
+ private boolean putLinkInTopology(Link tapLink) {
// TODO is this merge correct? Should we just merge topology by changing the nodes map??
// TODO: verify this is correct. Should we identify the context IID with the context UUID??
LOG.info("Creating tapi node in TAPI topology context");
.build();
Topology topology = new TopologyBuilder().setUuid(tapiTopoUuid)
- .setLink(Map.of(tapiLink.key(), tapiLink)).build();
+ .setLink(Map.of(tapLink.key(), tapLink)).build();
// merge in datastore
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, topoIID,
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.InstanceIdentifiers;
import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmLinkType;
private final DataBroker dataBroker;
private final TapiContext tapiContext;
private final TopologyUtils topologyUtils;
+ private final TapiLink tapiLink;
- public TapiTopologyImpl(DataBroker dataBroker, TapiContext tapiContext, TopologyUtils topologyUtils) {
+ public TapiTopologyImpl(DataBroker dataBroker, TapiContext tapiContext, TopologyUtils topologyUtils,
+ TapiLink tapiLink) {
this.dataBroker = dataBroker;
this.tapiContext = tapiContext;
this.topologyUtils = topologyUtils;
+ this.tapiLink = tapiLink;
}
@Override
@Override
public ListenableFuture<RpcResult<GetTopologyDetailsOutput>> getTopologyDetails(GetTopologyDetailsInput input) {
// TODO -> Add check for Full T0 Multilayer
- if (!TopologyUtils.T0_MULTILAYER.equals(input.getTopologyIdOrName())
- && !TopologyUtils.TPDR_100G.equals(input.getTopologyIdOrName())) {
- if (TopologyUtils.T0_FULL_MULTILAYER.equals(input.getTopologyIdOrName())) {
+ if (!TapiStringConstants.T0_MULTILAYER.equals(input.getTopologyIdOrName())
+ && !TapiStringConstants.TPDR_100G.equals(input.getTopologyIdOrName())) {
+ if (TapiStringConstants.T0_FULL_MULTILAYER.equals(input.getTopologyIdOrName())) {
Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(input.getTopologyIdOrName()
.getBytes(Charset.forName("UTF-8"))).toString());
Context context = this.tapiContext.getTapiContext();
try {
LOG.info("Building TAPI Topology abstraction for {}", input.getTopologyIdOrName());
Topology topology = createAbstractedOtnTopology();
- if (TopologyUtils.TPDR_100G.equals(input.getTopologyIdOrName())) {
+ if (TapiStringConstants.TPDR_100G.equals(input.getTopologyIdOrName())) {
topology = createAbstracted100GTpdrTopology(topology);
}
return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().setTopology(topology).build())
.filter(nep -> nep.getName().containsKey(new NameKey("100G-tpdr"))).collect(Collectors.toList());
nep100GTpdrList.addAll(nepList);
}
- Name topoName = new NameBuilder().setValue(TopologyUtils.TPDR_100G).setValueName("TAPI Topology Name").build();
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.TPDR_100G.getBytes(Charset.forName("UTF-8")))
- .toString());
+ Name topoName = new NameBuilder().setValue(TapiStringConstants.TPDR_100G)
+ .setValueName("TAPI Topology Name").build();
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(
+ TapiStringConstants.TPDR_100G.getBytes(Charset.forName("UTF-8"))).toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node =
createTapiNode(nep100GTpdrList, topoUuid);
return new TopologyBuilder()
tapiNodeList = new HashMap<>();
Map<LinkKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link>
tapiLinkList = new HashMap<>();
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_MULTILAYER.getBytes(Charset.forName("UTF-8")))
- .toString());
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topoUuid);
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topoUuid, this.tapiLink);
Iterator<Entry<String, List<String>>> it = networkPortMap.entrySet().iterator();
while (it.hasNext()) {
String nodeId = it.next().getKey();
}
if (openroadmTopo.nonnullNode().values().stream().filter(nt ->
nt.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1.class)
- .getNodeType().equals(OpenroadmNodeType.SRG)).count() > 0) {
+ .getNodeType().equals(OpenroadmNodeType.SRG)).count() > 0) {
tapiFactory.convertRoadmInfrastructure();
tapiNodeList.putAll(tapiFactory.getTapiNodes());
tapiLinkList.putAll(tapiFactory.getTapiLinks());
tapiFactory.convertLinks(otnLinkMap);
tapiLinkList.putAll(tapiFactory.getTapiLinks());
}
- Name name = new NameBuilder().setValue(TopologyUtils.T0_MULTILAYER).setValueName("TAPI Topology Name").build();
+ Name name = new NameBuilder()
+ .setValue(TapiStringConstants.T0_MULTILAYER)
+ .setValueName("TAPI Topology Name")
+ .build();
return new TopologyBuilder()
.setName(Map.of(name.key(), name))
.setUuid(topoUuid)
}
@NonNull
KeyedInstanceIdentifier<Mapping, MappingKey> pmIID = InstanceIdentifier.create(
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network.class)
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network.class)
.child(Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp));
@NonNull
FluentFuture<Optional<Mapping>> mappingOpt = dataBroker.newReadOnlyTransaction().read(
import org.opendaylight.transportpce.common.InstanceIdentifiers;
import org.opendaylight.transportpce.common.NetworkUtils;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmLinkType;
private final NetworkTransactionService networkTransactionService;
private final DataBroker dataBroker;
private static final Logger LOG = LoggerFactory.getLogger(TopologyUtils.class);
- public static final String T0_MULTILAYER = "T0 - Multi-layer topology";
- public static final String T0_FULL_MULTILAYER = "T0 - Full Multi-layer topology";
- public static final String TPDR_100G = "Transponder 100GE";
private Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSips;
+ private final TapiLink tapiLink;
- public TopologyUtils(NetworkTransactionService networkTransactionService, DataBroker dataBroker) {
+ public TopologyUtils(NetworkTransactionService networkTransactionService, DataBroker dataBroker,
+ TapiLink tapiLink) {
this.networkTransactionService = networkTransactionService;
this.dataBroker = dataBroker;
this.tapiSips = new HashMap<>();
+ this.tapiLink = tapiLink;
}
public Network readTopology(InstanceIdentifier<Network> networkIID) throws TapiTopologyException {
public Topology createFullOtnTopology() throws TapiTopologyException {
// read openroadm-topology
Network openroadmTopo = readTopology(InstanceIdentifiers.OVERLAY_NETWORK_II);
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
- Name name = new NameBuilder().setValue(TopologyUtils.T0_FULL_MULTILAYER).setValueName("TAPI Topology Name")
+ Name name = new NameBuilder()
+ .setValue(TapiStringConstants.T0_FULL_MULTILAYER)
+ .setValueName("TAPI Topology Name")
.build();
if (openroadmTopo != null) {
List<Link> linkList = new ArrayList<>();
tapiNodeList = new HashMap<>();
Map<LinkKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link>
tapiLinkList = new HashMap<>();
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topoUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topoUuid, this.tapiLink);
Iterator<Map.Entry<String, List<String>>> it = networkPortMap.entrySet().iterator();
while (it.hasNext()) {
String nodeId = it.next().getKey();
LOG.info("Network LCP associated = {}", networkLcp);
@NonNull
KeyedInstanceIdentifier<Mapping, MappingKey> pmIID = InstanceIdentifier.create(
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network.class)
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network.class)
.child(Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp));
@NonNull
FluentFuture<Optional<Mapping>> mappingOpt = this.dataBroker.newReadOnlyTransaction().read(
topologyBuilder.setNode(mapNode);
return topologyBuilder.build();
}
-}
\ No newline at end of file
+}
*/
package org.opendaylight.transportpce.tapi.utils;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
+import java.util.TreeMap;
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
import org.opendaylight.transportpce.tapi.connectivity.ConnectivityUtils;
import org.opendaylight.transportpce.tapi.topology.TapiTopologyException;
import org.opendaylight.transportpce.tapi.topology.TopologyUtils;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.Service;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
LOG.info("No services in datastore. No mapping needed");
return;
}
+ /*
+ Map<ServicesKey, Services> orderedServices = orServices.getServices().entrySet().stream()
+ .sorted(Comparator.comparing(serv -> serv.getValue().getServiceAEnd().getServiceFormat().getName()))
+ .collect(Collectors.toMap(Map.Entry::getKey,
+ Map.Entry::getValue, (left, right) -> left, LinkedHashMap::new));
+
+ */
+ Map<ServicesKey, Services> orderedServices = new TreeMap<>(Comparator.comparing(s ->
+ orServices.getServices().get(s).getServiceAEnd().getServiceFormat().getName()).reversed());
+ orderedServices.putAll(orServices.getServices());
+ LOG.info("orderedServices = {}", orderedServices);
+ // TODO order services correctly. First OTU, then ODU and then DSR
Map<ConnectivityServiceKey, ConnectivityService> connServMap = new HashMap<>();
- for (Service service:orServices.getServices().values()) {
+ for (Service service:orderedServices.values()) {
// map services
// connections needed to be created --> looking at path description
ConnectivityService connServ = this.connectivityUtils.mapORServiceToTapiConnectivity(service);
--- /dev/null
+/*
+ * Copyright © 2021 Nokia. 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.tapi.utils;
+
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.concurrent.ExecutionException;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ProtectionType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RestorationPolicy;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.ResilienceTypeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanism;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanismBuilder;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TapiLink {
+
+ private static final Logger LOG = LoggerFactory.getLogger(TapiLink.class);
+ private final NetworkTransactionService networkTransactionService;
+
+ public TapiLink(NetworkTransactionService networkTransactionService) {
+ this.networkTransactionService = networkTransactionService;
+ }
+
+ public Link createTapiLink(String srcNodeid, String srcTpId, String dstNodeId, String dstTpId, String linkType,
+ String srcNodeQual, String dstNodeQual, String srcTpQual, String dstTpQual,
+ String adminState, String operState, List<LayerProtocolName> layerProtoNameList,
+ List<String> transLayerNameList, Uuid tapiTopoUuid) {
+ Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
+ String sourceNodeKey = String.join("+", srcNodeid, srcNodeQual);
+ String sourceNepKey = String.join("+", srcNodeid, srcTpQual, srcTpId);
+ Uuid sourceUuidNode = new Uuid(UUID.nameUUIDFromBytes(sourceNodeKey.getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes(sourceNepKey.getBytes(Charset.forName("UTF-8")))
+ .toString());
+ String destNodeKey = String.join("+", dstNodeId, dstNodeQual);
+ String destNepKey = String.join("+", dstNodeId, dstTpQual, dstTpId);
+ String linkKey = String.join("to", sourceNepKey, destNepKey);
+ Uuid destUuidNode = new Uuid(UUID.nameUUIDFromBytes(destNodeKey.getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes(destNepKey.getBytes(Charset.forName("UTF-8"))).toString());
+ NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(sourceUuidNode)
+ .setNodeEdgePointUuid(sourceUuidTp)
+ .build();
+ nepList.put(sourceNep.key(), sourceNep);
+ NodeEdgePoint destNep = new NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(destUuidNode)
+ .setNodeEdgePointUuid(destUuidTp)
+ .build();
+ nepList.put(destNep.key(), destNep);
+ NameBuilder linkName = new NameBuilder();
+ // TODO: variables for each type
+ switch (linkType) {
+ case TapiStringConstants.OMS_RDM_RDM_LINK:
+ LOG.info("Roadm to roadm link");
+ linkName
+ .setValueName("OMS link name")
+ .setValue(linkKey);
+ break;
+ case TapiStringConstants.TRANSITIONAL_LINK:
+ LOG.info("Transitional link");
+ linkName
+ .setValueName("transitional link name")
+ .setValue(linkKey);
+ break;
+ case TapiStringConstants.OMS_XPDR_RDM_LINK:
+ LOG.info("Xpdr to roadm link");
+ linkName
+ .setValueName("XPDR-RDM link name")
+ .setValue(linkKey);
+ break;
+ case TapiStringConstants.OTN_XPDR_XPDR_LINK:
+ LOG.info("OTN Xpdr to roadm link");
+ linkName
+ .setValueName("otn link name")
+ .setValue(linkKey);
+ break;
+ default:
+ LOG.warn("Type {} not recognized", linkType);
+ return null;
+ }
+ // Todo: common aspects of links and set all attributes
+ CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
+ .setCostAlgorithm("Restricted Shortest Path - RSP")
+ .setCostName("HOP_COUNT")
+ .setCostValue("12345678")
+ .build();
+ LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
+ .setFixedLatencyCharacteristic("12345678")
+ .setQueingLatencyCharacteristic("12345678")
+ .setJitterCharacteristic("12345678")
+ .setWanderCharacteristic("12345678")
+ .setTrafficPropertyName("FIXED_LATENCY")
+ .build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
+ .build();
+ ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
+ .setValidationMechanism("validation mechanism")
+ .setValidationRobustness("validation robustness")
+ .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
+ .build();
+ return new LinkBuilder()
+ .setUuid(new Uuid(
+ UUID.nameUUIDFromBytes(linkKey.getBytes(Charset.forName("UTF-8"))).toString()))
+ .setName(Map.of(linkName.build().key(), linkName.build()))
+ .setTransitionedLayerProtocolName(transLayerNameList)
+ .setLayerProtocolName(layerProtoNameList)
+ .setNodeEdgePoint(nepList)
+ .setDirection(ForwardingDirection.BIDIRECTIONAL)
+ .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
+ new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build())
+ .build())
+ .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
+ .setRestorationPolicy(RestorationPolicy.NA)
+ .build())
+ .setAdministrativeState(setTapiAdminState(adminState))
+ .setOperationalState(setTapiOperationalState(operState))
+ .setLifecycleState(LifecycleState.INSTALLED)
+ .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
+ new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build())
+ .build())
+ .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
+ .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .setErrorCharacteristic("error")
+ .setLossCharacteristic("loss")
+ .setRepeatDeliveryCharacteristic("repeat delivery")
+ .setDeliveryOrderCharacteristic("delivery order")
+ .setUnavailableTimeCharacteristic("unavailable time")
+ .setServerIntegrityProcessCharacteristic("server integrity process")
+ .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
+ .build();
+ }
+
+ public AdministrativeState setTapiAdminState(String adminState) {
+ if (adminState == null) {
+ return null;
+ }
+ return adminState.equals(AdminStates.InService.getName())
+ || adminState.equals(AdministrativeState.UNLOCKED.getName()) ? AdministrativeState.UNLOCKED
+ : AdministrativeState.LOCKED;
+ }
+
+ public AdministrativeState setTapiAdminState(AdminStates adminState1, AdminStates adminState2) {
+ if (adminState1 == null || adminState2 == null) {
+ return null;
+ }
+ LOG.info("Admin state 1 = {}, andmin state 2 = {}", adminState1.getName(), adminState2.getName());
+ return AdminStates.InService.equals(adminState1) && AdminStates.InService.equals(adminState2)
+ ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
+ }
+
+ public OperationalState setTapiOperationalState(String operState) {
+ if (operState == null) {
+ return null;
+ }
+ return operState.equals("inService") || operState.equals(OperationalState.ENABLED.getName())
+ ? OperationalState.ENABLED : OperationalState.DISABLED;
+ }
+
+ public OperationalState setTapiOperationalState(State operState1, State operState2) {
+ if (operState1 == null || operState2 == null) {
+ return null;
+ }
+ return State.InService.equals(operState1) && State.InService.equals(operState2)
+ ? OperationalState.ENABLED : OperationalState.DISABLED;
+ }
+
+ public String getOperState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) {
+ Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
+ TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
+ TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(Context1.class).child(TopologyContext.class)
+ .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
+ .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
+ .build();
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
+ TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
+ TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ InstanceIdentifier<OwnedNodeEdgePoint> onep1IID = InstanceIdentifier.builder(Context.class)
+ .augmentation(Context1.class).child(TopologyContext.class)
+ .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid))
+ .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nep1Uuid))
+ .build();
+ try {
+ Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
+ LogicalDatastoreType.OPERATIONAL, onepIID).get();
+ Optional<OwnedNodeEdgePoint> optionalOnep1 = this.networkTransactionService.read(
+ LogicalDatastoreType.OPERATIONAL, onep1IID).get();
+ if (!optionalOnep.isPresent() || !optionalOnep1.isPresent()) {
+ LOG.error("One of the 2 neps doesnt exist in the datastore: {} OR {}", nepUuid, nep1Uuid);
+ return null;
+ }
+ return optionalOnep.get().getOperationalState().equals(optionalOnep1.get().getOperationalState())
+ ? optionalOnep.get().getOperationalState().getName() : OperationalState.DISABLED.getName();
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Failed getting Mapping data from portMapping",e);
+ return null;
+ }
+ }
+
+ public String getAdminState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) {
+ Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
+ TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
+ TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(Context1.class).child(TopologyContext.class)
+ .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
+ .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
+ .build();
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
+ TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
+ TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ InstanceIdentifier<OwnedNodeEdgePoint> onep1IID = InstanceIdentifier.builder(Context.class)
+ .augmentation(Context1.class).child(TopologyContext.class)
+ .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid))
+ .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nep1Uuid))
+ .build();
+ try {
+ Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
+ LogicalDatastoreType.OPERATIONAL, onepIID).get();
+ Optional<OwnedNodeEdgePoint> optionalOnep1 = this.networkTransactionService.read(
+ LogicalDatastoreType.OPERATIONAL, onep1IID).get();
+ if (!optionalOnep.isPresent() || !optionalOnep1.isPresent()) {
+ LOG.error("One of the 2 neps doesnt exist in the datastore: {} OR {}", nepUuid, nep1Uuid);
+ return null;
+ }
+ return optionalOnep.get().getAdministrativeState().equals(optionalOnep1.get().getAdministrativeState())
+ ? optionalOnep.get().getAdministrativeState().getName() : AdministrativeState.UNLOCKED.getName();
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Failed getting Mapping data from portMapping",e);
+ return null;
+ }
+ }
+}
class="org.opendaylight.transportpce.tapi.utils.TapiListener">
</bean>
+ <bean id="tapiLink"
+ class="org.opendaylight.transportpce.tapi.utils.TapiLink">
+ <argument ref="networkTransactionImpl" />
+ </bean>
+
<bean id="tapiPceListener" class="org.opendaylight.transportpce.tapi.listeners.TapiPceListenerImpl">
<argument ref="dataBroker" />
</bean>
<bean id="tapiNetworkModelService" class="org.opendaylight.transportpce.tapi.topology.TapiNetworkModelServiceImpl">
<argument ref="tapilinkDiscoveryImpl" />
<argument ref="networkTransactionImpl" />
+ <argument ref="tapiLink" />
</bean>
<bean id="tapiNetconfTopologyListener" class="org.opendaylight.transportpce.tapi.topology.TapiNetconfTopologyListener">
<bean id="tapiNetworkUtilsImpl" class="org.opendaylight.transportpce.tapi.topology.TapiNetworkUtilsImpl">
<argument ref="networkTransactionImpl" />
+ <argument ref="tapiLink" />
</bean>
<bean id="tapiProvider"
</bean>
<bean id="tapilinkDiscoveryImpl" class="org.opendaylight.transportpce.tapi.R2RTapiLinkDiscovery">
- <argument ref="dataBroker" />
+ <argument ref="networkTransactionImpl" />
<argument ref="deviceTransactionManager" />
+ <argument ref="tapiLink" />
</bean>
<service ref="tapiNetworkModelService" interface="org.opendaylight.transportpce.tapi.topology.TapiNetworkModelService" />
import org.opendaylight.transportpce.tapi.utils.TapiConnectivityDataUtils;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
import org.opendaylight.transportpce.tapi.utils.TapiInitialORMapping;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.utils.TopologyDataUtils;
public static ConnectivityUtils connectivityUtils;
public static TapiInitialORMapping tapiInitialORMapping;
public static NetworkTransactionService networkTransactionService;
+ public static TapiLink tapilink;
private ListeningExecutorService executorService;
private CountDownLatch endSignal;
private static final int NUM_THREADS = 5;
networkTransactionService = new NetworkTransactionImpl(
new RequestProcessor(getDataStoreContextUtil().getDataBroker()));
+ tapilink = new TapiLink(networkTransactionService);
serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(getDataStoreContextUtil().getDataBroker());
tapiContext = new TapiContext(networkTransactionService);
- topologyUtils = new TopologyUtils(networkTransactionService, getDataStoreContextUtil().getDataBroker());
+ topologyUtils = new TopologyUtils(networkTransactionService, getDataStoreContextUtil().getDataBroker(),
+ tapilink);
connectivityUtils = new ConnectivityUtils(serviceDataStoreOperations, new HashMap<>(), tapiContext);
tapiInitialORMapping = new TapiInitialORMapping(topologyUtils, connectivityUtils,
tapiContext, serviceDataStoreOperations);
*/
package org.opendaylight.transportpce.tapi.topology;
+import static org.hamcrest.CoreMatchers.anyOf;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.either;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.hasItems;
+import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import com.google.common.util.concurrent.FluentFuture;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.InstanceIdentifiers;
+import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.common.network.RequestProcessor;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.utils.TopologyDataUtils;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU0;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
private static Map<LinkKey, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
.networks.network.Link> ortopoLinks;
private static Uuid topologyUuid;
+ private static NetworkTransactionService networkTransactionService;
+ private static TapiLink tapiLink;
private static DataBroker dataBroker = getDataBroker();
@BeforeClass
.read(LogicalDatastoreType.CONFIGURATION, ortopo1IID);
openroadmNet = ortopoFuture.get().get();
- topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER.getBytes(
+ topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
Charset.forName("UTF-8"))).toString());
+ networkTransactionService = new NetworkTransactionImpl(
+ new RequestProcessor(getDataStoreContextUtil().getDataBroker()));
+ tapiLink = new TapiLink(networkTransactionService);
LOG.info("TEST SETUP READY");
}
@Test
public void convertNodeWhenNoStates() {
- Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", null, null);
+ Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", "XPDR1-CLIENT1", null, null);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
.getTapiNodes().get(new
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
Uuid enetworkNepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
Uuid inetworkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
@Test
public void convertNodeWhenBadStates1() {
- Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", AdminStates.OutOfService,
- State.OutOfService);
+ Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", "XPDR1-CLIENT1",
+ AdminStates.OutOfService, State.OutOfService);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
.getTapiNodes().get(new
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
Uuid enetworkNepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
Uuid inetworkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
@Test
public void convertNodeWhenBadStates2() {
- Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", AdminStates.Maintenance,
- State.Degraded);
+ Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", "XPDR1-CLIENT1",
+ AdminStates.Maintenance, State.Degraded);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
.getTapiNodes().get(new
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
Uuid enetworkNepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
Uuid inetworkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
new LinkId("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"))), null, null);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
= tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertNull("Administrative State should not be present", tapiLinks.get(0).getAdministrativeState());
+ assertNull("Administrative State should not be present", tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
- assertNull("Operational State should not be present", tapiLinks.get(0).getOperationalState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
+ assertNull("Operational State should not be present", tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
new LinkId("ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1"))), null, null);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
= tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertNull("Administrative State should not be present", tapiLinks.get(0).getAdministrativeState());
+ assertNull("Administrative State should not be present", tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
- assertNull("Operational State should not be present", tapiLinks.get(0).getOperationalState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
+ assertNull("Operational State should not be present", tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
AdminStates.OutOfService, State.OutOfService);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
assertEquals("Administrative state should be LOCKED",
- AdministrativeState.LOCKED, tapiLinks.get(0).getAdministrativeState());
+ AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
assertEquals("Operational state should be DISABLED",
- OperationalState.DISABLED, tapiLinks.get(0).getOperationalState());
+ OperationalState.DISABLED, tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
AdminStates.Maintenance, State.Degraded);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
assertEquals("Administrative state should be LOCKED",
- AdministrativeState.LOCKED, tapiLinks.get(0).getAdministrativeState());
+ AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
assertEquals("Operational state should be DISABLED",
- OperationalState.DISABLED, tapiLinks.get(0).getOperationalState());
+ OperationalState.DISABLED, tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
AdminStates.OutOfService, State.OutOfService);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
assertEquals("Administrative state should be LOCKED",
- AdministrativeState.LOCKED, tapiLinks.get(0).getAdministrativeState());
+ AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
assertEquals("Operational state should be DISABLED",
- OperationalState.DISABLED, tapiLinks.get(0).getOperationalState());
+ OperationalState.DISABLED, tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
public void convertNodeForTransponder100G() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
@Test
public void convertNodeForOtnMuxponder() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
@Test
public void convertNodeForOtnSwitch() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : otnSwitch.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
= tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(1), dsrNodeUuid, otsiNodeUuid,
+ checkTransitionalLink(tapiLinks.get(2), dsrNodeUuid, otsiNodeUuid,
"SPDR-SA1-XPDR2+iODU+XPDR2-NETWORK4", "SPDR-SA1-XPDR2+iOTSi+XPDR2-NETWORK4", "SPDR-SA1-XPDR2");
}
@Test
public void convertOtnLink() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
Uuid tp4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid link1Uuid =
- new Uuid(UUID.nameUUIDFromBytes("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid link2Uuid =
- new Uuid(UUID.nameUUIDFromBytes("OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link> links
= tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkOtnLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
- "ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
- checkOtnLink(links.get(3), node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
- "OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
+ checkOtnLink(links.get(3), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
+ "SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1");
+ checkOtnLink(links.get(2), node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
+ "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1");
}
@Test
public void convertNodeForRoadmWhenNoOtnMuxAttached() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
tapiFactory.convertRoadmNode(roadmA, openroadmNet);
assertEquals("Node list size should be 1", 1, tapiFactory.getTapiNodes().size());
@Test
public void convertNodeForRoadmWhenRoadmNeighborAttached() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
tapiFactory.convertRoadmNode(roadmA, openroadmNet);
tapiFactory.convertRoadmNode(roadmC, openroadmNet);
Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid linkUuid =
- new Uuid(UUID.nameUUIDFromBytes("ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX"
- .getBytes(Charset.forName("UTF-8"))).toString());
+ new Uuid(UUID.nameUUIDFromBytes(
+ "ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA+DEG2-TTP-TXRX"
+ .getBytes(Charset.forName("UTF-8"))).toString());
checkOmsLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
- "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX");
+ "ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA+DEG2-TTP-TXRX");
}
@Test
public void convertNodeForRoadmWhenOtnMuxAttached() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid);
+ ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid linkUuid =
- new Uuid(UUID.nameUUIDFromBytes("ROADM-A1-SRG1-SRG1-PP2-TXRXtoSPDR-SA1-XPDR1-XPDR1-NETWORK1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- checkXpdrRdmLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
- "ROADM-A1-SRG1-SRG1-PP2-TXRXtoSPDR-SA1-XPDR1-XPDR1-NETWORK1");
+ new Uuid(UUID.nameUUIDFromBytes(
+ "ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ checkXpdrRdmLink(links.get(1), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
+ "ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1");
}
private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node,
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR2-CLIENT4").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepClient100GSwitch(nep1, client4NepUuid, nodeId + "+DSR+XPDR2-CLIENT4", "NodeEdgePoint_C");
- OwnedNodeEdgePoint enep2 = enepsN.get(3);
+ OwnedNodeEdgePoint enep2 = enepsN.get(2);
OwnedNodeEdgePoint inep2 = inepsN.get(3);
Uuid enetworkNepUuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eODU+XPDR2-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+eODU+XPDR2-CLIENT4").getBytes(Charset.forName("UTF-8")))
.toString());
Uuid inetworkNepUuid = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iODU+XPDR2-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepNetworkODU4(enep2, enetworkNepUuid, nodeId + "+eODU+XPDR2-NETWORK1", "eNodeEdgePoint_N", true);
- checkNepNetworkODU4(inep2, inetworkNepUuid, nodeId + "+iODU+XPDR2-NETWORK1", "iNodeEdgePoint_N", false);
+ checkNepeODU4(enep2, enetworkNepUuid, nodeId + "+eODU+XPDR2-CLIENT4", "eNodeEdgePoint_N", false);
+ checkNepNetworkODU4(inep2, inetworkNepUuid, nodeId + "+iODU+XPDR2-NETWORK1", "iNodeEdgePoint_N", true);
List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
.filter(n -> n.getName().containsKey(new NameKey("NodeEdgePoint_C")))
.sorted((nep3, nep4) -> nep3.getUuid().getValue().compareTo(nep4.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals("Mux-DSR node should have 1 eNEP network", 1, enepsN.size());
+ assertEquals("Mux-DSR node should have 4 eNEP network", 4, enepsN.size());
assertEquals("Mux-DSR node should have 1 iNEP network", 1, inepsN.size());
assertEquals("Mux-DSR node should have 4 NEPs client", 4, nepsC.size());
OwnedNodeEdgePoint nep3 = nepsC.get(2);
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-CLIENT3").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepClient10G(nep3, client3NepUuid, nodeId + "+DSR+XPDR1-CLIENT3", "NodeEdgePoint_C");
-
- OwnedNodeEdgePoint enep4 = enepsN.get(0);
+ OwnedNodeEdgePoint enep4 = enepsN.get(3);
OwnedNodeEdgePoint inep4 = inepsN.get(0);
Uuid enetworkNepUuid2 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+eODU+XPDR1-CLIENT3").getBytes(Charset.forName("UTF-8")))
.toString());
Uuid inetworkNepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepNetworkODU4(enep4, enetworkNepUuid2, nodeId + "+eODU+XPDR1-NETWORK1", "eNodeEdgePoint_N", true);
+ checkNepeODU4(enep4, enetworkNepUuid2, nodeId + "+eODU+XPDR1-CLIENT3", "eNodeEdgePoint_N", false);
checkNepNetworkODU4(inep4, inetworkNepUuid2, nodeId + "+iODU+XPDR1-NETWORK1", "iNodeEdgePoint_N",
- false);
+ true);
List<NodeRuleGroup> nrgList2 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepClient100GTpdr(nep5, client1NepUuid, nodeId + "+DSR+XPDR1-CLIENT1", "100G-tpdr");
-
OwnedNodeEdgePoint enep6 = enepsN.get(0);
OwnedNodeEdgePoint inep6 = inepsN.get(1);
Uuid enetworkNepUuid3 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
Uuid inetworkNepUuid3 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepNetworkODU4(enep6, enetworkNepUuid3, nodeId + "+eODU+XPDR1-NETWORK1", "eNodeEdgePoint_N", true);
+ checkNepeODU4(enep6, enetworkNepUuid3, nodeId + "+eODU+XPDR1-CLIENT1", "eNodeEdgePoint_N", false);
checkNepNetworkODU4(inep6, inetworkNepUuid3, nodeId + "+iODU+XPDR1-NETWORK1", "iNodeEdgePoint_N",
- false);
+ true);
List<NodeRuleGroup> nrgList3 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
checkCommonPartOfNep(nep, false);
}
+ private void checkNepeODU4(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
+ boolean withSip) {
+ assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
+ List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
+ Name name = nameList.get(0);
+ assertEquals("value of eODU nep should be '" + portName + "'",
+ portName, name.getValue());
+ assertEquals("value-name of eODU nep for '" + portName + "' should be '" + nepName + "'",
+ nepName, name.getValueName());
+ // TODO: depending on the type of node there is one type or another
+ assertThat("eODU nep should support 1, 2 or 3 kind of cep, depending on client port",
+ nep.getSupportedCepLayerProtocolQualifier().size(), anyOf(is(1), is(2), is(3)));
+ assertTrue("eODU nep should support 1 kind of cep",
+ nep.getSupportedCepLayerProtocolQualifier().stream().anyMatch(splc -> splc.equals(ODUTYPEODU0.class)
+ || splc.equals(ODUTYPEODU2.class) || splc.equals(ODUTYPEODU2E.class)
+ || splc.equals(ODUTYPEODU4.class)));
+ assertEquals("eODU nep should be of ODU protocol type", LayerProtocolName.ODU, nep.getLayerProtocolName());
+ checkCommonPartOfNep(nep, withSip);
+ }
+
private void checkNepNetworkODU4(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
boolean withSip) {
assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
assertEquals("each node-rule-group should contain 2 NEP for muxponder DSR",
2, nodeRuleGroup.getNodeEdgePoint().size());
}
- List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).nonnullNodeEdgePoint().values());
+ List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(2).nonnullNodeEdgePoint().values());
assertThat("node-rule-group nb 2 should be between nep-client4 and nep-network1",
nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
either(containsString(networkNepUuid.getValue())).or(containsString(clientNepUuid.getValue())));
.compareTo(nrg2.getNodeEdgePointUuid().getValue()))
.collect(Collectors.toList());
assertEquals("in the sorted node-rule-group, nep number 7 should be XPDR2-NETWORK1",
- networkNepUuid, nrg.get(7).getNodeEdgePointUuid());
+ networkNepUuid, nrg.get(6).getNodeEdgePointUuid());
assertEquals("in the sorted node-rule-group, nep number 4 should be XPDR2-CLIENT4",
- clientNepUuid, nrg.get(4).getNodeEdgePointUuid());
+ clientNepUuid, nrg.get(3).getNodeEdgePointUuid());
assertEquals("any item of the node-rule-group should have the same nodeUuid",
nodeUuid, nrg.get(4).getNodeUuid());
assertEquals("any item of the node-rule-group should have the same nodeUuid",
private void checkTransitionalLink(org.opendaylight.yang.gen.v1
.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link link,
Uuid node1Uuid, Uuid node2Uuid, String tp1, String tp2, String ietfNodeId) {
- Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((ietfNodeId + "--" + tp1 + "--" + tp2)
+ Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((tp1 + "to" + tp2)
.getBytes(Charset.forName("UTF-8"))).toString());
assertEquals("bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2, linkUuid, link.getUuid());
assertEquals("Available capacity unit should be GBPS",
new NameKey("otn link name")).getValue());
assertEquals("bad uuid for link", linkUuid, link.getUuid());
assertEquals("Available capacity unit should be MBPS",
- CapacityUnit.MBPS, link.getAvailableCapacity().getTotalSize().getUnit());
+ CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit());
String prefix = linkName.split("-")[0];
if ("OTU4".equals(prefix)) {
assertEquals("Available capacity -total size value should be 0",
either(containsString(tp1Uuid.getValue())).or(containsString(tp2Uuid.getValue())));
}
- private Node changeTerminationPointState(Node initialNode, String tpid, AdminStates admin, State oper) {
+ private Node changeTerminationPointState(Node initialNode, String tpid, String tpid1, AdminStates admin,
+ State oper) {
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder tpdr1Bldr
= new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder(
initialNode.augmentation(Node1.class));
.setOperationalState(oper)
.build());
tps.replace(tpBldr.key(), tpBldr.build());
+ TerminationPointBuilder tpBldr1 = new TerminationPointBuilder(
+ tps.get(new TerminationPointKey(new TpId(tpid1))));
+ tpBldr1.addAugmentation(new TerminationPoint1Builder(tpBldr1.augmentation(TerminationPoint1.class))
+ .setAdministrativeState(admin)
+ .setOperationalState(oper)
+ .build());
+ tps.replace(tpBldr1.key(), tpBldr1.build());
tpdr1Bldr.setTerminationPoint(tps);
return new NodeBuilder(initialNode).addAugmentation(tpdr1Bldr.build()).build();
}
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.InstanceIdentifiers;
+import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.common.network.RequestProcessor;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.utils.TopologyDataUtils;
private static Map<LinkKey,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
.networks.network.Link> otnLinks;
private static Uuid topologyUuid;
+ private static NetworkTransactionService networkTransactionService;
+ private static TapiLink tapiLink;
private static DataBroker dataBroker = getDataBroker();
- private static final String E_OTSI = "eOTSi";
- private static final String I_OTSI = "iOTSi";
- private static final String DSR = "DSR";
@BeforeClass
public static void setUp() throws InterruptedException, ExecutionException {
.read(LogicalDatastoreType.CONFIGURATION, linksIID);
otnLinks = linksFuture.get().get().getLink();
- topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_MULTILAYER.getBytes(Charset.forName("UTF-8")))
- .toString());
+ topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ networkTransactionService = new NetworkTransactionImpl(
+ new RequestProcessor(getDataStoreContextUtil().getDataBroker()));
+ tapiLink = new TapiLink(networkTransactionService);
LOG.info("TEST SETUP READY");
}
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
new LinkId("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"))), null, null);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertNull("Administrative State should not be present", tapiLinks.get(0).getAdministrativeState());
+ assertNull("Administrative State should not be present", tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
- assertNull("Operational State should not be present", tapiLinks.get(0).getOperationalState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
+ assertNull("Operational State should not be present", tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
new LinkId("ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1"))), null, null);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertNull("Administrative State should not be present", tapiLinks.get(0).getAdministrativeState());
+ assertNull("Administrative State should not be present", tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
- assertNull("Operational State should not be present", tapiLinks.get(0).getOperationalState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
+ assertNull("Operational State should not be present", tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
AdminStates.OutOfService, State.OutOfService);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
assertEquals("Administrative state should be LOCKED",
- AdministrativeState.LOCKED, tapiLinks.get(0).getAdministrativeState());
+ AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
assertEquals("Operational state should be DISABLED",
- OperationalState.DISABLED, tapiLinks.get(0).getOperationalState());
+ OperationalState.DISABLED, tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
AdminStates.Maintenance, State.Degraded);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
assertEquals("Administrative state should be LOCKED",
- AdministrativeState.LOCKED, tapiLinks.get(0).getAdministrativeState());
+ AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
assertEquals("Operational state should be DISABLED",
- OperationalState.DISABLED, tapiLinks.get(0).getOperationalState());
+ OperationalState.DISABLED, tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
AdminStates.OutOfService, State.OutOfService);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
assertEquals("Administrative state should be LOCKED",
- AdministrativeState.LOCKED, tapiLinks.get(0).getAdministrativeState());
+ AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState());
assertEquals("Administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, tapiLinks.get(2).getAdministrativeState());
+ AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState());
assertEquals("Operational state should be DISABLED",
- OperationalState.DISABLED, tapiLinks.get(0).getOperationalState());
+ OperationalState.DISABLED, tapiLinks.get(3).getOperationalState());
assertEquals("Operational state should be ENABLED",
- OperationalState.ENABLED, tapiLinks.get(2).getOperationalState());
+ OperationalState.ENABLED, tapiLinks.get(0).getOperationalState());
}
@Test
public void convertNodeForTransponder100G() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(1), dsrNodeUuid, otsiNodeUuid,
+ checkTransitionalLink(tapiLinks.get(0), dsrNodeUuid, otsiNodeUuid,
"XPDR-A1-XPDR1+DSR+XPDR1-NETWORK1", "XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1", "XPDR-A1-XPDR1");
}
@Test
public void convertNodeForOtnMuxponder() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
@Test
public void convertNodeForOtnSwitch() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : otnSwitch.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(0), dsrNodeUuid, otsiNodeUuid,
+ checkTransitionalLink(tapiLinks.get(3), dsrNodeUuid, otsiNodeUuid,
"SPDR-SA1-XPDR2+DSR+XPDR2-NETWORK4", "SPDR-SA1-XPDR2+iOTSi+XPDR2-NETWORK4", "SPDR-SA1-XPDR2");
}
@Test
public void convertOtnLink() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
.toString());
Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR+XPDR1-NETWORK1"
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR+XPDR1-NETWORK1"
+ Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid tp3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid tp4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid link1Uuid =
- new Uuid(UUID.nameUUIDFromBytes("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid link2Uuid =
- new Uuid(UUID.nameUUIDFromBytes("OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
List<Link> links = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkOtnLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
- "ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
+ checkOtnLink(links.get(3), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
+ "SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1");
checkOtnLink(links.get(2), node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
- "OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
+ "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1");
}
@Test
public void convertRoadmInfrastructureWhenNoXponderAttached() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertRoadmInfrastructure();
assertEquals("Node list size should be 1", 1, tapiFactory.getTapiNodes().size());
@Test
public void convertRoadmInfrastructureWhenOtnMuxAttached() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR2-CLIENT4").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepClient100GSwitch(nep1, client4NepUuid, "XPDR2-CLIENT4", "NodeEdgePoint_C",
- otnSwitch.getNodeId().getValue(), DSR);
+ otnSwitch.getNodeId().getValue(), TapiStringConstants.DSR);
OwnedNodeEdgePoint nep2 = nepsN.get(1);
Uuid networkNepUuid = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR2-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepNetworkODU4(nep2, networkNepUuid, "XPDR2-NETWORK1", "NodeEdgePoint_N",
- otnSwitch.getNodeId().getValue(), DSR);
+ otnSwitch.getNodeId().getValue(), TapiStringConstants.DSR);
List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-CLIENT3").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepClient10G(nep3, client3NepUuid, "XPDR1-CLIENT3", "NodeEdgePoint_C",
- otnMuxA.getNodeId().getValue(), DSR);
+ otnMuxA.getNodeId().getValue(), TapiStringConstants.DSR);
OwnedNodeEdgePoint nep4 = nepsN.get(0);
Uuid networkNepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepNetworkODU4(nep4, networkNepUuid2, "XPDR1-NETWORK1", "NodeEdgePoint_N",
- otnMuxA.getNodeId().getValue(), DSR);
+ otnMuxA.getNodeId().getValue(), TapiStringConstants.DSR);
List<NodeRuleGroup> nrgList2 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepClient100GTpdr(nep5, client1NepUuid, "XPDR1-CLIENT1", "100G-tpdr",
- tpdr100G.getNodeId().getValue(), DSR);
+ tpdr100G.getNodeId().getValue(), TapiStringConstants.DSR);
OwnedNodeEdgePoint nep6 = nepsN.get(0);
Uuid networkNepUuid3 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepNetworkODU4(nep6, networkNepUuid3, "XPDR1-NETWORK1", "NodeEdgePoint_N",
- tpdr100G.getNodeId().getValue(), DSR);
+ tpdr100G.getNodeId().getValue(), TapiStringConstants.DSR);
List<NodeRuleGroup> nrgList3 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR2-NETWORK2").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepOtsiNode(nep1, inepUuid, "XPDR2-NETWORK2", "iNodeEdgePoint", otnSwitch.getNodeId().getValue(),
- I_OTSI);
+ TapiStringConstants.I_OTSI);
OwnedNodeEdgePoint nep2 = nepsE.get(0);
Uuid enepUuid = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR2-NETWORK2").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepOtsiNode(nep2, enepUuid, "XPDR2-NETWORK2", "eNodeEdgePoint", otnSwitch.getNodeId().getValue(),
- E_OTSI);
+ TapiStringConstants.E_OTSI);
List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepOtsiNode(nep3, enepUuid2, "XPDR1-NETWORK1", "eNodeEdgePoint", otnMuxA.getNodeId().getValue(),
- E_OTSI);
+ TapiStringConstants.E_OTSI);
OwnedNodeEdgePoint nep4 = nepsI.get(0);
Uuid inepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepOtsiNode(nep4, inepUuid2, "XPDR1-NETWORK1", "iNodeEdgePoint", otnMuxA.getNodeId().getValue(),
- I_OTSI);
+ TapiStringConstants.I_OTSI);
List<NodeRuleGroup> nrgList2 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepOtsiNode(nep5, enepUuid3, "XPDR1-NETWORK1", "eNodeEdgePoint", tpdr100G.getNodeId().getValue(),
- E_OTSI);
+ TapiStringConstants.E_OTSI);
OwnedNodeEdgePoint nep6 = nepsI.get(0);
Uuid inepUuid3 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
checkNepOtsiNode(nep6, inepUuid3, "XPDR1-NETWORK1", "iNodeEdgePoint", tpdr100G.getNodeId().getValue(),
- I_OTSI);
+ TapiStringConstants.I_OTSI);
List<NodeRuleGroup> nrgList3 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
}
private void checkTransitionalLink(Link link, Uuid node1Uuid, Uuid node2Uuid, String tp1, String tp2,
- String ietfNodeId) {
- Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((ietfNodeId + "--" + tp1 + "--" + tp2)
+ String ietfNodeId) {
+ Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((tp1 + "to" + tp2)
.getBytes(Charset.forName("UTF-8"))).toString());
assertEquals("bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2, linkUuid, link.getUuid());
assertEquals("Available capacity unit should be GBPS",
}
private void checkOtnLink(Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid,
- String linkName) {
+ String linkName) {
assertEquals("bad name for the link", linkName, link.getName().get(new NameKey("otn link name")).getValue());
assertEquals("bad uuid for link", linkUuid, link.getUuid());
assertEquals("Available capacity unit should be MBPS",
- CapacityUnit.MBPS, link.getAvailableCapacity().getTotalSize().getUnit());
+ CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit());
String prefix = linkName.split("-")[0];
if ("OTU4".equals(prefix)) {
assertEquals("Available capacity -total size value should be 0",
import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
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.GetTopologyDetailsOutput;
TapiContext tapiContext;
@Mock
TopologyUtils topologyUtils;
+ @Mock
+ TapiLink tapiLink;
@Test
public void getTopologyDetailsWithExceptionTest() throws InterruptedException, ExecutionException {
};
when(networkTransactionService.commit()).then(answer);
tapiContext = new TapiContext(networkTransactionService);
+ tapiLink = new TapiLink(networkTransactionService);
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(TopologyUtils.T0_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(dataBroker, tapiContext, topologyUtils);
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
+ TapiStringConstants.T0_MULTILAYER);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(dataBroker, tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
RpcResult<GetTopologyDetailsOutput> rpcResult = result.get();
if (rpcResult.isSuccessful()) {
import org.opendaylight.transportpce.common.network.RequestProcessor;
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.connectivity.ConnectivityUtils;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
import org.opendaylight.transportpce.tapi.utils.TapiInitialORMapping;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.utils.TopologyDataUtils;
public static ConnectivityUtils connectivityUtils;
public static ServiceDataStoreOperations serviceDataStoreOperations;
public static TapiInitialORMapping tapiInitialORMapping;
+ public static TapiLink tapiLink;
@BeforeClass
public static void setUp() throws InterruptedException, ExecutionException {
TapiTopologyDataUtils.PORTMAPPING_FILE);
networkTransactionService = new NetworkTransactionImpl(
new RequestProcessor(getDataStoreContextUtil().getDataBroker()));
+ tapiLink = new TapiLink(networkTransactionService);
serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(getDataStoreContextUtil().getDataBroker());
tapiContext = new TapiContext(networkTransactionService);
- topologyUtils = new TopologyUtils(networkTransactionService, getDataStoreContextUtil().getDataBroker());
+ topologyUtils = new TopologyUtils(networkTransactionService, getDataStoreContextUtil().getDataBroker(),
+ tapiLink);
connectivityUtils = new ConnectivityUtils(serviceDataStoreOperations, new HashMap<>(), tapiContext);
tapiInitialORMapping = new TapiInitialORMapping(topologyUtils, connectivityUtils,
tapiContext, serviceDataStoreOperations);
@Test
public void getTopologyDetailsForTransponder100GTopologyWhenSuccessful()
throws ExecutionException, InterruptedException {
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(TopologyUtils.TPDR_100G);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils);
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
+ TapiStringConstants.TPDR_100G);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
@Nullable
Topology topology = rpcResult.getResult().getTopology();
assertNotNull("Topology should not be null", topology);
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.TPDR_100G.getBytes(StandardCharsets.UTF_8))
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.TPDR_100G.getBytes(StandardCharsets.UTF_8))
.toString());
assertEquals("incorrect topology uuid", topoUuid, topology.getUuid());
assertEquals("Node list size should be 1", 1, topology.getNode().size());
@Test
public void getTopologyDetailsForOtnTopologyWithOtnLinksWhenSuccessful()
throws ExecutionException, InterruptedException {
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(TopologyUtils.T0_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils);
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
+ TapiStringConstants.T0_MULTILAYER);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
.toString());
Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+OTSi".getBytes(StandardCharsets.UTF_8))
.toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR+XPDR1-NETWORK1"
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
- Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR+XPDR1-NETWORK1"
+ Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
Uuid tp3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
Uuid tp4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
Uuid link1Uuid =
- new Uuid(UUID.nameUUIDFromBytes("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
Uuid link2Uuid =
- new Uuid(UUID.nameUUIDFromBytes("OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
List<Link> links = topology.nonnullLink().values().stream()
.filter(l -> l.getName().containsKey(new NameKey("otn link name")))
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkOtnLink(links.get(0), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
- "ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
- checkOtnLink(links.get(1), topoUuid, node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
- "OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
+ checkOtnLink(links.get(0), topoUuid, node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link1Uuid,
+ "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1");
+ checkOtnLink(links.get(1), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link2Uuid,
+ "SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1");
}
@Test
public void getTopologyDetailsForFullTapiTopologyWithLinksWhenSuccessful()
throws ExecutionException, InterruptedException {
GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TopologyUtils.T0_FULL_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils);
+ TapiStringConstants.T0_FULL_MULTILAYER);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals("SPDR-SA1-XPDR1+DSR (mux) should have a single external network nep", 1, enb3);
+ assertEquals("SPDR-SA1-XPDR1+DSR (mux) should have 4 external network nep", 4, enb3);
long nb4 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().values().stream().findFirst().get().getValue().equals("SPDR-SA1-XPDR2+DSR"))
Uuid tp4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
Uuid link1Uuid =
- new Uuid(UUID.nameUUIDFromBytes("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
Uuid link2Uuid =
- new Uuid(UUID.nameUUIDFromBytes("OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
List<Link> links = topology.nonnullLink().values().stream()
.filter(l -> l.getName().containsKey(new NameKey("otn link name")))
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkOtnLink(links.get(0), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
- "ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
- checkOtnLink(links.get(1), topoUuid, node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
- "OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
+ checkOtnLink(links.get(0), topoUuid, node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link1Uuid,
+ "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1");
+ checkOtnLink(links.get(1), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link2Uuid,
+ "SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1");
}
@Test
public void getNodeAndNepsDetailsWhenSuccessful()
throws ExecutionException, InterruptedException {
GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TopologyUtils.T0_FULL_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils);
+ TapiStringConstants.T0_FULL_MULTILAYER);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
for (Node node:topology.getNode().values()) {
String nodeName = node.getName().values().stream().findFirst().get().getValue();
GetNodeDetailsInput input1 = TapiTopologyDataUtils.buildGetNodeDetailsInput(
- TopologyUtils.T0_FULL_MULTILAYER, nodeName);
+ TapiStringConstants.T0_FULL_MULTILAYER, nodeName);
ListenableFuture<RpcResult<GetNodeDetailsOutput>> result1 = tapiTopoImpl.getNodeDetails(input1);
result.addListener(new Runnable() {
@Override
for (OwnedNodeEdgePoint onep:node1.getOwnedNodeEdgePoint().values()) {
String onepName = onep.getName().values().stream().findFirst().get().getValue();
GetNodeEdgePointDetailsInput input2 = TapiTopologyDataUtils.buildGetNodeEdgePointDetailsInput(
- TopologyUtils.T0_FULL_MULTILAYER, nodeName, onepName);
+ TapiStringConstants.T0_FULL_MULTILAYER, nodeName, onepName);
ListenableFuture<RpcResult<GetNodeEdgePointDetailsOutput>> result2
= tapiTopoImpl.getNodeEdgePointDetails(input2);
result.addListener(new Runnable() {
public void getLinkDetailsWhenSuccessful()
throws ExecutionException, InterruptedException {
GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TopologyUtils.T0_FULL_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils);
+ TapiStringConstants.T0_FULL_MULTILAYER);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
for (Link link:topology.getLink().values()) {
String linkName = link.getName().values().stream().findFirst().get().getValue();
GetLinkDetailsInput input1 = TapiTopologyDataUtils.buildGetLinkDetailsInput(
- TopologyUtils.T0_FULL_MULTILAYER, linkName);
+ TapiStringConstants.T0_FULL_MULTILAYER, linkName);
ListenableFuture<RpcResult<GetLinkDetailsOutput>> result1 = tapiTopoImpl.getLinkDetails(input1);
result.addListener(new Runnable() {
@Override
public void getSipDetailsWhenSuccessful()
throws ExecutionException, InterruptedException {
GetServiceInterfacePointListInput input = TapiTopologyDataUtils.buildServiceInterfacePointListInput();
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetServiceInterfacePointListOutput>> result = tapiTopoImpl
.getServiceInterfacePointList(input);
result.addListener(new Runnable() {
assertEquals("bad name for the link", linkName, link.getName().get(new NameKey("otn link name")).getValue());
assertEquals("bad uuid for link", linkUuid, link.getUuid());
assertEquals("Available capacity unit should be MBPS",
- CapacityUnit.MBPS, link.getAvailableCapacity().getTotalSize().getUnit());
+ CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit());
String prefix = linkName.split("-")[0];
if ("OTU4".equals(prefix)) {
assertEquals("Available capacity -total size value should be 0",
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.test.DataStoreContext;
import org.opendaylight.transportpce.test.converter.XMLDataObjectConverter;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.Network;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
{'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
'logical-connection-point': 'XPDR1-NETWORK1', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-CLIENT1', 'port-qual': 'xpdr-network',
- 'lcp-hash-val': 'OSvMgUyP+mE=',
+ 'lcp-hash-val': 'OSvMgUyP+mE=', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
response['mapping'])
{'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/2-PLUG-NET',
'logical-connection-point': 'XPDR1-NETWORK2', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-CLIENT3', 'port-qual': 'xpdr-network',
- 'lcp-hash-val': 'OSvMgUyP+mI=',
+ 'lcp-hash-val': 'OSvMgUyP+mI=', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
response['mapping'])
'supporting-circuit-pack-name': '1/0/C1-PLUG-CLIENT',
'logical-connection-point': 'XPDR1-CLIENT1', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-NETWORK1', 'port-qual': 'xpdr-client',
- 'lcp-hash-val': 'AO9UFkY/TLYw',
+ 'lcp-hash-val': 'AO9UFkY/TLYw', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
response['mapping'])
'supporting-circuit-pack-name': '1/0/C2-PLUG-CLIENT',
'logical-connection-point': 'XPDR1-CLIENT2', 'port-direction': 'bidirectional',
'port-qual': 'xpdr-client',
- 'lcp-hash-val': 'AO9UFkY/TLYz',
+ 'lcp-hash-val': 'AO9UFkY/TLYz', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
response['mapping'])
response = test_utils_rfc8040.portmapping_request("XPDRA01", "XPDR1-CLIENT3")
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertIn(
- {'supporting-port': 'C3',
+ {'supporting-port': 'C3', 'xponder-type': 'tpdr',
'supporting-circuit-pack-name': '1/0/C3-PLUG-CLIENT',
'logical-connection-point': 'XPDR1-CLIENT3',
'connection-map-lcp': 'XPDR1-NETWORK2', 'port-direction': 'bidirectional',
response = test_utils_rfc8040.portmapping_request("XPDRA01", "XPDR1-CLIENT4")
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertIn(
- {'supporting-port': 'C4',
+ {'supporting-port': 'C4', 'xponder-type': 'tpdr',
'supporting-circuit-pack-name': '1/0/C4-PLUG-CLIENT',
'logical-connection-point': 'XPDR1-CLIENT4', 'port-direction': 'bidirectional',
'port-qual': 'xpdr-client', 'lcp-hash-val': 'AO9UFkY/TLY1',
{'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
'logical-connection-point': 'XPDR1-NETWORK1', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-CLIENT1', 'port-qual': 'xpdr-network',
- 'lcp-hash-val': 'OSvMgUyP+mE=',
+ 'lcp-hash-val': 'OSvMgUyP+mE=', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
res['nodes'][0]['mapping'])
self.assertIn(
'supporting-circuit-pack-name': '1/0/C1-PLUG-CLIENT',
'logical-connection-point': 'XPDR1-CLIENT1', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-NETWORK1', 'port-qual': 'xpdr-client',
- 'lcp-hash-val': 'AO9UFkY/TLYw',
+ 'lcp-hash-val': 'AO9UFkY/TLYw', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
res['nodes'][0]['mapping'])
'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
'logical-connection-point': 'XPDR1-NETWORK1', 'port-qual': 'xpdr-network',
'port-direction': 'bidirectional', 'connection-map-lcp': 'XPDR1-CLIENT1',
- 'lcp-hash-val': 'AMkDwQ7xTmRI',
+ 'lcp-hash-val': 'AMkDwQ7xTmRI', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
response['mapping'])
'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/2-PLUG-NET',
'logical-connection-point': 'XPDR1-NETWORK2', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-CLIENT2', 'port-qual': 'xpdr-network',
- 'lcp-hash-val': 'AMkDwQ7xTmRL',
+ 'lcp-hash-val': 'AMkDwQ7xTmRL', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
response['mapping'])
'supporting-circuit-pack-name': '1/0/1-PLUG-CLIENT',
'logical-connection-point': 'XPDR1-CLIENT1', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-NETWORK1', 'port-qual': 'xpdr-client',
- 'lcp-hash-val': 'AJUUr6I5fALj',
+ 'lcp-hash-val': 'AJUUr6I5fALj', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
response['mapping'])
'supporting-circuit-pack-name': '1/0/2-PLUG-CLIENT',
'logical-connection-point': 'XPDR1-CLIENT2', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-NETWORK2', 'port-qual': 'xpdr-client',
- 'lcp-hash-val': 'AJUUr6I5fALg',
+ 'lcp-hash-val': 'AJUUr6I5fALg', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
response['mapping'])
'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
'logical-connection-point': 'XPDR1-NETWORK1', 'port-qual': 'xpdr-network',
'port-direction': 'bidirectional', 'connection-map-lcp': 'XPDR1-CLIENT1',
- 'lcp-hash-val': 'AMkDwQ7xTmRI',
+ 'lcp-hash-val': 'AMkDwQ7xTmRI', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
res['nodes'][0]['mapping'])
self.assertIn(
'supporting-circuit-pack-name': '1/0/1-PLUG-CLIENT',
'logical-connection-point': 'XPDR1-CLIENT1', 'port-direction': 'bidirectional',
'connection-map-lcp': 'XPDR1-NETWORK1', 'port-qual': 'xpdr-client',
- 'lcp-hash-val': 'AJUUr6I5fALj',
+ 'lcp-hash-val': 'AJUUr6I5fALj', 'xponder-type': 'tpdr',
'port-admin-state': 'InService', 'port-oper-state': 'InService'},
res['nodes'][0]['mapping'])
}, **res['interface'][0]),
res['interface'][0]
)
- input_dict_2 = {'tx-sapi': 'AMkDwQ7xTmRI',
- 'expected-dapi': 'AMkDwQ7xTmRI',
- 'rate': 'org-openroadm-otn-common-types:OTU4',
+ input_dict_2 = {'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'}
self.assertDictEqual(input_dict_2,
res['interface'][0]['org-openroadm-otn-otu-interfaces:otu'])
def test_13_service_path_create_xpdr_check(self):
- response = test_utils.check_netconf_node_request("XPDR-A1", "interface/XPDR1-NETWORK1-ODU")
+ response = test_utils.check_netconf_node_request("XPDR-A1", "interface/XPDR1-NETWORK1-ODU4")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
# the 2 following statements replace self.assertDictContainsSubset deprecated in python 3.2
self.assertDictEqual(
dict({
- 'name': 'XPDR1-NETWORK1-ODU',
+ 'name': 'XPDR1-NETWORK1-ODU4',
'administrative-state': 'inService',
'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
'type': 'org-openroadm-interfaces:otnOdu',
response = test_utils.portmapping_request("SPDR-SA1/mapping/XPDR1-NETWORK1")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
+ self.NETWORK1_CHECK_DICT["supporting-otu4"] = "XPDR1-NETWORK1-OTU"
self.assertIn(
self.NETWORK1_CHECK_DICT,
res['mapping'])
'supporting-port': 'CP1-CFP0-P1'
}
- input_dict_2 = {'tx-dapi': 'Swfw02qXGyI=',
- 'expected-sapi': 'Swfw02qXGyI=',
- 'tx-sapi': 'Swfw02qXGyI=',
- 'expected-dapi': 'Swfw02qXGyI=',
- 'rate': 'org-openroadm-otn-common-types:OTU4',
+ input_dict_2 = {'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.NETWORK1_CHECK_DICT["supporting-odu4"] = "XPDR1-NETWORK1-ODU4"
+ self.NETWORK1_CHECK_DICT["supporting-otu4"] = "XPDR1-NETWORK1-OTU"
self.assertIn(
self.NETWORK1_CHECK_DICT,
res['mapping'])
'type': 'org-openroadm-interfaces:otnOdu',
'supporting-port': 'CP1-CFP0-P1'}
input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
- 'rate': 'org-openroadm-otn-common-types:ODU4',
- 'expected-dapi': 'Swfw02qXGyI=',
- 'expected-sapi': 'Swfw02qXGyI=',
- 'tx-dapi': 'Swfw02qXGyI=',
- 'tx-sapi': 'Swfw02qXGyI='}
+ 'rate': 'org-openroadm-otn-common-types:ODU4'}
self.assertDictEqual(dict(res['interface'][0], **input_dict_1),
res['interface'][0])
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'CP1-CFP0-P1'
}
- input_dict_2 = {'tx-dapi': 'fuYZwEO660g=',
- 'expected-sapi': 'fuYZwEO660g=',
- 'tx-sapi': 'Swfw02qXGyI=',
- 'expected-dapi': 'Swfw02qXGyI=',
+ input_dict_2 = {'tx-dapi': 'AMf1n5hK6Xkk',
+ 'expected-sapi': 'AMf1n5hK6Xkk',
+ 'tx-sapi': 'H/OelLynehI=',
+ 'expected-dapi': 'H/OelLynehI=',
'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'CP1-CFP0-P1'
}
- input_dict_2 = {'tx-dapi': 'Swfw02qXGyI=',
- 'expected-sapi': 'Swfw02qXGyI=',
- 'tx-sapi': 'fuYZwEO660g=',
- 'expected-dapi': 'fuYZwEO660g=',
+ input_dict_2 = {'tx-dapi': 'H/OelLynehI=',
+ 'expected-sapi': 'H/OelLynehI=',
+ 'tx-sapi': 'AMf1n5hK6Xkk',
+ 'expected-dapi': 'AMf1n5hK6Xkk',
'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
# SAPI/DAPI are added in the Otu4 renderer
input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
'rate': 'org-openroadm-otn-common-types:ODU4',
- 'expected-dapi': 'Swfw02qXGyI=',
- 'expected-sapi': 'fuYZwEO660g=',
- 'tx-dapi': 'fuYZwEO660g=',
- 'tx-sapi': 'Swfw02qXGyI='}
+ 'expected-dapi': 'H/OelLynehI=',
+ 'expected-sapi': 'AMf1n5hK6Xkk',
+ 'tx-dapi': 'AMf1n5hK6Xkk',
+ 'tx-sapi': 'H/OelLynehI='}
self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
res['interface'][0])
# SAPI/DAPI are added in the Otu4 renderer
input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
'rate': 'org-openroadm-otn-common-types:ODU4',
- 'tx-sapi': 'fuYZwEO660g=',
- 'tx-dapi': 'Swfw02qXGyI=',
- 'expected-sapi': 'Swfw02qXGyI=',
- 'expected-dapi': 'fuYZwEO660g='
+ 'tx-sapi': 'AMf1n5hK6Xkk',
+ 'tx-dapi': 'H/OelLynehI=',
+ 'expected-sapi': 'H/OelLynehI=',
+ 'expected-dapi': 'AMf1n5hK6Xkk'
}
self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
res['interface'][0])
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'CP1-CFP0-P1'
}
- input_dict_2 = {'tx-sapi': 'Swfw02qXGyI=',
- 'expected-dapi': 'Swfw02qXGyI=',
+ input_dict_2 = {'tx-sapi': 'H/OelLynehI=',
+ 'expected-dapi': 'H/OelLynehI=',
+ 'tx-dapi': 'AMf1n5hK6Xkk',
+ 'expected-sapi': 'AMf1n5hK6Xkk',
'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'CP1-CFP0-P1'
}
- input_dict_2 = {'tx-dapi': 'Swfw02qXGyI=',
- 'expected-sapi': 'Swfw02qXGyI=',
- 'tx-sapi': 'fuYZwEO660g=',
- 'expected-dapi': 'fuYZwEO660g=',
+ input_dict_2 = {'tx-dapi': 'H/OelLynehI=',
+ 'expected-sapi': 'H/OelLynehI=',
+ 'tx-sapi': 'AMf1n5hK6Xkk',
+ 'expected-dapi': 'AMf1n5hK6Xkk',
'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
'supporting-circuit-pack-name': 'CP1-CFP0',
'supporting-interface': 'XPDR1-NETWORK1-OTU',
'type': 'org-openroadm-interfaces:otnOdu',
- 'supporting-port': 'CP1-CFP0-P1'}
+ 'supporting-port': 'CP1-CFP0-P1',
+ 'circuit-id': 'TBD',
+ 'description': 'TBD'}
# SAPI/DAPI are added in the Otu4 renderer
input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
'rate': 'org-openroadm-otn-common-types:ODU4',
- 'expected-dapi': 'Swfw02qXGyI=',
- 'expected-sapi': 'fuYZwEO660g=',
- 'tx-dapi': 'fuYZwEO660g=',
- 'tx-sapi': 'Swfw02qXGyI='}
+ 'monitoring-mode': 'terminated',
+ 'expected-dapi': 'H/OelLynehI=',
+ 'expected-sapi': 'AMf1n5hK6Xkk',
+ 'tx-dapi': 'AMf1n5hK6Xkk',
+ 'tx-sapi': 'H/OelLynehI='}
self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
res['interface'][0])
'supporting-circuit-pack-name': 'CP1-CFP0',
'supporting-interface': 'XPDR1-NETWORK1-OTU',
'type': 'org-openroadm-interfaces:otnOdu',
- 'supporting-port': 'CP1-CFP0-P1'}
+ 'supporting-port': 'CP1-CFP0-P1',
+ 'circuit-id': 'TBD',
+ 'description': 'TBD'}
# SAPI/DAPI are added in the Otu4 renderer
input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
'rate': 'org-openroadm-otn-common-types:ODU4',
- 'tx-sapi': 'fuYZwEO660g=',
- 'tx-dapi': 'Swfw02qXGyI=',
- 'expected-sapi': 'Swfw02qXGyI=',
- 'expected-dapi': 'fuYZwEO660g='
+ 'monitoring-mode': 'terminated',
+ 'tx-sapi': 'AMf1n5hK6Xkk',
+ 'tx-dapi': 'H/OelLynehI=',
+ 'expected-sapi': 'H/OelLynehI=',
+ 'expected-dapi': 'AMf1n5hK6Xkk'
}
self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
res['interface'][0])
time.sleep(5)
def test_01_connect_spdrA(self):
- response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
+ print("Connecting SPDRA")
+ response = test_utils.mount_tapi_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
def test_02_connect_spdrC(self):
- response = test_utils.mount_device("SPDR-SC1", ('spdrc', self.NODE_VERSION))
+ print("Connecting SPDRC")
+ response = test_utils.mount_tapi_device("SPDR-SC1", ('spdrc', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
def test_03_connect_rdmA(self):
- response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION))
+ print("Connecting ROADMA")
+ response = test_utils.mount_tapi_device("ROADM-A1", ('roadma', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+ time.sleep(2)
def test_04_connect_rdmC(self):
- response = test_utils.mount_device("ROADM-C1", ('roadmc', self.NODE_VERSION))
+ print("Connecting ROADMC")
+ response = test_utils.mount_tapi_device("ROADM-C1", ('roadmc', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
res["output"]["result"])
time.sleep(2)
- def test_07_connect_sprdC_1_N1_to_roadmC_PP1(self):
+ def test_07_connect_roadmA_PP1_to_spdrA_1_N1_tapi(self):
+ response = test_utils.connect_xpdr_to_rdm_tapi_request("SPDR-SA1-XPDR1", "XPDR1-NETWORK1",
+ "ROADM-A1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Link created in tapi topology',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_08_connect_sprdC_1_N1_to_roadmC_PP1(self):
response = test_utils.connect_xpdr_to_rdm_request("SPDR-SC1", "1", "1",
"ROADM-C1", "1", "SRG1-PP1-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_08_connect_roadmC_PP1_to_spdrC_1_N1(self):
+ def test_09_connect_roadmC_PP1_to_spdrC_1_N1(self):
response = test_utils.connect_rdm_to_xpdr_request("SPDR-SC1", "1", "1",
"ROADM-C1", "1", "SRG1-PP1-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_09_add_omsAttributes_ROADMA_ROADMC(self):
+ def test_10_connect_roadmC_PP1_to_spdrC_1_N1_tapi(self):
+ response = test_utils.connect_xpdr_to_rdm_tapi_request("SPDR-SC1-XPDR1", "XPDR1-NETWORK1",
+ "ROADM-C1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Link created in tapi topology',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_11_add_omsAttributes_ROADMA_ROADMC(self):
# Config ROADMA-ROADMC oms-attributes
data = {"span": {
"auto-spanloss": "true",
self.assertEqual(response.status_code, requests.codes.created)
time.sleep(2)
- def test_10_add_omsAttributes_ROADMC_ROADMA(self):
+ def test_12_add_omsAttributes_ROADMC_ROADMA(self):
# Config ROADMC-ROADMA oms-attributes
data = {"span": {
"auto-spanloss": "true",
self.assertEqual(response.status_code, requests.codes.created)
time.sleep(2)
- def test_11_check_otn_topology(self):
+ def test_13_check_otn_topology(self):
response = test_utils.get_otn_topo_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertNotIn('ietf-network-topology:link', res['network'][0])
time.sleep(2)
- def test_12_check_openroadm_topology(self):
+ def test_14_check_openroadm_topology(self):
response = test_utils.get_ordm_topo_request("")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(nbLink, 22, 'There should be 22 openroadm links')
time.sleep(2)
- def test_13_get_tapi_topology_details(self):
+ def test_15_get_tapi_topology_details(self):
response = test_utils.tapi_get_topology_details_request(
"T0 - Full Multi-layer topology")
time.sleep(2)
nbNode = len(res['output']['topology']['node'])
nbLink = len(res['output']['topology']['link'])
self.assertEqual(nbNode, 14, 'There should be 14 TAPI nodes')
- self.assertEqual(nbLink, 13, 'There should be 13 TAPI links')
+ self.assertEqual(nbLink, 15, 'There should be 15 TAPI links')
time.sleep(2)
- def test_14_check_sip_details(self):
+ def test_16_check_sip_details(self):
response = test_utils.tapi_get_sip_details_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
time.sleep(2)
# test create connectivity service from spdrA to spdrC for Photonic_media
- def test_15_create_connectivity_service_PhotonicMedia(self):
+ def test_17_create_connectivity_service_PhotonicMedia(self):
response = test_utils.tapi_create_connectivity_request(self.cr_serv_sample_data)
time.sleep(self.WAITING)
self.assertEqual(response.status_code, requests.codes.ok)
res['output']['service']['end-point'][0]['name'][0])
self.assertDictEqual(dict(input_dict_3, **res['output']['service']['end-point'][1]['name'][0]),
res['output']['service']['end-point'][1]['name'][0])
+ # If the gate fails is because of the waiting time not being enough
time.sleep(self.WAITING)
- def test_16_get_service_PhotonicMedia(self):
+ def test_18_get_service_PhotonicMedia(self):
response = test_utils.get_service_list_request(
"services/" + str(self.uuid_services.pm))
self.assertEqual(response.status_code, requests.codes.ok)
time.sleep(2)
# test create connectivity service from spdrA to spdrC for odu
- def test_17_create_connectivity_service_ODU(self):
+ def test_19_create_connectivity_service_ODU(self):
# pylint: disable=line-too-long
self.cr_serv_sample_data["input"]["end-point"][0]["layer-protocol-name"] = "ODU"
- self.cr_serv_sample_data["input"]["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = "eecbfa6e-57ab-3651-9606-c22c8ce73f18"
+ self.cr_serv_sample_data["input"]["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = "5efda776-f8de-3e0b-9bbd-2c702e210946"
self.cr_serv_sample_data["input"]["end-point"][1]["layer-protocol-name"] = "ODU"
- self.cr_serv_sample_data["input"]["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = "31f83b1f-29b2-3a8e-af9b-6423dbc5aa22"
+ self.cr_serv_sample_data["input"]["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = "8116d0af-39fa-3df5-bed2-dd2cd5e8217d"
self.cr_serv_sample_data["input"]["connectivity-constraint"]["service-layer"] = "ODU"
response = test_utils.tapi_create_connectivity_request(self.cr_serv_sample_data)
res['output']['service']['end-point'][0]['name'][0])
self.assertDictEqual(dict(input_dict_3, **res['output']['service']['end-point'][1]['name'][0]),
res['output']['service']['end-point'][1]['name'][0])
+ # If the gate fails is because of the waiting time not being enough
time.sleep(self.WAITING)
- def test_18_get_service_ODU(self):
+ def test_20_get_service_ODU(self):
response = test_utils.get_service_list_request(
"services/" + str(self.uuid_services.odu))
self.assertEqual(response.status_code, requests.codes.ok)
time.sleep(2)
# test create connectivity service from spdrA to spdrC for dsr
- def test_19_create_connectivity_service_DSR(self):
+ def test_21_create_connectivity_service_DSR(self):
# pylint: disable=line-too-long
self.cr_serv_sample_data["input"]["end-point"][0]["layer-protocol-name"] = "DSR"
self.cr_serv_sample_data["input"]["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = "c14797a0-adcc-3875-a1fe-df8949d1a2d7"
self.assertDictEqual(dict(input_dict_3,
**res['output']['service']['end-point'][1]['name'][0]),
res['output']['service']['end-point'][1]['name'][0])
+ # The sleep here is okey as the DSR service creation is very fast
time.sleep(self.WAITING)
- def test_20_get_service_DSR(self):
+ def test_22_get_service_DSR(self):
response = test_utils.get_service_list_request(
"services/" + str(self.uuid_services.dsr))
self.assertEqual(response.status_code, requests.codes.ok)
res['services'][0]['lifecycle-state'], 'planned')
time.sleep(2)
- def test_21_get_connectivity_service_list(self):
+ def test_23_get_connectivity_service_list(self):
response = test_utils.tapi_get_service_list_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(ele['operational-state'], 'ENABLED')
self.assertEqual(ele['service-layer'], 'ODU')
nbconnection = len(ele['connection'])
- self.assertEqual(nbconnection, 3, 'There should be 3 connections')
+ self.assertEqual(nbconnection, 1, 'There should be 3 connections')
elif ele['uuid'] == self.uuid_services.dsr:
self.assertEqual(ele['operational-state'], 'ENABLED')
self.assertEqual(ele['service-layer'], 'DSR')
nbconnection = len(ele['connection'])
- self.assertEqual(nbconnection, 1, 'There should be 1 connection')
+ self.assertEqual(nbconnection, 4, 'There should be 4 connections')
else:
self.fail("get connectivity service failed")
time.sleep(2)
- def test_22_delete_connectivity_service_DSR(self):
+ def test_24_delete_connectivity_service_DSR(self):
response = test_utils.tapi_delete_connectivity_request(self.uuid_services.dsr)
self.assertEqual(response.status_code, requests.codes.no_content)
time.sleep(self.WAITING)
- def test_23_delete_connectivity_service_ODU(self):
+ def test_25_delete_connectivity_service_ODU(self):
response = test_utils.tapi_delete_connectivity_request(self.uuid_services.odu)
self.assertEqual(response.status_code, requests.codes.no_content)
time.sleep(self.WAITING)
- def test_24_delete_connectivity_service_PhotonicMedia(self):
+ def test_26_delete_connectivity_service_PhotonicMedia(self):
response = test_utils.tapi_delete_connectivity_request(self.uuid_services.pm)
self.assertEqual(response.status_code, requests.codes.no_content)
time.sleep(self.WAITING)
- def test_25_get_no_tapi_services(self):
+ def test_27_get_no_tapi_services(self):
response = test_utils.tapi_get_service_list_request()
res = response.json()
self.assertIn(
res['errors']['error'])
time.sleep(2)
- def test_26_get_no_openroadm_services(self):
+ def test_28_get_no_openroadm_services(self):
response = test_utils.get_service_list_request("")
self.assertEqual(response.status_code, requests.codes.conflict)
res = response.json()
res['errors']['error'])
time.sleep(2)
- def test_27_disconnect_spdrA(self):
+ def test_29_disconnect_spdrA(self):
response = test_utils.unmount_device("SPDR-SA1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
- def test_28_disconnect_spdrC(self):
+ def test_30_disconnect_spdrC(self):
response = test_utils.unmount_device("SPDR-SC1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
- def test_29_disconnect_roadmA(self):
+ def test_31_disconnect_roadmA(self):
response = test_utils.unmount_device("ROADM-A1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
- def test_30_disconnect_roadmC(self):
+ def test_32_disconnect_roadmC(self):
response = test_utils.unmount_device("ROADM-C1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
- def test_01_connect_spdrA(self):
+ def test_001_connect_spdrA(self):
response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
- def test_02_connect_spdrB(self):
+ def test_002_connect_spdrB(self):
response = test_utils.mount_device("SPDR-SB1", ('spdrb', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
- def test_03_connect_spdrC(self):
+ def test_003_connect_spdrC(self):
response = test_utils.mount_device("SPDR-SC1", ('spdrc', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
- def test_04_connect_rdmA(self):
+ def test_004_connect_rdmA(self):
response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
- def test_05_connect_rdmB(self):
+ def test_005_connect_rdmB(self):
response = test_utils.mount_device("ROADM-B1", ('roadmb', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
- def test_06_connect_rdmC(self):
+ def test_006_connect_rdmC(self):
response = test_utils.mount_device("ROADM-C1", ('roadmc', self.NODE_VERSION))
self.assertEqual(response.status_code,
requests.codes.created, test_utils.CODE_SHOULD_BE_201)
- def test_07_connect_sprdA_2_N1_to_roadmA_PP3(self):
+ def test_007_connect_sprdA_2_N1_to_roadmA_PP3(self):
response = test_utils.connect_xpdr_to_rdm_request("SPDR-SA1", "2", "1",
"ROADM-A1", "1", "SRG1-PP3-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_08_connect_roadmA_PP3_to_spdrA_2_N1(self):
+ def test_008_connect_roadmA_PP3_to_spdrA_2_N1(self):
response = test_utils.connect_rdm_to_xpdr_request("SPDR-SA1", "2", "1",
"ROADM-A1", "1", "SRG1-PP3-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_09_connect_sprdC_2_N1_to_roadmC_PP3(self):
+ def test_009_connect_sprdC_2_N1_to_roadmC_PP3(self):
response = test_utils.connect_xpdr_to_rdm_request("SPDR-SC1", "2", "1",
"ROADM-C1", "1", "SRG1-PP3-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_10_connect_roadmC_PP3_to_spdrC_2_N1(self):
+ def test_010_connect_roadmC_PP3_to_spdrC_2_N1(self):
response = test_utils.connect_rdm_to_xpdr_request("SPDR-SC1", "2", "1",
"ROADM-C1", "1", "SRG1-PP3-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_11_connect_sprdB_2_N1_to_roadmB_PP1(self):
+ def test_011_connect_sprdB_2_N1_to_roadmB_PP1(self):
response = test_utils.connect_xpdr_to_rdm_request("SPDR-SB1", "2", "1",
"ROADM-B1", "1", "SRG1-PP1-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_12_connect_roadmB_PP1_to_spdrB_2_N1(self):
+ def test_012_connect_roadmB_PP1_to_spdrB_2_N1(self):
response = test_utils.connect_rdm_to_xpdr_request("SPDR-SB1", "2", "1",
"ROADM-B1", "1", "SRG1-PP1-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_13_connect_sprdB_2_N2_to_roadmB_PP2(self):
+ def test_013_connect_sprdB_2_N2_to_roadmB_PP2(self):
response = test_utils.connect_xpdr_to_rdm_request("SPDR-SB1", "2", "2",
"ROADM-B1", "1", "SRG1-PP2-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_14_connect_roadmB_PP2_to_spdrB_2_N2(self):
+ def test_014_connect_roadmB_PP2_to_spdrB_2_N2(self):
response = test_utils.connect_rdm_to_xpdr_request("SPDR-SB1", "2", "2",
"ROADM-B1", "1", "SRG1-PP2-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_15_add_omsAttributes_ROADMA_ROADMB(self):
+ def test_015_add_omsAttributes_ROADMA_ROADMB(self):
# Config ROADMA-ROADMB oms-attributes
data = {"span": {
"auto-spanloss": "true",
"ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX", data)
self.assertEqual(response.status_code, requests.codes.created)
- def test_16_add_omsAttributes_ROADMB_ROADMA(self):
+ def test_016_add_omsAttributes_ROADMB_ROADMA(self):
# Config ROADMB-ROADMA oms-attributes
data = {"span": {
"auto-spanloss": "true",
"ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX", data)
self.assertEqual(response.status_code, requests.codes.created)
- def test_17_add_omsAttributes_ROADMB_ROADMC(self):
+ def test_017_add_omsAttributes_ROADMB_ROADMC(self):
# Config ROADMB-ROADMC oms-attributes
data = {"span": {
"auto-spanloss": "true",
"ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX", data)
self.assertEqual(response.status_code, requests.codes.created)
- def test_18_add_omsAttributes_ROADMC_ROADMB(self):
+ def test_018_add_omsAttributes_ROADMC_ROADMB(self):
# Config ROADMC-ROADMB oms-attributes
data = {"span": {
"auto-spanloss": "true",
"ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX", data)
self.assertEqual(response.status_code, requests.codes.created)
- def test_19_create_OTS_ROADMA_DEG1(self):
+ def test_019_create_OTS_ROADMA_DEG1(self):
response = test_utils.create_ots_oms_request("ROADM-A1", "DEG1-TTP-TXRX")
time.sleep(10)
self.assertEqual(response.status_code, requests.codes.ok)
self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADM-A1',
res["output"]["result"])
- def test_20_create_OTS_ROADMB_DEG1(self):
+ def test_020_create_OTS_ROADMB_DEG1(self):
response = test_utils.create_ots_oms_request("ROADM-B1", "DEG1-TTP-TXRX")
time.sleep(10)
self.assertEqual(response.status_code, requests.codes.ok)
self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADM-B1',
res["output"]["result"])
- def test_21_create_OTS_ROADMB_DEG2(self):
+ def test_021_create_OTS_ROADMB_DEG2(self):
response = test_utils.create_ots_oms_request("ROADM-B1", "DEG2-TTP-TXRX")
time.sleep(10)
self.assertEqual(response.status_code, requests.codes.ok)
self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADM-B1',
res["output"]["result"])
- def test_22_create_OTS_ROADMC_DEG2(self):
+ def test_022_create_OTS_ROADMC_DEG2(self):
response = test_utils.create_ots_oms_request("ROADM-C1", "DEG2-TTP-TXRX")
time.sleep(10)
self.assertEqual(response.status_code, requests.codes.ok)
self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADM-C1',
res["output"]["result"])
- def test_23_calculate_span_loss_base_all(self):
+ def test_023_calculate_span_loss_base_all(self):
url = "{}/operations/transportpce-olm:calculate-spanloss-base"
data = {
"input": {
}, res["output"]["spans"])
time.sleep(5)
- def test_24_check_otn_topology(self):
+ def test_024_check_otn_topology(self):
response = test_utils.get_otn_topo_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
'otn-topology should have no link')
# test service-create for OCH-OTU4 service from spdrA to spdrB
- def test_25_create_OCH_OTU4_service_AB(self):
+ def test_025_create_OCH_OTU4_service_AB(self):
response = test_utils.service_create_request(self.cr_serv_sample_data)
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_26_get_OCH_OTU4_service_AB(self):
+ def test_026_get_OCH_OTU4_service_AB(self):
response = test_utils.get_service_list_request(
"services/service-OCH-OTU4-AB")
self.assertEqual(response.status_code, requests.codes.ok)
time.sleep(2)
# Check correct configuration of devices
- def test_27_check_interface_och_spdra(self):
+ def test_027_check_interface_och_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-NETWORK1-761:768")
self.assertEqual(response.status_code, requests.codes.ok)
'transmit-power': -5, 'modulation-format': 'dp-qpsk'},
res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
- def test_28_check_interface_OTU4_spdra(self):
+ def test_028_check_interface_OTU4_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-NETWORK1-OTU")
self.assertEqual(response.status_code, requests.codes.ok)
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'CP5-CFP-P1'
}
- input_dict_2 = {'tx-sapi': 'exT821pFtOc=',
- 'expected-dapi': 'exT821pFtOc=',
+ input_dict_2 = {'tx-sapi': 'AOQxIv+6nCD+',
+ 'expected-dapi': 'AOQxIv+6nCD+',
+ 'tx-dapi': 'X+8cRNi+HbE=',
+ 'expected-sapi': 'X+8cRNi+HbE=',
'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
self.assertDictEqual(input_dict_2,
res['interface'][0]
['org-openroadm-otn-otu-interfaces:otu'])
-
- def test_29_check_interface_och_spdrB(self):
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK1-OTU/otu")
+ self.assertEqual(response2.status_code, requests.codes.ok)
+ res2 = response2.json()['org-openroadm-otn-otu-interfaces:otu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+ def test_029_check_interface_och_spdrB(self):
response = test_utils.check_netconf_node_request(
"SPDR-SB1", "interface/XPDR2-NETWORK1-761:768")
self.assertEqual(response.status_code, requests.codes.ok)
'transmit-power': -5, 'modulation-format': 'dp-qpsk'},
res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
- def test_30_check_interface_OTU4_spdrB(self):
+ def test_030_check_interface_OTU4_spdrB(self):
response = test_utils.check_netconf_node_request(
"SPDR-SB1", "interface/XPDR2-NETWORK1-OTU")
self.assertEqual(response.status_code, requests.codes.ok)
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'CP5-CFP-P1'
}
- input_dict_2 = {'tx-dapi': 'exT821pFtOc=',
- 'expected-sapi': 'exT821pFtOc=',
- 'tx-sapi': 'HPQZi9Cb3Aw=',
- 'expected-dapi': 'HPQZi9Cb3Aw=',
+ input_dict_2 = {'tx-dapi': 'AOQxIv+6nCD+',
+ 'expected-sapi': 'AOQxIv+6nCD+',
+ 'tx-sapi': 'X+8cRNi+HbE=',
+ 'expected-dapi': 'X+8cRNi+HbE=',
'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
self.assertDictEqual(input_dict_2,
res['interface'][0]
['org-openroadm-otn-otu-interfaces:otu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR2-NETWORK1-OTU/otu")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['org-openroadm-otn-otu-interfaces:otu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
- def test_31_check_no_interface_ODU4_spdra(self):
+ def test_031_check_no_interface_ODU4_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-NETWORK1-ODU4")
self.assertEqual(response.status_code, requests.codes.conflict)
"error-message": "Request could not be completed because the relevant data model content does not exist"},
res['errors']['error'])
- def test_32_check_openroadm_topo_spdra(self):
+ def test_032_check_openroadm_topo_spdra(self):
response = test_utils.get_ordm_topo_request("node/SPDR-SA1-XPDR2")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
ele['org-openroadm-network-topology:xpdr-network-attributes']['tail-equipment-id'])
time.sleep(3)
- def test_33_check_openroadm_topo_ROADMA_SRG(self):
+ def test_033_check_openroadm_topo_ROADMA_SRG(self):
response = test_utils.get_ordm_topo_request("node/ROADM-A1-SRG1")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertNotIn('avail-freq-maps', dict.keys(ele))
time.sleep(3)
- def test_33_check_openroadm_topo_ROADMA_DEG1(self):
+ def test_034_check_openroadm_topo_ROADMA_DEG1(self):
response = test_utils.get_ordm_topo_request("node/ROADM-A1-DEG1")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(freq_map_array[95], 0, "Lambda 1 should not be available")
time.sleep(3)
- def test_34_check_otn_topo_otu4_links(self):
+ def test_035_check_otn_topo_otu4_links(self):
response = test_utils.get_otn_topo_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertIn(
link['org-openroadm-common-network:opposite-link'], listLinkId)
+
# test service-create for OCH-OTU4 service from spdrB to spdrC
- def test_35_create_OCH_OTU4_service_BC(self):
+
+ def test_036_create_OCH_OTU4_service_BC(self):
# pylint: disable=line-too-long
self.cr_serv_sample_data["input"]["service-name"] = "service-OCH-OTU4-BC"
self.cr_serv_sample_data["input"]["service-a-end"]["node-id"] = "SPDR-SB1"
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_36_get_OCH_OTU4_service_BC(self):
+ def test_037_get_OCH_OTU4_service_BC(self):
response = test_utils.get_service_list_request(
"services/service-OCH-OTU4-BC")
self.assertEqual(response.status_code, requests.codes.ok)
time.sleep(2)
# Check correct configuration of devices
- def test_37_check_interface_och_spdrB(self):
+ def test_038_check_interface_och_spdrB(self):
response = test_utils.check_netconf_node_request(
"SPDR-SB1", "interface/XPDR2-NETWORK2-753:760")
self.assertEqual(response.status_code, requests.codes.ok)
'transmit-power': -5, 'modulation-format': 'dp-qpsk'},
res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
- def test_38_check_interface_OTU4_spdrB(self):
+ def test_039_check_interface_OTU4_spdrB(self):
response = test_utils.check_netconf_node_request(
"SPDR-SB1", "interface/XPDR2-NETWORK2-OTU")
self.assertEqual(response.status_code, requests.codes.ok)
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'CP6-CFP-P1'
}
- input_dict_2 = {'tx-sapi': 'HPQZi9Cb3A8=',
- 'expected-dapi': 'HPQZi9Cb3A8=',
+ input_dict_2 = {'tx-sapi': 'X+8cRNi+HbI=',
+ 'expected-dapi': 'X+8cRNi+HbI=',
+ 'tx-dapi': 'ALvne1QI5jo4',
+ 'expected-sapi': 'ALvne1QI5jo4',
'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
self.assertDictEqual(input_dict_2,
res['interface'][0]
['org-openroadm-otn-otu-interfaces:otu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR2-NETWORK1-OTU/otu")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['org-openroadm-otn-otu-interfaces:otu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
- def test_39_check_interface_och_spdrC(self):
+ def test_040_check_interface_och_spdrC(self):
response = test_utils.check_netconf_node_request(
"SPDR-SC1", "interface/XPDR2-NETWORK1-753:760")
self.assertEqual(response.status_code, requests.codes.ok)
'transmit-power': -5, 'modulation-format': 'dp-qpsk'},
res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
- def test_40_check_interface_OTU4_spdrC(self):
+ def test_041_check_interface_OTU4_spdrC(self):
response = test_utils.check_netconf_node_request(
"SPDR-SC1", "interface/XPDR2-NETWORK1-OTU")
self.assertEqual(response.status_code, requests.codes.ok)
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'CP5-CFP-P1'
}
- input_dict_2 = {'tx-dapi': 'HPQZi9Cb3A8=',
- 'expected-sapi': 'HPQZi9Cb3A8=',
- 'tx-sapi': 'ALx70DYYfGTx',
- 'expected-dapi': 'ALx70DYYfGTx',
+ input_dict_2 = {'tx-dapi': 'X+8cRNi+HbI=',
+ 'expected-sapi': 'X+8cRNi+HbI=',
+ 'tx-sapi': 'ALvne1QI5jo4',
+ 'expected-dapi': 'ALvne1QI5jo4',
'rate': 'org-openroadm-otn-common-types:OTU4',
'fec': 'scfec'
}
self.assertDictEqual(input_dict_2,
res['interface'][0]
['org-openroadm-otn-otu-interfaces:otu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK2-OTU/otu")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['org-openroadm-otn-otu-interfaces:otu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
- def test_41_check_no_interface_ODU4_spdrB(self):
+ def test_042_check_no_interface_ODU4_spdrB(self):
response = test_utils.check_netconf_node_request(
"SPDR-SB1", "interface/XPDR2-NETWORK1-ODU4")
self.assertEqual(response.status_code, requests.codes.conflict)
"error-message": "Request could not be completed because the relevant data model content does not exist"},
res['errors']['error'])
- def test_42_check_openroadm_topo_spdrB(self):
+ def test_043_check_openroadm_topo_spdrB(self):
response = test_utils.get_ordm_topo_request("node/SPDR-SB1-XPDR2")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertNotIn('org-openroadm-network-topology:xpdr-network-attributes', dict.keys(ele))
time.sleep(3)
- def test_43_check_openroadm_topo_ROADMB_SRG1(self):
+ def test_044_check_openroadm_topo_ROADMB_SRG1(self):
response = test_utils.get_ordm_topo_request("node/ROADM-B1-SRG1")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertNotIn('avail-freq-maps', dict.keys(ele))
time.sleep(3)
- def test_44_check_openroadm_topo_ROADMB_DEG2(self):
+ def test_045_check_openroadm_topo_ROADMB_DEG2(self):
response = test_utils.get_ordm_topo_request("node/ROADM-B1-DEG2")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(freq_map_array[94], 0, "Lambda 1 should not be available")
time.sleep(3)
- def test_45_check_otn_topo_otu4_links(self):
+ def test_046_check_otn_topo_otu4_links(self):
response = test_utils.get_otn_topo_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
link['org-openroadm-common-network:opposite-link'], listLinkId)
# test service-create for 100GE service from spdrA to spdrC via spdrB
- def test_46_create_100GE_service_ABC(self):
+ def test_047_create_100GE_service_ABC(self):
# pylint: disable=line-too-long
self.cr_serv_sample_data["input"]["service-name"] = "service-100GE-ABC"
self.cr_serv_sample_data["input"]["connection-type"] = "service"
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_47_get_100GE_service_ABC(self):
+ def test_048_get_100GE_service_ABC(self):
response = test_utils.get_service_list_request(
"services/service-100GE-ABC")
self.assertEqual(response.status_code, requests.codes.ok)
res['services'][0]['lifecycle-state'], 'planned')
time.sleep(2)
- def test_48_check_interface_100GE_CLIENT_spdra(self):
+ def test_049_check_interface_100GE_CLIENT_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-CLIENT1-ETHERNET")
self.assertEqual(response.status_code, requests.codes.ok)
'fec': 'off'},
res['interface'][0]['org-openroadm-ethernet-interfaces:ethernet'])
- def test_49_check_interface_ODU4_CLIENT_spdra(self):
+ def test_050_check_interface_ODU4_CLIENT_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-CLIENT1-ODU4")
self.assertEqual(response.status_code, requests.codes.ok)
input_dict_2 = {
'odu-function': 'org-openroadm-otn-common-types:ODU-TTP-CTP',
'rate': 'org-openroadm-otn-common-types:ODU4',
- 'monitoring-mode': 'terminated'}
+ 'monitoring-mode': 'terminated',
+ 'expected-dapi': 'AItaZ6nmyaKJ',
+ 'expected-sapi': 'AKFnJJaijWiz',
+ 'tx-dapi': 'AKFnJJaijWiz',
+ 'tx-sapi': 'AItaZ6nmyaKJ'}
self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
res['interface'][0])
**res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
self.assertDictEqual(
- {'payload-type': '07', 'exp-payload-type': '07'},
+ {'payload-type': '21', 'exp-payload-type': '21'},
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR2-CLIENT1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
- def test_50_check_interface_ODU4_NETWORK_spdra(self):
+ def test_051_check_interface_ODU4_NETWORK_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-NETWORK1-ODU4")
self.assertEqual(response.status_code, requests.codes.ok)
'administrative-state': 'inService',
'supporting-circuit-pack-name': 'CP5-CFP',
'type': 'org-openroadm-interfaces:otnOdu',
- 'supporting-port': 'CP5-CFP-P1'}
+ 'supporting-port': 'CP5-CFP-P1',
+ 'circuit-id': 'TBD',
+ 'description': 'TBD'}
input_dict_2 = {
'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
'rate': 'org-openroadm-otn-common-types:ODU4',
self.assertDictEqual(dict(input_dict_2,
**res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
- self.assertDictEqual(
- {'payload-type': '07', 'exp-payload-type': '07'},
- res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ self.assertNotIn('opu',
+ dict.keys(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']))
- def test_51_check_ODU4_connection_spdra(self):
+ def test_052_check_ODU4_connection_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1",
"odu-connection/XPDR2-CLIENT1-ODU4-x-XPDR2-NETWORK1-ODU4")
self.assertDictEqual({'src-if': 'XPDR2-CLIENT1-ODU4'},
res['odu-connection'][0]['source'])
- def test_52_check_interface_100GE_CLIENT_spdrc(self):
+ def test_053_check_interface_100GE_CLIENT_spdrc(self):
response = test_utils.check_netconf_node_request(
"SPDR-SC1", "interface/XPDR2-CLIENT1-ETHERNET")
self.assertEqual(response.status_code, requests.codes.ok)
'fec': 'off'},
res['interface'][0]['org-openroadm-ethernet-interfaces:ethernet'])
- def test_53_check_interface_ODU4_CLIENT_spdrc(self):
+ def test_054_check_interface_ODU4_CLIENT_spdrc(self):
response = test_utils.check_netconf_node_request(
"SPDR-SC1", "interface/XPDR2-CLIENT1-ODU4")
self.assertEqual(response.status_code, requests.codes.ok)
'supporting-circuit-pack-name': 'CP2-QSFP1',
'supporting-interface': 'XPDR2-CLIENT1-ETHERNET',
'type': 'org-openroadm-interfaces:otnOdu',
- 'supporting-port': 'CP2-QSFP1-P1'}
+ 'supporting-port': 'CP2-QSFP1-P1',
+ 'circuit-id': 'TBD',
+ 'description': 'TBD'}
input_dict_2 = {
- 'odu-function': 'org-openroadm-otn-common-types:ODU-TTP-CTP',
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
'rate': 'org-openroadm-otn-common-types:ODU4',
- 'monitoring-mode': 'terminated'}
+ 'monitoring-mode': 'terminated',
+ 'expected-dapi': 'AKFnJJaijWiz',
+ 'expected-sapi': 'AItaZ6nmyaKJ',
+ 'tx-dapi': 'AItaZ6nmyaKJ',
+ 'tx-sapi': 'AKFnJJaijWiz'}
self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
res['interface'][0])
**res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
self.assertDictEqual(
- {'payload-type': '07', 'exp-payload-type': '07'},
+ {'payload-type': '21', 'exp-payload-type': '21'},
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR2-CLIENT1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
- def test_54_check_interface_ODU4_NETWORK_spdrc(self):
+ def test_055_check_interface_ODU4_NETWORK_spdrc(self):
response = test_utils.check_netconf_node_request(
"SPDR-SC1", "interface/XPDR2-NETWORK1-ODU4")
self.assertEqual(response.status_code, requests.codes.ok)
'administrative-state': 'inService',
'supporting-circuit-pack-name': 'CP5-CFP',
'type': 'org-openroadm-interfaces:otnOdu',
- 'supporting-port': 'CP5-CFP-P1'}
+ 'supporting-port': 'CP5-CFP-P1',
+ 'circuit-id': 'TBD',
+ 'description': 'TBD'}
input_dict_2 = {
'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
'rate': 'org-openroadm-otn-common-types:ODU4',
self.assertDictEqual(dict(input_dict_2,
**res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
- self.assertDictEqual(
- {'payload-type': '07', 'exp-payload-type': '07'},
- res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ self.assertNotIn('opu',
+ dict.keys(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']))
- def test_55_check_ODU4_connection_spdrc(self):
+ def test_056_check_ODU4_connection_spdrc(self):
response = test_utils.check_netconf_node_request(
"SPDR-SC1",
"odu-connection/XPDR2-CLIENT1-ODU4-x-XPDR2-NETWORK1-ODU4")
self.assertDictEqual({'src-if': 'XPDR2-CLIENT1-ODU4'},
res['odu-connection'][0]['source'])
- def test_56_check_interface_ODU4_NETWORK1_spdrb(self):
+ def test_057_check_interface_ODU4_NETWORK1_spdrb(self):
response = test_utils.check_netconf_node_request(
"SPDR-SB1", "interface/XPDR2-NETWORK1-ODU4")
self.assertEqual(response.status_code, requests.codes.ok)
self.assertDictEqual(dict(input_dict_2,
**res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
- self.assertDictEqual(
- {'payload-type': '07', 'exp-payload-type': '07'},
- res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ self.assertNotIn('opu',
+ dict.keys(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']))
- def test_57_check_interface_ODU4_NETWORK2_spdrb(self):
+ def test_058_check_interface_ODU4_NETWORK2_spdrb(self):
response = test_utils.check_netconf_node_request(
"SPDR-SB1", "interface/XPDR2-NETWORK2-ODU4")
self.assertEqual(response.status_code, requests.codes.ok)
self.assertDictEqual(dict(input_dict_2,
**res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
- self.assertDictEqual(
- {'payload-type': '07', 'exp-payload-type': '07'},
- res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ self.assertNotIn('opu',
+ dict.keys(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']))
- def test_58_check_ODU4_connection_spdrb(self):
+ def test_059_check_ODU4_connection_spdrb(self):
response = test_utils.check_netconf_node_request(
"SPDR-SB1",
"odu-connection/XPDR2-NETWORK1-ODU4-x-XPDR2-NETWORK2-ODU4")
self.assertDictEqual({'src-if': 'XPDR2-NETWORK1-ODU4'},
res['odu-connection'][0]['source'])
- def test_59_check_otn_topo_links(self):
+ def test_060_check_otn_topo_links(self):
response = test_utils.get_otn_topo_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(
link['org-openroadm-otn-network-topology:used-bandwidth'], 100000)
- def test_60_delete_service_100GE_ABC(self):
+ def test_061_delete_service_100GE_ABC(self):
response = test_utils.service_delete_request("service-100GE-ABC")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_61_check_service_list(self):
+ def test_062_check_service_list(self):
response = test_utils.get_service_list_request("")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(len(res['service-list']['services']), 2)
time.sleep(2)
- def test_62_check_no_ODU4_connection_spdra(self):
+ def test_063_check_no_ODU4_connection_spdra(self):
response = test_utils.check_netconf_node_request("SPDR-SA1", "")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertNotIn(['odu-connection'][0], res['org-openroadm-device'])
time.sleep(1)
- def test_63_check_no_interface_ODU4_NETWORK_spdra(self):
+ def test_064_check_no_interface_ODU4_NETWORK_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-NETWORK1-ODU4")
self.assertEqual(response.status_code, requests.codes.conflict)
- def test_64_check_no_interface_ODU4_CLIENT_spdra(self):
+ def test_065_check_no_interface_ODU4_CLIENT_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-CLIENT1-ODU4")
self.assertEqual(response.status_code, requests.codes.conflict)
- def test_65_check_no_interface_100GE_CLIENT_spdra(self):
+ def test_066_check_no_interface_100GE_CLIENT_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-CLIENT1-ETHERNET")
self.assertEqual(response.status_code, requests.codes.conflict)
- def test_66_check_otn_topo_links(self):
- self.test_45_check_otn_topo_otu4_links()
+ def test_067_check_otn_topo_links(self):
+ self.test_046_check_otn_topo_otu4_links()
- def test_67_delete_OCH_OTU4_service_AB(self):
+ def test_068_delete_OCH_OTU4_service_AB(self):
response = test_utils.service_delete_request("service-OCH-OTU4-AB")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_68_delete_OCH_OTU4_service_BC(self):
+ def test_069_delete_OCH_OTU4_service_BC(self):
response = test_utils.service_delete_request("service-OCH-OTU4-BC")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_69_get_no_service(self):
+ def test_070_get_no_service(self):
response = test_utils.get_service_list_request("")
self.assertEqual(response.status_code, requests.codes.conflict)
res = response.json()
res['errors']['error'])
time.sleep(1)
- def test_70_check_no_interface_OTU4_spdra(self):
+ def test_071_check_no_interface_OTU4_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-NETWORK1-OTU")
self.assertEqual(response.status_code, requests.codes.conflict)
- def test_71_check_no_interface_OCH_spdra(self):
+ def test_072_check_no_interface_OCH_spdra(self):
response = test_utils.check_netconf_node_request(
"SPDR-SA1", "interface/XPDR2-NETWORK1-761:768")
self.assertEqual(response.status_code, requests.codes.conflict)
- def test_72_getLinks_OtnTopology(self):
+ def test_073_getLinks_OtnTopology(self):
response = test_utils.get_otn_topo_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertNotIn('ietf-network-topology:link', res['network'][0])
- def test_73_check_openroadm_topo_spdra(self):
+ def test_074_check_openroadm_topo_spdra(self):
response = test_utils.get_ordm_topo_request("node/SPDR-SA1-XPDR2")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
tp['org-openroadm-network-topology:xpdr-network-attributes']))
time.sleep(3)
- def test_74_check_openroadm_topo_ROADMB_SRG1(self):
+ def test_075_check_openroadm_topo_ROADMB_SRG1(self):
response = test_utils.get_ordm_topo_request("node/ROADM-B1-SRG1")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(freq_map_array[94], 255, "Lambda 1 should be available")
time.sleep(3)
- def test_75_check_openroadm_topo_ROADMB_DEG1(self):
+ def test_076_check_openroadm_topo_ROADMB_DEG1(self):
response = test_utils.get_ordm_topo_request("node/ROADM-B1-DEG1")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(freq_map_array[95], 255, "Lambda 1 should be available")
time.sleep(3)
- def test_76_check_openroadm_topo_ROADMB_DEG2(self):
+ def test_077_check_openroadm_topo_ROADMB_DEG2(self):
response = test_utils.get_ordm_topo_request("node/ROADM-B1-DEG2")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(freq_map_array[95], 255, "Lambda 1 should be available")
time.sleep(3)
- def test_77_disconnect_xponders_from_roadm(self):
+ def test_078_disconnect_xponders_from_roadm(self):
url = "{}/config/ietf-network:networks/network/openroadm-topology/ietf-network-topology:link/"
response = test_utils.get_ordm_topo_request("")
self.assertEqual(response.status_code, requests.codes.ok)
response = test_utils.delete_request(url+link_name)
self.assertEqual(response.status_code, requests.codes.ok)
- def test_78_disconnect_spdrB(self):
+ def test_079_disconnect_spdrB(self):
response = test_utils.unmount_device("SPDR-SB1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
- def test_79_disconnect_roadmB(self):
+ def test_080_disconnect_roadmB(self):
response = test_utils.unmount_device("ROADM-B1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
- def test_80_remove_roadm_to_roadm_links(self):
+ def test_081_remove_roadm_to_roadm_links(self):
url = "{}/config/ietf-network:networks/network/openroadm-topology/ietf-network-topology:link/"
response = test_utils.get_ordm_topo_request("")
self.assertEqual(response.status_code, requests.codes.ok)
response = test_utils.delete_request(url+link_name)
self.assertEqual(response.status_code, requests.codes.ok)
- def test_81_add_omsAttributes_ROADMA_ROADMC(self):
+ def test_082_add_omsAttributes_ROADMA_ROADMC(self):
# Config ROADMA-ROADMC oms-attributes
data = {"span": {
"auto-spanloss": "true",
"ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX", data)
self.assertEqual(response.status_code, requests.codes.created)
- def test_82_add_omsAttributes_ROADMC_ROADMA(self):
+ def test_083_add_omsAttributes_ROADMC_ROADMA(self):
# Config ROADMC-ROADMA oms-attributes
data = {"span": {
"auto-spanloss": "true",
"ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX", data)
self.assertEqual(response.status_code, requests.codes.created)
- def test_83_create_OCH_OTU4_service_AC(self):
+ def test_084_create_OCH_OTU4_service_AC(self):
# pylint: disable=line-too-long
self.cr_serv_sample_data["input"]["service-name"] = "service-OCH-OTU4-AC"
self.cr_serv_sample_data["input"]["connection-type"] = "infrastructure"
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_84_get_OCH_OTU4_service_AC(self):
+ def test_085_get_OCH_OTU4_service_AC(self):
response = test_utils.get_service_list_request(
"services/service-OCH-OTU4-AC")
self.assertEqual(response.status_code, requests.codes.ok)
time.sleep(2)
# test service-create for 100GE service from spdrA to spdrC via spdrB
- def test_85_create_100GE_service_AC(self):
+ def test_086_create_100GE_service_AC(self):
# pylint: disable=line-too-long
self.cr_serv_sample_data["input"]["service-name"] = "service-100GE-AC"
self.cr_serv_sample_data["input"]["connection-type"] = "service"
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_86_get_100GE_service_AC(self):
+ def test_087_get_100GE_service_AC(self):
response = test_utils.get_service_list_request("services/service-100GE-AC")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
res['services'][0]['lifecycle-state'], 'planned')
time.sleep(2)
- def test_87_check_configuration_spdra(self):
- self.test_48_check_interface_100GE_CLIENT_spdra()
- self.test_49_check_interface_ODU4_CLIENT_spdra()
- self.test_50_check_interface_ODU4_NETWORK_spdra()
- self.test_51_check_ODU4_connection_spdra()
+ def test_088_check_interface_OTU4_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR2-NETWORK1-OTU")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR2-NETWORK1-OTU',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP5-CFP',
+ 'supporting-interface': 'XPDR2-NETWORK1-761:768',
+ 'type': 'org-openroadm-interfaces:otnOtu',
+ 'supporting-port': 'CP5-CFP-P1'
+ }
+ input_dict_2 = {'tx-sapi': 'AOQxIv+6nCD+',
+ 'expected-dapi': 'AOQxIv+6nCD+',
+ 'tx-dapi': 'ALvne1QI5jo4',
+ 'expected-sapi': 'ALvne1QI5jo4',
+ 'rate': 'org-openroadm-otn-common-types:OTU4',
+ 'fec': 'scfec'
+ }
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+
+ self.assertDictEqual(input_dict_2,
+ res['interface'][0]
+ ['org-openroadm-otn-otu-interfaces:otu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR2-NETWORK1-OTU/otu")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['org-openroadm-otn-otu-interfaces:otu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
- def test_88_check_configuration_spdrc(self):
- self.test_52_check_interface_100GE_CLIENT_spdrc()
- self.test_53_check_interface_ODU4_CLIENT_spdrc()
- self.test_54_check_interface_ODU4_NETWORK_spdrc()
- self.test_55_check_ODU4_connection_spdrc()
+ def test_089_check_interface_OTU4_spdrC(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR2-NETWORK1-OTU")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR2-NETWORK1-OTU',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP5-CFP',
+ 'supporting-interface': 'XPDR2-NETWORK1-753:760',
+ 'type': 'org-openroadm-interfaces:otnOtu',
+ 'supporting-port': 'CP5-CFP-P1'
+ }
+ input_dict_2 = {'tx-dapi': 'AOQxIv+6nCD+',
+ 'expected-sapi': 'AOQxIv+6nCD+',
+ 'tx-sapi': 'ALvne1QI5jo4',
+ 'expected-dapi': 'ALvne1QI5jo4',
+ 'rate': 'org-openroadm-otn-common-types:OTU4',
+ 'fec': 'scfec'
+ }
- def test_89_check_otn_topo_links(self):
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(input_dict_2,
+ res['interface'][0]
+ ['org-openroadm-otn-otu-interfaces:otu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR2-NETWORK1-OTU/otu")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['org-openroadm-otn-otu-interfaces:otu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+ def test_090_check_configuration_spdra(self):
+ self.test_049_check_interface_100GE_CLIENT_spdra()
+ self.test_050_check_interface_ODU4_CLIENT_spdra()
+ self.test_051_check_interface_ODU4_NETWORK_spdra()
+ self.test_052_check_ODU4_connection_spdra()
+
+ def test_091_check_configuration_spdrc(self):
+ self.test_053_check_interface_100GE_CLIENT_spdrc()
+ self.test_054_check_interface_ODU4_CLIENT_spdrc()
+ self.test_055_check_interface_ODU4_NETWORK_spdrc()
+ self.test_056_check_ODU4_connection_spdrc()
+
+ def test_092_check_otn_topo_links(self):
response = test_utils.get_otn_topo_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(
link['org-openroadm-otn-network-topology:used-bandwidth'], 100000)
- def test_90_delete_100GE_service_AC(self):
+ def test_093_delete_100GE_service_AC(self):
response = test_utils.service_delete_request("service-100GE-AC")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
res['output']['configuration-response-common']['response-message'])
time.sleep(self.WAITING)
- def test_91_check_service_list(self):
+ def test_094_check_service_list(self):
response = test_utils.get_service_list_request("")
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(len(res['service-list']['services']), 1)
time.sleep(2)
- def test_92_check_configuration_spdra(self):
- self.test_62_check_no_ODU4_connection_spdra()
- self.test_63_check_no_interface_ODU4_NETWORK_spdra()
- self.test_64_check_no_interface_ODU4_CLIENT_spdra()
- self.test_65_check_no_interface_100GE_CLIENT_spdra()
+ def test_095_check_configuration_spdra(self):
+ self.test_063_check_no_ODU4_connection_spdra()
+ self.test_064_check_no_interface_ODU4_NETWORK_spdra()
+ self.test_065_check_no_interface_ODU4_CLIENT_spdra()
+ self.test_066_check_no_interface_100GE_CLIENT_spdra()
- def test_93_check_otn_topo_links(self):
+ def test_096_check_otn_topo_links(self):
response = test_utils.get_otn_topo_request()
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(
link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
- def test_94_disconnect_xponders_from_roadm(self):
+ def test_097_disconnect_xponders_from_roadm(self):
url = "{}/config/ietf-network:networks/network/openroadm-topology/ietf-network-topology:link/"
response = test_utils.get_ordm_topo_request("")
self.assertEqual(response.status_code, requests.codes.ok)
response = test_utils.delete_request(url+link_name)
self.assertEqual(response.status_code, requests.codes.ok)
- def test_95_disconnect_spdrA(self):
+ def test_098_disconnect_spdrA(self):
response = test_utils.unmount_device("SPDR-SA1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
- def test_96_disconnect_spdrC(self):
+ def test_099_disconnect_spdrC(self):
response = test_utils.unmount_device("SPDR-SC1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
- def test_97_disconnect_roadmA(self):
+ def test_100_disconnect_roadmA(self):
response = test_utils.unmount_device("ROADM-A1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
- def test_98_disconnect_roadmC(self):
+ def test_101_disconnect_roadmC(self):
response = test_utils.unmount_device("ROADM-C1")
self.assertEqual(response.status_code, requests.codes.ok,
test_utils.CODE_SHOULD_BE_200)
--- /dev/null
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2021 Orange, Inc. and others. All rights reserved.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# pylint: disable=no-member
+# pylint: disable=too-many-public-methods
+# pylint: disable=too-many-lines
+
+import unittest
+import time
+import requests
+# pylint: disable=wrong-import-order
+import sys
+sys.path.append('transportpce_tests/common/')
+# pylint: disable=wrong-import-position
+# pylint: disable=import-error
+import test_utils # nopep8
+
+
+class TransportPCEtesting(unittest.TestCase):
+
+ processes = None
+ WAITING = 20 # nominal value is 300
+ NODE_VERSION = '2.2.1'
+
+ cr_serv_sample_data = {"input": {
+ "sdnc-request-header": {
+ "request-id": "request-1",
+ "rpc-action": "service-create",
+ "request-system-id": "appname"
+ },
+ "service-name": "service-OCH-OTU4-AB",
+ "common-id": "commonId",
+ "connection-type": "infrastructure",
+ "service-a-end": {
+ "service-rate": "100",
+ "node-id": "SPDR-SA1",
+ "service-format": "OTU",
+ "otu-service-rate": "org-openroadm-otn-common-types:OTU4",
+ "clli": "NodeSA",
+ "subrate-eth-sla": {
+ "subrate-eth-sla": {
+ "committed-info-rate": "100000",
+ "committed-burst-size": "64"
+ }
+ },
+ "tx-direction": {
+ "port": {
+ "port-device-name": "SPDR-SA1-XPDR1",
+ "port-type": "fixed",
+ "port-name": "XPDR1-NETWORK1",
+ "port-rack": "000000.00",
+ "port-shelf": "Chassis#1"
+ },
+ "lgx": {
+ "lgx-device-name": "Some lgx-device-name",
+ "lgx-port-name": "Some lgx-port-name",
+ "lgx-port-rack": "000000.00",
+ "lgx-port-shelf": "00"
+ }
+ },
+ "rx-direction": {
+ "port": {
+ "port-device-name": "SPDR-SA1-XPDR1",
+ "port-type": "fixed",
+ "port-name": "XPDR1-NETWORK1",
+ "port-rack": "000000.00",
+ "port-shelf": "Chassis#1"
+ },
+ "lgx": {
+ "lgx-device-name": "Some lgx-device-name",
+ "lgx-port-name": "Some lgx-port-name",
+ "lgx-port-rack": "000000.00",
+ "lgx-port-shelf": "00"
+ }
+ },
+ "optic-type": "gray"
+ },
+ "service-z-end": {
+ "service-rate": "100",
+ "node-id": "SPDR-SB1",
+ "service-format": "OTU",
+ "otu-service-rate": "org-openroadm-otn-common-types:OTU4",
+ "clli": "NodeSB",
+ "subrate-eth-sla": {
+ "subrate-eth-sla": {
+ "committed-info-rate": "100000",
+ "committed-burst-size": "64"
+ }
+ },
+ "tx-direction": {
+ "port": {
+ "port-device-name": "SPDR-SB1-XPDR2",
+ "port-type": "fixed",
+ "port-name": "XPDR2-NETWORK1",
+ "port-rack": "000000.00",
+ "port-shelf": "Chassis#1"
+ },
+ "lgx": {
+ "lgx-device-name": "Some lgx-device-name",
+ "lgx-port-name": "Some lgx-port-name",
+ "lgx-port-rack": "000000.00",
+ "lgx-port-shelf": "00"
+ }
+ },
+ "rx-direction": {
+ "port": {
+ "port-device-name": "SPDR-SB1-XPDR2",
+ "port-type": "fixed",
+ "port-name": "XPDR2-NETWORK1",
+ "port-rack": "000000.00",
+ "port-shelf": "Chassis#1"
+ },
+ "lgx": {
+ "lgx-device-name": "Some lgx-device-name",
+ "lgx-port-name": "Some lgx-port-name",
+ "lgx-port-rack": "000000.00",
+ "lgx-port-shelf": "00"
+ }
+ },
+ "optic-type": "gray"
+ },
+ "due-date": "2018-06-15T00:00:01Z",
+ "operator-contact": "pw1234"
+ }
+ }
+
+ @classmethod
+ def setUpClass(cls):
+ cls.processes = test_utils.start_tpce()
+ cls.processes = test_utils.start_sims([('spdra', cls.NODE_VERSION),
+ ('spdrb', cls.NODE_VERSION),
+ ('spdrc', cls.NODE_VERSION),
+ ('roadma', cls.NODE_VERSION),
+ ('roadmb', cls.NODE_VERSION),
+ ('roadmc', cls.NODE_VERSION)])
+
+ @classmethod
+ def tearDownClass(cls):
+ # pylint: disable=not-an-iterable
+ for process in cls.processes:
+ test_utils.shutdown_process(process)
+ print("all processes killed")
+
+ def setUp(self):
+ time.sleep(2)
+
+ def test_001_connect_spdrA(self):
+ response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_002_connect_spdrB(self):
+ response = test_utils.mount_device("SPDR-SB1", ('spdrb', self.NODE_VERSION))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_003_connect_spdrC(self):
+ response = test_utils.mount_device("SPDR-SC1", ('spdrc', self.NODE_VERSION))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_004_connect_rdmA(self):
+ response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_005_connect_rdmB(self):
+ response = test_utils.mount_device("ROADM-B1", ('roadmb', self.NODE_VERSION))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_006_connect_rdmC(self):
+ response = test_utils.mount_device("ROADM-C1", ('roadmc', self.NODE_VERSION))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_007_connect_sprdA_1_N1_to_roadmA_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("SPDR-SA1", "1", "1",
+ "ROADM-A1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Xponder Roadm Link created successfully',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_008_connect_roadmA_PP1_to_spdrA_1_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("SPDR-SA1", "1", "1",
+ "ROADM-A1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm Xponder links created successfully',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_009_connect_sprdC_1_N1_to_roadmC_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("SPDR-SC1", "1", "1",
+ "ROADM-C1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Xponder Roadm Link created successfully',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_010_connect_roadmC_PP1_to_spdrC_1_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("SPDR-SC1", "1", "1",
+ "ROADM-C1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm Xponder links created successfully',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_011_connect_sprdB_2_N1_to_roadmB_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("SPDR-SB1", "2", "1",
+ "ROADM-B1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Xponder Roadm Link created successfully',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_012_connect_roadmB_PP1_to_spdrB_2_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("SPDR-SB1", "2", "1",
+ "ROADM-B1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm Xponder links created successfully',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_013_connect_sprdB_2_N2_to_roadmB_PP2(self):
+ response = test_utils.connect_xpdr_to_rdm_request("SPDR-SB1", "2", "2",
+ "ROADM-B1", "1", "SRG1-PP2-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Xponder Roadm Link created successfully',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_014_connect_roadmB_PP2_to_spdrB_2_N2(self):
+ response = test_utils.connect_rdm_to_xpdr_request("SPDR-SB1", "2", "2",
+ "ROADM-B1", "1", "SRG1-PP2-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm Xponder links created successfully',
+ res["output"]["result"])
+ time.sleep(2)
+
+ def test_015_add_omsAttributes_ROADMA_ROADMB(self):
+ # Config ROADMA-ROADMC oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request(
+ "ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_016_add_omsAttributes_ROADMB_ROADMA(self):
+ # Config ROADMC-ROADMA oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request(
+ "ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_017_add_omsAttributes_ROADMB_ROADMC(self):
+ # Config ROADMA-ROADMC oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request(
+ "ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_018_add_omsAttributes_ROADMC_ROADMB(self):
+ # Config ROADMC-ROADMA oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request(
+ "ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_019_create_OTS_ROADMA_DEG1(self):
+ response = test_utils.create_ots_oms_request("ROADM-A1", "DEG1-TTP-TXRX")
+ time.sleep(10)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADM-A1',
+ res["output"]["result"])
+
+ def test_020_create_OTS_ROADMB_DEG1(self):
+ response = test_utils.create_ots_oms_request("ROADM-B1", "DEG1-TTP-TXRX")
+ time.sleep(10)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADM-B1',
+ res["output"]["result"])
+
+ def test_021_create_OTS_ROADMB_DEG2(self):
+ response = test_utils.create_ots_oms_request("ROADM-B1", "DEG2-TTP-TXRX")
+ time.sleep(10)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADM-B1',
+ res["output"]["result"])
+
+ def test_022_create_OTS_ROADMC_DEG2(self):
+ response = test_utils.create_ots_oms_request("ROADM-C1", "DEG2-TTP-TXRX")
+ time.sleep(10)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADM-C1',
+ res["output"]["result"])
+
+ def test_023_calculate_span_loss_base_all(self):
+ url = "{}/operations/transportpce-olm:calculate-spanloss-base"
+ data = {
+ "input": {
+ "src-type": "all"
+ }
+ }
+ response = test_utils.post_request(url, data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Success',
+ res["output"]["result"])
+ self.assertIn({
+ "spanloss": "25.7",
+ "link-id": "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "17.6",
+ "link-id": "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "23.6",
+ "link-id": "ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "23.6",
+ "link-id": "ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "25.7",
+ "link-id": "ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "17.6",
+ "link-id": "ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX"
+ }, res["output"]["spans"])
+ time.sleep(5)
+
+ def test_024_check_otn_topology(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nbNode = len(res['network'][0]['node'])
+ self.assertEqual(nbNode, 9, 'There should be 9 nodes')
+ self.assertNotIn('ietf-network-topology:link', res['network'][0],
+ 'otn-topology should have no link')
+
+# test service-create for OCH-OTU4 service from spdrA to spdrB
+ def test_025_create_OCH_OTU4_service_AB(self):
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('PCE calculation in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_026_get_OCH_OTU4_service_AB(self):
+ response = test_utils.get_service_list_request(
+ "services/service-OCH-OTU4-AB")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service-OCH-OTU4-AB')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'infrastructure')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ time.sleep(2)
+
+ def test_027_check_otn_topo_otu4_links(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nb_links = len(res['network'][0]['ietf-network-topology:link'])
+ self.assertEqual(nb_links, 2)
+ listLinkId = ['OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SB1-XPDR2-XPDR2-NETWORK1',
+ 'OTU4-SPDR-SB1-XPDR2-XPDR2-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1']
+ for link in res['network'][0]['ietf-network-topology:link']:
+ self.assertIn(link['link-id'], listLinkId)
+ self.assertEqual(
+ link['transportpce-topology:otn-link-type'], 'OTU4')
+ self.assertEqual(
+ link['org-openroadm-common-network:link-type'], 'OTN-LINK')
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:available-bandwidth'], 100000)
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
+ self.assertIn(
+ link['org-openroadm-common-network:opposite-link'], listLinkId)
+
+# test service-create for OCH-OTU4 service from spdrB to spdrC
+ def test_028_create_OCH_OTU4_service_BC(self):
+ # pylint: disable=line-too-long
+ self.cr_serv_sample_data["input"]["service-name"] = "service-OCH-OTU4-BC"
+ self.cr_serv_sample_data["input"]["service-a-end"]["node-id"] = "SPDR-SB1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["clli"] = "NodeSB"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SB1-XPDR2"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-name"] = "XPDR2-NETWORK2"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SB1-XPDR2"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-name"] = "XPDR2-NETWORK2"
+ self.cr_serv_sample_data["input"]["service-z-end"]["node-id"] = "SPDR-SC1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["clli"] = "NodeSC"
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SC1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SC1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('PCE calculation in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_029_get_OCH_OTU4_service_BC(self):
+ response = test_utils.get_service_list_request(
+ "services/service-OCH-OTU4-BC")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service-OCH-OTU4-BC')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'infrastructure')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ time.sleep(2)
+
+ def test_030_check_otn_topo_otu4_links(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nb_links = len(res['network'][0]['ietf-network-topology:link'])
+ self.assertEqual(nb_links, 4)
+ listLinkId = ['OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SB1-XPDR2-XPDR2-NETWORK1',
+ 'OTU4-SPDR-SB1-XPDR2-XPDR2-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1',
+ 'OTU4-SPDR-SB1-XPDR2-XPDR2-NETWORK2toSPDR-SC1-XPDR1-XPDR1-NETWORK1',
+ 'OTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SB1-XPDR2-XPDR2-NETWORK2']
+ for link in res['network'][0]['ietf-network-topology:link']:
+ self.assertIn(link['link-id'], listLinkId)
+ self.assertEqual(
+ link['transportpce-topology:otn-link-type'], 'OTU4')
+ self.assertEqual(
+ link['org-openroadm-common-network:link-type'], 'OTN-LINK')
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:available-bandwidth'], 100000)
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
+ self.assertIn(
+ link['org-openroadm-common-network:opposite-link'], listLinkId)
+
+# test service-create for ODU4 service from spdrA to spdrC via spdrB
+ def test_031_create_ODU4_service(self):
+ # pylint: disable=line-too-long
+ self.cr_serv_sample_data["input"]["service-name"] = "service-ODU4-ABC"
+ self.cr_serv_sample_data["input"]["service-a-end"]["node-id"] = "SPDR-SA1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["clli"] = "NodeSA"
+ self.cr_serv_sample_data["input"]["service-a-end"]["service-format"] = "ODU"
+ del self.cr_serv_sample_data["input"]["service-a-end"]["otu-service-rate"]
+ self.cr_serv_sample_data["input"]["service-a-end"]["odu-service-rate"] = "org-openroadm-otn-common-types:ODU4"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SA1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SA1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["node-id"] = "SPDR-SC1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["clli"] = "NodeSC"
+ self.cr_serv_sample_data["input"]["service-z-end"]["service-format"] = "ODU"
+ del self.cr_serv_sample_data["input"]["service-z-end"]["otu-service-rate"]
+ self.cr_serv_sample_data["input"]["service-z-end"]["odu-service-rate"] = "org-openroadm-otn-common-types:ODU4"
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SC1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SC1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('PCE calculation in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_032_get_ODU4_service_ABC(self):
+ response = test_utils.get_service_list_request(
+ "services/service-ODU4-ABC")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service-ODU4-ABC')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'infrastructure')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ time.sleep(2)
+
+ def test_033_check_interface_ODU4_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU4',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ # SAPI/DAPI are added in the Otu4 renderer
+ input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU4',
+ 'expected-dapi': 'H/OelLynehI=',
+ 'expected-sapi': 'AMf1n5hK6Xkk',
+ 'tx-dapi': 'AMf1n5hK6Xkk',
+ 'tx-sapi': 'H/OelLynehI='}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
+ **input_dict_2),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ )
+ self.assertDictEqual(
+ {'payload-type': '21', 'exp-payload-type': '21'},
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+ def test_034_check_interface_ODU4_spdrc(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU4',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ # SAPI/DAPI are added in the Otu4 renderer
+ input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU4',
+ 'expected-dapi': 'AMf1n5hK6Xkk',
+ 'expected-sapi': 'H/OelLynehI=',
+ 'tx-dapi': 'H/OelLynehI=',
+ 'tx-sapi': 'AMf1n5hK6Xkk'}
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
+ **input_dict_2),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ )
+ self.assertDictEqual(
+ {'payload-type': '21', 'exp-payload-type': '21'},
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+ def test_035_check_interface_ODU4_NETWORK1_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR2-NETWORK1-ODU4',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP5-CFP',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP5-CFP-P1'}
+ input_dict_2 = {
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU4',
+ 'monitoring-mode': 'monitored'}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(input_dict_2,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
+ self.assertNotIn('opu',
+ dict.keys(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']))
+
+ def test_036_check_interface_ODU4_NETWORK2_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK2-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR2-NETWORK1-ODU4',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP6-CFP',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP6-CFP-P1'}
+ input_dict_2 = {
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU4',
+ 'monitoring-mode': 'monitored'}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(input_dict_2,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
+ self.assertNotIn('opu',
+ dict.keys(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']))
+
+ def test_037_check_ODU4_connection_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1",
+ "odu-connection/XPDR2-NETWORK1-ODU4-x-XPDR2-NETWORK2-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {
+ 'connection-name':
+ 'XPDR2-NETWORK1-ODU4-x-XPDR2-NETWORK2-ODU4',
+ 'direction': 'bidirectional'
+ }
+
+ self.assertDictEqual(dict(input_dict_1, **res['odu-connection'][0]),
+ res['odu-connection'][0])
+ self.assertDictEqual({'dst-if': 'XPDR2-NETWORK2-ODU4'},
+ res['odu-connection'][0]['destination'])
+ self.assertDictEqual({'src-if': 'XPDR2-NETWORK1-ODU4'},
+ res['odu-connection'][0]['source'])
+
+ def test_038_check_otn_topo_links(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nb_links = len(res['network'][0]['ietf-network-topology:link'])
+ self.assertEqual(nb_links, 6)
+ for link in res['network'][0]['ietf-network-topology:link']:
+ if 'OTU4' in link['link-id']:
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:available-bandwidth'], 0)
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:used-bandwidth'], 100000)
+ elif 'ODTU4' in link['link-id']:
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:available-bandwidth'], 100000)
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
+ self.assertEqual(
+ link['transportpce-topology:otn-link-type'], 'ODTU4')
+ self.assertEqual(
+ link['org-openroadm-common-network:link-type'], 'OTN-LINK')
+ self.assertIn(link['org-openroadm-common-network:opposite-link'],
+ ['ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1',
+ 'ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1'])
+ else:
+ self.fail("this link should not exist")
+
+ def test_039_check_otn_topo_tp(self):
+ response = test_utils.get_otn_topo_request()
+ res = response.json()
+ for node in res['network'][0]['node']:
+ if node['node-id'] == 'SPDR-SA1-XPDR1' or node['node-id'] == 'SPDR-SC1-XPDR1':
+ tpList = node['ietf-network-topology:termination-point']
+ for tp in tpList:
+ if tp['tp-id'] == 'XPDR1-NETWORK1':
+ xpdrTpPortConAt = tp['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
+ self.assertEqual(len(xpdrTpPortConAt['ts-pool']), 80)
+ self.assertEqual(
+ len(xpdrTpPortConAt['odtu-tpn-pool'][0]['tpn-pool']), 80)
+ self.assertEqual(xpdrTpPortConAt['odtu-tpn-pool'][0]['odtu-type'],
+ 'org-openroadm-otn-common-types:ODTU4.ts-Allocated')
+
+# test service-create for 10GE service from spdr to spdr
+ def test_040_create_10GE_service(self):
+ self.cr_serv_sample_data["input"]["service-name"] = "service1-10GE"
+ self.cr_serv_sample_data["input"]["connection-type"] = "service"
+ self.cr_serv_sample_data["input"]["service-a-end"]["service-rate"] = "10"
+ self.cr_serv_sample_data["input"]["service-a-end"]["service-format"] = "Ethernet"
+ del self.cr_serv_sample_data["input"]["service-a-end"]["odu-service-rate"]
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["service-rate"] = "10"
+ self.cr_serv_sample_data["input"]["service-z-end"]["service-format"] = "Ethernet"
+ del self.cr_serv_sample_data["input"]["service-z-end"]["odu-service-rate"]
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('PCE calculation in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_041_get_10GE_service1(self):
+ response = test_utils.get_service_list_request(
+ "services/service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service1-10GE')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'service')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ time.sleep(2)
+
+ def test_042_check_interface_10GE_CLIENT_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-CLIENT1-ETHERNET10G")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict = {'name': 'XPDR1-CLIENT1-ETHERNET10G',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-SFP4',
+ 'type': 'org-openroadm-interfaces:ethernetCsmacd',
+ 'supporting-port': 'CP1-SFP4-P1'
+ }
+ self.assertDictEqual(dict(input_dict, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(
+ {'speed': 10000},
+ res['interface'][0]['org-openroadm-ethernet-interfaces:ethernet'])
+
+ def test_043_check_interface_ODU2E_CLIENT_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-CLIENT1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR1-CLIENT1-ODU2e-service1-10GE',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-SFP4',
+ 'supporting-interface': 'XPDR1-CLIENT1-ETHERNET10G',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-SFP4-P1'}
+ input_dict_2 = {
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-TTP-CTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU2e',
+ 'monitoring-mode': 'terminated',
+ 'expected-dapi': 'B68VWipZAU0=',
+ 'expected-sapi': 'BcwI5xz79t8=',
+ 'tx-dapi': 'BcwI5xz79t8=',
+ 'tx-sapi': 'B68VWipZAU0='}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(input_dict_2,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
+ self.assertDictEqual(
+ {'payload-type': '03', 'exp-payload-type': '03'},
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-CLIENT1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+ def test_044_check_interface_ODU2E_NETWORK_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU2e-service1-10GE',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'supporting-interface': 'XPDR1-NETWORK1-ODU4',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ input_dict_2 = {
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU2e',
+ 'monitoring-mode': 'monitored'}
+ input_dict_3 = {'trib-port-number': 1}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(input_dict_2,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
+ self.assertDictEqual(dict(input_dict_3,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
+ 'parent-odu-allocation']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['parent-odu-allocation'])
+ self.assertIn(1, res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['parent-odu-allocation']
+ ['trib-slots'])
+
+ def test_045_check_ODU2E_connection_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1",
+ "odu-connection/XPDR1-CLIENT1-ODU2e-service1-10GE-x-XPDR1-NETWORK1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {
+ 'connection-name':
+ 'XPDR1-CLIENT1-ODU2e-service1-10GE-x-XPDR1-NETWORK1-ODU2e-service1-10GE',
+ 'direction': 'bidirectional'
+ }
+
+ self.assertDictEqual(dict(input_dict_1, **res['odu-connection'][0]),
+ res['odu-connection'][0])
+ self.assertDictEqual({'dst-if': 'XPDR1-NETWORK1-ODU2e-service1-10GE'},
+ res['odu-connection'][0]['destination'])
+ self.assertDictEqual({'src-if': 'XPDR1-CLIENT1-ODU2e-service1-10GE'},
+ res['odu-connection'][0]['source'])
+
+ def test_046_check_interface_10GE_CLIENT_spdrc(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-CLIENT1-ETHERNET10G")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict = {'name': 'XPDR1-CLIENT1-ETHERNET10G',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-SFP4',
+ 'type': 'org-openroadm-interfaces:ethernetCsmacd',
+ 'supporting-port': 'CP1-SFP4-P1'
+ }
+ self.assertDictEqual(dict(input_dict, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(
+ {'speed': 10000},
+ res['interface'][0]['org-openroadm-ethernet-interfaces:ethernet'])
+
+ def test_047_check_interface_ODU2E_CLIENT_spdrc(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-CLIENT1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR1-CLIENT1-ODU2e-service1-10GE',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-SFP4',
+ 'supporting-interface': 'XPDR1-CLIENT1-ETHERNET10G',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-SFP4-P1'}
+ input_dict_2 = {
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-TTP-CTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU2e',
+ 'monitoring-mode': 'terminated',
+ 'expected-dapi': 'BcwI5xz79t8=',
+ 'expected-sapi': 'B68VWipZAU0=',
+ 'tx-dapi': 'B68VWipZAU0=',
+ 'tx-sapi': 'BcwI5xz79t8='}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(input_dict_2,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
+ self.assertDictEqual(
+ {'payload-type': '03', 'exp-payload-type': '03'},
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-CLIENT1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+ def test_048_check_interface_ODU2E_NETWORK_spdrc(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-NETWORK1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU2e-service1-10GE',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'supporting-interface': 'XPDR1-NETWORK1-ODU4',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ input_dict_2 = {
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU2e',
+ 'monitoring-mode': 'monitored'}
+ input_dict_3 = {'trib-port-number': 1}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(input_dict_2,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
+ self.assertDictEqual(dict(input_dict_3,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
+ 'parent-odu-allocation']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
+ 'parent-odu-allocation'])
+ self.assertIn(1,
+ res['interface'][0][
+ 'org-openroadm-otn-odu-interfaces:odu'][
+ 'parent-odu-allocation']['trib-slots'])
+
+ def test_049_check_ODU2E_connection_spdrc(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SC1",
+ "odu-connection/XPDR1-CLIENT1-ODU2e-service1-10GE-x-XPDR1-NETWORK1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {
+ 'connection-name':
+ 'XPDR1-CLIENT1-ODU2e-service1-10GE-x-XPDR1-NETWORK1-ODU2e-service1-10GE',
+ 'direction': 'bidirectional'
+ }
+
+ self.assertDictEqual(dict(input_dict_1, **res['odu-connection'][0]),
+ res['odu-connection'][0])
+ self.assertDictEqual({'dst-if': 'XPDR1-NETWORK1-ODU2e-service1-10GE'},
+ res['odu-connection'][0]['destination'])
+ self.assertDictEqual({'src-if': 'XPDR1-CLIENT1-ODU2e-service1-10GE'},
+ res['odu-connection'][0]['source'])
+
+ def test_050_check_otn_topo_links(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nb_links = len(res['network'][0]['ietf-network-topology:link'])
+ self.assertEqual(nb_links, 6)
+ for link in res['network'][0]['ietf-network-topology:link']:
+ linkId = link['link-id']
+ if (linkId in ('ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1',
+ 'ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1')):
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:available-bandwidth'], 90000)
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:used-bandwidth'], 10000)
+
+ def test_051_check_otn_topo_tp(self):
+ response = test_utils.get_otn_topo_request()
+ res = response.json()
+ for node in res['network'][0]['node']:
+ if node['node-id'] == 'SPDR-SA1-XPDR1' or node['node-id'] == 'SPDR-SC1-XPDR1':
+ tpList = node['ietf-network-topology:termination-point']
+ for tp in tpList:
+ if tp['tp-id'] == 'XPDR1-NETWORK1':
+ xpdrTpPortConAt = tp['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
+ self.assertEqual(len(xpdrTpPortConAt['ts-pool']), 72)
+ tsPoolList = list(range(1, 9))
+ self.assertNotIn(
+ tsPoolList, xpdrTpPortConAt['ts-pool'])
+ self.assertEqual(
+ len(xpdrTpPortConAt['odtu-tpn-pool'][0]['tpn-pool']), 79)
+ self.assertNotIn(
+ 1, xpdrTpPortConAt['odtu-tpn-pool'][0]['tpn-pool'])
+
+ def test_052_delete_10GE_service(self):
+ response = test_utils.service_delete_request("service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Renderer service delete in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_053_check_service_list(self):
+ response = test_utils.get_service_list_request("")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(len(res['service-list']['services']), 3)
+ time.sleep(2)
+
+ def test_054_check_no_ODU2e_connection_spdra(self):
+ response = test_utils.check_netconf_node_request("SPDR-SA1", "")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertNotIn(['odu-connection'][0], res['org-openroadm-device'])
+ time.sleep(1)
+
+ def test_055_check_no_interface_ODU2E_NETWORK_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-ODU2e-service1")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_056_check_no_interface_ODU2E_CLIENT_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-CLIENT1-ODU2e-service1")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_057_check_no_interface_10GE_CLIENT_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-CLIENT1-ETHERNET10G")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_058_check_otn_topo_links(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nb_links = len(res['network'][0]['ietf-network-topology:link'])
+ self.assertEqual(nb_links, 6)
+ for link in res['network'][0]['ietf-network-topology:link']:
+ linkId = link['link-id']
+ if (linkId in ('ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1',
+ 'ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1')):
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:available-bandwidth'], 100000)
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
+
+ def test_059_check_otn_topo_tp(self):
+ response = test_utils.get_otn_topo_request()
+ res = response.json()
+ for node in res['network'][0]['node']:
+ if (node['node-id'] == 'SPDR-SA1-XPDR1' or node['node-id'] == 'SPDR-SC1-XPDR1'):
+ tpList = node['ietf-network-topology:termination-point']
+ for tp in tpList:
+ if tp['tp-id'] == 'XPDR1-NETWORK1':
+ xpdrTpPortConAt = tp['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
+ self.assertEqual(len(xpdrTpPortConAt['ts-pool']), 80)
+ self.assertEqual(
+ len(xpdrTpPortConAt['odtu-tpn-pool'][0]['tpn-pool']), 80)
+
+ def test_060_delete_ODU4_service(self):
+ response = test_utils.service_delete_request("service-ODU4-ABC")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Renderer service delete in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_061_check_service_list(self):
+ response = test_utils.get_service_list_request("")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(len(res['service-list']['services']), 2)
+ time.sleep(2)
+
+ def test_062_check_no_interface_ODU4_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_063_check_no_interface_ODU4_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK2-ODU4")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_064_check_no_ODU4_connection_spdrb(self):
+ response = test_utils.check_netconf_node_request("SPDR-SB1", "")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertNotIn(['odu-connection'][0], res['org-openroadm-device'])
+ time.sleep(1)
+
+ def test_065_check_no_interface_ODU4_spdrc(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_066_check_otn_topo_links(self):
+ self.test_030_check_otn_topo_otu4_links()
+
+ def test_067_check_otn_topo_tp(self):
+ response = test_utils.get_otn_topo_request()
+ res = response.json()
+ for node in res['network'][0]['node']:
+ if node['node-id'] == 'SPDR-SA1-XPDR1' or node['node-id'] == 'SPDR-SC1-XPDR1':
+ tpList = node['ietf-network-topology:termination-point']
+ for tp in tpList:
+ if tp['tp-id'] == 'XPDR1-NETWORK1':
+ xpdrTpPortConAt = tp['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
+ self.assertNotIn('ts-pool', dict.keys(xpdrTpPortConAt))
+ self.assertNotIn(
+ 'odtu-tpn-pool', dict.keys(xpdrTpPortConAt))
+
+# test service-create for ODU4 service from spdrA to spdrB
+ def test_068_create_ODU4_service_AB(self):
+ # pylint: disable=line-too-long
+ self.cr_serv_sample_data["input"]["service-name"] = "service-ODU4-AB"
+ self.cr_serv_sample_data["input"]["connection-type"] = "infrastructure"
+ self.cr_serv_sample_data["input"]["service-a-end"]["service-rate"] = "100"
+ self.cr_serv_sample_data["input"]["service-a-end"]["service-format"] = "ODU"
+ self.cr_serv_sample_data["input"]["service-a-end"]["odu-service-rate"] = "org-openroadm-otn-common-types:ODU4"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SA1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SA1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["node-id"] = "SPDR-SB1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["clli"] = "NodeSB"
+ self.cr_serv_sample_data["input"]["service-a-end"]["service-rate"] = "100"
+ self.cr_serv_sample_data["input"]["service-z-end"]["service-format"] = "ODU"
+ self.cr_serv_sample_data["input"]["service-z-end"]["odu-service-rate"] = "org-openroadm-otn-common-types:ODU4"
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SB1-XPDR2"
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR2-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SB1-XPDR2"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR2-NETWORK1"
+
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('PCE calculation in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_069_get_ODU4_service_AB(self):
+ response = test_utils.get_service_list_request(
+ "services/service-ODU4-AB")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service-ODU4-AB')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'infrastructure')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ time.sleep(2)
+
+ def test_070_check_interface_ODU4_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU4',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ # SAPI/DAPI are added in the Otu4 renderer
+ input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU4',
+ 'expected-dapi': 'H/OelLynehI=',
+ 'expected-sapi': 'X+8cRNi+HbE=',
+ 'tx-dapi': 'X+8cRNi+HbE=',
+ 'tx-sapi': 'H/OelLynehI='}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
+ **input_dict_2),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ )
+ self.assertDictEqual(
+ {'payload-type': '21', 'exp-payload-type': '21'},
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+ def test_071_check_interface_ODU4_spdrb_N1(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR2-NETWORK1-ODU4',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ # SAPI/DAPI are added in the Otu4 renderer
+ input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU4',
+ 'expected-dapi': 'X+8cRNi+HbE=',
+ 'expected-sapi': 'H/OelLynehI=',
+ 'tx-dapi': 'H/OelLynehI=',
+ 'tx-sapi': 'X+8cRNi+HbE='}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
+ **input_dict_2),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ )
+ self.assertDictEqual(
+ {'payload-type': '21', 'exp-payload-type': '21'},
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+# test service-create for ODU4 service from spdrB to spdrC
+ def test_072_create_ODU4_service_BC(self):
+ # pylint: disable=line-too-long
+ self.cr_serv_sample_data["input"]["service-name"] = "service-ODU4-BC"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SB1-XPDR2"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-name"] = "XPDR2-NETWORK2"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SB1-XPDR2"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-name"] = "XPDR2-NETWORK2"
+ self.cr_serv_sample_data["input"]["service-z-end"]["node-id"] = "SPDR-SC1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["clli"] = "NodeSC"
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SC1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SC1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-NETWORK1"
+
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('PCE calculation in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_073_get_ODU4_service_AB(self):
+ response = test_utils.get_service_list_request(
+ "services/service-ODU4-BC")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service-ODU4-BC')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'infrastructure')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ time.sleep(2)
+
+ def test_074_check_interface_ODU4_spdrb_N2(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK2-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR2-NETWORK1-ODU4',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ # SAPI/DAPI are added in the Otu4 renderer
+ input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU4',
+ 'expected-dapi': 'X+8cRNi+HbI=',
+ 'expected-sapi': 'AMf1n5hK6Xkk',
+ 'tx-dapi': 'AMf1n5hK6Xkk',
+ 'tx-sapi': 'X+8cRNi+HbI='}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
+ **input_dict_2),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ )
+ self.assertDictEqual(
+ {'payload-type': '21', 'exp-payload-type': '21'},
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+ def test_075_check_interface_ODU4_spdrc(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SC1", "interface/XPDR1-NETWORK1-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU4',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ # SAPI/DAPI are added in the Otu4 renderer
+ input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU4',
+ 'expected-dapi': 'AMf1n5hK6Xkk',
+ 'expected-sapi': 'X+8cRNi+HbI=',
+ 'tx-dapi': 'X+8cRNi+HbI=',
+ 'tx-sapi': 'AMf1n5hK6Xkk'}
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
+ **input_dict_2),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ )
+ self.assertDictEqual(
+ {'payload-type': '21', 'exp-payload-type': '21'},
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ response2 = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK2-ODU4")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res2 = response2.json()['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
+ self.assertEqual(input_dict_2['tx-sapi'], res2['tx-dapi'])
+ self.assertEqual(input_dict_2['tx-sapi'], res2['expected-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['tx-sapi'])
+ self.assertEqual(input_dict_2['tx-dapi'], res2['expected-dapi'])
+
+# test service-create for 10GE service from spdr to spdr
+ def test_076_create_10GE_service_ABC(self):
+ # pylint: disable=line-too-long
+ self.cr_serv_sample_data["input"]["service-name"] = "service1-10GE"
+ self.cr_serv_sample_data["input"]["connection-type"] = "service"
+ self.cr_serv_sample_data["input"]["service-a-end"]["node-id"] = "SPDR-SA1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["clli"] = "NodeSA"
+ self.cr_serv_sample_data["input"]["service-a-end"]["service-rate"] = "10"
+ self.cr_serv_sample_data["input"]["service-a-end"]["service-format"] = "Ethernet"
+ del self.cr_serv_sample_data["input"]["service-a-end"]["odu-service-rate"]
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-device-name"] = "SPDR-SA1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-device-name"] = "SPDR-SA1-XPDR1"
+ self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["service-rate"] = "10"
+ self.cr_serv_sample_data["input"]["service-z-end"]["service-format"] = "Ethernet"
+ del self.cr_serv_sample_data["input"]["service-z-end"]["odu-service-rate"]
+ self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
+ self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('PCE calculation in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_077_check_configuration_spdra_spdrc(self):
+ self.test_041_get_10GE_service1()
+ self.test_042_check_interface_10GE_CLIENT_spdra()
+ self.test_043_check_interface_ODU2E_CLIENT_spdra()
+ self.test_044_check_interface_ODU2E_NETWORK_spdra()
+ self.test_045_check_ODU2E_connection_spdra()
+ self.test_046_check_interface_10GE_CLIENT_spdrc()
+ self.test_047_check_interface_ODU2E_CLIENT_spdrc()
+ self.test_049_check_ODU2E_connection_spdrc()
+
+ def test_078_check_interface_ODU2E_NETWORK1_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK1-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR2-NETWORK1-ODU2e-service1-10GE',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'supporting-interface': 'XPDR2-NETWORK1-ODU4',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ input_dict_2 = {
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU2e',
+ 'monitoring-mode': 'monitored'}
+ input_dict_3 = {'trib-port-number': 1}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(input_dict_2,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
+ self.assertDictEqual(dict(input_dict_3,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
+ 'parent-odu-allocation']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['parent-odu-allocation'])
+ self.assertIn(1, res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['parent-odu-allocation']
+ ['trib-slots'])
+
+ def test_079_check_interface_ODU2E_NETWORK2_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK2-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {'name': 'XPDR2-NETWORK2-ODU2e-service1-10GE',
+ 'administrative-state': 'inService',
+ 'supporting-circuit-pack-name': 'CP1-CFP0',
+ 'supporting-interface': 'XPDR2-NETWORK2-ODU4',
+ 'type': 'org-openroadm-interfaces:otnOdu',
+ 'supporting-port': 'CP1-CFP0-P1'}
+ input_dict_2 = {
+ 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
+ 'rate': 'org-openroadm-otn-common-types:ODU2e',
+ 'monitoring-mode': 'monitored'}
+ input_dict_3 = {'trib-port-number': 1}
+
+ self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
+ res['interface'][0])
+ self.assertDictEqual(dict(input_dict_2,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
+ self.assertDictEqual(dict(input_dict_3,
+ **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
+ 'parent-odu-allocation']),
+ res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['parent-odu-allocation'])
+ self.assertIn(1, res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['parent-odu-allocation']
+ ['trib-slots'])
+
+ def test_080_check_ODU2E_connection_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1",
+ "odu-connection/XPDR2-NETWORK1-ODU2e-service1-10GE-x-XPDR2-NETWORK2-ODU2e-service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ input_dict_1 = {
+ 'connection-name':
+ 'XPDR2-NETWORK1-ODU2e-service1-10GE-x-XPDR2-NETWORK2-ODU2e-service1-10GE',
+ 'direction': 'bidirectional'
+ }
+
+ self.assertDictEqual(dict(input_dict_1, **res['odu-connection'][0]),
+ res['odu-connection'][0])
+ self.assertDictEqual({'dst-if': 'XPDR2-NETWORK2-ODU2e-service1-10GE'},
+ res['odu-connection'][0]['destination'])
+ self.assertDictEqual({'src-if': 'XPDR2-NETWORK1-ODU2e-service1-10GE'},
+ res['odu-connection'][0]['source'])
+
+ def test_081_check_otn_topo_links(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nb_links = len(res['network'][0]['ietf-network-topology:link'])
+ self.assertEqual(nb_links, 8)
+ for link in res['network'][0]['ietf-network-topology:link']:
+ linkId = link['link-id']
+ if (linkId in ('ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SB1-XPDR2-XPDR2-NETWORK1',
+ 'ODTU4-SPDR-SB1-XPDR2-XPDR2-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1',
+ 'ODTU4-SPDR-SB1-XPDR2-XPDR2-NETWORK2toSPDR-SC1-XPDR1-XPDR1-NETWORK1',
+ 'ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SB1-XPDR2-XPDR2-NETWORK2',)):
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:available-bandwidth'], 90000)
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:used-bandwidth'], 10000)
+
+ def test_082_check_otn_topo_tp(self):
+ self.test_051_check_otn_topo_tp()
+
+ def test_083_delete_10GE_service(self):
+ response = test_utils.service_delete_request("service1-10GE")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Renderer service delete in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_084_check_service_list(self):
+ response = test_utils.get_service_list_request("")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(len(res['service-list']['services']), 4)
+ time.sleep(2)
+
+ def test_085_check_configuration_spdra(self):
+ self.test_054_check_no_ODU2e_connection_spdra()
+ self.test_055_check_no_interface_ODU2E_NETWORK_spdra()
+ self.test_056_check_no_interface_ODU2E_CLIENT_spdra()
+ self.test_057_check_no_interface_10GE_CLIENT_spdra()
+
+ def test_086_check_no_ODU2e_connection_spdrb(self):
+ response = test_utils.check_netconf_node_request("SPDR-SB1", "")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertNotIn(['odu-connection'][0], res['org-openroadm-device'])
+ time.sleep(1)
+
+ def test_087_check_no_interface_ODU2E_NETWORK1_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK1-ODU2e-service1")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_088_check_no_interface_ODU2E_NETWORK2_spdrb(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SB1", "interface/XPDR2-NETWORK2-ODU2e-service1")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_089_check_otn_topo_links(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nb_links = len(res['network'][0]['ietf-network-topology:link'])
+ self.assertEqual(nb_links, 8)
+ for link in res['network'][0]['ietf-network-topology:link']:
+ linkId = link['link-id']
+ if (linkId in ('ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SB1-XPDR2-XPDR2-NETWORK1',
+ 'ODTU4-SPDR-SB1-XPDR2-XPDR2-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1',
+ 'ODTU4-SPDR-SB1-XPDR2-XPDR2-NETWORK2toSPDR-SC1-XPDR1-XPDR1-NETWORK1',
+ 'ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SB1-XPDR2-XPDR2-NETWORK2',)):
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:available-bandwidth'], 100000)
+ self.assertEqual(
+ link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
+
+ def test_090_check_otn_topo_tp(self):
+ self.test_059_check_otn_topo_tp()
+
+ def test_091_delete_ODU4_service_AB(self):
+ response = test_utils.service_delete_request("service-ODU4-AB")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Renderer service delete in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_092_delete_ODU4_service_BC(self):
+ response = test_utils.service_delete_request("service-ODU4-BC")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Renderer service delete in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_093_check_global_config(self):
+ self.test_061_check_service_list()
+ self.test_062_check_no_interface_ODU4_spdra()
+ self.test_063_check_no_interface_ODU4_spdrb()
+ self.test_064_check_no_ODU4_connection_spdrb()
+ self.test_065_check_no_interface_ODU4_spdrc()
+ self.test_066_check_otn_topo_links()
+ self.test_067_check_otn_topo_tp()
+
+ def test_094_delete_OCH_OTU4_service_AB(self):
+ response = test_utils.service_delete_request("service-OCH-OTU4-AB")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Renderer service delete in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_095_delete_OCH_OTU4_service_BC(self):
+ response = test_utils.service_delete_request("service-OCH-OTU4-BC")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Renderer service delete in progress',
+ res['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_096_get_no_service(self):
+ response = test_utils.get_service_list_request("")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+ res = response.json()
+ self.assertIn(
+ {"error-type": "application", "error-tag": "data-missing",
+ "error-message": "Request could not be completed because the relevant data model content does not exist"},
+ res['errors']['error'])
+ time.sleep(1)
+
+ def test_097_check_no_interface_OTU4_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-OTU")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_098_check_no_interface_OCH_spdra(self):
+ response = test_utils.check_netconf_node_request(
+ "SPDR-SA1", "interface/XPDR1-NETWORK1-1")
+ self.assertEqual(response.status_code, requests.codes.conflict)
+
+ def test_099_getLinks_OtnTopology(self):
+ response = test_utils.get_otn_topo_request()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertNotIn('ietf-network-topology:link', res['network'][0])
+
+ def test_100_disconnect_xponders_from_roadm(self):
+ url = "{}/config/ietf-network:networks/network/openroadm-topology/ietf-network-topology:link/"
+ response = test_utils.get_ordm_topo_request("")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ links = res['network'][0]['ietf-network-topology:link']
+ for link in links:
+ if (link["org-openroadm-common-network:link-type"] == "XPONDER-OUTPUT" or
+ link["org-openroadm-common-network:link-type"] == "XPONDER-INPUT"):
+ link_name = link["link-id"]
+ response = test_utils.delete_request(url+link_name)
+ self.assertEqual(response.status_code, requests.codes.ok)
+
+ def test_101_check_openroadm_topology(self):
+ response = test_utils.get_ordm_topo_request("")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ links = res['network'][0]['ietf-network-topology:link']
+ self.assertEqual(28, len(links), 'Topology should contain 28 links')
+
+ def test_102_disconnect_spdrA(self):
+ response = test_utils.unmount_device("SPDR-SA1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_103_disconnect_spdrC(self):
+ response = test_utils.unmount_device("SPDR-SC1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_104_disconnect_spdrB(self):
+ response = test_utils.unmount_device("SPDR-SB1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_105_disconnect_roadmA(self):
+ response = test_utils.unmount_device("ROADM-A1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_106_disconnect_roadmB(self):
+ response = test_utils.unmount_device("ROADM-B1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_107_disconnect_roadmC(self):
+ response = test_utils.unmount_device("ROADM-C1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+
+if __name__ == "__main__":
+ unittest.main(verbosity=2)
return response
+def mount_tapi_device(node_id, sim):
+ url = URL_CONFIG_NETCONF_TOPO + "node/" + node_id
+ body = {"node": [{
+ "node-id": node_id,
+ "netconf-node-topology:username": NODES_LOGIN,
+ "netconf-node-topology:password": NODES_PWD,
+ "netconf-node-topology:host": "127.0.0.1",
+ "netconf-node-topology:port": SIMS[sim]['port'],
+ "netconf-node-topology:tcp-only": "false",
+ "netconf-node-topology:pass-through": {}}]}
+ response = put_request(url, body)
+ if wait_until_log_contains(TPCE_LOG, re.escape(f"TAPI node for or node {node_id} successfully merged"), 200):
+ print("Node " + node_id + " correctly added to tpce topology", end='... ', flush=True)
+ else:
+ print("Node " + node_id + " still not added to tpce topology", end='... ', flush=True)
+ if response.status_code == requests.codes.ok:
+ print("It was probably loaded at start-up", end='... ', flush=True)
+ # TODO an else-clause to abort test would probably be nice here
+ return response
+
+
def unmount_device(node_id):
url = URL_CONFIG_NETCONF_TOPO + "node/" + node_id
response = delete_request(url)
return post_request(url, data)
+def connect_xpdr_to_rdm_tapi_request(xpdr_node: str, xpdr_num: str, rdm_node: str, srg_num: str):
+ url = "{}/operations/transportpce-tapinetworkutils:init-xpdr-rdm-tapi-link"
+ data = {
+ "input": {
+ "xpdr-node": xpdr_node,
+ "network-tp": xpdr_num,
+ "rdm-node": rdm_node,
+ "add-drop-tp": srg_num
+ }
+ }
+ return post_request(url, data)
+
+
def check_netconf_node_request(node: str, suffix: str):
url = URL_CONFIG_NETCONF_TOPO + (
"node/" + node + "/yang-ext:mount/org-openroadm-device:org-openroadm-device/" + suffix
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
def test_01_connect_xpdra2(self):
response = test_utils.mount_device("XPDR-A2", ('xpdra2', self.NODE_VERSION_71))
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'L1'
}
- input_dict_2 = {'tx-sapi': 'LY9PxYJqUbw=',
- 'expected-dapi': 'LY9PxYJqUbw=',
+ input_dict_2 = {'tx-sapi': 'G54UFNImtOE=',
+ 'expected-dapi': 'G54UFNImtOE=',
+ 'tx-dapi': 'J/FIUzQc+4M=',
+ 'expected-sapi': 'J/FIUzQc+4M=',
'rate': 'org-openroadm-otn-common-types:OTUCn',
'degthr-percentage': 100,
'degm-intervals': 2,
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'L1'
}
- input_dict_2 = {'tx-dapi': 'LY9PxYJqUbw=',
- 'expected-sapi': 'LY9PxYJqUbw=',
- 'tx-sapi': 'Nmbu2MNHvc4=',
- 'expected-dapi': 'Nmbu2MNHvc4=',
+ input_dict_2 = {'tx-dapi': 'G54UFNImtOE=',
+ 'expected-sapi': 'G54UFNImtOE=',
+ 'tx-sapi': 'J/FIUzQc+4M=',
+ 'expected-dapi': 'J/FIUzQc+4M=',
'rate': 'org-openroadm-otn-common-types:OTUCn',
'degthr-percentage': 100,
'degm-intervals': 2,
links = res['network'][0]['ietf-network-topology:link']
self.assertEqual(22, len(links), 'Topology should contain 22 links')
- def test_68_connect_xprda2_2_N1_to_roadma_PP2(self):
+ def test_68_connect_xprda2_1_N1_to_roadma_PP2(self):
response = test_utils.connect_xpdr_to_rdm_request("XPDR-A2", "1", "1",
"ROADM-A1", "1", "SRG1-PP1-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_69_connect_roadma_PP2_to_xpdra2_2_N1(self):
+ def test_69_connect_roadma_PP2_to_xpdra2_1_N1(self):
response = test_utils.connect_rdm_to_xpdr_request("XPDR-A2", "1", "1",
"ROADM-A1", "1", "SRG1-PP1-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_70_connect_xprdc2_2_N1_to_roadmc_PP2(self):
+ def test_70_connect_xprdc2_1_N1_to_roadmc_PP2(self):
response = test_utils.connect_xpdr_to_rdm_request("XPDR-C2", "1", "1",
"ROADM-C1", "1", "SRG1-PP1-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
- def test_71_connect_roadmc_PP2_to_xpdrc2_2_N1(self):
+ def test_71_connect_roadmc_PP2_to_xpdrc2_1_N1(self):
response = test_utils.connect_rdm_to_xpdr_request("XPDR-C2", "1", "1",
"ROADM-C1", "1", "SRG1-PP1-TXRX")
self.assertEqual(response.status_code, requests.codes.ok)
res["output"]["result"])
time.sleep(2)
+
# test service-create for 400GE service from xpdra2 to xpdrc2
+
def test_72_create_400GE_service(self):
self.cr_serv_sample_data["input"]["service-name"] = "service-400GE"
self.cr_serv_sample_data["input"]["service-a-end"]["service-rate"] = "400"
- self.cr_serv_sample_data["input"]["service-a-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
- self.cr_serv_sample_data["input"]["service-a-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
self.cr_serv_sample_data["input"]["service-z-end"]["service-rate"] = "400"
- self.cr_serv_sample_data["input"]["service-z-end"]["tx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
- self.cr_serv_sample_data["input"]["service-z-end"]["rx-direction"]["port"]["port-name"] = "XPDR1-CLIENT1"
response = test_utils.service_create_request(self.cr_serv_sample_data)
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
['supporting-interface-list'][0]: 'XPDR1-NETWORK1-OTSI-GROUP',
'type': 'org-openroadm-interfaces:otnOtu',
'supporting-port': 'L1'}
- input_dict_2 = {"tx-sapi": "AIGiVAQ4gDil", "rate": "org-openroadm-otn-common-types:OTUCn",
+ input_dict_2 = {"tx-sapi": "ANeUjNzWtDLV",
+ "expected-dapi": "ANeUjNzWtDLV",
+ 'tx-dapi': 'AKsqPmWceByv',
+ 'expected-sapi': 'AKsqPmWceByv',
+ "rate": "org-openroadm-otn-common-types:OTUCn",
"degthr-percentage": 100,
"tim-detect-mode": "Disabled",
"otucn-n-rate": 4,
- "degm-intervals": 2,
- "expected-dapi": "AIGiVAQ4gDil"}
+ "degm-intervals": 2}
self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
res['interface'][0])
input_dict_1 = {'name': 'XPDR1-NETWORK1-ODUC4',
'administrative-state': 'inService',
'supporting-circuit-pack-name': '1/1/2-PLUG-NET',
- ['supporting-interface-list'][0]: 'XPDR1-NETWORK1-OTSI-GROUP',
+ ['supporting-interface-list'][0]: 'XPDR1-NETWORK1-OTUC4',
'type': 'org-openroadm-interfaces:otnOdu',
- 'supporting-port': 'L1'}
+ 'supporting-port': 'L1',
+ 'circuit-id': 'TBD',
+ 'description': 'TBD'}
input_dict_2 = {"odu-function": "org-openroadm-otn-common-types:ODU-TTP",
"tim-detect-mode": "Disabled",
"degm-intervals": 2,
self.assertDictEqual(dict(input_dict_3,
**res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu']),
res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
+ self.assertEqual('XPDR1-NETWORK1-OTUC4', res['interface'][0]['supporting-interface-list'][0])
def test_83_delete_400GE_service(self):
response = test_utils.service_delete_request("service-400GE")