From: Gilles Thouenon Date: Wed, 25 Jul 2018 11:26:48 +0000 (+0200) Subject: Creation of OTS-OMS interfaces X-Git-Tag: v0.2.0~21 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=transportpce.git;a=commitdiff_plain;h=17ed4b007aeaca9c1c88c49f70c70d2195f9cf5b Creation of OTS-OMS interfaces - add new rpc in renderer@2017-02-28.yang - add 2 methods in OpenRoadmInterfaceFactory.java to create ots and oms interfaces on ROADM configuration datastore - add method in PortMappingImpl.java to update the associated mapping with new interfaces just created - modify DeviceRendererServiceImplTest.java and RendererServiceOperationsImplTest.java to take into account blueprint modification.. Change-Id: I4eb21aed513a5378d23559827bc581dad60412a3 JIIRA: TRNSPRTPCE-8 JIIRA: TRNSPRTPCE-33 Signed-off-by: Gilles Thouenon Co-authored-by: Christophe Betoule --- diff --git a/api/src/main/yang/renderer@2017-02-28.yang b/api/src/main/yang/renderer@2017-02-28.yang index 4b3eea460..d3cb4b77a 100644 --- a/api/src/main/yang/renderer@2017-02-28.yang +++ b/api/src/main/yang/renderer@2017-02-28.yang @@ -69,4 +69,23 @@ module renderer { } } } + + rpc create-ots-oms { + input { + leaf node-id { + type string; + } + leaf logical-connection-point { + type string; + } + } + output { + leaf success { + type boolean; + } + leaf result { + type string; + } + } + } } diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java index 491692c05..d707f4d00 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java @@ -74,4 +74,6 @@ public interface PortMapping { */ Mapping getMapping(String nodeId, String logicalConnPoint); + + boolean updateMapping(String nodeId, Mapping mapping); } diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java index a3d10279c..d523c1a28 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java @@ -590,4 +590,41 @@ public class PortMappingImpl implements PortMapping { } + @Override + public boolean updateMapping(String nodeId, Mapping oldMapping) { + InstanceIdentifier portIId = InstanceIdentifier.create(OrgOpenroadmDevice.class).child( + CircuitPacks.class, new CircuitPacksKey(oldMapping.getSupportingCircuitPackName())).child(Ports.class, + new PortsKey(oldMapping.getSupportingPort())); + if (oldMapping != null && nodeId != null) { + try { + Optional portObject = this.deviceTransactionManager.getDataFromDevice(nodeId, + LogicalDatastoreType.OPERATIONAL, portIId, Timeouts.DEVICE_READ_TIMEOUT, + Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (portObject.isPresent()) { + Ports port = portObject.get(); + Mapping newMapping = createMappingObject(nodeId, port, oldMapping.getSupportingCircuitPackName(), + oldMapping.getLogicalConnectionPoint()); + + final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction(); + InstanceIdentifier mapIID = InstanceIdentifier.create(Network.class).child(Nodes.class, + new NodesKey(nodeId)).child(Mapping.class, new MappingKey(oldMapping + .getLogicalConnectionPoint())); + writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, mapIID, newMapping); + CheckedFuture submit = writeTransaction.submit(); + submit.checkedGet(); + return true; + } + return false; + } catch (TransactionCommitFailedException e) { + LOG.error("Transaction Commit Error updating Mapping {} for node {}", oldMapping + .getLogicalConnectionPoint(), nodeId, e); + return false; + } + } else { + LOG.error("Impossible to update mapping"); + return false; + } + + } + } diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java index 7636b26a1..a0f513a1f 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java @@ -22,12 +22,16 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.ethernet.interfaces.rev16 import org.opendaylight.yang.gen.v1.http.org.openroadm.ethernet.interfaces.rev161014.ethernet.container.EthernetBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.EthernetCsmacd; import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.InterfaceType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpenROADMOpticalMultiplex; import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpticalChannel; +import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpticalTransport; import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OtnOdu; import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OtnOtu; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.OchAttributes; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.RateIdentity; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.och.container.OchBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.OtsAttributes.FiberType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.ots.container.OtsBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.ODU4; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.OduAttributes; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.odu.container.OduBuilder; @@ -38,7 +42,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev161 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.network.nodes.Mapping; public class OpenRoadmInterfaceFactory { - private final PortMapping portMapping; private final OpenRoadmInterfaces openRoadmInterfaces; @@ -106,9 +109,9 @@ public class OpenRoadmInterfaceFactory { } // 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()); @@ -135,9 +138,9 @@ public class OpenRoadmInterfaceFactory { // 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)); @@ -234,6 +237,50 @@ public class OpenRoadmInterfaceFactory { return otuInterfaceBldr.getName(); } + public String createOpenRoadmOtsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException { + if (mapping.getSupportingOts() == null) { + // Create generic interface + InterfaceBuilder otsInterfaceBldr = createGenericInterfaceBuilder(mapping, OpticalTransport.class, "OTS-" + + mapping.getLogicalConnectionPoint()); + // OTS interface augmentation specific data + OtsBuilder otsIfBuilder = new OtsBuilder(); + otsIfBuilder.setFiberType(FiberType.Smf); + + // 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(); + otsInterfaceBldr.addAugmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.Interface1.class, + otsIf1Builder.setOts(otsIfBuilder.build()).build()); + this.openRoadmInterfaces.postInterface(nodeId, otsInterfaceBldr); + this.portMapping.updateMapping(nodeId, mapping); + return otsInterfaceBldr.build().getName(); + } else { + return mapping.getSupportingOts(); + } + } + + public String createOpenRoadmOmsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException { + if (mapping.getSupportingOms() == null) { + // Create generic interface + InterfaceBuilder omsInterfaceBldr = createGenericInterfaceBuilder(mapping, OpenROADMOpticalMultiplex.class, + "OMS-" + mapping.getLogicalConnectionPoint()); + if (mapping.getSupportingOts() != null) { + omsInterfaceBldr.setSupportingInterface(mapping.getSupportingOts()); + } else { + throw new OpenRoadmInterfaceException(String.format("Unable to get ots interface from mapping % - %", + nodeId, mapping.getLogicalConnectionPoint())); + } + this.openRoadmInterfaces.postInterface(nodeId, omsInterfaceBldr); + this.portMapping.updateMapping(nodeId, mapping); + return omsInterfaceBldr.build().getName(); + } else { + return mapping.getSupportingOms(); + } + } + private InterfaceBuilder createGenericInterfaceBuilder(Mapping portMap, Class type, String key) { InterfaceBuilder interfaceBuilder = new InterfaceBuilder(); diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererService.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererService.java index 7d2b73a77..5dc595d6b 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererService.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererService.java @@ -8,7 +8,10 @@ package org.opendaylight.transportpce.renderer.provisiondevice; +import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException; import org.opendaylight.transportpce.renderer.provisiondevice.servicepath.ServicePathDirection; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.CreateOtsOmsInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.CreateOtsOmsOutput; 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.RendererRollbackOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput; @@ -65,4 +68,14 @@ public interface DeviceRendererService { * @return Success flag and nodes which failed to rollback */ RendererRollbackOutput rendererRollback(RendererRollbackInput input); + + /** + * This method creates the basis of ots and oms interfaces on a specific ROADM degree. + * + * @param input + * Input parameter from the create-ots-oms yang model + * @return Success flag and names of interfaces created + * @throws OpenRoadmInterfaceException OpenRoadmInterfaceException + */ + CreateOtsOmsOutput createOtsOms(CreateOtsOmsInput input) throws OpenRoadmInterfaceException; } diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java index b9ec7e89f..e247ba119 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java @@ -29,6 +29,7 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.crossconnect.CrossConnect; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; +import org.opendaylight.transportpce.common.mapping.PortMapping; import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException; import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces; import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl; @@ -53,6 +54,10 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.ServiceNodelist; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.service.nodelist.NodelistBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.alarmsuppression.rev171102.service.nodelist.NodelistKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.network.nodes.Mapping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.CreateOtsOmsInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.CreateOtsOmsOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.CreateOtsOmsOutputBuilder; 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.RendererRollbackOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackOutputBuilder; @@ -75,15 +80,17 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { private final OpenRoadmInterfaceFactory openRoadmInterfaceFactory; private final OpenRoadmInterfaces openRoadmInterfaces; private final CrossConnect crossConnect; + private final PortMapping portMapping; public DeviceRendererServiceImpl(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager, - OpenRoadmInterfaceFactory openRoadmInterfaceFactory, OpenRoadmInterfaces openRoadmInterfaces, - CrossConnect crossConnect) { + OpenRoadmInterfaceFactory openRoadmInterfaceFactory, OpenRoadmInterfaces openRoadmInterfaces, + CrossConnect crossConnect, PortMapping portMapping) { this.dataBroker = dataBroker; this.deviceTransactionManager = deviceTransactionManager; this.openRoadmInterfaceFactory = openRoadmInterfaceFactory; this.openRoadmInterfaces = openRoadmInterfaces; this.crossConnect = crossConnect; + this.portMapping = portMapping; } @Override @@ -101,121 +108,117 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { AtomicBoolean success = new AtomicBoolean(true); ForkJoinPool forkJoinPool = new ForkJoinPool(); - ForkJoinTask forkJoinTask = forkJoinPool.submit(() -> - nodes.parallelStream().forEach(node -> { - String nodeId = node.getNodeId(); - LOG.info("Starting provisioning for node : {}", nodeId); - List createdEthInterfaces = new ArrayList<>(); - List createdOtuInterfaces = new ArrayList<>(); - List createdOduInterfaces = new ArrayList<>(); - List createdOchInterfaces = new ArrayList<>(); - List createdConnections = new ArrayList<>(); - int crossConnectFlag = 0; - - try { - // if the node is currently mounted then proceed - if (this.deviceTransactionManager.isDeviceMounted(nodeId)) { - String srcTp = node.getSrcTp(); - String destTp = node.getDestTp(); - - Long waveNumber = input.getWaveNumber(); - if ((destTp != null) && destTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN)) { - crossConnectFlag++; - // create OpenRoadm Xponder Line Interfaces - String supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface( - nodeId, destTp, waveNumber, R100G.class, ModulationFormat.DpQpsk); - createdOchInterfaces.add(supportingOchInterface); - - String supportingOtuInterface = this.openRoadmInterfaceFactory.createOpenRoadmOtu4Interface( - nodeId, destTp, supportingOchInterface); - createdOtuInterfaces.add(supportingOtuInterface); - - createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4Interface( - nodeId, destTp,supportingOtuInterface)); - } - if ((srcTp != null) && srcTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { - crossConnectFlag++; - // create OpenRoadm Xponder Client Interfaces - createdEthInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmEthInterface(nodeId, - srcTp)); - + ForkJoinTask forkJoinTask = forkJoinPool.submit(() -> nodes.parallelStream().forEach(node -> { + String nodeId = node.getNodeId(); + LOG.info("Starting provisioning for node : {}", nodeId); + List createdEthInterfaces = new ArrayList<>(); + List createdOtuInterfaces = new ArrayList<>(); + List createdOduInterfaces = new ArrayList<>(); + List createdOchInterfaces = new ArrayList<>(); + List createdConnections = new ArrayList<>(); + int crossConnectFlag = 0; + + try { + // if the node is currently mounted then proceed + if (this.deviceTransactionManager.isDeviceMounted(nodeId)) { + String srcTp = node.getSrcTp(); + String destTp = node.getDestTp(); + + Long waveNumber = input.getWaveNumber(); + if ((destTp != null) && destTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN)) { + crossConnectFlag++; + // create OpenRoadm Xponder Line Interfaces + String supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface( + nodeId, destTp, waveNumber, R100G.class, ModulationFormat.DpQpsk); + createdOchInterfaces.add(supportingOchInterface); + + String supportingOtuInterface = this.openRoadmInterfaceFactory.createOpenRoadmOtu4Interface( + nodeId, destTp, supportingOchInterface); + createdOtuInterfaces.add(supportingOtuInterface); + + createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4Interface(nodeId, + destTp, supportingOtuInterface)); + } + if ((srcTp != null) && srcTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { + crossConnectFlag++; + // create OpenRoadm Xponder Client Interfaces + createdEthInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmEthInterface(nodeId, + srcTp)); - } - if ((srcTp != null) && srcTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN)) { - crossConnectFlag++; - // create OpenRoadm Xponder Line Interfaces - String supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface( - nodeId, srcTp, waveNumber, R100G.class, ModulationFormat.DpQpsk); - createdOchInterfaces.add(supportingOchInterface); - - String supportingOtuInterface = this.openRoadmInterfaceFactory.createOpenRoadmOtu4Interface( - nodeId, srcTp, supportingOchInterface); - createdOtuInterfaces.add(supportingOtuInterface); - - createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4Interface( - nodeId, srcTp, supportingOtuInterface)); - } - if ((destTp != null) && destTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { - crossConnectFlag++; - // create OpenRoadm Xponder Client Interfaces - createdEthInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmEthInterface(nodeId, - destTp)); + } + if ((srcTp != null) && srcTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN)) { + crossConnectFlag++; + // create OpenRoadm Xponder Line Interfaces + String supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface( + nodeId, srcTp, waveNumber, R100G.class, ModulationFormat.DpQpsk); + createdOchInterfaces.add(supportingOchInterface); + + String supportingOtuInterface = this.openRoadmInterfaceFactory.createOpenRoadmOtu4Interface( + nodeId, srcTp, supportingOchInterface); + createdOtuInterfaces.add(supportingOtuInterface); + + createdOduInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOdu4Interface(nodeId, + srcTp, supportingOtuInterface)); + } + if ((destTp != null) && destTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { + crossConnectFlag++; + // create OpenRoadm Xponder Client Interfaces + createdEthInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmEthInterface(nodeId, + destTp)); + } + if ((srcTp != null) && (srcTp.contains(OpenRoadmInterfacesImpl.TTP_TOKEN) || srcTp.contains( + OpenRoadmInterfacesImpl.PP_TOKEN))) { + createdOchInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOchInterface(nodeId, + srcTp, waveNumber)); + } + if ((destTp != null) && (destTp.contains(OpenRoadmInterfacesImpl.TTP_TOKEN) || destTp.contains( + OpenRoadmInterfacesImpl.PP_TOKEN))) { + createdOchInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOchInterface(nodeId, + destTp, waveNumber)); + } + if (crossConnectFlag < 1) { + LOG.info("Creating cross connect between source {} and destination {} for node {}", srcTp, + destTp, nodeId); + Optional connectionNameOpt = this.crossConnect.postCrossConnect(nodeId, waveNumber, + srcTp, destTp); + if (connectionNameOpt.isPresent()) { + nodesProvisioned.add(nodeId); + List ports = this.crossConnect.getConnectionPortTrail(nodeId, waveNumber, srcTp, + destTp); + if (ServicePathDirection.A_TO_Z.equals(direction)) { + topology.updateAtoZTopologyList(ports, nodeId); + } + if (ServicePathDirection.Z_TO_A.equals(direction)) { + topology.updateZtoATopologyList(ports, nodeId); - } - if ((srcTp != null) && (srcTp.contains(OpenRoadmInterfacesImpl.TTP_TOKEN) - || srcTp.contains(OpenRoadmInterfacesImpl.PP_TOKEN))) { - createdOchInterfaces.add(this.openRoadmInterfaceFactory .createOpenRoadmOchInterface(nodeId, - srcTp, waveNumber)); - } - if ((destTp != null) && (destTp.contains(OpenRoadmInterfacesImpl.TTP_TOKEN) - || destTp.contains(OpenRoadmInterfacesImpl.PP_TOKEN))) { - createdOchInterfaces.add(this.openRoadmInterfaceFactory.createOpenRoadmOchInterface(nodeId, - destTp, waveNumber)); - } - if (crossConnectFlag < 1) { - LOG.info("Creating cross connect between source {} and destination {} for node {}", - srcTp, destTp, nodeId); - Optional connectionNameOpt = this.crossConnect.postCrossConnect(nodeId, waveNumber, - srcTp, destTp); - if (connectionNameOpt.isPresent()) { - nodesProvisioned.add(nodeId); - List ports = this.crossConnect.getConnectionPortTrail(nodeId, waveNumber, srcTp, - destTp); - if (ServicePathDirection.A_TO_Z.equals(direction)) { - topology.updateAtoZTopologyList(ports, nodeId); - } - if (ServicePathDirection.Z_TO_A.equals(direction)) { - topology.updateZtoATopologyList(ports, nodeId); - - } - createdConnections.add(connectionNameOpt.get()); - } else { - processErrorMessage("Unable to post Roadm-connection for node " + nodeId, forkJoinPool, - results); - success.set(false); } + createdConnections.add(connectionNameOpt.get()); + } else { + processErrorMessage("Unable to post Roadm-connection for node " + nodeId, forkJoinPool, + results); + success.set(false); } - } else { - processErrorMessage(nodeId + " is not mounted on the controller", forkJoinPool, results); - success.set(false); } - } catch (OpenRoadmInterfaceException ex) { - processErrorMessage("Setup service path failed! Exception:" + ex.toString(), forkJoinPool, results); + } else { + processErrorMessage(nodeId + " is not mounted on the controller", forkJoinPool, results); success.set(false); } + } catch (OpenRoadmInterfaceException ex) { + processErrorMessage("Setup service path failed! Exception:" + ex.toString(), forkJoinPool, results); + success.set(false); + } - NodeInterfaceBuilder nodeInterfaceBuilder = new NodeInterfaceBuilder(); - nodeInterfaceBuilder.withKey(new NodeInterfaceKey(nodeId)); - nodeInterfaceBuilder.setNodeId(nodeId); - nodeInterfaceBuilder.setConnectionId(createdConnections); - nodeInterfaceBuilder.setEthInterfaceId(createdEthInterfaces); - nodeInterfaceBuilder.setOtuInterfaceId(createdOtuInterfaces); - nodeInterfaceBuilder.setOduInterfaceId(createdOduInterfaces); - nodeInterfaceBuilder.setOchInterfaceId(createdOchInterfaces); - nodeInterfaces.add(nodeInterfaceBuilder.build()); - }) - ); + NodeInterfaceBuilder nodeInterfaceBuilder = new NodeInterfaceBuilder(); + nodeInterfaceBuilder.withKey(new NodeInterfaceKey(nodeId)); + nodeInterfaceBuilder.setNodeId(nodeId); + nodeInterfaceBuilder.setConnectionId(createdConnections); + nodeInterfaceBuilder.setEthInterfaceId(createdEthInterfaces); + nodeInterfaceBuilder.setOtuInterfaceId(createdOtuInterfaces); + nodeInterfaceBuilder.setOduInterfaceId(createdOduInterfaces); + nodeInterfaceBuilder.setOchInterfaceId(createdOchInterfaces); + nodeInterfaces.add(nodeInterfaceBuilder.build()); + })); try { forkJoinTask.get(); @@ -233,7 +236,7 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { setServBldr.setSuccess(success.get()); setServBldr.setResult(String.join("\n", results)); - //setting topology in the service list data store + // setting topology in the service list data store try { setTopologyForService(input.getServiceName(), topology.getTopology()); } catch (InterruptedException | TimeoutException | ExecutionException e) { @@ -248,7 +251,7 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { } private ConcurrentLinkedQueue processErrorMessage(String message, ForkJoinPool forkJoinPool, - ConcurrentLinkedQueue messages) { + ConcurrentLinkedQueue messages) { LOG.warn(message); messages.add(message); forkJoinPool.shutdown(); @@ -258,86 +261,85 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { @Override public ServicePathOutput deleteServicePath(ServicePathInput input) { List nodes = input.getNodes(); - ServicePathOutputBuilder delServBldr = new ServicePathOutputBuilder(); + AtomicBoolean success = new AtomicBoolean(true); ConcurrentLinkedQueue results = new ConcurrentLinkedQueue<>(); if (!alarmSuppressionNodeRegistration(input)) { LOG.warn("Alarm suppresion node registraion failed!!!!"); } ForkJoinPool forkJoinPool = new ForkJoinPool(); - ForkJoinTask forkJoinTask = forkJoinPool.submit(() -> - nodes.parallelStream().forEach(node -> { - List interfacesToDelete = new LinkedList<>(); - String nodeId = node.getNodeId(); - LOG.info("Deleting service setup on node {}", nodeId); - String srcTp = node.getSrcTp(); - String destTp = node.getDestTp(); - Long waveNumber = input.getWaveNumber(); - - if ((srcTp == null) || (destTp == null)) { - LOG.error("Source ({}) or destination ({}) termination point is null.", srcTp, destTp); - return; - } + ForkJoinTask forkJoinTask = forkJoinPool.submit(() -> nodes.parallelStream().forEach(node -> { + List interfacesToDelete = new LinkedList<>(); + String nodeId = node.getNodeId(); + LOG.info("Deleting service setup on node {}", nodeId); + String srcTp = node.getSrcTp(); + String destTp = node.getDestTp(); + Long waveNumber = input.getWaveNumber(); + + if ((srcTp == null) || (destTp == null)) { + LOG.error("Source ({}) or destination ({}) termination point is null.", srcTp, destTp); + return; + } - // if the node is currently mounted then proceed. - if (this.deviceTransactionManager.isDeviceMounted(nodeId)) { - if (destTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN) - || srcTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN) - || srcTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN) - || destTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { - if (destTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN)) { - interfacesToDelete.add(destTp + "-ODU"); - interfacesToDelete.add(destTp + "-OTU"); - interfacesToDelete.add( - this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(destTp, waveNumber)); - } - if (srcTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN)) { - interfacesToDelete.add(srcTp + "-ODU"); - interfacesToDelete.add(srcTp + "-OTU"); - interfacesToDelete.add( - this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(srcTp, waveNumber)); - } - if (srcTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { - interfacesToDelete.add(srcTp + "-ETHERNET"); - } - if (destTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { - interfacesToDelete.add(destTp + "-ETHERNET"); - } - } else { - String connectionNumber = srcTp + "-" + destTp + "-" + waveNumber; - if (!this.crossConnect.deleteCrossConnect(nodeId, connectionNumber)) { - LOG.error("Failed to delete cross connect {}", connectionNumber); - } - connectionNumber = destTp + "-" + srcTp + "-" + waveNumber; - String interfName = this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(srcTp, - waveNumber); - if (!isUsedByXc(nodeId, interfName, connectionNumber)) { - interfacesToDelete.add(interfName); - } - interfName = this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(destTp, waveNumber); - if (!isUsedByXc(nodeId, interfName, connectionNumber)) { - interfacesToDelete.add(interfName); - } + // if the node is currently mounted then proceed. + if (this.deviceTransactionManager.isDeviceMounted(nodeId)) { + if (destTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN) || srcTp.contains( + OpenRoadmInterfacesImpl.CLIENT_TOKEN) || srcTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN) + || destTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { + if (destTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN)) { + interfacesToDelete.add(destTp + "-ODU"); + interfacesToDelete.add(destTp + "-OTU"); + interfacesToDelete.add(this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(destTp, + waveNumber)); + } + if (srcTp.contains(OpenRoadmInterfacesImpl.NETWORK_TOKEN)) { + interfacesToDelete.add(srcTp + "-ODU"); + interfacesToDelete.add(srcTp + "-OTU"); + interfacesToDelete.add(this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(srcTp, + waveNumber)); + } + if (srcTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { + interfacesToDelete.add(srcTp + "-ETHERNET"); + } + if (destTp.contains(OpenRoadmInterfacesImpl.CLIENT_TOKEN)) { + interfacesToDelete.add(destTp + "-ETHERNET"); } } else { - String result = nodeId + " is not mounted on the controller"; - results.add(result); - LOG.warn(result); - forkJoinPool.shutdown(); - return; // TODO should deletion end here? + String connectionNumber = srcTp + "-" + destTp + "-" + waveNumber; + if (!this.crossConnect.deleteCrossConnect(nodeId, connectionNumber)) { + LOG.error("Failed to delete cross connect {}", connectionNumber); + } + connectionNumber = destTp + "-" + srcTp + "-" + waveNumber; + String interfName = this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(srcTp, + waveNumber); + if (!isUsedByXc(nodeId, interfName, connectionNumber)) { + interfacesToDelete.add(interfName); + } + interfName = this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(destTp, waveNumber); + if (!isUsedByXc(nodeId, interfName, connectionNumber)) { + interfacesToDelete.add(interfName); + } } + } else { + String result = nodeId + " is not mounted on the controller"; + results.add(result); + success.set(false); + LOG.warn(result); + forkJoinPool.shutdown(); + return; // TODO should deletion end here? + } - for (String interfaceId : interfacesToDelete) { - try { - this.openRoadmInterfaces.deleteInterface(nodeId, interfaceId); - } catch (OpenRoadmInterfaceException e) { - String result = String.format("Failed to delete interface %s on node %s!", interfaceId, nodeId); - LOG.error(result, e); - results.add(result); - } + for (String interfaceId : interfacesToDelete) { + try { + this.openRoadmInterfaces.deleteInterface(nodeId, interfaceId); + } catch (OpenRoadmInterfaceException e) { + String result = String.format("Failed to delete interface %s on node %s!", interfaceId, nodeId); + success.set(false); + LOG.error(result, e); + results.add(result); } - }) - ); + } + })); try { forkJoinTask.get(); @@ -349,6 +351,8 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { if (!alarmSuppressionNodeRemoval(input.getServiceName())) { LOG.error("Alarm suppresion node removal failed!!!!"); } + ServicePathOutputBuilder delServBldr = new ServicePathOutputBuilder(); + delServBldr.setSuccess(success.get()); if (results.isEmpty()) { return delServBldr.setResult("Request processed").build(); } else { @@ -391,8 +395,8 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { interfacesToDelete.addAll(nodeInterfaces.getEthInterfaceId()); } - LOG.info("Going to execute rollback on node {}. Interfaces to rollback: {}", nodeId, - String.join(", ", interfacesToDelete)); + LOG.info("Going to execute rollback on node {}. Interfaces to rollback: {}", nodeId, String.join(", ", + interfacesToDelete)); for (String interfaceId : interfacesToDelete) { try { @@ -404,43 +408,37 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { failedInterfaces.add(interfaceId); } } - failedToRollbackList.add(new FailedToRollbackBuilder() - .withKey(new FailedToRollbackKey(nodeId)) - .setNodeId(nodeId) - .setInterface(failedInterfaces) - .build() - ); + failedToRollbackList.add(new FailedToRollbackBuilder().withKey(new FailedToRollbackKey(nodeId)).setNodeId( + nodeId).setInterface(failedInterfaces).build()); } - return new RendererRollbackOutputBuilder() - .setSuccess(success) - .setFailedToRollback(failedToRollbackList) - .build(); + return new RendererRollbackOutputBuilder().setSuccess(success).setFailedToRollback(failedToRollbackList) + .build(); } private boolean alarmSuppressionNodeRegistration(ServicePathInput input) { NodelistBuilder nodeListBuilder = new NodelistBuilder(); nodeListBuilder.withKey(new NodelistKey(input.getServiceName())); nodeListBuilder.setServiceName(input.getServiceName()); - List 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()); + List< + 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()); } nodeListBuilder.setNodes(nodeList); - InstanceIdentifier 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(input.getServiceName())); + 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(input.getServiceName())); final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction(); writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, nodeListIID, nodeListBuilder.build()); Future submit = writeTransaction.submit(); try { submit.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS); - LOG.info("Nodes are register for alarm suppression for service: {}", - input.getServiceName()); + LOG.info("Nodes are register for alarm suppression for service: {}", input.getServiceName()); return true; } catch (ExecutionException | InterruptedException | TimeoutException e) { @@ -450,11 +448,11 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { } private boolean alarmSuppressionNodeRemoval(String serviceName) { - InstanceIdentifier 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)); + 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)); final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction(); writeTransaction.delete(LogicalDatastoreType.CONFIGURATION, nodeListIID); Future submit = writeTransaction.submit(); @@ -469,15 +467,15 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { } } - private void setTopologyForService(String serviceName, Topology topo) - throws InterruptedException, ExecutionException, TimeoutException { + private void setTopologyForService(String serviceName, Topology topo) throws InterruptedException, + ExecutionException, TimeoutException { ServicesBuilder servicesBuilder; - //Get the service from the service list inventory + // Get the service from the service list inventory ServicesKey serviceKey = new ServicesKey(serviceName); - InstanceIdentifier iid = - InstanceIdentifier.create(ServiceList.class).child(Services.class, serviceKey); + InstanceIdentifier iid = InstanceIdentifier.create(ServiceList.class).child(Services.class, + serviceKey); Optional services; try (ReadOnlyTransaction readTx = this.dataBroker.newReadOnlyTransaction()) { Future> future = readTx.read(LogicalDatastoreType.OPERATIONAL, @@ -502,17 +500,15 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { } private boolean isUsedByXc(String nodeid, String interfaceid, String xcid) { - InstanceIdentifier xciid = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(RoadmConnections.class, new RoadmConnectionsKey(xcid)); + InstanceIdentifier xciid = InstanceIdentifier.create(OrgOpenroadmDevice.class).child( + RoadmConnections.class, new RoadmConnectionsKey(xcid)); LOG.info("reading xc {} in node {}", xcid, nodeid); - Optional crossconnection = deviceTransactionManager.getDataFromDevice(nodeid, - LogicalDatastoreType.CONFIGURATION, xciid, Timeouts.DEVICE_READ_TIMEOUT, - Timeouts.DEVICE_READ_TIMEOUT_UNIT); + Optional crossconnection = this.deviceTransactionManager.getDataFromDevice(nodeid, + LogicalDatastoreType.CONFIGURATION, xciid, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); if (crossconnection.isPresent()) { RoadmConnections xc = crossconnection.get(); LOG.info("xd {} found", xcid); - if (xc.getSource().getSrcIf().equals(interfaceid) || xc.getDestination().getDstIf().equals( - interfaceid)) { + if (xc.getSource().getSrcIf().equals(interfaceid) || xc.getDestination().getDstIf().equals(interfaceid)) { return true; } } else { @@ -520,4 +516,32 @@ public class DeviceRendererServiceImpl implements DeviceRendererService { } return false; } + + @Override + public CreateOtsOmsOutput createOtsOms(CreateOtsOmsInput input) throws OpenRoadmInterfaceException { + CreateOtsOmsOutputBuilder output = new CreateOtsOmsOutputBuilder(); + String result = ""; + Boolean success = false; + // if the node is currently mounted then proceed. + if (this.deviceTransactionManager.isDeviceMounted(input.getNodeId())) { + Mapping mapping = this.portMapping.getMapping(input.getNodeId(), input.getLogicalConnectionPoint()); + if (mapping != null) { + String otsInterface = this.openRoadmInterfaceFactory.createOpenRoadmOtsInterface(input.getNodeId(), + mapping); + mapping = this.portMapping.getMapping(input.getNodeId(), input.getLogicalConnectionPoint()); + String omsInterface = this.openRoadmInterfaceFactory.createOpenRoadmOmsInterface(input.getNodeId(), + mapping); + result = "Interfaces " + otsInterface + " - " + omsInterface + " successfully created on node " + input + .getNodeId(); + success = true; + } else { + result = "Logical Connection point " + input.getLogicalConnectionPoint() + " does not exist for " + + input.getNodeId(); + } + } else { + result = input.getNodeId() + " is not mounted on the controller"; + LOG.warn(result); + } + return output.setResult(result).setSuccess(success).build(); + } } diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/rpcs/DeviceRendererRPCImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/rpcs/DeviceRendererRPCImpl.java index 0edd950b3..636c9fe32 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/rpcs/DeviceRendererRPCImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/rpcs/DeviceRendererRPCImpl.java @@ -9,7 +9,10 @@ package org.opendaylight.transportpce.renderer.rpcs; import com.google.common.util.concurrent.ListenableFuture; +import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException; import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.CreateOtsOmsInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.CreateOtsOmsOutput; 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.RendererRollbackOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererService; @@ -69,11 +72,25 @@ public class DeviceRendererRPCImpl implements RendererService { /** * Rollback created interfaces and cross connects specified by input. * - * @param input Lists of created interfaces and connections per node + * @param input + * Lists of created interfaces and connections per node * @return Success flag and nodes which failed to rollback */ @Override public ListenableFuture> rendererRollback(RendererRollbackInput input) { return RpcResultBuilder.success(this.deviceRenderer.rendererRollback(input)).buildFuture(); } + + @Override + public ListenableFuture> createOtsOms(CreateOtsOmsInput input) { + LOG.info("Request received to create oms and ots interfaces on {}: {}", input.getNodeId(), input + .getLogicalConnectionPoint()); + 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); + } + return null; + } } diff --git a/renderer/src/main/resources/org/opendaylight/blueprint/renderer-blueprint.xml b/renderer/src/main/resources/org/opendaylight/blueprint/renderer-blueprint.xml index fe04922d8..9af746256 100644 --- a/renderer/src/main/resources/org/opendaylight/blueprint/renderer-blueprint.xml +++ b/renderer/src/main/resources/org/opendaylight/blueprint/renderer-blueprint.xml @@ -33,6 +33,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html + diff --git a/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImplTest.java b/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImplTest.java index 47085695d..6b7075fad 100644 --- a/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImplTest.java +++ b/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImplTest.java @@ -58,7 +58,8 @@ public class DeviceRendererServiceImplTest extends AbstractTest { openRoadmInterfaces); CrossConnect crossConnect = new CrossConnectImpl(this.deviceTransactionManager); this.deviceRendererService = new DeviceRendererServiceImpl(this.getDataBroker(), - this.deviceTransactionManager, openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect); + this.deviceTransactionManager, openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect, + portMapping); } @Test diff --git a/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplTest.java b/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplTest.java index a444cbc99..dc3d5d69a 100644 --- a/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplTest.java +++ b/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplTest.java @@ -65,7 +65,7 @@ public class RendererServiceOperationsImplTest extends AbstractTest { openRoadmInterfaces); this.crossConnect = new CrossConnectImpl(this.deviceTransactionManager); this.deviceRenderer = new DeviceRendererServiceImpl(this.getDataBroker(), - this.deviceTransactionManager, openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect); + this.deviceTransactionManager, openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect, portMapping); } @Before