--- /dev/null
+/*
+ * Copyright © 2020 Orange, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.pce.model;
+
+public class SpectrumAssignment {
+ /**
+ * Begin index for available spectrum assignment.
+ */
+ int beginIndex;
+
+ /**
+ * End index for available spectrum assignment.
+ */
+ int stopIndex;
+
+ /**
+ * True if spectrum assignement is for flexible grid, false otherwise (1.2.1 device).
+ */
+ boolean flexGrid;
+
+ public SpectrumAssignment(int beginIndex, int stopIndex) {
+ super();
+ this.beginIndex = beginIndex;
+ this.stopIndex = stopIndex;
+ }
+
+ /**
+ * Return the begin index of spectrum assignment.
+ * @return the beginIndex
+ */
+ public int getBeginIndex() {
+ return beginIndex;
+ }
+
+ /**
+ * Set the begin index of spectrum assignment.
+ * @param beginIndex the beginIndex to set
+ */
+ public void setBeginIndex(int beginIndex) {
+ this.beginIndex = beginIndex;
+ }
+
+ /**
+ * Return the end index of spectrum assignment.
+ * @return the stopIndex
+ */
+ public int getStopIndex() {
+ return stopIndex;
+ }
+
+ /**
+ * Set the stop index of spectrum assignment.
+ * @param stopIndex the stopIndex to set
+ */
+ public void setStopIndex(int stopIndex) {
+ this.stopIndex = stopIndex;
+ }
+
+ /**
+ * True if flexgrid false otherwise.
+ * @return the flexGrid
+ */
+ public boolean isFlexGrid() {
+ return flexGrid;
+ }
+
+ /**
+ * Set it to true for flexgrid, false otherwise.
+ * @param flexGrid the flexGrid to set
+ */
+ public void setFlexGrid(boolean flexGrid) {
+ this.flexGrid = flexGrid;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("SpectrumAssignment [beginIndex=").append(beginIndex).append(", stopIndex=").append(stopIndex)
+ .append(", flexGrid=").append(flexGrid).append("]");
+ return builder.toString();
+ }
+}
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.NetworkUtils;
import org.opendaylight.transportpce.common.ResponseCodes;
+import org.opendaylight.transportpce.common.mapping.MappingUtils;
+import org.opendaylight.transportpce.common.mapping.MappingUtilsImpl;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.pce.constraints.PceConstraints;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
NONE, HARD_EXCLUDE, HARD_INCLUDE, HARD_DIVERSITY, SOFT_EXCLUDE, SOFT_INCLUDE, SOFT_DIVERSITY;
}
+ private MappingUtils mappingUtils;
+
public PceCalculation(PathComputationRequestInput input, NetworkTransactionService networkTransactionService,
PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc) {
this.input = input;
this.returnStructure = rc;
this.pceHardConstraints = pceHardConstraints;
+ this.mappingUtils = new MappingUtilsImpl(networkTransactionService.getDataBroker());
parseInput();
}
private boolean validateNode(Node node) {
LOG.debug("validateNode: node {} ", node);
-
// PceNode will be used in Graph algorithm
Node1 node1 = node.augmentation(Node1.class);
if (node1 == null) {
return false;
}
OpenroadmNodeType nodeType = node1.getNodeType();
-
- PceOpticalNode pceNode = new PceOpticalNode(node, nodeType);
+ String deviceNodeId = MapUtils.getSupNetworkNode(node);
+ // Should never happen but because of existing topology test files
+ // we have to manage this case
+ if (deviceNodeId == null || deviceNodeId.isBlank()) {
+ deviceNodeId = node.getNodeId().getValue();
+ }
+ LOG.info("Device node id {} for {}", deviceNodeId, node);
+ PceOpticalNode pceNode = new PceOpticalNode(node, nodeType, mappingUtils.getOpenRoadmVersion(deviceNodeId));
pceNode.validateAZxponder(anodeId, znodeId, input.getServiceAEnd().getServiceFormat());
pceNode.initWLlist();
Map<String, List<Uint16>> getAvailableTribPorts();
Map<String, List<Uint16>> getAvailableTribSlots();
+
+ /**
+ * Get the version of node.
+ * @return the OpenROADM yang release supported by the node.
+ */
+ String getVersion();
}
private List<PceLink> outgoingLinks = new ArrayList<>();
private Map<String, String> clientPerNwTp = new HashMap<>();
private final AvailFreqMapsKey freqMapKey = new AvailFreqMapsKey(GridConstant.C_BAND);
+ private String version;
- public PceOpticalNode(Node node, OpenroadmNodeType nodeType) {
- if (node != null && node.getNodeId() != null && nodeType != null) {
+ public PceOpticalNode(Node node, OpenroadmNodeType nodeType, String version) {
+ if (node != null && node.getNodeId() != null && nodeType != null && version != null) {
this.node = node;
this.nodeId = node.getNodeId();
this.nodeType = nodeType;
+ this.version = version;
} else {
- LOG.error("PceNode: one of parameters is not populated : nodeId, node type");
+ LOG.error("PceNode: one of parameters is not populated : nodeId, node type, version");
this.valid = false;
}
}
wlIndex++;
}
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.opendaylight.transportpce.pce.networkanalyzer.PceNode#getVersion()
+ */
+ @Override
+ public String getVersion() {
+ return this.version;
+ }
}
public boolean checkWL(long index) {
return false;
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.opendaylight.transportpce.pce.networkanalyzer.PceNode#getVersion()
+ */
+ @Override
+ public String getVersion() {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
import org.opendaylight.transportpce.common.network.RequestProcessor;
import org.opendaylight.transportpce.pce.constraints.PceConstraints;
NodeBuilder node1Builder = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes());
node = node1Builder.setNodeId(new NodeId("test")).build();
PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.SRG);
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
PceOpticalNode pceOpticalNode2 = new PceOpticalNode(node,
- OpenroadmNodeType.SRG);
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
pceLink.setClient("XPONDER-CLIENT");
@Test
public void getIncludePceNodesTest() {
Assert.assertTrue(pceConstraints.getIncludePceNodes().size() == 0);
- pceConstraints.setIncludePceNode(new PceOpticalNode(null, null));
+ pceConstraints.setIncludePceNode(new PceOpticalNode(null, null, null));
Assert.assertTrue(pceConstraints.getIncludePceNodes().size() == 1);
}
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
import org.opendaylight.transportpce.pce.networkanalyzer.PceOpticalNode;
import org.opendaylight.transportpce.pce.utils.NodeUtils;
// Link link=genereateLinkBuilder();
node = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes()).build();
- PceOpticalNode pceOpticalNode = new PceOpticalNode(node, OpenroadmNodeType.SRG);
- PceOpticalNode pceOpticalNode2 = new PceOpticalNode(node, OpenroadmNodeType.SRG);
+ PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+ PceOpticalNode pceOpticalNode2 = new PceOpticalNode(node,
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
pceLink.setClient("XPONDER-CLIENT");
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.pce.constraints.PceConstraints;
import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
import org.opendaylight.transportpce.pce.networkanalyzer.PceNode;
node = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes())
.setNodeId(nodeId).withKey(new NodeKey(nodeId))
.build();
- pceOpticalNode = new PceOpticalNode(node, OpenroadmNodeType.DEGREE);
+ pceOpticalNode = new PceOpticalNode(node,
+ OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.checkWL(1);
pceOpticalNode.checkWL(2);
NodeId nodeId2 = new NodeId("OpenROADM-3-1-DEG1");
Node node2 = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes())
.setNodeId(nodeId2).withKey(new NodeKey(nodeId2)).build();
- pceOpticalNode2 = new PceOpticalNode(node2, OpenroadmNodeType.DEGREE);
+ pceOpticalNode2 = new PceOpticalNode(node2,
+ OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode2.checkWL(1);
pceOpticalNode2.checkWL(2);
pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.test.AbstractTest;
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.Link1Builder;
"srcTp", "destTp").build();
NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
Node node = node1Builder.setNodeId(new NodeId("test")).build();
- PceOpticalNode pceOpticalNode = new PceOpticalNode(node, OpenroadmNodeType.SRG);
+ PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
}
NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
Node node = node1Builder.setNodeId(new NodeId("test")).build();
- PceOpticalNode pceOpticalNode = new PceOpticalNode(node, OpenroadmNodeType.SRG);
+ PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
}
NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
Node node = node1Builder.setNodeId(new NodeId("test")).build();
PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.SRG);
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
}
NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
Node node = node1Builder.setNodeId(new NodeId("test")).build();
PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.SRG);
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
}
NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
Node node = node1Builder.setNodeId(new NodeId("test")).build();
PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.SRG);
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
Assert.assertNotNull(MapUtils.getOmsAttributesSpan(link));
Assert.assertNotNull(pceLink.calcSpanOSNR());
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.fixedflex.GridConstant;
import org.opendaylight.transportpce.common.fixedflex.GridUtils;
import org.opendaylight.transportpce.test.AbstractTest;
@Test
public void isValidTest() {
OpenroadmNodeType nodeType = OpenroadmNodeType.ROADM;
- pceOpticalNode = new PceOpticalNode(node, nodeType);
+ pceOpticalNode = new PceOpticalNode(node, nodeType, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
Assert.assertTrue(pceOpticalNode.isValid());
}
public void testInitSrgTps() {
pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.ROADM);
+ OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initSrgTps();
pceOpticalNode.initXndrTps(ServiceFormat.OMS);
pceOpticalNode.initWLlist();
NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERNETWORK);
Node specificNode = node1Builder.build();
pceOpticalNode = new PceOpticalNode(specificNode,
- OpenroadmNodeType.SRG);
+ OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initWLlist();
Assert.assertTrue(pceOpticalNode.isValid());
Assert.assertTrue(pceOpticalNode.checkWL(12));
@Test
public void testInitXndrTpDegTypes() {
pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.DEGREE);
+ OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initWLlist();
Assert.assertTrue(pceOpticalNode.isValid());
Assert.assertFalse(pceOpticalNode.checkWL(12));
@Test
public void testInitXndrTpXpondrTypes() {
pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.XPONDER);
+ OpenroadmNodeType.XPONDER, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initWLlist();
Assert.assertTrue(pceOpticalNode.isValid());
Assert.assertTrue(pceOpticalNode.checkWL(12));
@Test
public void testInitWLlist() {
pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.ROADM);
+ OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initXndrTps(ServiceFormat.OMS);
pceOpticalNode.initWLlist();
Assert.assertFalse(pceOpticalNode.isValid());
@Test
public void testGetRdmSrgClient() {
pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.ROADM);
+ OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initSrgTps();
Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
Assert.assertFalse(pceOpticalNode.isValid());
NodeBuilder node1Builder = getNodeBuilderEmpty(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
Node specificNode = node1Builder.setNodeId(new NodeId("test")).build();
pceOpticalNode = new PceOpticalNode(specificNode,
- OpenroadmNodeType.ROADM);
+ OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initSrgTps();
pceOpticalNode.initWLlist();
pceOpticalNode.initXndrTps(ServiceFormat.OMS);
@Test
public void testGetRdmSrgClientDeg() {
pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.DEGREE);
+ OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initSrgTps();
Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
Assert.assertFalse(pceOpticalNode.isValid());
NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXCP);
Node specificNode = node1Builder.build();
pceOpticalNode = new PceOpticalNode(specificNode,
- OpenroadmNodeType.ROADM);
+ OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initSrgTps();
Assert.assertFalse(pceOpticalNode.isValid());
Assert.assertFalse(pceOpticalNode.checkWL(12));
NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.DEGREERXTTP);
node = node1Builder.build();
pceOpticalNode = new PceOpticalNode(node,
- OpenroadmNodeType.ROADM);
+ OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
pceOpticalNode.initSrgTps();
Assert.assertNull(pceOpticalNode.getRdmSrgClient("2"));
Assert.assertFalse(pceOpticalNode.isValid());
--- /dev/null
+{
+ "nodes": [
+ {
+ "node-id": "XPONDER-1",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-2",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-3",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-4",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-5",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-1",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-2",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-3",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-4",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-5",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null
+{
+ "nodes": [
+ {
+ "node-id": "OpenROADM-1-1",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-1-1",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-1-2",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-1-2",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-1-3",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-1-3",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-1-4",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-1-4",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-2-1",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-2-1",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-2-2",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-2-2",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-2-3",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-2-3",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-2-4",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-2-4",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-3-1",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-3-1",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-3-2",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-3-2",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-3-3",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-3-3",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-3-4",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-3-4",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-4-1",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-4-1",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-4-2",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-4-2",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-4-3",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-4-3",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-4-4",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-4-4",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-5-1",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-5-1",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-5-2",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-5-2",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-5-3",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-5-3",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "OpenROADM-5-4",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER-5-4",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPDRC01",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "ROADMA01",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "ROADMC01",
+ "node-info": {
+ "node-type": "rdm",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPDRA01",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ },
+ {
+ "node-id": "XPONDER",
+ "node-info": {
+ "node-type": "xpdr",
+ "openroadm-version": "1.2.1",
+ "node-clli": "NodeX",
+ "node-vendor": "vendorA",
+ "node-model": "model1",
+ "node-ip-address": "1.2.3.4"
+ },
+ "mapping": [],
+ "mc-capabilities": [],
+ "cp-to-degree": [],
+ "switching-pool-lcp": []
+ }
+ ]
+}
\ No newline at end of file
topo_cllinet_data = None
topo_ordnet_data = None
topo_ordtopo_data = None
+ port_mapping_data = None
processes = None
@classmethod
"..", "..", "sample_configs", "gnpy", "openroadmTopology.json")
with open(TOPO_ORDTOPO_FILE, 'r') as topo_ordtopo:
cls.topo_ordtopo_data = topo_ordtopo.read()
+ PORT_MAPPING_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)),
+ "..", "..", "sample_configs", "gnpy", "gnpy_portmapping_121.json")
+ with open(PORT_MAPPING_FILE, 'r') as port_mapping:
+ cls.port_mapping_data = port_mapping.read()
sample_files_parsed = True
except PermissionError as err:
print("Permission Error when trying to read sample files\n", err)
def setUp(self):
time.sleep(2)
+ # Load port mapping
+ def test_00_load_port_mapping(self):
+ response = test_utils.rawpost_request(test_utils.URL_FULL_PORTMAPPING, self.port_mapping_data)
+ self.assertEqual(response.status_code, requests.codes.no_content)
+ time.sleep(2)
+
# Mount the different topologies
def test_01_connect_clliNetwork(self):
response = test_utils.rawput_request(test_utils.URL_CONFIG_CLLI_NET, self.topo_cllinet_data)
self.assertEqual(response.status_code, requests.codes.ok)
time.sleep(3)
+ # Delete portmapping
+ def test_11_delete_port_mapping(self):
+ response = test_utils.delete_request(test_utils.URL_FULL_PORTMAPPING)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
if __name__ == "__main__":
# logging.basicConfig(filename='./transportpce_tests/log/response.log',filemode='w',level=logging.DEBUG)
simple_topo_bi_dir_data = None
simple_topo_uni_dir_data = None
complex_topo_uni_dir_data = None
+ port_mapping_data = None
processes = None
@classmethod
"..", "..", "sample_configs", "NW-for-test-5-4.xml")
with open(TOPO_UNI_DIR_COMPLEX_FILE, 'r') as topo_uni_dir_complex:
cls.complex_topo_uni_dir_data = topo_uni_dir_complex.read()
+ PORT_MAPPING_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)),
+ "..", "..", "sample_configs", "pce_portmapping_121.json")
+ with open(PORT_MAPPING_FILE, 'r') as port_mapping:
+ cls.port_mapping_data = port_mapping.read()
sample_files_parsed = True
except PermissionError as err:
print("Permission Error when trying to read sample files\n", err)
def setUp(self): # instruction executed before each test method
time.sleep(1)
+ # Load port mapping
+ def test_00_load_port_mapping(self):
+ response = test_utils.rawpost_request(test_utils.URL_FULL_PORTMAPPING, self.port_mapping_data)
+ self.assertEqual(response.status_code, requests.codes.no_content)
+ time.sleep(2)
+
# Load simple bidirectional topology
def test_01_load_simple_topology_bi(self):
response = test_utils.put_xmlrequest(test_utils.URL_CONFIG_ORDM_TOPO, self.simple_topo_bi_dir_data)
self.assertEqual(response.status_code, requests.codes.conflict)
time.sleep(1)
+ # Delete portmapping
+ def test_26_delete_port_mapping(self):
+ response = test_utils.delete_request(test_utils.URL_FULL_PORTMAPPING)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
if __name__ == "__main__":
unittest.main(verbosity=2)
URL_OTN_SERVICE_PATH = "{}/operations/transportpce-device-renderer:otn-service-path"
URL_CREATE_OTS_OMS = "{}/operations/transportpce-device-renderer:create-ots-oms"
URL_PATH_COMPUTATION_REQUEST = "{}/operations/transportpce-pce:path-computation-request"
+URL_FULL_PORTMAPPING = "{}/config/transportpce-portmapping:network"
TYPE_APPLICATION_JSON = {'Content-Type': 'application/json', 'Accept': 'application/json'}
TYPE_APPLICATION_XML = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}
headers=TYPE_APPLICATION_JSON,
auth=(ODL_LOGIN, ODL_PWD))
+def rawpost_request(url, data):
+ return requests.request(
+ "POST", url.format(RESTCONF_BASE_URL),
+ data=data,
+ headers=TYPE_APPLICATION_JSON,
+ auth=(ODL_LOGIN, ODL_PWD))
+
def delete_request(url):
return requests.request(