+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4">
- <component name="MavenCustomPomFilePath">
- <option name="mavenPomFileUrl" value="file://$MODULE_DIR$/deploy-site.xml" />
- </component>
-</module>
\ No newline at end of file
}
// 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.optical.channel.interfaces.rev161014.Interface1Builder
- ochIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014
- .Interface1Builder();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014
+ .Interface1Builder ochIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel
+ .interfaces.rev161014.Interface1Builder();
ochInterfaceBldr.addAugmentation(
org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.Interface1.class,
ochIf1Builder.setOch(ocIfBuilder.build()).build());
// 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.optical.channel.interfaces.rev161014.Interface1Builder
- ochIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces
- .rev161014.Interface1Builder();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014
+ .Interface1Builder ochIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel
+ .interfaces.rev161014.Interface1Builder();
// Create generic interface
InterfaceBuilder ochInterfaceBldr = createGenericInterfaceBuilder(portMap, OpticalChannel.class,
createOpenRoadmOchInterfaceName(logicalConnPoint, waveNumber));
// Create Interface1 type object required for adding as
// augmentation
org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014
- .Interface1Builder otsIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.optical
- .transport.interfaces.rev161014.Interface1Builder();
+ .Interface1Builder otsIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport
+ .interfaces.rev161014.Interface1Builder();
otsInterfaceBldr.addAugmentation(
org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.Interface1.class,
otsIf1Builder.setOts(otsIfBuilder.build()).build());
nodeListBuilder.withKey(new NodelistKey(input.getServiceName()));
nodeListBuilder.setServiceName(input.getServiceName());
List<
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.service.nodelist
- .nodelist.Nodes> nodeList = new ArrayList<>();
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.service
+ .nodelist.nodelist.Nodes> nodeList = new ArrayList<>();
for (Nodes node : input.getNodes()) {
nodeList.add(
- new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.service
- .nodelist.nodelist.NodesBuilder().setNodeId(node.getNodeId()).build());
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102
+ .service.nodelist.nodelist.NodesBuilder().setNodeId(node.getNodeId()).build());
}
nodeListBuilder.setNodes(nodeList);
InstanceIdentifier<
private boolean alarmSuppressionNodeRemoval(String serviceName) {
InstanceIdentifier<
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.service
- .nodelist.Nodelist> nodeListIID = InstanceIdentifier.create(ServiceNodelist.class).child(
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102
- .service.nodelist.Nodelist.class, new NodelistKey(serviceName));
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.service.nodelist
+ .Nodelist> nodeListIID = InstanceIdentifier.create(ServiceNodelist.class).child(org.opendaylight.yang
+ .gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.service.nodelist
+ .Nodelist.class, new NodelistKey(serviceName));
final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction();
writeTransaction.delete(LogicalDatastoreType.CONFIGURATION, nodeListIID);
Future<Void> submit = writeTransaction.submit();
try {
return RpcResultBuilder.success(deviceRenderer.createOtsOms(input)).buildFuture();
} catch (OpenRoadmInterfaceException e) {
- LOG.error("failed to create oms and ots interfaces on {}: {}", input.getNodeId(), input
- .getLogicalConnectionPoint(),e);
+ LOG.error("failed to send request to create oms and ots interfaces on {}: {}", input.getNodeId(),
+ input.getLogicalConnectionPoint(),e);
}
return null;
}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
+import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.renderer.stub.MountPointStub;
+import org.opendaylight.transportpce.renderer.utils.ServiceDeleteDataUtils;
+import org.opendaylight.transportpce.renderer.utils.WaveLengthServiceUtils;
+import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev170929.degree.used.wavelengths.UsedWavelengthsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.TerminationPoint1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.DegreeAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.SrgAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.CpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.CtpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.PpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.RxTtpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.TxTtpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.XpdrClientAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.XpdrNetworkAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.XpdrPortAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.pp.attributes.UsedWavelengthBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev170929.OpenroadmNodeType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev170929.OpenroadmTpType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev170929.xpdr.port.connection.attributes.WavelengthBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.PathDescription;
+
+@RunWith(Parameterized.class)
+public class NetworkModelWaveLengthServiceFreeTest extends AbstractTest {
+
+ private static final Long WAVE_LENGTH = 20L;
+ private NetworkModelWavelengthService networkModelWavelengthService;
+ private DeviceTransactionManager deviceTransactionManager;
+ private TerminationPoint1 terminationPoint1;
+ private PathDescription pathDescription;
+ private Node1 node1;
+
+ public NetworkModelWaveLengthServiceFreeTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
+ Node1 node1) {
+ this.pathDescription = pathDescription;
+ this.terminationPoint1 = terminationPoint1;
+ this.node1 = node1;
+ }
+
+ @Parameterized.Parameters
+ public static Collection primeNumbers() {
+ List<Object[]> parameters = new ArrayList<>();
+
+ PathDescription pathDescription =
+ ServiceDeleteDataUtils.createTransactionPathDescription(OpenRoadmInterfacesImpl.TTP_TOKEN);
+
+ TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder();
+ terminationPoint1Builder.setCtpAttributes((new CtpAttributesBuilder()).setUsedWavelengths(Collections
+ .singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build())).build());
+ terminationPoint1Builder.setCpAttributes((new CpAttributesBuilder()).setUsedWavelengths(Collections
+ .singletonList((new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network
+ .node.termination.point.cp.attributes.UsedWavelengthsBuilder())
+ .setIndex(WAVE_LENGTH).build())).build());
+ terminationPoint1Builder.setTxTtpAttributes((new TxTtpAttributesBuilder()).setUsedWavelengths(Collections
+ .singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build())).build());
+ terminationPoint1Builder.setRxTtpAttributes((new RxTtpAttributesBuilder()).setUsedWavelengths(Collections
+ .singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build())).build());
+ terminationPoint1Builder.setPpAttributes((new PpAttributesBuilder()).setUsedWavelength(Collections
+ .singletonList((new UsedWavelengthBuilder()).setIndex(WAVE_LENGTH).build())).build());
+ terminationPoint1Builder.setXpdrClientAttributes((new XpdrClientAttributesBuilder())
+ .setWavelength((new WavelengthBuilder()).setIndex(WAVE_LENGTH).build()).build());
+ terminationPoint1Builder.setXpdrNetworkAttributes((new XpdrNetworkAttributesBuilder())
+ .setWavelength((new WavelengthBuilder()).setIndex(WAVE_LENGTH).build()).build());
+ terminationPoint1Builder.setXpdrPortAttributes((new XpdrPortAttributesBuilder())
+ .setWavelength((new WavelengthBuilder()).setIndex(WAVE_LENGTH).build()).build());
+
+ Node1Builder node1Builder = new Node1Builder();
+ node1Builder.setDegreeAttributes((new DegreeAttributesBuilder()).setAvailableWavelengths(new ArrayList<>())
+ .build());
+ node1Builder.setSrgAttributes((new SrgAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build());
+
+ for (OpenroadmNodeType nodeType : Arrays.asList(OpenroadmNodeType.XPONDER, OpenroadmNodeType.DEGREE,
+ OpenroadmNodeType.SRG)) {
+ node1Builder.setNodeType(nodeType);
+ terminationPoint1Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
+ parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build() });
+ }
+
+ for (OpenroadmTpType tpType : OpenroadmTpType.values()) {
+ node1Builder.setNodeType(OpenroadmNodeType.DEGREE);
+ node1Builder.setDegreeAttributes(null);
+ terminationPoint1Builder.setTpType(tpType);
+ parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build() });
+ }
+
+ node1Builder.setNodeType(OpenroadmNodeType.SRG);
+ node1Builder.setDegreeAttributes((new DegreeAttributesBuilder()).setAvailableWavelengths(new ArrayList<>())
+ .build());
+ node1Builder.setSrgAttributes(null);
+ terminationPoint1Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
+ parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build() });
+
+ return parameters;
+ }
+
+ @Before
+ public void setMountPoint() {
+ MountPointService mountPointService = new MountPointServiceStub(new MountPointStub(this.getDataBroker()));
+ this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
+ networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(this.getDataBroker());
+ }
+
+ @Test
+ public void freeWavelengthsTest() throws ExecutionException, InterruptedException {
+ WaveLengthServiceUtils.putTerminationPoint1ToDatastore("node1", "node1-" + OpenRoadmInterfacesImpl.TTP_TOKEN,
+ this.terminationPoint1, this.deviceTransactionManager);
+ WaveLengthServiceUtils.putNode1ToDatastore("node1", this.node1, this.deviceTransactionManager);
+ this.networkModelWavelengthService.freeWavelengths(this.pathDescription);
+ Node1 updatedNode1 = WaveLengthServiceUtils.getNode1FromDatastore("node1", this.deviceTransactionManager);
+ TerminationPoint1 updatedTerminationPoint1 = WaveLengthServiceUtils.getTerminationPoint1FromDatastore("node1",
+ "node1-" + OpenRoadmInterfacesImpl.TTP_TOKEN, this.deviceTransactionManager);
+ switch (updatedTerminationPoint1.getTpType()) {
+ case DEGREETXRXCTP:
+ case DEGREETXCTP:
+ case DEGREERXCTP:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case SRGTXCP:
+ case SRGRXCP:
+ case SRGTXRXCP:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case DEGREETXRXTTP:
+ case DEGREETXTTP:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case DEGREERXTTP:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case SRGRXPP:
+ case SRGTXPP:
+ case SRGTXRXPP:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case XPONDERCLIENT:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case XPONDERNETWORK:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case XPONDERPORT:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes());
+ break;
+ default:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ }
+ switch (updatedNode1.getNodeType()) {
+ case DEGREE:
+ Assert.assertEquals(1, updatedNode1.getDegreeAttributes().getAvailableWavelengths().size());
+ Assert.assertEquals(WAVE_LENGTH,
+ updatedNode1.getDegreeAttributes().getAvailableWavelengths().get(0).getIndex());
+ Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
+ break;
+ case SRG:
+ Assert.assertEquals(1, updatedNode1.getSrgAttributes().getAvailableWavelengths().size());
+ Assert.assertEquals(WAVE_LENGTH,
+ updatedNode1.getSrgAttributes().getAvailableWavelengths().get(0).getIndex());
+ Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
+ break;
+ default:
+ Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
+ Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
+ break;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
+import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.renderer.stub.MountPointStub;
+import org.opendaylight.transportpce.renderer.utils.ServiceDeleteDataUtils;
+import org.opendaylight.transportpce.renderer.utils.WaveLengthServiceUtils;
+import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev170929.degree.node.attributes.AvailableWavelengthsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.TerminationPoint1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.DegreeAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.SrgAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.CpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.CtpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.PpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.RxTtpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.TxTtpAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.XpdrClientAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.XpdrNetworkAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.node.termination.point.XpdrPortAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev170929.OpenroadmNodeType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev170929.OpenroadmTpType;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.PathDescription;
+
+@RunWith(Parameterized.class)
+public class NetworkModelWaveLengthServiceUseTest extends AbstractTest {
+
+ private NetworkModelWavelengthService networkModelWavelengthService;
+ private DeviceTransactionManager deviceTransactionManager;
+
+ private TerminationPoint1 terminationPoint1;
+ private PathDescription pathDescription;
+ private Node1 node1;
+
+ @Before
+ public void setMountPoint() {
+ MountPointService mountPointService = new MountPointServiceStub(new MountPointStub(this.getDataBroker()));
+ this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
+ networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(this.getDataBroker());
+ }
+
+ public NetworkModelWaveLengthServiceUseTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
+ Node1 node1) {
+ this.pathDescription = pathDescription;
+ this.terminationPoint1 = terminationPoint1;
+ this.node1 = node1;
+ }
+
+ @Parameterized.Parameters
+ public static Collection primeNumbers() {
+ List<Object[]> parameters = new ArrayList<>();
+
+ PathDescription pathDescription =
+ ServiceDeleteDataUtils.createTransactionPathDescription(OpenRoadmInterfacesImpl.TTP_TOKEN);
+
+ TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder();
+ terminationPoint1Builder
+ .setCtpAttributes((new CtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build());
+ terminationPoint1Builder
+ .setCpAttributes((new CpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build());
+ terminationPoint1Builder
+ .setTxTtpAttributes((new TxTtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build());
+ terminationPoint1Builder
+ .setRxTtpAttributes((new RxTtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build());
+ terminationPoint1Builder.setPpAttributes((new PpAttributesBuilder()).setUsedWavelength(new ArrayList<>())
+ .build());
+ terminationPoint1Builder.setXpdrClientAttributes((new XpdrClientAttributesBuilder()).build());
+ terminationPoint1Builder.setXpdrNetworkAttributes((new XpdrNetworkAttributesBuilder()).build());
+ terminationPoint1Builder.setXpdrPortAttributes((new XpdrPortAttributesBuilder()).build());
+
+ Node1Builder node1Builder = new Node1Builder();
+ node1Builder.setDegreeAttributes((new DegreeAttributesBuilder())
+ .setAvailableWavelengths(Collections.singletonList(new AvailableWavelengthsBuilder().setIndex(20L).build()))
+ .build());
+ node1Builder.setSrgAttributes((new SrgAttributesBuilder()).setAvailableWavelengths(Collections.singletonList(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev170929.srg.node.attributes
+ .AvailableWavelengthsBuilder().setIndex(20L).build())).build());
+
+ for (OpenroadmNodeType nodeType : Arrays
+ .asList(OpenroadmNodeType.XPONDER, OpenroadmNodeType.DEGREE, OpenroadmNodeType.SRG)) {
+ node1Builder.setNodeType(nodeType);
+ terminationPoint1Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
+ parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build() });
+ }
+
+ for (OpenroadmTpType tpType : OpenroadmTpType.values()) {
+ node1Builder.setNodeType(OpenroadmNodeType.DEGREE);
+ terminationPoint1Builder.setTpType(tpType);
+ parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build() });
+ }
+
+ return parameters;
+ }
+
+ @Test
+ public void freeWavelengthsTest() throws ExecutionException, InterruptedException {
+ WaveLengthServiceUtils
+ .putTerminationPoint1ToDatastore("node1", "node1-" + OpenRoadmInterfacesImpl.TTP_TOKEN,
+ this.terminationPoint1, this.deviceTransactionManager);
+ WaveLengthServiceUtils.putNode1ToDatastore("node1", this.node1, this.deviceTransactionManager);
+ this.networkModelWavelengthService.useWavelengths(this.pathDescription);
+ Node1 updatedNode1 = WaveLengthServiceUtils.getNode1FromDatastore("node1", this.deviceTransactionManager);
+ TerminationPoint1 updatedTerminationPoint1 = WaveLengthServiceUtils
+ .getTerminationPoint1FromDatastore("node1", "node1-" + OpenRoadmInterfacesImpl.TTP_TOKEN,
+ this.deviceTransactionManager);
+
+ switch (updatedTerminationPoint1.getTpType()) {
+ case DEGREETXRXCTP:
+ case DEGREETXCTP:
+ case DEGREERXCTP:
+ Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case SRGTXCP:
+ case SRGRXCP:
+ case SRGTXRXCP:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case DEGREETXRXTTP:
+ case DEGREETXTTP:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case DEGREERXTTP:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case SRGRXPP:
+ case SRGTXPP:
+ case SRGTXRXPP:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case XPONDERCLIENT:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case XPONDERNETWORK:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ case XPONDERPORT:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes());
+ break;
+ default:
+ Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
+ Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
+ Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
+ break;
+ }
+ switch (updatedNode1.getNodeType()) {
+ case DEGREE:
+ Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
+ Assert.assertFalse(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
+ break;
+ case SRG:
+ Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
+ Assert.assertFalse(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
+ break;
+ default:
+ Assert.assertFalse(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
+ Assert.assertFalse(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
+ break;
+ }
+
+ }
+}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer;
+
+import java.util.Arrays;
+import java.util.Collection;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class NodeIdPairTest {
+
+ private NodeIdPair firstPair;
+ private Object secondPair;
+ private boolean equality;
+
+ public NodeIdPairTest(NodeIdPair firstPair, Object secondPair, boolean equality) {
+ this.firstPair = firstPair;
+ this.secondPair = secondPair;
+ this.equality = equality;
+ }
+
+ @Parameterized.Parameters
+ public static Collection primeNumbers() {
+ NodeIdPair same = new NodeIdPair("nodeS", "CLIENT");
+ return Arrays.asList(new Object[][] {
+ { new NodeIdPair("",""), null, false },
+ { new NodeIdPair("",""), "", false },
+ { new NodeIdPair("node1","PP"), new NodeIdPair("node2","PP"), false },
+ { new NodeIdPair("node1","PP"), new NodeIdPair("node1","TTP"), false },
+ { new NodeIdPair(null,"PP"), new NodeIdPair(null,"TTP"), false },
+ { new NodeIdPair(null,"PP"), new NodeIdPair("node2","TTP"), false },
+ { new NodeIdPair("node1",null), new NodeIdPair("node1","NETWORK"), false },
+ { new NodeIdPair("node1",null), new NodeIdPair("node1",null), true },
+ { new NodeIdPair("node1","TTP"), new NodeIdPair("node1","TTP"), true },
+ { new NodeIdPair(null,null), new NodeIdPair(null,null), true },
+ {same, same, true}
+ });
+ }
+
+ @Test
+ public void equalityTest() {
+ Assert.assertEquals(this.equality, firstPair.equals(this.secondPair));
+ if (this.secondPair != null && this.firstPair.getClass().equals(this.secondPair.getClass())) {
+ Assert.assertEquals(this.equality, this.firstPair.hashCode() == this.secondPair.hashCode());
+ }
+ }
+
+}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer.provisiondevice;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.opendaylight.controller.md.sal.binding.api.MountPoint;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
+import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
+import org.opendaylight.transportpce.common.mapping.PortMappingImpl;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
+import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
+import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.renderer.utils.MountPointUtils;
+import org.opendaylight.transportpce.renderer.utils.ServiceImplementationDataUtils;
+import org.opendaylight.transportpce.renderer.utils.TransactionUtils;
+import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.connection.DestinationBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.connection.SourceBuilder;
+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.RoadmConnections;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathOutput;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+public class DeviceRendererServiceImplDeleteTest extends AbstractTest {
+
+ private DeviceRendererService deviceRendererService;
+ private CrossConnect crossConnect;
+ private OpenRoadmInterfaces openRoadmInterfaces;
+ private OpenRoadmInterfaceFactory openRoadmInterfaceFactory;
+ private DeviceTransactionManager deviceTransactionManager;
+
+ private void setMountPoint(MountPoint mountPoint) {
+ MountPointService mountPointService = new MountPointServiceStub(mountPoint);
+ this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
+ this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(this.deviceTransactionManager);
+ this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
+ PortMapping portMapping = new PortMappingImpl(this.getDataBroker(), this.deviceTransactionManager,
+ this.openRoadmInterfaces);
+ this.openRoadmInterfaceFactory = new OpenRoadmInterfaceFactory(portMapping,
+ this.openRoadmInterfaces);
+ this.crossConnect = new CrossConnectImpl(this.deviceTransactionManager);
+ this.crossConnect = Mockito.spy(this.crossConnect);
+ this.deviceRendererService = new DeviceRendererServiceImpl(this.getDataBroker(),
+ this.deviceTransactionManager, this.openRoadmInterfaceFactory, this.openRoadmInterfaces,
+ this.crossConnect, portMapping);
+ }
+
+ @Test
+ public void testSetupServiceWhenDeviceIsNotMounted() {
+ setMountPoint(null);
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs();
+ ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
+ Assert.assertFalse(servicePathOutput.isSuccess());
+ Assert.assertEquals("node1 is not mounted on the controller",
+ servicePathOutput.getResult());
+ }
+
+ @Test
+ public void testDeleteServiceSuccess() throws OpenRoadmInterfaceException {
+ setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
+ String [] interfaceTokens = {
+ OpenRoadmInterfacesImpl.NETWORK_TOKEN,
+ OpenRoadmInterfacesImpl.CLIENT_TOKEN,
+ OpenRoadmInterfacesImpl.TTP_TOKEN,
+ OpenRoadmInterfacesImpl.PP_TOKEN
+ };
+
+ String nodeId = "node1";
+ Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
+ Mockito.doNothing().when(this.openRoadmInterfaces).deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
+
+ for (String srcToken : interfaceTokens) {
+ String srcTP = "src-" + srcToken;
+ for (String dstToken : interfaceTokens) {
+ String dstTp = "dst-" + dstToken;
+
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
+
+ ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
+ Assert.assertTrue(servicePathOutput.isSuccess());
+ Assert.assertEquals("Request processed", servicePathOutput.getResult());
+ }
+ }
+ }
+
+ @Test
+ public void testDeleteServiceFailure() throws OpenRoadmInterfaceException {
+ setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
+ String [] interfaceTokens = {
+ OpenRoadmInterfacesImpl.NETWORK_TOKEN,
+ OpenRoadmInterfacesImpl.CLIENT_TOKEN,
+ OpenRoadmInterfacesImpl.TTP_TOKEN,
+ OpenRoadmInterfacesImpl.PP_TOKEN
+ };
+
+ String nodeId = "node1";
+ Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
+ Mockito.doThrow(OpenRoadmInterfaceException.class).when(this.openRoadmInterfaces)
+ .deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
+
+ for (String srcToken : interfaceTokens) {
+ String srcTP = "src-" + srcToken;
+ for (String dstToken : interfaceTokens) {
+ String dstTp = "dst-" + dstToken;
+
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
+
+ ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
+ Assert.assertFalse(servicePathOutput.isSuccess());
+ Assert.assertNotEquals("Request processed", servicePathOutput.getResult());
+ }
+ }
+ }
+
+ @Test
+ public void testDeleteServiceNulls() throws OpenRoadmInterfaceException {
+ setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
+
+ String nodeId = "node1";
+ Mockito.doReturn(false).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
+ Mockito.doThrow(OpenRoadmInterfaceException.class).when(this.openRoadmInterfaces)
+ .deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
+
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, null, null));
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, "src-" + OpenRoadmInterfacesImpl.PP_TOKEN, null));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
+
+ ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
+ Assert.assertTrue(servicePathOutput.isSuccess());
+ Assert.assertEquals("Request processed", servicePathOutput.getResult());
+ }
+
+ @Test
+ public void testDeleteServiceFailedCrossConnect() throws OpenRoadmInterfaceException {
+ setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
+
+ String nodeId = "node1";
+
+ Mockito.doReturn(false).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
+ Mockito.doNothing().when(this.openRoadmInterfaces).deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
+
+ String srcTP = "src-" + OpenRoadmInterfacesImpl.TTP_TOKEN;
+ String dstTp = "dst-" + OpenRoadmInterfacesImpl.PP_TOKEN;
+
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
+
+ ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
+ Assert.assertTrue(servicePathOutput.isSuccess());
+ Assert.assertEquals("Request processed", servicePathOutput.getResult());
+ }
+
+ @Test
+ public void testDeleteServiceInterfacesUsedByXc() throws OpenRoadmInterfaceException, ExecutionException,
+ InterruptedException {
+ setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
+
+ String nodeId = "node1";
+
+ Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
+ Mockito.doThrow(OpenRoadmInterfaceException.class).when(this.openRoadmInterfaces)
+ .deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
+
+ String srcTp = "src-" + OpenRoadmInterfacesImpl.PP_TOKEN;
+ String dstTp = "dst-" + OpenRoadmInterfacesImpl.TTP_TOKEN;
+ Long waveNumber = 20L;
+
+ String connectionNumber = dstTp + "-" + srcTp + "-" + waveNumber;
+ RoadmConnectionsBuilder roadmConnectionsBuilder = new RoadmConnectionsBuilder();
+ roadmConnectionsBuilder.setConnectionNumber(connectionNumber)
+ .withKey(new RoadmConnectionsKey(connectionNumber));
+ String interfaceName = this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(srcTp, waveNumber);
+ roadmConnectionsBuilder.setSource((new SourceBuilder()).setSrcIf(interfaceName).build());
+ interfaceName = this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(dstTp, waveNumber);
+ roadmConnectionsBuilder.setWavelengthNumber(20L);
+ roadmConnectionsBuilder.setDestination((new DestinationBuilder()).setDstIf(interfaceName).build());
+ InstanceIdentifier<RoadmConnections> xciid = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber));
+ TransactionUtils.writeTransaction(this.deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION,
+ xciid, roadmConnectionsBuilder.build());
+
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTp, dstTp));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
+
+ ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
+ Assert.assertTrue(servicePathOutput.isSuccess());
+ Assert.assertEquals("Request processed", servicePathOutput.getResult());
+ }
+}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer.provisiondevice;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.opendaylight.controller.md.sal.binding.api.MountPoint;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
+import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
+import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
+import org.opendaylight.transportpce.common.mapping.PortMappingImpl;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
+import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
+import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.renderer.stub.MountPointStub;
+import org.opendaylight.transportpce.renderer.utils.ServiceImplementationDataUtils;
+import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.node.interfaces.NodeInterface;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.node.interfaces.NodeInterfaceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.node.interfaces.NodeInterfaceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackOutput;
+
+public class DeviceRendererServiceImplRollbackTest extends AbstractTest {
+
+ private DeviceRendererService deviceRendererService;
+ private CrossConnect crossConnect;
+ private OpenRoadmInterfaces openRoadmInterfaces;
+
+ private void setMountPoint(MountPoint mountPoint) {
+ MountPointService mountPointService = new MountPointServiceStub(mountPoint);
+ DeviceTransactionManager deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
+ this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(deviceTransactionManager);
+ this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
+ PortMapping portMapping = new PortMappingImpl(this.getDataBroker(), deviceTransactionManager,
+ this.openRoadmInterfaces);
+ OpenRoadmInterfaceFactory openRoadmInterfaceFactory = new OpenRoadmInterfaceFactory(portMapping,
+ this.openRoadmInterfaces);
+ this.crossConnect = new CrossConnectImpl(deviceTransactionManager);
+ this.crossConnect = Mockito.spy(this.crossConnect);
+ this.deviceRendererService = new DeviceRendererServiceImpl(this.getDataBroker(),
+ deviceTransactionManager, openRoadmInterfaceFactory, this.openRoadmInterfaces, this.crossConnect,
+ portMapping);
+ }
+
+
+
+ @Test
+ public void testRollbackEmptyInterface() {
+ setMountPoint(new MountPointStub(getDataBroker()));
+ RendererRollbackInput rendererRollbackInput = ServiceImplementationDataUtils.buildRendererRollbackInput();
+ RendererRollbackOutput rendererRollbackOutput =
+ this.deviceRendererService.rendererRollback(rendererRollbackInput);
+ Assert.assertTrue(rendererRollbackOutput.isSuccess());
+ Assert.assertTrue(rendererRollbackOutput.getFailedToRollback().isEmpty());
+ }
+
+ @Test
+ public void testRollbackConnectionIdNotExist() {
+ setMountPoint(new MountPointStub(getDataBroker()));
+
+ NodeInterfaceBuilder nodeInterfaceBuilder = new NodeInterfaceBuilder();
+ nodeInterfaceBuilder.setNodeId("node1");
+ nodeInterfaceBuilder.withKey(new NodeInterfaceKey("node1"));
+ List<String> connectionID = new ArrayList<>();
+ connectionID.add("node1-PP");
+ nodeInterfaceBuilder.setConnectionId(connectionID);
+ List<NodeInterface> nodeInterfaces = new ArrayList<>();
+ nodeInterfaces.add(nodeInterfaceBuilder.build());
+ RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
+ rendererRollbackInputBuilder.setNodeInterface(nodeInterfaces);
+
+ RendererRollbackOutput rendererRollbackOutput =
+ this.deviceRendererService.rendererRollback(rendererRollbackInputBuilder.build());
+ Assert.assertFalse(rendererRollbackOutput.isSuccess());
+ Assert.assertEquals(1, rendererRollbackOutput.getFailedToRollback().size());
+ Assert.assertEquals("node1", rendererRollbackOutput.getFailedToRollback().get(0).getNodeId());
+ }
+
+ @Test
+ public void testRollbackConnectionId() {
+ setMountPoint(new MountPointStub(getDataBroker()));
+
+ NodeInterfaceBuilder nodeInterfaceBuilder = new NodeInterfaceBuilder();
+ nodeInterfaceBuilder.setNodeId("node1");
+ nodeInterfaceBuilder.withKey(new NodeInterfaceKey("node1"));
+ List<String> connectionID = new ArrayList<>();
+ connectionID.add("src-PP-dest-PP-20");
+ nodeInterfaceBuilder.setConnectionId(connectionID);
+ List<NodeInterface> nodeInterfaces = new ArrayList<>();
+ nodeInterfaces.add(nodeInterfaceBuilder.build());
+ RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
+ rendererRollbackInputBuilder.setNodeInterface(nodeInterfaces);
+
+ Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect("node1", connectionID.get(0));
+ RendererRollbackOutput rendererRollbackOutput =
+ this.deviceRendererService.rendererRollback(rendererRollbackInputBuilder.build());
+ Assert.assertTrue("Rollback must success when cross connect returns true", rendererRollbackOutput.isSuccess());
+ Assert.assertEquals(1, rendererRollbackOutput.getFailedToRollback().size());
+ Assert.assertTrue("There must not be any failed interfaces when cross connect returns true",
+ rendererRollbackOutput.getFailedToRollback().get(0).getInterface().isEmpty());
+
+ Mockito.doReturn(false).when(this.crossConnect).deleteCrossConnect("node1", connectionID.get(0));
+ rendererRollbackOutput =
+ this.deviceRendererService.rendererRollback(rendererRollbackInputBuilder.build());
+ Assert.assertFalse("Rollback must fail when cross connect returns false",rendererRollbackOutput.isSuccess());
+ Assert.assertEquals(1, rendererRollbackOutput.getFailedToRollback().size());
+ Assert.assertFalse(rendererRollbackOutput.getFailedToRollback().get(0).getInterface().isEmpty());
+ Assert.assertEquals("node1", rendererRollbackOutput.getFailedToRollback().get(0).getNodeId());
+
+ Mockito.verify(this.crossConnect, Mockito.times(2)).deleteCrossConnect("node1", connectionID.get(0));
+ }
+
+ @Test
+ public void testRollbackInterfaces() throws OpenRoadmInterfaceException {
+ setMountPoint(new MountPointStub(getDataBroker()));
+
+ NodeInterfaceBuilder nodeInterfaceBuilder = new NodeInterfaceBuilder();
+ nodeInterfaceBuilder.setNodeId("node1");
+ nodeInterfaceBuilder.withKey(new NodeInterfaceKey("node1"));
+ nodeInterfaceBuilder.setConnectionId(new ArrayList<>());
+ List<String> oduInterfacesId = new ArrayList<>();
+ oduInterfacesId.add("node1-" + OpenRoadmInterfacesImpl.NETWORK_TOKEN + "-ODU");
+ nodeInterfaceBuilder.setOduInterfaceId(oduInterfacesId);
+ List<String> otuInterfacesId = new ArrayList<>();
+ otuInterfacesId.add("node1-" + OpenRoadmInterfacesImpl.NETWORK_TOKEN + "-OTU");
+ nodeInterfaceBuilder.setOtuInterfaceId(otuInterfacesId);
+ List<String> ochInterfacesId = new ArrayList<>();
+ ochInterfacesId.add("node1-" + OpenRoadmInterfacesImpl.NETWORK_TOKEN + "-20");
+ nodeInterfaceBuilder.setOchInterfaceId(ochInterfacesId);
+ List<NodeInterface> nodeInterfaces = new ArrayList<>();
+ nodeInterfaces.add(nodeInterfaceBuilder.build());
+ RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
+ rendererRollbackInputBuilder.setNodeInterface(nodeInterfaces);
+
+ Mockito.doNothing().when(this.openRoadmInterfaces).deleteInterface(Mockito.eq("node1"), Mockito.anyString());
+ RendererRollbackOutput rendererRollbackOutput =
+ this.deviceRendererService.rendererRollback(rendererRollbackInputBuilder.build());
+ Assert.assertTrue(rendererRollbackOutput.isSuccess());
+ Assert.assertFalse(rendererRollbackOutput.getFailedToRollback().isEmpty());
+ Assert.assertTrue(rendererRollbackOutput.getFailedToRollback().get(0).getInterface().isEmpty());
+ Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.anyString(),
+ Mockito.anyString());
+ Mockito.verify(this.openRoadmInterfaces, Mockito.times(3)).deleteInterface(Mockito.eq("node1"),
+ Mockito.anyString());
+ }
+
+ @Test
+ public void testRollbackInterfacesException() throws OpenRoadmInterfaceException {
+ setMountPoint(new MountPointStub(getDataBroker()));
+
+ NodeInterfaceBuilder nodeInterfaceBuilder = new NodeInterfaceBuilder();
+ nodeInterfaceBuilder.setNodeId("node1");
+ nodeInterfaceBuilder.withKey(new NodeInterfaceKey("node1"));
+ nodeInterfaceBuilder.setConnectionId(new ArrayList<>());
+ List<String> ethInterfacesId = new ArrayList<>();
+ ethInterfacesId.add("node1-" + OpenRoadmInterfacesImpl.CLIENT_TOKEN + "-ETHERNET");
+ nodeInterfaceBuilder.setEthInterfaceId(ethInterfacesId);
+ List<NodeInterface> nodeInterfaces = new ArrayList<>();
+ nodeInterfaces.add(nodeInterfaceBuilder.build());
+ RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
+ rendererRollbackInputBuilder.setNodeInterface(nodeInterfaces);
+
+ Mockito.doThrow(OpenRoadmInterfaceException.class).when(this.openRoadmInterfaces)
+ .deleteInterface(Mockito.eq("node1"), Mockito.anyString());
+ RendererRollbackOutput rendererRollbackOutput =
+ this.deviceRendererService.rendererRollback(rendererRollbackInputBuilder.build());
+ Assert.assertFalse(rendererRollbackOutput.isSuccess());
+ Assert.assertEquals(1,rendererRollbackOutput.getFailedToRollback().size());
+ Assert.assertEquals(1, rendererRollbackOutput.getFailedToRollback().get(0).getInterface().size());
+ Assert.assertEquals(ethInterfacesId.get(0), rendererRollbackOutput.getFailedToRollback().get(0)
+ .getInterface().get(0));
+ Mockito.verify(this.crossConnect, Mockito.times(0))
+ .deleteCrossConnect(Mockito.anyString(), Mockito.anyString());
+ Mockito.verify(this.openRoadmInterfaces, Mockito.times(1))
+ .deleteInterface("node1",ethInterfacesId.get(0));
+ }
+}
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.ExecutionException;
import org.junit.Assert;
import org.junit.Test;
+import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.MountPoint;
import org.opendaylight.controller.md.sal.binding.api.MountPointService;
import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
import org.opendaylight.transportpce.common.mapping.PortMapping;
import org.opendaylight.transportpce.common.mapping.PortMappingImpl;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
import org.opendaylight.transportpce.renderer.provisiondevice.servicepath.ServicePathDirection;
import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
-import org.opendaylight.transportpce.renderer.stub.MountPointStub;
import org.opendaylight.transportpce.renderer.utils.MountPointUtils;
-import org.opendaylight.transportpce.renderer.utils.ServiceDataUtils;
+import org.opendaylight.transportpce.renderer.utils.ServiceImplementationDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.node.interfaces.NodeInterface;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.node.interfaces.NodeInterfaceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.node.interfaces.NodeInterfaceKey;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathOutput;
-public class DeviceRendererServiceImplTest extends AbstractTest {
-
- private MountPointService mountPointService;
+public class DeviceRendererServiceImplSetupTest extends AbstractTest {
private DeviceTransactionManager deviceTransactionManager;
private DeviceRendererService deviceRendererService;
+ private CrossConnect crossConnect;
+ private PortMapping portMapping;
+ private OpenRoadmInterfaces openRoadmInterfaces;
+
private void setMountPoint(MountPoint mountPoint) {
- this.mountPointService = new MountPointServiceStub(mountPoint);
- this.deviceTransactionManager = new DeviceTransactionManagerImpl(this.mountPointService, 3000);
- OpenRoadmInterfaces openRoadmInterfaces = new OpenRoadmInterfacesImpl(this.deviceTransactionManager);
- PortMapping portMapping = new PortMappingImpl(this.getDataBroker(), this.deviceTransactionManager,
- openRoadmInterfaces);
- OpenRoadmInterfaceFactory openRoadmInterfaceFactory = new OpenRoadmInterfaceFactory(portMapping,
- openRoadmInterfaces);
- CrossConnect crossConnect = new CrossConnectImpl(this.deviceTransactionManager);
+ MountPointService mountPointService = new MountPointServiceStub(mountPoint);
+ this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
+ this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(this.deviceTransactionManager);
+ this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
+ this.portMapping = new PortMappingImpl(this.getDataBroker(), this.deviceTransactionManager,
+ this.openRoadmInterfaces);
+ this.portMapping = Mockito.spy(this.portMapping);
+ OpenRoadmInterfaceFactory openRoadmInterfaceFactory = new OpenRoadmInterfaceFactory(this.portMapping,
+ this.openRoadmInterfaces);
+ this.crossConnect = new CrossConnectImpl(this.deviceTransactionManager);
+ this.crossConnect = Mockito.spy(this.crossConnect);
this.deviceRendererService = new DeviceRendererServiceImpl(this.getDataBroker(),
this.deviceTransactionManager, openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect,
portMapping);
@Test
public void testSetupServiceWhenDeviceIsNotMounted() {
setMountPoint(null);
- ServicePathInput servicePathInput = ServiceDataUtils.buildServicePathInputs();
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs();
for (ServicePathDirection servicePathDirection : ServicePathDirection.values()) {
ServicePathOutput servicePathOutput = deviceRendererService.setupServicePath(servicePathInput,
servicePathDirection);
}
@Test
- public void testSetupServiceUsingCrossConnectEmptyPorts() throws ExecutionException, InterruptedException {
+ public void testSetupServicemptyPorts() {
setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
- testSetupService(true);
+ String nodeId = "node1";
+ String srcTP = OpenRoadmInterfacesImpl.TTP_TOKEN;
+ String dstTp = OpenRoadmInterfacesImpl.PP_TOKEN;
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
+ for (ServicePathDirection servicePathDirection : ServicePathDirection.values()) {
+ ServicePathOutput servicePathOutput = deviceRendererService.setupServicePath(servicePathInput,
+ servicePathDirection);
+ Assert.assertFalse(servicePathOutput.isSuccess());
+ }
}
@Test
- public void testSetupServiceUsingCrossConnectWithPorts() throws ExecutionException, InterruptedException {
+ public void testSetupServiceCannotCrossConnect() {
setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
- testSetupService(true);
+ String nodeId = "node1";
+ String srcTP = OpenRoadmInterfacesImpl.TTP_TOKEN;
+ String dstTp = OpenRoadmInterfacesImpl.PP_TOKEN;
+ MountPointUtils.writeMapping(nodeId, srcTP, this.deviceTransactionManager);
+ MountPointUtils.writeMapping(nodeId, dstTp, this.deviceTransactionManager);
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
+ Mockito.doReturn(java.util.Optional.empty()).when(this.crossConnect).postCrossConnect(nodeId, 20L, srcTP,
+ dstTp);
+ ServicePathOutput servicePathOutput = deviceRendererService.setupServicePath(servicePathInput,
+ ServicePathDirection.A_TO_Z);
+ Assert.assertFalse(servicePathOutput.isSuccess());
}
-// @Test
-// public void testSetupServiceWithoutCrossConnect() throws ExecutionException, InterruptedException {
-// setMountPoint(new MountPointStub(getDataBroker()));
-//
-// testSetupService(false);
-// }
-
- private void testSetupService(boolean crossConnect) throws ExecutionException, InterruptedException {
+ @Test
+ public void testSetupService() throws OpenRoadmInterfaceException {
+ setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
+ Mockito.doNothing().when(this.openRoadmInterfaces).postEquipmentState(Mockito.anyString(),
+ Mockito.anyString(), Mockito.anyBoolean());
String [] interfaceTokens = {
OpenRoadmInterfacesImpl.NETWORK_TOKEN,
OpenRoadmInterfacesImpl.CLIENT_TOKEN,
OpenRoadmInterfacesImpl.TTP_TOKEN,
- OpenRoadmInterfacesImpl.PP_TOKEN,
- ""
+ OpenRoadmInterfacesImpl.PP_TOKEN
};
String nodeId = "node1";
connectingUsingCrossConnect = false;
}
- if (connectingUsingCrossConnect != crossConnect) {
- continue;
- }
-
List<Nodes> nodes = new ArrayList<>();
- nodes.add(ServiceDataUtils.createNode(nodeId, srcTP, dstTp));
- ServicePathInput servicePathInput = ServiceDataUtils.buildServicePathInputs(nodes);
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
for (ServicePathDirection servicePathDirection : ServicePathDirection.values()) {
ServicePathOutput servicePathOutput = deviceRendererService.setupServicePath(servicePathInput,
servicePathDirection);
Assert.assertTrue(servicePathOutput.isSuccess());
String expectedResult = "Roadm-connection successfully created for nodes: ";
- if (crossConnect) {
+ if (connectingUsingCrossConnect) {
expectedResult = expectedResult + nodeId;
}
Assert.assertEquals(expectedResult, servicePathOutput.getResult());
Assert.assertEquals(1, servicePathOutput.getNodeInterface().size());
Assert.assertEquals(nodeId, servicePathOutput.getNodeInterface().get(0).getNodeId());
+ if (!connectingUsingCrossConnect) { // No need to try both directions if not cross connect
+ break;
+ }
}
}
}
}
@Test
- public void testRollbackEmptyInterface() {
- setMountPoint(new MountPointStub(getDataBroker()));
- RendererRollbackInput rendererRollbackInput = ServiceDataUtils.buildRendererRollbackInput();
- RendererRollbackOutput rendererRollbackOutput =
- this.deviceRendererService.rendererRollback(rendererRollbackInput);
- Assert.assertTrue(rendererRollbackOutput.isSuccess());
- Assert.assertTrue(rendererRollbackOutput.getFailedToRollback().isEmpty());
- }
+ public void testSetupServiceNulls() throws OpenRoadmInterfaceException {
+ setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
+ String nodeId = "node1";
+ String srcTP = null;
+ String dstTp = null;
+ boolean connectingUsingCrossConnect = true;
- @Test
- public void testRollbackConnectionIdNotExist() {
- setMountPoint(new MountPointStub(getDataBroker()));
-
- NodeInterfaceBuilder nodeInterfaceBuilder = new NodeInterfaceBuilder();
- nodeInterfaceBuilder.setNodeId("node1");
- nodeInterfaceBuilder.withKey(new NodeInterfaceKey("node1"));
- List<String> connectionID = new ArrayList<>();
- connectionID.add("node1-PP");
- nodeInterfaceBuilder.setConnectionId(connectionID);
- List<NodeInterface> nodeInterfaces = new ArrayList<>();
- nodeInterfaces.add(nodeInterfaceBuilder.build());
- RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
- rendererRollbackInputBuilder.setNodeInterface(nodeInterfaces);
-
- RendererRollbackOutput rendererRollbackOutput =
- this.deviceRendererService.rendererRollback(rendererRollbackInputBuilder.build());
- Assert.assertFalse(rendererRollbackOutput.isSuccess());
- Assert.assertEquals(1, rendererRollbackOutput.getFailedToRollback().size());
- Assert.assertEquals("node1", rendererRollbackOutput.getFailedToRollback().get(0).getNodeId());
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
+ ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
+
+ for (ServicePathDirection servicePathDirection : ServicePathDirection.values()) {
+ ServicePathOutput servicePathOutput = deviceRendererService.setupServicePath(servicePathInput,
+ servicePathDirection);
+ Assert.assertTrue(servicePathOutput.isSuccess());
+ String expectedResult = "Roadm-connection successfully created for nodes: ";
+ expectedResult = expectedResult + nodeId;
+ Assert.assertEquals(expectedResult, servicePathOutput.getResult());
+ Assert.assertEquals(1, servicePathOutput.getNodeInterface().size());
+ Assert.assertEquals(nodeId, servicePathOutput.getNodeInterface().get(0).getNodeId());
+ }
}
}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer.provisiondevice;
+
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.opendaylight.controller.md.sal.binding.api.MountPoint;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.ResponseCodes;
+import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
+import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
+import org.opendaylight.transportpce.common.mapping.PortMappingImpl;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
+import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
+import org.opendaylight.transportpce.renderer.NetworkModelWavelengthServiceImpl;
+import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
+import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.renderer.stub.MountPointStub;
+import org.opendaylight.transportpce.renderer.stub.OlmServiceStub;
+import org.opendaylight.transportpce.renderer.utils.ServiceDeleteDataUtils;
+import org.opendaylight.transportpce.renderer.utils.TransactionUtils;
+import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceDeleteInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceDeleteOutput;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServicePathList;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.path.list.ServicePaths;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.path.list.ServicePathsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.path.list.ServicePathsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.OlmService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerTurndownOutputBuilder;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+
+public class RendererServiceOperationsImplDeleteTest extends AbstractTest {
+
+ private static final int NUMBER_OF_THREADS = 4;
+ private DeviceTransactionManager deviceTransactionManager;
+ private RendererServiceOperationsImpl rendererServiceOperations;
+ private OpenRoadmInterfaces openRoadmInterfaces;
+ private DeviceRendererService deviceRenderer;
+ private PortMapping portMapping;
+ private CrossConnect crossConnect;
+ private NetworkModelWavelengthService networkModelWavelengthService;
+ private OlmService olmService;
+
+ private void setMountPoint(MountPoint mountPoint) {
+ MountPointService mountPointService = new MountPointServiceStub(mountPoint);
+ this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
+ this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(this.deviceTransactionManager);
+ this.portMapping = new PortMappingImpl(this.getDataBroker(), this.deviceTransactionManager,
+ openRoadmInterfaces);
+ OpenRoadmInterfaceFactory openRoadmInterfaceFactory = new OpenRoadmInterfaceFactory(portMapping,
+ openRoadmInterfaces);
+ this.crossConnect = new CrossConnectImpl(this.deviceTransactionManager);
+ this.crossConnect = Mockito.spy(crossConnect);
+ this.deviceRenderer = new DeviceRendererServiceImpl(this.getDataBroker(),
+ this.deviceTransactionManager, openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect,
+ this.portMapping);
+ }
+
+ @Before
+ public void setUp() {
+ setMountPoint(new MountPointStub(getDataBroker()));
+ this.olmService = new OlmServiceStub();
+ this.olmService = Mockito.spy(this.olmService);
+ ListeningExecutorService executor =
+ MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUMBER_OF_THREADS));
+ this.networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(getDataBroker());
+ this.rendererServiceOperations = new RendererServiceOperationsImpl(this.deviceRenderer, olmService,
+ getDataBroker(), this.networkModelWavelengthService);
+
+ }
+
+
+ @Test
+ public void serviceDeleteOperationPp() throws ExecutionException, InterruptedException {
+ writePathDescription();
+ ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder();
+ serviceDeleteInputBuilder.setServiceName("service 1");
+ serviceDeleteInputBuilder.setServiceHandlerHeader((new ServiceHandlerHeaderBuilder())
+ .setRequestId("request1").build());
+ Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), Mockito.anyString());
+ ServiceDeleteOutput serviceDeleteOutput
+ = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build());
+ Assert.assertEquals(ResponseCodes.RESPONSE_OK,
+ serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode());
+ Mockito.verify(this.crossConnect, Mockito.times(1)).deleteCrossConnect(Mockito.eq("node1"), Mockito.any());
+ Mockito.verify(this.crossConnect, Mockito.times(1)).deleteCrossConnect(Mockito.eq("node2"), Mockito.any());
+ }
+
+ @Test
+ public void serviceDeleteOperationNoDescription() {
+ ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder();
+ serviceDeleteInputBuilder.setServiceName("service 1");
+ ServiceDeleteOutput serviceDeleteOutput
+ = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build());
+ Assert.assertEquals(ResponseCodes.RESPONSE_FAILED,
+ serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode());
+ Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.any(), Mockito.any());
+ }
+
+ @Test
+ public void serviceDeleteOperationTearDownFailedAtoZ() throws ExecutionException, InterruptedException {
+ Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), Mockito.anyString());
+ Mockito.doReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder())
+ .setResult("Failed").build()).buildFuture()).when(this.olmService).servicePowerTurndown(Mockito.any());
+
+ writePathDescription();
+ ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder();
+ serviceDeleteInputBuilder.setServiceName("service 1");
+ serviceDeleteInputBuilder.setServiceHandlerHeader((new ServiceHandlerHeaderBuilder())
+ .setRequestId("request1").build());
+ ServiceDeleteOutput serviceDeleteOutput
+ = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build());
+ Assert.assertEquals(ResponseCodes.RESPONSE_FAILED,
+ serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode());
+ Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node1"), Mockito.any());
+ Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node2"), Mockito.any());
+ }
+
+ @Test
+ public void serviceDeleteOperationTearDownFailedZtoA() throws ExecutionException, InterruptedException {
+ Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), Mockito.anyString());
+ Mockito.when(this.olmService.servicePowerTurndown(Mockito.any()))
+ .thenReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder())
+ .setResult("Success").build()).buildFuture())
+ .thenReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder())
+ .setResult("Failed").build()).buildFuture());
+
+ writePathDescription();
+ ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder();
+ serviceDeleteInputBuilder.setServiceName("service 1");
+ serviceDeleteInputBuilder.setServiceHandlerHeader((new ServiceHandlerHeaderBuilder())
+ .setRequestId("request1").build());
+ ServiceDeleteOutput serviceDeleteOutput =
+ this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build());
+ Assert.assertEquals(ResponseCodes.RESPONSE_FAILED,
+ serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode());
+ Mockito.verify(this.olmService, Mockito.times(2)).servicePowerTurndown(Mockito.any());
+ Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node1"), Mockito.any());
+ Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node2"), Mockito.any());
+ }
+
+ private void writePathDescription() throws ExecutionException, InterruptedException {
+ ServicePathsBuilder servicePathsBuilder = new ServicePathsBuilder();
+ servicePathsBuilder.setPathDescription(ServiceDeleteDataUtils
+ .createTransactionPathDescription(OpenRoadmInterfacesImpl.PP_TOKEN));
+ servicePathsBuilder.setServiceAEnd(ServiceDeleteDataUtils.getServiceAEndBuild().build())
+ .setServiceZEnd(ServiceDeleteDataUtils.getServiceZEndBuild().build());
+ servicePathsBuilder.withKey(new ServicePathsKey("service 1"));
+ servicePathsBuilder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1")
+ .build());
+ InstanceIdentifier<ServicePaths> servicePathsInstanceIdentifier = InstanceIdentifier.create(
+ ServicePathList.class).child(ServicePaths.class, new ServicePathsKey("service 1"));
+ TransactionUtils.writeTransaction(
+ this.deviceTransactionManager,
+ "node1",
+ LogicalDatastoreType.OPERATIONAL,
+ servicePathsInstanceIdentifier,
+ servicePathsBuilder.build());
+ }
+}
* 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.renderer.provisiondevice;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import java.util.concurrent.Executors;
+import java.util.ArrayList;
+import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.MountPoint;
import org.opendaylight.controller.md.sal.binding.api.MountPointService;
import org.opendaylight.transportpce.common.ResponseCodes;
import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
import org.opendaylight.transportpce.common.mapping.PortMapping;
import org.opendaylight.transportpce.common.mapping.PortMappingImpl;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
import org.opendaylight.transportpce.renderer.utils.MountPointUtils;
import org.opendaylight.transportpce.renderer.utils.ServiceDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.get.pm.input.ResourceIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.GetPmInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.GetPmInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.GetPmOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.GetPmOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.OlmService;
-
-
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.get.pm.output.Measurements;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.get.pm.output.MeasurementsBuilder;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
public class RendererServiceOperationsImplTest extends AbstractTest {
- private static final int NUMBER_OF_THREADS = 4;
private MountPointService mountPointService;
private DeviceTransactionManager deviceTransactionManager;
private RendererServiceOperationsImpl rendererServiceOperations;
private OpenRoadmInterfaceFactory openRoadmInterfaceFactory;
private CrossConnect crossConnect;
private OlmService olmService;
- private ListeningExecutorService executor;
private NetworkModelWavelengthService networkModelWavelengthService;
private void setMountPoint(MountPoint mountPoint) {
this.mountPointService = new MountPointServiceStub(mountPoint);
this.deviceTransactionManager = new DeviceTransactionManagerImpl(this.mountPointService, 3000);
this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(this.deviceTransactionManager);
+ this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
this.portMapping = new PortMappingImpl(this.getDataBroker(), this.deviceTransactionManager,
openRoadmInterfaces);
this.openRoadmInterfaceFactory = new OpenRoadmInterfaceFactory(portMapping,
}
@Before
- public void setUp() {
+ public void setUp() throws OpenRoadmInterfaceException {
setMountPoint(new MountPointStub(getDataBroker()));
this.olmService = new OlmServiceStub();
- this.executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUMBER_OF_THREADS));
+ this.olmService = Mockito.spy(this.olmService);
this.networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(getDataBroker());
this.rendererServiceOperations = new RendererServiceOperationsImpl(this.deviceRenderer, this.olmService,
getDataBroker(), this.networkModelWavelengthService);
-
+ Mockito.doNothing().when(this.openRoadmInterfaces).postEquipmentState(Mockito.anyString(),
+ Mockito.anyString(), Mockito.anyBoolean());
}
}
-// @Test
-// public void serviceImplementationTerminationPointAsResourceNetwork() {
-//
-// ServiceImplementationRequestInput input = ServiceDataUtils
-// .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
-// writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
-// ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
-// Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
-//
-// }
-//
-// @Test
-// public void serviceImplementationTerminationPointAsResourceClient() {
-// ServiceImplementationRequestInput input = ServiceDataUtils
-// .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.CLIENT_TOKEN);
-// writePortMapping(input, OpenRoadmInterfacesImpl.CLIENT_TOKEN);
-// ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
-// Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
-// }
-//
-// @Test
-// public void serviceImplementationTerminationPointAsResourceNoMapping() {
-// String[] interfaceTokens = {
-// OpenRoadmInterfacesImpl.NETWORK_TOKEN,
-// OpenRoadmInterfacesImpl.CLIENT_TOKEN,
-// OpenRoadmInterfacesImpl.TTP_TOKEN,
-// OpenRoadmInterfacesImpl.PP_TOKEN
-// };
-// for (String tpToken : interfaceTokens) {
-// ServiceImplementationRequestInput input = ServiceDataUtils
-// .buildServiceImplementationRequestInputTerminationPointResource(tpToken);
-// ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
-// Assert.assertEquals(ResponseCodes.RESPONSE_FAILED,
-// result.getConfigurationResponseCommon().getResponseCode());
-// }
-// }
+ @Test
+ public void serviceImplementationTerminationPointAsResourceNetwork() {
+
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
+
+ }
+
+ @Test
+ public void serviceImplementationTerminationPointAsResourceClient() {
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.CLIENT_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.CLIENT_TOKEN);
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
+ }
+
+ @Test
+ public void serviceImplementationTerminationPointAsResourceNoMapping() {
+ String[] interfaceTokens = {
+ OpenRoadmInterfacesImpl.NETWORK_TOKEN,
+ OpenRoadmInterfacesImpl.CLIENT_TOKEN,
+ OpenRoadmInterfacesImpl.TTP_TOKEN,
+ OpenRoadmInterfacesImpl.PP_TOKEN
+ };
+
+ for (String tpToken : interfaceTokens) {
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(tpToken);
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ if (tpToken.equals(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) {
+ Assert.assertEquals(ResponseCodes.RESPONSE_OK,
+ result.getConfigurationResponseCommon().getResponseCode());
+ } else {
+ Assert.assertEquals(ResponseCodes.RESPONSE_FAILED,
+ result.getConfigurationResponseCommon().getResponseCode());
+ }
+ }
+ }
private void writePortMapping(ServiceImplementationRequestInput input, String tpToken) {
MountPointUtils.writeMapping(
input.getServiceAEnd().getNodeId() + "-" + tpToken,
this.deviceTransactionManager
);
+ MountPointUtils.writeMapping(
+ input.getServiceZEnd().getNodeId(),
+ input.getServiceZEnd().getNodeId() + "-"
+ + input.getServiceAEnd().getNodeId() + "-" + tpToken,
+ this.deviceTransactionManager
+ );
+ MountPointUtils.writeMapping(
+ input.getServiceAEnd().getNodeId(),
+ input.getServiceAEnd().getNodeId() + "-"
+ + input.getServiceZEnd().getNodeId() + "-" + tpToken,
+ this.deviceTransactionManager
+ );
MountPointUtils.writeMapping(
input.getServiceZEnd().getNodeId(),
input.getServiceZEnd().getNodeId() + "-" + tpToken,
);
}
- /*@Test
- public void serviceImplementationLinkAsResource() {
- ServiceImplementationRequestInput input = ServiceDataUtils.buildServiceImplementationRequestInputLinkResource();
+ @Test
+ public void serviceImplementationRollbackAllNecessary() {
+
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ Mockito.doReturn(RpcResultBuilder.failed().buildFuture()).when(this.olmService)
+ .servicePowerSetup(Mockito.any());
ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
- Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
- }*/
+ Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
+
+ }
- /*@Test
- public void serviceImplementtionInvalidResource() {
+ private GetPmInput createGetPmInput(String nodeId, String tp) {
+ GetPmInputBuilder getPmIpBldr = new GetPmInputBuilder();
+ getPmIpBldr.setNodeId(nodeId);
+ getPmIpBldr.setGranularity(PmGranularity._15min);
+ ResourceIdentifierBuilder rsrcBldr = new ResourceIdentifierBuilder();
+ rsrcBldr.setResourceName(tp + "-OTU");
+ getPmIpBldr.setResourceIdentifier(rsrcBldr.build());
+ getPmIpBldr.setResourceType(ResourceTypeEnum.Interface);
+ return getPmIpBldr.build();
+ }
+
+ @Test
+ public void serviceImplementationServiceInActive() {
ServiceImplementationRequestInput input = ServiceDataUtils
- .buildServiceImplementationRequestInputInvalidResource();
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
+ .setPmparameterValue("1").build();
+ List<Measurements> measurementsList = new ArrayList<Measurements>();
+ measurementsList.add(measurements);
+ GetPmOutput getPmOutput = new GetPmOutputBuilder()
+ .setNodeId("node1").setMeasurements(measurementsList).build();
+ Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
+ .getPm(Mockito.any());
ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
- }*/
+ }
+
+ @Test
+ public void serviceImplementationServiceInActive2() {
+
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
+ .setPmparameterValue("1").build();
+ List<Measurements> measurementsList = new ArrayList<Measurements>();
+ measurementsList.add(measurements);
+ GetPmOutput getPmOutput = new GetPmOutputBuilder()
+ .setNodeId("node1").setMeasurements(measurementsList).build();
+ GetPmOutput getPmOutput2 = new GetPmOutputBuilder()
+ .setNodeId("node1").setMeasurements(new ArrayList<>()).build();
+
+ GetPmInput getPmInputZZ = createGetPmInput(input.getServiceZEnd().getNodeId(),
+ input.getServiceZEnd().getNodeId() + "-" + OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ GetPmInput getPmInputAZ = createGetPmInput(input.getServiceAEnd().getNodeId(),
+ input.getServiceAEnd().getNodeId() + "-" + input.getServiceZEnd().getNodeId() + "-"
+ + OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ GetPmInput getPmInputZA = createGetPmInput(input.getServiceZEnd().getNodeId(),
+ input.getServiceZEnd().getNodeId() + "-" + input.getServiceAEnd().getNodeId() + "-"
+ + OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ GetPmInput getPmInputAA = createGetPmInput(input.getServiceAEnd().getNodeId(),
+ input.getServiceAEnd().getNodeId() + "-" + OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+
+ Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputZZ)))
+ .thenReturn(RpcResultBuilder.success(getPmOutput).buildFuture());
+ Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputAZ)))
+ .thenReturn(RpcResultBuilder.success(getPmOutput2).buildFuture());
+ Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputZA)))
+ .thenReturn(RpcResultBuilder.success(getPmOutput).buildFuture());
+ Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputAA)))
+ .thenReturn(RpcResultBuilder.success(getPmOutput2).buildFuture());
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
+
+ }
+
+ @Test
+ public void serviceImplementationServiceInActive3() {
+
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
+ .setPmparameterValue("1").build();
+ List<Measurements> measurementsList = new ArrayList<Measurements>();
+ measurementsList.add(measurements);
+ GetPmOutput getPmOutput = new GetPmOutputBuilder()
+ .setNodeId("node1").setMeasurements(measurementsList).build();
+ GetPmOutput getPmOutput2 = new GetPmOutputBuilder()
+ .setNodeId("node1").setMeasurements(new ArrayList<>()).build();
+
+ GetPmInput getPmInputZZ = createGetPmInput(input.getServiceZEnd().getNodeId(),
+ input.getServiceZEnd().getNodeId() + "-" + OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ GetPmInput getPmInputAZ = createGetPmInput(input.getServiceAEnd().getNodeId(),
+ input.getServiceAEnd().getNodeId() + "-" + input.getServiceZEnd().getNodeId() + "-"
+ + OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+
+ GetPmInput getPmInputZA = createGetPmInput(input.getServiceZEnd().getNodeId(),
+ input.getServiceZEnd().getNodeId() + "-" + input.getServiceAEnd().getNodeId() + "-"
+ + OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ GetPmInput getPmInputAA = createGetPmInput(input.getServiceAEnd().getNodeId(),
+ input.getServiceAEnd().getNodeId() + "-" + OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+
+ Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputZZ)))
+ .thenReturn(RpcResultBuilder.success(getPmOutput2).buildFuture());
+ Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputAZ)))
+ .thenReturn(RpcResultBuilder.success(getPmOutput).buildFuture());
+ Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputZA)))
+ .thenReturn(RpcResultBuilder.success(getPmOutput2).buildFuture());
+ Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputAA)))
+ .thenReturn(RpcResultBuilder.success(getPmOutput).buildFuture());
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
+
+ }
+
+ @Test
+ public void serviceImplementationServiceActive() {
+
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ GetPmOutput getPmOutput = new GetPmOutputBuilder()
+ .setNodeId("node1").setMeasurements(new ArrayList<>()).build();
+ GetPmOutput getPmOutput1 = null;
+ Mockito.when(this.olmService.getPm(Mockito.any())).thenReturn(RpcResultBuilder.success(getPmOutput1)
+ .buildFuture());
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
+
+ }
+
+ @Test
+ public void serviceImplementationServiceActive2() {
+
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ GetPmOutput getPmOutput = new GetPmOutputBuilder().setMeasurements(new ArrayList<>()).build();
+ Mockito.when(this.olmService.getPm(Mockito.any())).thenReturn(RpcResultBuilder.success(getPmOutput)
+ .buildFuture());
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
+
+ }
+
+ @Test
+ public void serviceImplementationServiceInActive4() {
+
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ Measurements measurements = new MeasurementsBuilder().setPmparameterName("preFECCorrectedErrors")
+ .setPmparameterValue("1").build();
+ List<Measurements> measurementsList = new ArrayList<Measurements>();
+ measurementsList.add(measurements);
+ GetPmOutput getPmOutput = new GetPmOutputBuilder()
+ .setNodeId("node1").setMeasurements(measurementsList).build();
+
+ Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
+ .getPm(Mockito.any());
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
+
+ }
+
+ @Test
+ public void serviceImplementationServiceInActive5() {
+
+ ServiceImplementationRequestInput input = ServiceDataUtils
+ .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ writePortMapping(input, OpenRoadmInterfacesImpl.NETWORK_TOKEN);
+ Measurements measurements = new MeasurementsBuilder().setPmparameterName("preFECCorrectedErrors")
+ .setPmparameterValue("112000000000d").build();
+ List<Measurements> measurementsList = new ArrayList<Measurements>();
+ measurementsList.add(measurements);
+ GetPmOutput getPmOutput = new GetPmOutputBuilder()
+ .setNodeId("node1").setMeasurements(measurementsList).build();
+
+ Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
+ .getPm(Mockito.any());
+ ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input);
+ Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
+
+ }
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerSetupOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerTurndownInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerTurndownOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerTurndownOutputBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
@Override public ListenableFuture<RpcResult<ServicePowerTurndownOutput>> servicePowerTurndown(
ServicePowerTurndownInput input) {
- return null;
+ return RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder())
+ .setResult("Success").build()).buildFuture();
}
@Override public ListenableFuture<RpcResult<CalculateSpanlossBaseOutput>> calculateSpanlossBase(
import com.google.common.util.concurrent.ListenableFuture;
import java.util.List;
-import java.util.Optional;
import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
-import org.opendaylight.transportpce.common.Timeouts;
-import org.opendaylight.transportpce.common.device.DeviceTransaction;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.renderer.stub.MountPointStub;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceService;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.connection.DestinationBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.connection.SourceBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.get.connection.port.trail.output.Ports;
-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.RoadmConnections;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.network.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.network.NodesKey;
public static MountPointStub getMountPoint(List<Ports> ports, DataBroker dataBroker) {
RpcConsumerRegistry rpcConsumerRegistry = Mockito.spy(RpcConsumerRegistry.class);
OrgOpenroadmDeviceService orgOpenroadmDeviceService = Mockito.spy(OrgOpenroadmDeviceService.class);
- GetConnectionPortTrailOutputBuilder getConnectionPortTrailOutputBuilder =
- new GetConnectionPortTrailOutputBuilder();
- getConnectionPortTrailOutputBuilder.setPorts(ports);
+ GetConnectionPortTrailOutputBuilder getConnectionPortTrailOutputBldr
+ = new GetConnectionPortTrailOutputBuilder();
+ getConnectionPortTrailOutputBldr.setPorts(ports);
ListenableFuture<RpcResult<GetConnectionPortTrailOutput>> rpcResultFuture =
- RpcResultBuilder.success(getConnectionPortTrailOutputBuilder.build()).buildFuture();
+ RpcResultBuilder.success(getConnectionPortTrailOutputBldr.build()).buildFuture();
Mockito.doReturn(rpcResultFuture).when(orgOpenroadmDeviceService).getConnectionPortTrail(Mockito.any());
Mockito.doReturn(orgOpenroadmDeviceService).when(rpcConsumerRegistry).getRpcService(Mockito.any());
MountPointStub mountPoint = new MountPointStub(dataBroker);
public static boolean writeMapping(String nodeId, String logicalConnPoint,
DeviceTransactionManager deviceTransactionManager) {
+ MappingBuilder mappingBuilder = new MappingBuilder();
+ mappingBuilder.withKey(new MappingKey(logicalConnPoint));
+ mappingBuilder.setLogicalConnectionPoint(logicalConnPoint);
+ mappingBuilder.setSupportingOms("OMS");
+ mappingBuilder.setSupportingPort("8080");
+ mappingBuilder.setSupportingCircuitPackName("circuit1");
+ InstanceIdentifier<Mapping> portMappingIID =
+ InstanceIdentifier.builder(Network.class).child(Nodes.class, new NodesKey(nodeId))
+ .child(Mapping.class, new MappingKey(logicalConnPoint)).build();
try {
- MappingBuilder mappingBuilder = new MappingBuilder();
- mappingBuilder.withKey(new MappingKey(logicalConnPoint));
- mappingBuilder.setLogicalConnectionPoint(logicalConnPoint);
- mappingBuilder.setSupportingOms("OMS");
- mappingBuilder.setSupportingPort("8080");
- mappingBuilder.setSupportingCircuitPackName("circuit1");
- Future<Optional<DeviceTransaction>> deviceTxFuture =
- deviceTransactionManager.getDeviceTransaction(nodeId);
- if (!deviceTxFuture.get().isPresent()) {
- return false;
- }
- InstanceIdentifier<Mapping> portMappingIID =
- InstanceIdentifier.builder(Network.class).child(Nodes.class, new NodesKey(nodeId))
- .child(Mapping.class, new MappingKey(logicalConnPoint)).build();
- DeviceTransaction deviceTx = deviceTxFuture.get().get();
- deviceTx.put(LogicalDatastoreType.CONFIGURATION, portMappingIID, mappingBuilder.build(), true);
- deviceTx.submit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT).get();
+ return TransactionUtils.writeTransaction(deviceTransactionManager,
+ nodeId, LogicalDatastoreType.CONFIGURATION, portMappingIID, mappingBuilder.build());
} catch (ExecutionException | InterruptedException e) {
return false;
}
- return true;
- }
-
- public static boolean writeConnection(String nodeId, String srcTp, String destTp, Long waveNumber,
- DeviceTransactionManager deviceTransactionManager) {
- try {
- RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder();
- String connectionNumber = srcTp + "-" + destTp + "-" + waveNumber;
- rdmConnBldr.setConnectionNumber(connectionNumber);
- rdmConnBldr.setWavelengthNumber(waveNumber);
- rdmConnBldr.setOpticalControlMode(OpticalControlMode.Off);
- rdmConnBldr.setSource(new SourceBuilder().setSrcIf(srcTp + "-" + waveNumber.toString()).build());
- rdmConnBldr.setDestination(new DestinationBuilder().setDstIf(destTp + "-" + waveNumber.toString()).build());
-
- Future<Optional<DeviceTransaction>> deviceTxFuture =
- deviceTransactionManager.getDeviceTransaction(nodeId);
- if (!deviceTxFuture.get().isPresent()) {
- return false;
- }
- DeviceTransaction deviceTx = deviceTxFuture.get().get();
- InstanceIdentifier<RoadmConnections> connectionID =
- InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber));
- deviceTx.put(LogicalDatastoreType.CONFIGURATION, connectionID, rdmConnBldr.build(), true);
- deviceTx.submit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT).get();
- } catch (ExecutionException | InterruptedException e) {
- return false;
- }
- return true;
}
private MountPointUtils() {
package org.opendaylight.transportpce.renderer.utils;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
public final class ServiceDataUtils {
+ private ServiceDataUtils() {
+
+ }
+
public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
.setDestTp(dstTp).build();
public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
List<AToZ> atoZList = new ArrayList<AToZ>();
TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
- TerminationPoint terminationPoint = terminationPointBuilder
- .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("XPONDER-1-2")
- .setTpId("XPONDER-1-2-" + tpId).build()).build();
- TerminationPoint terminationPoint2 = terminationPointBuilder
- .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("XPONDER-1-2")
- .setTpId("XPONDER-1-2-" + tpId).build()).build();
- AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
- .setResource(terminationPoint).build()).build();
- AToZ atoZ2 = new AToZBuilder().setId("2").withKey(new AToZKey("2")).setResource(new ResourceBuilder()
- .setResource(terminationPoint2).build()).build();
- atoZList.add(atoZ);
- atoZList.add(atoZ2);
+ List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
+ Integer atozId = 1;
+ for (String nodeId : nodeIds) {
+ for (String otherNodeId : nodeIds) {
+ TerminationPoint terminationPoint = terminationPointBuilder
+ .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId(nodeId)
+ .setTpId((nodeId.equals(otherNodeId) ? "" : nodeId + "-") + otherNodeId + "-" + tpId).build())
+ .build();
+ AToZ atoZ = new AToZBuilder().setId(atozId.toString())
+ .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
+ .setResource(terminationPoint).build()).build();
+ atozId++;
+ atoZList.add(atoZ);
+ }
+ }
AToZDirection atozDirection = new AToZDirectionBuilder()
.setRate(20L)
.setAToZWavelengthNumber(20L)
.setAToZ(atoZList)
.build();
+
+ Collections.reverse(nodeIds);
List<ZToA> ztoAList = new ArrayList<ZToA>();
- ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
- .setResource(terminationPoint).build()).build();
- ZToA ztoA2 = new ZToABuilder().setId("2").withKey(new ZToAKey("2")).setResource(new ResourceBuilder()
- .setResource(terminationPoint).build()).build();
- ztoAList.add(ztoA);
- ztoAList.add(ztoA2);
+ Integer ztoaId = 1;
+ for (String nodeId : nodeIds) {
+ for (String otherNodeId : nodeIds) {
+ TerminationPoint terminationPoint = terminationPointBuilder
+ .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId(nodeId)
+ .setTpId((nodeId.equals(otherNodeId) ? "" : nodeId + "-") + otherNodeId + "-" + tpId).build())
+ .build();
+ ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
+ .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
+ .setResource(terminationPoint).build()).build();
+ ztoaId++;
+ ztoAList.add(ztoA);
+ }
+ }
ZToADirection ztoaDirection = new ZToADirectionBuilder()
.setRate(20L)
.setZToAWavelengthNumber(20L)
public static ServiceZEndBuilder getServiceZEndBuild() {
return new ServiceZEndBuilder()
- .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
+ .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3")
.setTxDirection(
new TxDirectionBuilder()
.setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
.build());
}
- private ServiceDataUtils() {
- }
-
}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.termination.point.TerminationPointIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.path.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.path.PathDescriptionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.path.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.path.ServiceZEndBuilder;
+
+public final class ServiceDeleteDataUtils {
+
+ private ServiceDeleteDataUtils() {
+
+ }
+
+ public static PathDescription createTransactionPathDescription(String tpId) {
+ List<AToZ> atoZList = new ArrayList<AToZ>();
+ TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
+ TerminationPoint terminationPoint = terminationPointBuilder
+ .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("node2")
+ .setTpId("node2-" + tpId).build()).build();
+ TerminationPoint terminationPoint2 = terminationPointBuilder
+ .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("node1")
+ .setTpId("node1-" + tpId).build()).build();
+ AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
+ .setResource(terminationPoint).build()).build();
+ AToZ atoZ2 = new AToZBuilder().setId("2").withKey(new AToZKey("2")).setResource(new ResourceBuilder()
+ .setResource(terminationPoint2).build()).build();
+ atoZList.add(atoZ);
+ atoZList.add(atoZ2);
+ AToZDirection atozDirection = new AToZDirectionBuilder()
+ .setRate(20L)
+ .setAToZWavelengthNumber(20L)
+ .setAToZ(atoZList)
+ .setModulationFormat("OC")
+ .build();
+ List<ZToA> ztoAList = new ArrayList<ZToA>();
+ ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
+ .setResource(terminationPoint).build()).build();
+ ZToA ztoA2 = new ZToABuilder().setId("2").withKey(new ZToAKey("2")).setResource(new ResourceBuilder()
+ .setResource(terminationPoint).build()).build();
+ ztoAList.add(ztoA);
+ ztoAList.add(ztoA2);
+ ZToADirection ztoaDirection = new ZToADirectionBuilder()
+ .setRate(20L)
+ .setZToAWavelengthNumber(20L)
+ .setZToA(ztoAList)
+ .setModulationFormat("OC")
+ .build();
+ PathDescriptionBuilder pathDescriptionBuilder = new PathDescriptionBuilder();
+ pathDescriptionBuilder.setAToZDirection(atozDirection);
+ pathDescriptionBuilder.setZToADirection(ztoaDirection);
+ return pathDescriptionBuilder.build();
+ }
+
+ public static ServiceAEndBuilder getServiceAEndBuild() {
+ return new ServiceAEndBuilder()
+ .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
+ .setTxDirection(
+ new TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .build())
+ .setRxDirection(
+ new RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .build());
+ }
+
+ public static ServiceZEndBuilder getServiceZEndBuild() {
+ return new ServiceZEndBuilder()
+ .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3")
+ .setTxDirection(
+ new TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .build())
+ .setRxDirection(
+ new RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .build());
+ }
+
+
+
+}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.Link;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.LinkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.NodeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.link.LinkIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.node.NodeIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.termination.point.TerminationPointIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescriptionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInputBuilder;
+
+
+public final class ServiceImplementationDataUtils {
+
+ private ServiceImplementationDataUtils() {
+
+ }
+
+ public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
+ return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
+ .setDestTp(dstTp).build();
+ }
+
+ public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
+ ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
+ servicePathInputBuilder.setNodes(nodes);
+ servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
+ return servicePathInputBuilder.build();
+ }
+
+ public static ServicePathInput buildServicePathInputs() {
+ ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
+ List<Nodes> nodes = new ArrayList<>();
+ nodes.add(ServiceImplementationDataUtils.createNode("node1", "src", "dst"));
+ servicePathInputBuilder.setNodes(nodes);
+ servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
+ return servicePathInputBuilder.build();
+ }
+
+ public static RendererRollbackInput buildRendererRollbackInput() {
+ RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
+ rendererRollbackInputBuilder.setNodeInterface(new ArrayList<>());
+ return rendererRollbackInputBuilder.build();
+ }
+
+ public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
+ String tpId) {
+ ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
+ .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
+ .setServiceAEnd(getServiceAEndBuild().build())
+ .setServiceZEnd(getServiceZEndBuild().build());
+ return builder.build();
+ }
+
+ public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
+ ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
+ .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
+ .setServiceAEnd(getServiceAEndBuild().build())
+ .setServiceZEnd(getServiceZEndBuild().build());
+ return builder.build();
+ }
+
+ public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
+ ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
+ .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
+ .setServiceAEnd(getServiceAEndBuild().build())
+ .setServiceZEnd(getServiceZEndBuild().build());
+ return builder.build();
+ }
+
+ private static PathDescription createPathDescriptionInvalidResource() {
+ List<AToZ> atoZList = new ArrayList<AToZ>();
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
+ .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
+ .resource.resource.Node node1 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
+ .setNodeId("XPONDER-1-2").build()).build();
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
+ .resource.resource.Node node2 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
+ .setNodeId("XPONDER-1-2").build()).build();
+ AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
+ .setResource(node1).build()).build();
+ AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
+ .setResource(node2).build()).build();
+ atoZList.add(atoZ);
+ atoZList.add(atoZ2);
+ AToZDirection atozDirection = new AToZDirectionBuilder()
+ .setRate(20L)
+ .setAToZWavelengthNumber(20L)
+ .setAToZ(atoZList)
+ .build();
+ List<ZToA> ztoAList = new ArrayList<ZToA>();
+ ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
+ .setResource(node1).build()).build();
+ ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
+ .setResource(node2).build()).build();
+ ztoAList.add(ztoA);
+ ztoAList.add(ztoA2);
+ ZToADirection ztoaDirection = new ZToADirectionBuilder()
+ .setRate(20L)
+ .setZToAWavelengthNumber(20L)
+ .setZToA(ztoAList)
+ .build();
+ PathDescriptionBuilder builder = new PathDescriptionBuilder()
+ .setAToZDirection(atozDirection)
+ .setZToADirection(ztoaDirection);
+ return builder.build();
+ }
+
+ public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
+ List<AToZ> atoZList = new ArrayList<AToZ>();
+ TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
+ TerminationPoint terminationPoint = terminationPointBuilder
+ .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("XPONDER-1-2")
+ .setTpId("XPONDER-1-2-" + tpId).build()).build();
+ TerminationPoint terminationPoint2 = terminationPointBuilder
+ .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("XPONDER-1-2")
+ .setTpId("XPONDER-1-2-" + tpId).build()).build();
+ AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
+ .setResource(terminationPoint).build()).build();
+ AToZ atoZ2 = new AToZBuilder().setId("2").withKey(new AToZKey("2")).setResource(new ResourceBuilder()
+ .setResource(terminationPoint2).build()).build();
+ atoZList.add(atoZ);
+ atoZList.add(atoZ2);
+ AToZDirection atozDirection = new AToZDirectionBuilder()
+ .setRate(20L)
+ .setAToZWavelengthNumber(20L)
+ .setAToZ(atoZList)
+ .build();
+ List<ZToA> ztoAList = new ArrayList<ZToA>();
+ ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
+ .setResource(terminationPoint).build()).build();
+ ZToA ztoA2 = new ZToABuilder().setId("2").withKey(new ZToAKey("2")).setResource(new ResourceBuilder()
+ .setResource(terminationPoint).build()).build();
+ ztoAList.add(ztoA);
+ ztoAList.add(ztoA2);
+ ZToADirection ztoaDirection = new ZToADirectionBuilder()
+ .setRate(20L)
+ .setZToAWavelengthNumber(20L)
+ .setZToA(ztoAList)
+ .build();
+ PathDescriptionBuilder builder = new PathDescriptionBuilder()
+ .setAToZDirection(atozDirection)
+ .setZToADirection(ztoaDirection);
+ return builder.build();
+ }
+
+ private static PathDescription createPathDescriptionLinkResource() {
+ List<AToZ> atoZList = new ArrayList<AToZ>();
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
+ .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
+ Link link1 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 1").build())
+ .build();
+ Link link2 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 2").build())
+ .build();
+ AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
+ .setResource(link1).build()).build();
+ AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
+ .setResource(link2).build()).build();
+ atoZList.add(atoZ);
+ atoZList.add(atoZ2);
+ AToZDirection atozDirection = new AToZDirectionBuilder()
+ .setRate(20L)
+ .setAToZWavelengthNumber(20L)
+ .setAToZ(atoZList)
+ .build();
+ List<ZToA> ztoAList = new ArrayList<ZToA>();
+ ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
+ .setResource(link1).build()).build();
+ ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
+ .setResource(link2).build()).build();
+ ztoAList.add(ztoA);
+ ztoAList.add(ztoA2);
+ ZToADirection ztoaDirection = new ZToADirectionBuilder()
+ .setRate(20L)
+ .setZToAWavelengthNumber(20L)
+ .setZToA(ztoAList)
+ .build();
+ PathDescriptionBuilder builder = new PathDescriptionBuilder()
+ .setAToZDirection(atozDirection)
+ .setZToADirection(ztoaDirection);
+ return builder.build();
+ }
+
+ public static ServiceAEndBuilder getServiceAEndBuild() {
+ return new ServiceAEndBuilder()
+ .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
+ .setTxDirection(
+ new TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .build())
+ .setRxDirection(
+ new RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .build());
+ }
+
+ public static ServiceZEndBuilder getServiceZEndBuild() {
+ return new ServiceZEndBuilder()
+ .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
+ .setTxDirection(
+ new TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .build())
+ .setRxDirection(
+ new RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .build());
+ }
+
+}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer.utils;
+
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.Timeouts;
+import org.opendaylight.transportpce.common.device.DeviceTransaction;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+public final class TransactionUtils {
+
+ private TransactionUtils() {
+
+ }
+
+ public static boolean writeTransaction(DeviceTransactionManager deviceTransactionManager,
+ String nodeId,
+ LogicalDatastoreType logicalDatastoreType,
+ InstanceIdentifier instanceIdentifier,
+ DataObject object)
+ throws ExecutionException, InterruptedException {
+ Future<Optional<DeviceTransaction>> deviceTxFuture =
+ deviceTransactionManager.getDeviceTransaction(nodeId);
+ if (!deviceTxFuture.get().isPresent()) {
+ return false;
+ }
+ DeviceTransaction deviceTx = deviceTxFuture.get().get();
+ deviceTx.put(logicalDatastoreType, instanceIdentifier, object, true);
+ deviceTx.submit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT).get();
+ return true;
+ }
+
+ public static DataObject readTransaction(DeviceTransactionManager deviceTransactionManager,
+ String nodeId,
+ LogicalDatastoreType logicalDatastoreType,
+ InstanceIdentifier<? extends DataObject> instanceIdentifier)
+ throws ExecutionException, InterruptedException {
+ Future<Optional<DeviceTransaction>> deviceTxFuture =
+ deviceTransactionManager.getDeviceTransaction(nodeId);
+ if (!deviceTxFuture.get().isPresent()) {
+ return null;
+ }
+ DeviceTransaction deviceTx = deviceTxFuture.get().get();
+ com.google.common.base.Optional<? extends DataObject> readOpt
+ = deviceTx.read(logicalDatastoreType, instanceIdentifier).get();
+ if (!readOpt.isPresent()) {
+ return null;
+ }
+ return readOpt.get();
+ }
+
+}
--- /dev/null
+/*
+ * Copyright © 2018 Orange Systems, 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.renderer.utils;
+
+import java.util.concurrent.ExecutionException;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.TerminationPoint1Builder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.TpId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.node.TerminationPointKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
+
+public final class WaveLengthServiceUtils {
+
+ private WaveLengthServiceUtils() {
+
+ }
+
+ private static InstanceIdentifierBuilder<TerminationPoint1> createTerminationPoint1IIDBuilder(String nodeId,
+ String tpId) {
+ return InstanceIdentifier
+ .builder(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network
+ .Node.class, new NodeKey(new NodeId(nodeId))).augmentation(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Node1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608
+ .network.node.TerminationPoint.class,
+ new TerminationPointKey(new TpId(tpId))).augmentation(TerminationPoint1.class);
+ }
+
+ public static void putTerminationPoint1ToDatastore(String nodeId, String tpId, TerminationPoint1 terminationPoint1,
+ DeviceTransactionManager deviceTransactionManager)
+ throws ExecutionException, InterruptedException {
+ TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder();
+ TransactionUtils
+ .writeTransaction(deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION,
+ createTerminationPoint1IIDBuilder(nodeId, tpId).build(), terminationPoint1);
+ }
+
+ public static TerminationPoint1 getTerminationPoint1FromDatastore(String nodeId, String tpId,
+ DeviceTransactionManager deviceTransactionManager)
+ throws ExecutionException, InterruptedException {
+ InstanceIdentifier<TerminationPoint1> tpIID = createTerminationPoint1IIDBuilder(nodeId, tpId).build();
+ return (TerminationPoint1) TransactionUtils
+ .readTransaction(deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION, tpIID);
+ }
+
+ private static InstanceIdentifier<Node1> createNode1IID(String nodeId) {
+ return InstanceIdentifier
+ .builder(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+ .network.Node.class, new NodeKey(new NodeId(nodeId)))
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929
+ .Node1.class)
+ .build();
+ }
+
+ public static void putNode1ToDatastore(String nodeId, Node1 node1,
+ DeviceTransactionManager deviceTransactionManager)
+ throws ExecutionException, InterruptedException {
+ InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1>
+ nodeIID = createNode1IID(nodeId);
+ TransactionUtils
+ .writeTransaction(deviceTransactionManager, nodeId,
+ LogicalDatastoreType.CONFIGURATION, nodeIID, node1);
+ }
+
+ public static Node1 getNode1FromDatastore(String nodeId, DeviceTransactionManager deviceTransactionManager)
+ throws ExecutionException, InterruptedException {
+ InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1>
+ nodeIID = createNode1IID(nodeId);
+ return (Node1) TransactionUtils
+ .readTransaction(deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION, nodeIID);
+ }
+}