Minimal refactor of renderer to prepare flexgrid 47/94547/7
authormanuedelf <emmanuelle.delfour@orange.com>
Thu, 3 Dec 2020 18:07:08 +0000 (19:07 +0100)
committermanuedelf <emmanuelle.delfour@orange.com>
Sat, 9 Jan 2021 14:41:35 +0000 (15:41 +0100)
- Move NetworkModelWavelengthService to networkmodel as topology update
  must be done by this module.
- NetworkModelWavelengthService is now invoked by a notification sent
  by service handler instead of being directly called by renderer
- Update constructors when NetworkModelWavelengthService is no more
  used.
- Remove no more used methods from RenderServiceOperations and its
  implementation.
- Update RenderListenerImpl from service handler to send notification
  for network model.
- Add a service listener to networkmodel to update frequencies map in
  topology.
- Minimal update to unit test after moving class
- Move MountPointStub from renderer to test-common
- Update blueprint files of render, service handler and network model

JIRA: TRNSPRTPCE-230
Signed-off-by: manuedelf <emmanuelle.delfour@orange.com>
Change-Id: I9dda66a301d92b74795ee5f239699bc2d11e9a8e

32 files changed:
lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkModelProvider.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/ServiceHandlerListener.java [new file with mode: 0644]
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelWavelengthService.java [new file with mode: 0644]
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelWavelengthServiceImpl.java [moved from renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthServiceImpl.java with 92% similarity]
networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListenerTest.java
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/NetworkModelProviderTest.java
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelWaveLengthServiceFreeTest.java [moved from renderer/src/test/java/org/opendaylight/transportpce/renderer/NetworkModelWaveLengthServiceFreeTest.java with 96% similarity]
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelWaveLengthServiceUseTest.java [moved from renderer/src/test/java/org/opendaylight/transportpce/renderer/NetworkModelWaveLengthServiceUseTest.java with 96% similarity]
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/stub/MountPointServiceStub.java [deleted file]
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/stub/MountPointStub.java [deleted file]
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/WaveLengthServiceUtils.java [moved from renderer/src/test/java/org/opendaylight/transportpce/renderer/utils/WaveLengthServiceUtils.java with 81% similarity]
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/PathDescriptionUtils.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthService.java [deleted file]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/OtnDeviceRendererServiceImpl.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperations.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java
renderer/src/main/resources/OSGI-INF/blueprint/renderer-blueprint.xml
renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImplCreateOtsOmsTest.java
renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplDeleteTest.java
renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplTest.java
renderer/src/test/java/org/opendaylight/transportpce/renderer/utils/MountPointUtils.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerProvider.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererListenerImpl.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/service/ServiceHandlerOperationsImpl.java
servicehandler/src/main/resources/OSGI-INF/blueprint/servicehandler-blueprint.xml
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImplTest.java
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerProviderTest.java
test-common/src/main/java/org/opendaylight/transportpce/test/stub/MountPointServiceStub.java [moved from renderer/src/test/java/org/opendaylight/transportpce/renderer/stub/MountPointServiceStub.java with 95% similarity]
test-common/src/main/java/org/opendaylight/transportpce/test/stub/MountPointStub.java [moved from renderer/src/test/java/org/opendaylight/transportpce/renderer/stub/MountPointStub.java with 96% similarity]

index efa1ef2e2586e3b9a20ba50d7d81bf3464536e2a..8dc1881cc11d648b7a44e33e12c611b903ae179e 100644 (file)
@@ -37,6 +37,8 @@ import org.opendaylight.transportpce.networkmodel.NetworkUtilsImpl;
 import org.opendaylight.transportpce.networkmodel.R2RLinkDiscovery;
 import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
 import org.opendaylight.transportpce.networkmodel.service.NetworkModelServiceImpl;
+import org.opendaylight.transportpce.networkmodel.service.NetworkModelWavelengthService;
+import org.opendaylight.transportpce.networkmodel.service.NetworkModelWavelengthServiceImpl;
 import org.opendaylight.transportpce.olm.OlmPowerServiceRpcImpl;
 import org.opendaylight.transportpce.olm.OlmProvider;
 import org.opendaylight.transportpce.olm.power.PowerMgmt;
@@ -46,8 +48,6 @@ import org.opendaylight.transportpce.olm.service.OlmPowerServiceImpl;
 import org.opendaylight.transportpce.pce.impl.PceProvider;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
 import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthServiceImpl;
 import org.opendaylight.transportpce.renderer.RendererProvider;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface121;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface221;
@@ -123,10 +123,13 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
         PortMapping portMapping = initPortMapping(lightyServices, openRoadmInterfaces);
         NetworkModelService networkModelService = new NetworkModelServiceImpl(networkTransaction, linkDiscoveryImpl,
                 portMapping);
+        NetworkModelWavelengthService networkModelWavelengthService =
+                new NetworkModelWavelengthServiceImpl(lightyServices.getBindingDataBroker());
         NetConfTopologyListener netConfTopologyListener = new NetConfTopologyListener(networkModelService,
                 lightyServices.getBindingDataBroker(), deviceTransactionManager);
         networkModelProvider = new NetworkModelProvider(networkTransaction, lightyServices.getBindingDataBroker(),
-                lightyServices.getRpcProviderService(), networkutilsServiceImpl, netConfTopologyListener);
+                lightyServices.getRpcProviderService(), networkutilsServiceImpl, netConfTopologyListener,
+                lightyServices.getNotificationService(), networkModelWavelengthService);
 
         LOG.info("Creating OLM beans ...");
         CrossConnect crossConnect = initCrossConnect(mappingUtils);
@@ -145,21 +148,17 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
                 openRoadmInterfaces, crossConnect, portMapping, networkModelService);
         OtnDeviceRendererService otnDeviceRendererService = new OtnDeviceRendererServiceImpl(openRoadmInterfaceFactory,
                 crossConnect, openRoadmInterfaces, deviceTransactionManager, networkModelService);
-        NetworkModelWavelengthService networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(
-                lightyServices.getBindingDataBroker());
-        rendererProvider = initRenderer(lightyServices, olmPowerServiceRpc, networkModelWavelengthService,
-                deviceRendererService, otnDeviceRendererService);
+        rendererProvider = initRenderer(lightyServices, olmPowerServiceRpc, deviceRendererService,
+                otnDeviceRendererService);
 
         LOG.info("Creating service-handler beans ...");
         RendererServiceOperations rendererServiceOperations = new RendererServiceOperationsImpl(deviceRendererService,
                 otnDeviceRendererService, olmPowerServiceRpc, lightyServices.getBindingDataBroker(),
-                networkModelWavelengthService, lightyServices.getBindingNotificationPublishService());
+                lightyServices.getBindingNotificationPublishService());
         servicehandlerProvider = new ServicehandlerProvider(lightyServices.getBindingDataBroker(),
                 lightyServices.getRpcProviderService(), lightyServices.getNotificationService(), pathComputationService,
-                rendererServiceOperations, networkModelWavelengthService,
-                lightyServices.getBindingNotificationPublishService());
-        tapiProvider = initTapi(lightyServices, rendererServiceOperations, networkModelWavelengthService,
-                pathComputationService);
+                rendererServiceOperations, lightyServices.getBindingNotificationPublishService());
+        tapiProvider = initTapi(lightyServices, rendererServiceOperations, pathComputationService);
     }
 
     @Override
@@ -205,11 +204,9 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
      *
      * @param lightyServices LightyServices
      * @param rendererServiceOperations RendererServiceOperations
-     * @param networkModelWavelengthService NetworkModelWavelengthService
      * @return TapiProvider instance
      */
     private TapiProvider initTapi(LightyServices lightyServices, RendererServiceOperations rendererServiceOperations,
-            NetworkModelWavelengthService networkModelWavelengthService,
             PathComputationService pathComputationService) {
         RendererListenerImpl rendererListenerImpl = new RendererListenerImpl(pathComputationService,
                 lightyServices.getBindingNotificationPublishService());
@@ -219,8 +216,7 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
                 lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations);
         ServiceHandlerOperations serviceHandlerOperations = new ServiceHandlerOperationsImpl(
                 lightyServices.getBindingDataBroker(), pathComputationService, rendererServiceOperations,
-                lightyServices.getBindingNotificationPublishService(), pceListenerImpl, rendererListenerImpl,
-                networkModelWavelengthService);
+                lightyServices.getBindingNotificationPublishService(), pceListenerImpl, rendererListenerImpl);
         return new TapiProvider(lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(),
                 serviceHandlerOperations, new TapiListener());
     }
@@ -230,20 +226,17 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
      *
      * @param lightyServices LightyServices
      * @param olmPowerServiceRpc TransportpceOlmService
-     * @param networkModelWavelengthService NetworkModelWavelengthService
      * @param deviceRendererService DeviceRendererService
      * @param otnDeviceRendererService OtnDeviceRendererService
      * @return RendererProvider instance
      */
     private RendererProvider initRenderer(LightyServices lightyServices, TransportpceOlmService olmPowerServiceRpc,
-            NetworkModelWavelengthService networkModelWavelengthService, DeviceRendererService deviceRendererService,
-            OtnDeviceRendererService otnDeviceRendererService) {
+            DeviceRendererService deviceRendererService, OtnDeviceRendererService otnDeviceRendererService) {
         DeviceRendererRPCImpl deviceRendererRPC = new DeviceRendererRPCImpl(deviceRendererService,
                 otnDeviceRendererService);
         RendererServiceOperationsImpl rendererServiceOperations = new RendererServiceOperationsImpl(
                 deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc,
-                lightyServices.getBindingDataBroker(), networkModelWavelengthService,
-                lightyServices.getBindingNotificationPublishService());
+                lightyServices.getBindingDataBroker(), lightyServices.getBindingNotificationPublishService());
         return new RendererProvider(lightyServices.getRpcProviderService(), deviceRendererRPC,
                 rendererServiceOperations);
     }
index 669be1becb83ee2d320a90e809add926c49324fb..23c8a8df155dffbe2257e14864daedd41c72c399 100644 (file)
@@ -9,13 +9,17 @@ package org.opendaylight.transportpce.networkmodel;
 
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.api.NotificationService;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.InstanceIdentifiers;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.networkmodel.listeners.ServiceHandlerListener;
+import org.opendaylight.transportpce.networkmodel.service.NetworkModelWavelengthService;
 import org.opendaylight.transportpce.networkmodel.util.TpceNetwork;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.TransportpceServicehandlerListener;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.concepts.ObjectRegistration;
@@ -33,15 +37,21 @@ public class NetworkModelProvider {
     private ListenerRegistration<NetConfTopologyListener> dataTreeChangeListenerRegistration;
     private ObjectRegistration<TransportpceNetworkutilsService> networkutilsServiceRpcRegistration;
     private TpceNetwork tpceNetwork;
+    private ListenerRegistration<TransportpceServicehandlerListener> serviceHandlerListenerRegistration;
+    private NotificationService notificationService;
+    private NetworkModelWavelengthService networkModelWavelengthService;
 
     public NetworkModelProvider(NetworkTransactionService networkTransactionService, final DataBroker dataBroker,
         final RpcProviderService rpcProviderService, final TransportpceNetworkutilsService networkutilsService,
-        final NetConfTopologyListener topologyListener) {
+        final NetConfTopologyListener topologyListener, NotificationService notificationService,
+        NetworkModelWavelengthService networkModelWavelengthService) {
         this.dataBroker = dataBroker;
         this.rpcProviderService = rpcProviderService;
         this.networkutilsService = networkutilsService;
         this.topologyListener = topologyListener;
         this.tpceNetwork = new TpceNetwork(networkTransactionService);
+        this.notificationService = notificationService;
+        this.networkModelWavelengthService = networkModelWavelengthService;
     }
 
     /**
@@ -58,6 +68,9 @@ public class NetworkModelProvider {
                 InstanceIdentifiers.NETCONF_TOPOLOGY_II.child(Node.class)), topologyListener);
         networkutilsServiceRpcRegistration =
             rpcProviderService.registerRpcImplementation(TransportpceNetworkutilsService.class, networkutilsService);
+        TransportpceServicehandlerListener serviceHandlerListner =
+                new ServiceHandlerListener(networkModelWavelengthService);
+        serviceHandlerListenerRegistration = notificationService.registerNotificationListener(serviceHandlerListner);
     }
 
         /**
@@ -71,5 +84,6 @@ public class NetworkModelProvider {
         if (networkutilsServiceRpcRegistration != null) {
             networkutilsServiceRpcRegistration.close();
         }
+        serviceHandlerListenerRegistration.close();
     }
 }
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/ServiceHandlerListener.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/ServiceHandlerListener.java
new file mode 100644 (file)
index 0000000..a193e3d
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright Â© 2020 Orange, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.networkmodel.listeners;
+
+import org.opendaylight.transportpce.networkmodel.service.NetworkModelWavelengthService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultSh;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.TransportpceServicehandlerListener;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ServiceNotificationTypes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ServiceHandlerListener implements TransportpceServicehandlerListener {
+    private static final Logger LOG = LoggerFactory.getLogger(ServiceHandlerListener.class);
+    private final NetworkModelWavelengthService service;
+
+    public ServiceHandlerListener(NetworkModelWavelengthService service) {
+        LOG.info("Init service handler listener for network");
+        this.service = service;
+    }
+
+    @Override
+    public void onServiceRpcResultSh(ServiceRpcResultSh notification) {
+        if (notification.getStatus() != RpcStatusEx.Successful) {
+            LOG.info("RpcStatusEx of notification not equals successful. Nothing to do for notification {}",
+                    notification);
+            return;
+        }
+        ServiceNotificationTypes notificationType = notification.getNotificationType();
+        if (notificationType == null) {
+            LOG.warn("No information about the type of the notification for {}", notification);
+            return;
+        }
+        switch (notificationType) {
+            case ServiceCreateResult:
+            case ServiceReconfigureResult:
+            case ServiceRestorationResult:
+                LOG.info("Service creation or reconfiguration or restoration notification received {}", notification);
+                onServiceCreation(notification);
+                break;
+            case ServiceDeleteResult:
+                LOG.info("Service delete notification received {}", notification);
+                onServiceDeletion(notification);
+                break;
+            default:
+                LOG.warn("This type of notification is not managed at this time {} for notification {}",
+                        notificationType, notification);
+                break;
+
+        }
+    }
+
+    /**
+     * Allocate wavelength in topology.
+     * @param notification ServiceRpcResultSh
+     */
+    private void onServiceCreation(ServiceRpcResultSh notification) {
+        if (notification.getAToZDirection() != null || notification.getZToADirection() != null) {
+            LOG.info("Update topology with used frequency by service {}", notification.getServiceName());
+            service.useWavelengths(notification.getAToZDirection(), notification.getZToADirection());
+        }
+    }
+
+    /**
+     * Release wavelength in topology.
+     * @param notification ServiceRpcResultSh
+     */
+    private void onServiceDeletion(ServiceRpcResultSh notification) {
+        if (notification.getAToZDirection() != null || notification.getZToADirection() != null) {
+            LOG.info("Update topology with no more used frequency by deleted service {}",
+                    notification.getServiceName());
+            service.freeWavelengths(notification.getAToZDirection(), notification.getZToADirection());
+        }
+    }
+
+}
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelWavelengthService.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelWavelengthService.java
new file mode 100644 (file)
index 0000000..3fdb4ef
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright Â© 2017 AT&T and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.transportpce.networkmodel.service;
+
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirection;
+
+public interface NetworkModelWavelengthService {
+
+    /**
+     * Remove wavelength from available and add it to used wavelength list.
+     *
+     * @param atoZDirection AToZDirection: a to z path
+     * @param ztoADirection ZToADirection: z to a path
+     */
+    void useWavelengths(AToZDirection atoZDirection, ZToADirection ztoADirection);
+
+    /**
+     * Remove wavelength from used and add it to available wavelength list.
+     *
+     * @param atoZDirection AToZDirection: a to z path
+     * @param ztoADirection ZToADirection: z to a path
+     */
+    void freeWavelengths(AToZDirection atoZDirection, ZToADirection ztoADirection);
+
+}
similarity index 92%
rename from renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthServiceImpl.java
rename to networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelWavelengthServiceImpl.java
index 2ca59167fad7d806dac4b1b16d216214ff759429..80c2604dd0f4b88870b2d901dc415b5a6a1a365f 100644 (file)
@@ -5,7 +5,7 @@
  * 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;
+package org.opendaylight.transportpce.networkmodel.service;
 
 import java.math.BigDecimal;
 import java.util.Collection;
@@ -64,7 +64,8 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.a
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.available.freq.map.AvailFreqMapsKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev200529.xpdr.port.connection.attributes.Wavelength;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev200529.xpdr.port.connection.attributes.WavelengthBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirection;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.atoz.direction.AToZ;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ztoa.direction.ZToA;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.TerminationPoint;
@@ -92,35 +93,49 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength
     }
 
     @Override
-    public void useWavelengths(PathDescription pathDescription) {
-        List<NodeIdPair> atozTpIds = getAToZTpList(pathDescription);
-        atozTpIds.removeIf(Objects::isNull);
-        deleteAvailableWL(atozTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
-                pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava());
-        List<NodeIdPair> ztoaTpIds = getZToATpList(pathDescription);
-        ztoaTpIds.removeIf(Objects::isNull);
-        deleteAvailableWL(ztoaTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
-                pathDescription.getZToADirection().getZToAWavelengthNumber().toJava());
-        addUsedWL(pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava(), atozTpIds);
-        addUsedWL(pathDescription.getZToADirection().getZToAWavelengthNumber().toJava(), ztoaTpIds);
+    public void useWavelengths(AToZDirection atoZDirection, ZToADirection ztoADirection) {
+        if (atoZDirection != null && atoZDirection.getAToZWavelengthNumber() != null) {
+            LOG.info("Update wavelength for a to z direction {}", atoZDirection);
+            List<NodeIdPair> atozTpIds = getAToZTpList(atoZDirection);
+            atozTpIds.removeIf(Objects::isNull);
+            deleteAvailableWL(atozTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
+                    atoZDirection.getAToZWavelengthNumber().toJava());
+            addUsedWL(atoZDirection.getAToZWavelengthNumber().toJava(), atozTpIds);
+        }
+        if (ztoADirection != null && ztoADirection.getZToAWavelengthNumber() != null) {
+            LOG.info("Update wavelength for z to a direction {}", ztoADirection);
+            List<NodeIdPair> ztoaTpIds = getZToATpList(ztoADirection);
+            ztoaTpIds.removeIf(Objects::isNull);
+            deleteAvailableWL(ztoaTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
+                    ztoADirection.getZToAWavelengthNumber().toJava());
+
+            addUsedWL(ztoADirection.getZToAWavelengthNumber().toJava(), ztoaTpIds);
+        }
     }
 
+
     @Override
-    public void freeWavelengths(PathDescription pathDescription) {
-        List<NodeIdPair> atozTpIds = getAToZTpList(pathDescription);
-        List<NodeIdPair> ztoaTpIds = getZToATpList(pathDescription);
-        atozTpIds.removeIf(Objects::isNull);
-        ztoaTpIds.removeIf(Objects::isNull);
-        deleteUsedWL(pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava(), atozTpIds);
-        deleteUsedWL(pathDescription.getZToADirection().getZToAWavelengthNumber().toJava(), ztoaTpIds);
-        addAvailableWL(atozTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
-                pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava());
-        addAvailableWL(ztoaTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
-                pathDescription.getZToADirection().getZToAWavelengthNumber().toJava());
+    public void freeWavelengths(AToZDirection atoZDirection, ZToADirection ztoADirection) {
+        if (atoZDirection != null && atoZDirection.getAToZWavelengthNumber() != null) {
+            LOG.info("Free wavelength for a to z direction {}", atoZDirection);
+            List<NodeIdPair> atozTpIds = getAToZTpList(atoZDirection);
+            atozTpIds.removeIf(Objects::isNull);
+            deleteUsedWL(atoZDirection.getAToZWavelengthNumber().toJava(), atozTpIds);
+            addAvailableWL(atozTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
+                    atoZDirection.getAToZWavelengthNumber().toJava());
+        }
+        if (ztoADirection != null && ztoADirection.getZToAWavelengthNumber() != null) {
+            LOG.info("Free wavelength for z to a direction {}", ztoADirection);
+            List<NodeIdPair> ztoaTpIds = getZToATpList(ztoADirection);
+            ztoaTpIds.removeIf(Objects::isNull);
+            deleteUsedWL(ztoADirection.getZToAWavelengthNumber().toJava(), ztoaTpIds);
+            addAvailableWL(ztoaTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
+                    ztoADirection.getZToAWavelengthNumber().toJava());
+        }
     }
 
-    private List<NodeIdPair> getAToZTpList(PathDescription pathDescription) {
-        Collection<AToZ> atozList = pathDescription.getAToZDirection().nonnullAToZ().values();
+    private List<NodeIdPair> getAToZTpList(AToZDirection atoZDirection) {
+        Collection<AToZ> atozList = atoZDirection.nonnullAToZ().values();
         return atozList.stream()
                 .filter(aToZ -> {
                     if ((aToZ.getResource() == null) || (aToZ.getResource().getResource() == null)) {
@@ -139,8 +154,8 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength
                 }).collect(Collectors.toList());
     }
 
-    private List<NodeIdPair> getZToATpList(PathDescription pathDescription) {
-        Collection<ZToA> ztoaList = pathDescription.getZToADirection().nonnullZToA().values();
+    private List<NodeIdPair> getZToATpList(ZToADirection ztoADirection) {
+        Collection<ZToA> ztoaList = ztoADirection.nonnullZToA().values();
         return ztoaList.stream()
                 .filter(zToA -> {
                     if ((zToA.getResource() == null) || (zToA.getResource().getResource() == null)) {
index 4f310e4cd9522d3c23b2a17820d139fcaad6f827..79605958d790b1da9ba8b92ad4a5c4ac95aa7000 100644 (file)
@@ -12,6 +12,7 @@
     <reference id="portMapping" interface="org.opendaylight.transportpce.common.mapping.PortMapping" />
     <reference id="networkTransactionImpl" interface="org.opendaylight.transportpce.common.network.NetworkTransactionService" />
     <reference id="mappingUtils" interface="org.opendaylight.transportpce.common.mapping.MappingUtils" />
+    <reference id="notificationService" interface="org.opendaylight.mdsal.binding.api.NotificationService"/>
 
     <bean id="networkModelService" class="org.opendaylight.transportpce.networkmodel.service.NetworkModelServiceImpl">
         <argument ref="networkTransactionImpl" />
@@ -26,6 +27,8 @@
         <argument ref="rpcProviderService" />
         <argument ref="networkutilsServiceImpl" />
         <argument ref="netconfTopologyListener" />
+        <argument ref="notificationService" />
+        <argument ref="networkModelWavelengthService" />
     </bean>
 
     <bean id="netconfTopologyListener" class="org.opendaylight.transportpce.networkmodel.NetConfTopologyListener">
         <argument ref="networkTransactionImpl" />
    </bean>
 
+    <bean id="networkModelWavelengthService" class="org.opendaylight.transportpce.networkmodel.service.NetworkModelWavelengthServiceImpl">
+        <argument ref="dataBroker" />
+    </bean>
+
     <service ref="networkModelService" interface="org.opendaylight.transportpce.networkmodel.service.NetworkModelService" />
 
+    <service ref="networkModelWavelengthService" interface="org.opendaylight.transportpce.networkmodel.service.NetworkModelWavelengthService" />
+
 </blueprint>
index 6d8a0fd122aed60745b05ceb562f59ad7c626d8d..60bf1e2e3a8670a1d2662cd277eaa743448bd2e4 100644 (file)
@@ -43,9 +43,9 @@ import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfa
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl221;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl710;
 import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
-import org.opendaylight.transportpce.networkmodel.stub.MountPointServiceStub;
-import org.opendaylight.transportpce.networkmodel.stub.MountPointStub;
 import org.opendaylight.transportpce.test.DataStoreContextImpl;
+import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.test.stub.MountPointStub;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
index c5028b67e515166eccf6fc8352361daaac10d912..ba0b84ffb70f0442eb375a260fe6a222d565a839 100644 (file)
@@ -19,9 +19,11 @@ import org.mockito.Mock;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.mockito.stubbing.Answer;
+import org.opendaylight.mdsal.binding.api.NotificationService;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.networkmodel.service.NetworkModelWavelengthService;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
 
@@ -35,12 +37,17 @@ public class NetworkModelProviderTest extends AbstractTest {
     TransportpceNetworkutilsService networkutilsService;
     @Mock
     NetConfTopologyListener topologyListener;
+    @Mock
+    private NotificationService notificationService;
+    @Mock
+    private NetworkModelWavelengthService networkModelWavelengthService;
 
 
     @Test
     public void networkmodelProviderInitTest() {
         NetworkModelProvider provider = new NetworkModelProvider(networkTransactionService, getDataBroker(),
-            rpcProviderService, networkutilsService, topologyListener);
+            rpcProviderService, networkutilsService, topologyListener, notificationService,
+            networkModelWavelengthService);
         Answer<FluentFuture<CommitInfo>> answer = new Answer<FluentFuture<CommitInfo>>() {
 
             @Override
@@ -5,7 +5,7 @@
  * 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;
+package org.opendaylight.transportpce.networkmodel.service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -27,11 +27,11 @@ import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
 import org.opendaylight.transportpce.common.fixedflex.FixedFlexImpl;
 import org.opendaylight.transportpce.common.fixedflex.FixedGridConstant;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
-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.networkmodel.util.WaveLengthServiceUtils;
+import org.opendaylight.transportpce.networkmodel.util.test.PathDescriptionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.test.stub.MountPointStub;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1;
@@ -89,7 +89,7 @@ public class NetworkModelWaveLengthServiceFreeTest extends AbstractTest {
         List<Object[]> parameters = new ArrayList<>();
 
         PathDescription pathDescription =
-            ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
+            PathDescriptionUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
 
         FixedFlexImpl fixedFlex = new FixedFlexImpl();
         fixedFlex = fixedFlex.getFixedFlexWaveMapping(WAVE_LENGTH);
@@ -182,9 +182,9 @@ public class NetworkModelWaveLengthServiceFreeTest extends AbstractTest {
 
     @Before
     public void setMountPoint() {
-        MountPointServiceStub mountPointService = new MountPointServiceStub(new MountPointStub(this.getDataBroker()));
+        MountPointServiceStub mountPointService = new MountPointServiceStub(new MountPointStub(getDataBroker()));
         this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
-        networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(this.getDataBroker());
+        networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(getDataBroker());
     }
 
     @Test
@@ -192,12 +192,12 @@ public class NetworkModelWaveLengthServiceFreeTest extends AbstractTest {
         WaveLengthServiceUtils.putTerminationPoint1ToDatastore("node1" + StringConstants.TTP_TOKEN,
             StringConstants.TTP_TOKEN, this.terminationPoint1, this.deviceTransactionManager);
         WaveLengthServiceUtils.putTerminationPoint2ToDatastore("node1" + StringConstants.TTP_TOKEN,
-            StringConstants.TTP_TOKEN, this.terminationPoint2, this.deviceTransactionManager);
+            StringConstants.TTP_TOKEN, this.terminationPoint2);
         WaveLengthServiceUtils.putNode1ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node1,
             this.deviceTransactionManager);
-        WaveLengthServiceUtils.putNode2ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node2,
-            this.deviceTransactionManager);
-        this.networkModelWavelengthService.freeWavelengths(this.pathDescription);
+        WaveLengthServiceUtils.putNode2ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node2);
+        this.networkModelWavelengthService.freeWavelengths(this.pathDescription.getAToZDirection(),
+                this.pathDescription.getZToADirection());
         Node1 updatedNode1 = WaveLengthServiceUtils.getNode1FromDatastore("node1" + StringConstants.TTP_TOKEN,
             this.deviceTransactionManager);
         org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1 updatedNode2 =
similarity index 96%
rename from renderer/src/test/java/org/opendaylight/transportpce/renderer/NetworkModelWaveLengthServiceUseTest.java
rename to networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelWaveLengthServiceUseTest.java
index dad4b2cd7a2f91de6fec9552d2f046d6af329e22..0b7e2bae335335f2b96700c5307d0661cfc771a4 100644 (file)
@@ -5,7 +5,7 @@
  * 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;
+package org.opendaylight.transportpce.networkmodel.service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -26,11 +26,11 @@ import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
 import org.opendaylight.transportpce.common.fixedflex.FixedGridConstant;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
-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.networkmodel.util.WaveLengthServiceUtils;
+import org.opendaylight.transportpce.networkmodel.util.test.PathDescriptionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.test.stub.MountPointStub;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1;
@@ -70,9 +70,9 @@ public class NetworkModelWaveLengthServiceUseTest extends AbstractTest {
 
     @Before
     public void setMountPoint() {
-        MountPointServiceStub mountPointService = new MountPointServiceStub(new MountPointStub(this.getDataBroker()));
+        MountPointServiceStub mountPointService = new MountPointServiceStub(new MountPointStub(getDataBroker()));
         this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
-        networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(this.getDataBroker());
+        networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(getDataBroker());
     }
 
     public NetworkModelWaveLengthServiceUseTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
@@ -91,7 +91,7 @@ public class NetworkModelWaveLengthServiceUseTest extends AbstractTest {
         List<Object[]> parameters = new ArrayList<>();
 
         PathDescription pathDescription =
-            ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
+            PathDescriptionUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
 
         TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder()
             .setCtpAttributes((new CtpAttributesBuilder()).setAvailFreqMaps(Map.of()).build())
@@ -154,12 +154,12 @@ public class NetworkModelWaveLengthServiceUseTest extends AbstractTest {
         WaveLengthServiceUtils.putTerminationPoint1ToDatastore("node1" + StringConstants.TTP_TOKEN,
             StringConstants.TTP_TOKEN, this.terminationPoint1, this.deviceTransactionManager);
         WaveLengthServiceUtils.putTerminationPoint2ToDatastore("node1" + StringConstants.TTP_TOKEN,
-            StringConstants.TTP_TOKEN, this.terminatPoint2, this.deviceTransactionManager);
+            StringConstants.TTP_TOKEN, this.terminatPoint2);
         WaveLengthServiceUtils.putNode1ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node1,
             this.deviceTransactionManager);
-        WaveLengthServiceUtils.putNode2ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node2,
-            this.deviceTransactionManager);
-        this.networkModelWavelengthService.useWavelengths(this.pathDescription);
+        WaveLengthServiceUtils.putNode2ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node2);
+        this.networkModelWavelengthService.useWavelengths(this.pathDescription.getAToZDirection(),
+                this.pathDescription.getZToADirection());
         Node1 updatedNode1 = WaveLengthServiceUtils.getNode1FromDatastore("node1" + StringConstants.TTP_TOKEN,
             this.deviceTransactionManager);
         org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1 updatedNode2 =
diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/stub/MountPointServiceStub.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/stub/MountPointServiceStub.java
deleted file mode 100644 (file)
index 0f754eb..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.networkmodel.stub;
-
-import java.util.Optional;
-import org.opendaylight.mdsal.binding.api.MountPoint;
-import org.opendaylight.mdsal.binding.api.MountPointService;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class MountPointServiceStub implements MountPointService {
-
-    MountPoint returnedMountPoint;
-
-    public MountPointServiceStub(MountPoint usedMountPoint) {
-        this.returnedMountPoint = usedMountPoint;
-    }
-
-    @Override
-    public Optional<MountPoint> getMountPoint(InstanceIdentifier<?> mountPoint) {
-        if (returnedMountPoint == null) {
-            return Optional.empty();
-        }
-        return Optional.of(returnedMountPoint);
-    }
-
-    @Override
-    public <T extends MountPointListener> ListenerRegistration<T> registerListener(InstanceIdentifier<?> path,
-        T listener) {
-        return null;
-    }
-}
diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/stub/MountPointStub.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/stub/MountPointStub.java
deleted file mode 100644 (file)
index aeb263a..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.networkmodel.stub;
-
-import java.util.Optional;
-import javax.annotation.Nonnull;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.mdsal.binding.api.BindingService;
-import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.MountPoint;
-import org.opendaylight.mdsal.binding.api.NotificationService;
-import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.NotificationListener;
-
-
-public class MountPointStub implements MountPoint {
-
-    private DataBroker dataBroker;
-
-    private RpcConsumerRegistry rpcConsumerRegistry;
-
-
-    private NotificationService notificationService = new NotificationService() {
-        @Override
-        public @NonNull <T extends NotificationListener> ListenerRegistration<T>
-        registerNotificationListener(@NonNull T listener) {
-            return null;
-        }
-    };
-
-    public MountPointStub(DataBroker dataBroker) {
-        this.dataBroker = dataBroker;
-    }
-
-    public void setRpcConsumerRegistry(
-            RpcConsumerRegistry rpcConsumerRegistry) {
-        this.rpcConsumerRegistry = rpcConsumerRegistry;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public <T extends BindingService> Optional<T> getService(Class<T> service) {
-        if (service.isInstance(dataBroker)) {
-            return Optional.ofNullable((T) dataBroker);
-        }
-        if (service.isInstance(rpcConsumerRegistry)) {
-            return Optional.ofNullable((T) rpcConsumerRegistry);
-        }
-        if (service.isInstance(notificationService)) {
-            return Optional.ofNullable((T) notificationService);
-        }
-        return Optional.empty();
-    }
-
-    @Nonnull
-    @Override
-    public InstanceIdentifier<?> getIdentifier() {
-        throw new UnsupportedOperationException();
-    }
-}
similarity index 81%
rename from renderer/src/test/java/org/opendaylight/transportpce/renderer/utils/WaveLengthServiceUtils.java
rename to networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/WaveLengthServiceUtils.java
index e04cb25c78154c6c85f52e160da0126343c0343c..6f68269a08db83d16566c1b2e9965e0ddb5e284a 100644 (file)
@@ -6,12 +6,14 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.transportpce.renderer.utils;
+package org.opendaylight.transportpce.networkmodel.util;
 
 import java.util.concurrent.ExecutionException;
+import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.TerminationPoint1;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
@@ -25,7 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
 
-public final class WaveLengthServiceUtils {
+public final class WaveLengthServiceUtils extends AbstractTest {
 
     private WaveLengthServiceUtils() {
 
@@ -66,28 +68,28 @@ public final class WaveLengthServiceUtils {
     }
 
     public static void putTerminationPoint1ToDatastore(String nodeId, String tpId, TerminationPoint1 terminationPoint1,
-            DeviceTransactionManager deviceTransactionManager)
-            throws ExecutionException, InterruptedException {
-        TransactionUtils
-            .writeTransaction(deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION,
+            DeviceTransactionManager deviceTransactionManager) throws ExecutionException, InterruptedException {
+        WriteTransaction writeTransaction = getDataBroker().newWriteOnlyTransaction();
+        writeTransaction.put(LogicalDatastoreType.CONFIGURATION,
                 createTerminationPoint1IIDBuilder(nodeId, tpId).build(), terminationPoint1);
+        writeTransaction.commit();
     }
 
     public static void putTerminationPoint2ToDatastore(String nodeId, String tpId,
             org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1
-                terminationPoint1, DeviceTransactionManager deviceTransactionManager)
+                terminationPoint1)
             throws ExecutionException, InterruptedException {
-        TransactionUtils
-            .writeTransaction(deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION,
+        WriteTransaction writeTransaction = getDataBroker().newWriteOnlyTransaction();
+        writeTransaction.put(LogicalDatastoreType.CONFIGURATION,
                 createTerminationPoint2IIDBuilder(nodeId, tpId).build(), terminationPoint1);
+        writeTransaction.commit();
     }
 
     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);
+        return getDataBroker().newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, tpIID).get().get();
     }
 
     public static org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529
@@ -96,9 +98,7 @@ public final class WaveLengthServiceUtils {
             throws ExecutionException, InterruptedException {
         InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1>
             tpIID = createTerminationPoint2IIDBuilder(nodeId, tpId).build();
-        return (org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1)
-             TransactionUtils
-                .readTransaction(deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION, tpIID);
+        return getDataBroker().newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, tpIID).get().get();
     }
 
     private static InstanceIdentifier<Node1> createNode1IID(String nodeId) {
@@ -128,27 +128,26 @@ public final class WaveLengthServiceUtils {
         DeviceTransactionManager deviceTransactionManager)
         throws ExecutionException, InterruptedException {
         InstanceIdentifier<Node1> nodeIID = createNode1IID(nodeId);
-        TransactionUtils
-            .writeTransaction(deviceTransactionManager, nodeId,
-                LogicalDatastoreType.CONFIGURATION, nodeIID, node1);
+        WriteTransaction writeTransaction = getDataBroker().newWriteOnlyTransaction();
+        writeTransaction.put(LogicalDatastoreType.CONFIGURATION,nodeIID, node1);
+        writeTransaction.commit();
     }
 
     public static void putNode2ToDatastore(String nodeId,
-            org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1 node1,
-            DeviceTransactionManager deviceTransactionManager)
+            org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1 node1)
            throws ExecutionException, InterruptedException {
         InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1> nodeIID =
             createNode2IID(nodeId);
-        TransactionUtils
-            .writeTransaction(deviceTransactionManager, nodeId,
-                LogicalDatastoreType.CONFIGURATION, nodeIID, node1);
+        WriteTransaction writeTransaction = getDataBroker().newWriteOnlyTransaction();
+        writeTransaction.put(LogicalDatastoreType.CONFIGURATION,
+                nodeIID, node1);
+        writeTransaction.commit();
     }
 
     public static Node1 getNode1FromDatastore(String nodeId, DeviceTransactionManager deviceTransactionManager)
             throws ExecutionException, InterruptedException {
         InstanceIdentifier<Node1> nodeIID = createNode1IID(nodeId);
-        return (Node1) TransactionUtils
-            .readTransaction(deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION, nodeIID);
+        return getDataBroker().newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, nodeIID).get().get();
     }
 
     public static org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529
@@ -156,7 +155,6 @@ public final class WaveLengthServiceUtils {
             throws ExecutionException, InterruptedException {
         InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529
             .Node1> nodeIID = createNode2IID(nodeId);
-        return (org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1) TransactionUtils
-            .readTransaction(deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION, nodeIID);
+        return getDataBroker().newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, nodeIID).get().get();
     }
 }
diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/PathDescriptionUtils.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/PathDescriptionUtils.java
new file mode 100644 (file)
index 0000000..539a005
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * 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.networkmodel.util.test;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.PathDescriptionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.ServiceZEndBuilder;
+import org.opendaylight.yangtools.yang.common.Uint32;
+
+public final class PathDescriptionUtils {
+
+    private PathDescriptionUtils() {
+
+    }
+
+    public static PathDescription createTransactionPathDescription(String tpId) {
+        Map<AToZKey,AToZ> atoZMap = new HashMap<>();
+        TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
+        TerminationPoint terminationPoint = terminationPointBuilder.setTpNodeId("node2" + tpId)
+                        .setTpId(tpId).build();
+        TerminationPoint terminationPoint2 = terminationPointBuilder.setTpNodeId("node1" + tpId)
+                        .setTpId(tpId).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();
+        atoZMap.put(atoZ.key(),atoZ);
+        atoZMap.put(atoZ2.key(),atoZ2);
+        AToZDirection atozDirection = new AToZDirectionBuilder()
+                .setRate(Uint32.valueOf(20))
+                .setAToZWavelengthNumber(Uint32.valueOf(20))
+                .setAToZ(atoZMap)
+                .setModulationFormat("OC")
+                .build();
+        Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
+        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();
+        ztoAMap.put(ztoA.key(),ztoA);
+        ztoAMap.put(ztoA2.key(),ztoA2);
+        ZToADirection ztoaDirection = new ZToADirectionBuilder()
+                .setRate(Uint32.valueOf(20))
+                .setZToAWavelengthNumber(Uint32.valueOf(20))
+                .setZToA(ztoAMap)
+                .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(Uint32.valueOf(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(Uint32.valueOf(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());
+    }
+}
diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthService.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthService.java
deleted file mode 100644 (file)
index ffe974d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright Â© 2017 AT&T and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.transportpce.renderer;
-
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.PathDescription;
-
-public interface NetworkModelWavelengthService {
-
-    /**
-     * Remove wavelength from available and add it to used wavelength list.
-     *
-     * @param pathDescription
-     *     path description containing a-to-z and z-to-a path
-     */
-    void useWavelengths(PathDescription pathDescription);
-
-    /**
-     * Remove wavelength from used and add it to available wavelength list.
-     *
-     * @param pathDescription
-     *     path description containing a-to-z and z-to-a path
-     */
-    void freeWavelengths(PathDescription pathDescription);
-
-}
index 8febfdc3d5b5cdb1a95eba8500d688c8f5441102..e92222df874c4768340cbf29080736a9db428458 100644 (file)
@@ -376,7 +376,10 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService {
 
     private void createODU4TtpInterface(OtnServicePathInput input, List<NodeInterface> nodeInterfaces,
         CopyOnWriteArrayList<Nodes> otnNodesProvisioned) throws OpenRoadmInterfaceException {
-
+        if (input.getNodes() == null) {
+            return;
+        }
+        LOG.info("Creation of ODU4 tp interface {}", input);
         for (int i = 0; i < input.getNodes().size(); i++) {
             Nodes node = input.getNodes().get(i);
             String supportingOtuInterface = node.getNetworkTp() + "-OTU";
index bc4730a0d364ccdaf7019e05fae964c1bd48fa7e..924a0268ee7e9a40d6bb0865c1bbc9315809a5bd 100644 (file)
@@ -8,13 +8,11 @@
 package org.opendaylight.transportpce.renderer.provisiondevice;
 
 import com.google.common.util.concurrent.ListenableFuture;
-import org.opendaylight.transportpce.common.OperationResult;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceDeleteInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceDeleteOutput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceImplementationRequestInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceImplementationRequestOutput;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.PathDescription;
 
 
 public interface RendererServiceOperations {
@@ -22,9 +20,4 @@ public interface RendererServiceOperations {
     ListenableFuture<ServiceImplementationRequestOutput> serviceImplementation(ServiceImplementationRequestInput input);
 
     ListenableFuture<ServiceDeleteOutput> serviceDelete(ServiceDeleteInput input, Services service);
-
-    OperationResult reserveResource(PathDescription pathDescription);
-
-    OperationResult freeResource(PathDescription pathDescription);
-
 }
index a3c3e390adaa262de36b37321b00d8769f62d2cb..ef53fe70bb790ceda8d1c13a43b06ebeef2eee82 100644 (file)
@@ -24,12 +24,10 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.transportpce.common.OperationResult;
 import org.opendaylight.transportpce.common.ResponseCodes;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.renderer.ModelMappingUtils;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
 import org.opendaylight.transportpce.renderer.ServicePathInputData;
 import org.opendaylight.transportpce.renderer.provisiondevice.servicepath.ServicePathDirection;
 import org.opendaylight.transportpce.renderer.provisiondevice.tasks.DeviceRenderingRollbackTask;
@@ -69,6 +67,7 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service
 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.olm.get.pm.input.ResourceIdentifierBuilder;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.olm.renderer.input.Nodes;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.Notification;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.slf4j.Logger;
@@ -96,37 +95,18 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations
     private final DataBroker dataBroker;
     private final NotificationPublishService notificationPublishService;
     private ListeningExecutorService executor;
-    private NetworkModelWavelengthService networkModelWavelengthService;
-    private RendererRpcResultSp notification = null;
 
     public RendererServiceOperationsImpl(DeviceRendererService deviceRenderer,
             OtnDeviceRendererService otnDeviceRenderer, TransportpceOlmService olmService,
-            DataBroker dataBroker, NetworkModelWavelengthService networkModelWavelengthService,
-            NotificationPublishService notificationPublishService) {
+            DataBroker dataBroker, NotificationPublishService notificationPublishService) {
         this.deviceRenderer = deviceRenderer;
         this.otnDeviceRenderer = otnDeviceRenderer;
         this.olmService = olmService;
         this.dataBroker = dataBroker;
-        this.networkModelWavelengthService = networkModelWavelengthService;
         this.notificationPublishService = notificationPublishService;
         this.executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUMBER_OF_THREADS));
     }
 
-    private void sendNotifications(ServicePathNotificationTypes servicePathNotificationTypes, String serviceName,
-            RpcStatusEx rpcStatusEx, String message) {
-        this.notification = new RendererRpcResultSpBuilder()
-                .setNotificationType(servicePathNotificationTypes)
-                .setServiceName(serviceName)
-                .setStatus(rpcStatusEx)
-                .setStatusMessage(message)
-                .build();
-        try {
-            notificationPublishService.putNotification(this.notification);
-        } catch (InterruptedException e) {
-            LOG.info("notification offer rejected: ", e);
-        }
-    }
-
     @Override
     public ListenableFuture<ServiceImplementationRequestOutput>
             serviceImplementation(ServiceImplementationRequestInput input) {
@@ -178,8 +158,6 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations
                                     OPERATION_FAILED);
                             }
                             LOG.info("OTN rendering result size {}", otnRenderingResults.size());
-                            sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest,
-                                input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL);
                         }
                         break;
                     case Infrastructure:
@@ -224,45 +202,21 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations
                                     OPERATION_FAILED);
                             }
                             LOG.info("OTN rendering result size {}", otnRenderingResults.size());
-                            sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest,
-                                input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL);
                         }
                         break;
                     default:
                         LOG.warn("Unsupported connection type {}", input.getConnectionType());
                 }
+                sendNotificationsWithPathDescription(
+                        ServicePathNotificationTypes.ServiceImplementationRequest,
+                        input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL,
+                        input.getPathDescription());
                 return ModelMappingUtils.createServiceImplResponse(ResponseCodes.RESPONSE_OK,
                     OPERATION_SUCCESSFUL);
             }
         });
     }
 
-    @Override
-    @SuppressWarnings("checkstyle:IllegalCatch")
-    public OperationResult reserveResource(PathDescription pathDescription) {
-
-        try {
-            LOG.info("Reserving resources in network model");
-            networkModelWavelengthService.useWavelengths(pathDescription);
-        } catch (Exception e) {
-            LOG.warn("Reserving resources in network model failed");
-            return OperationResult.failed("Resources reserve failed in network model");
-        }
-        return OperationResult.ok("Resources reserved successfully in network model");
-    }
-
-    @Override
-    @SuppressWarnings("checkstyle:IllegalCatch")
-    public OperationResult freeResource(PathDescription pathDescription) {
-
-        try {
-            networkModelWavelengthService.freeWavelengths(pathDescription);
-        } catch (Exception e) {
-            return OperationResult.failed("Resources reserve failed in network model");
-        }
-        return OperationResult.ok("Resources reserved successfully in network model");
-    }
-
     @Override
     public ListenableFuture<ServiceDeleteOutput> serviceDelete(ServiceDeleteInput input, Services service) {
         String serviceName = input.getServiceName();
@@ -626,10 +580,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations
                 "Service activation test failed.");
             return false;
         }
-        // If Service activation is success update Network ModelMappingUtils
-        networkModelWavelengthService.useWavelengths(input.getPathDescription());
-        sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest,
-            input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL);
+        sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceImplementationRequest,
+            input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL, input.getPathDescription());
         return true;
     }
 
@@ -675,9 +627,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations
                 "Deleting service path via renderer");
         deviceRenderer.deleteServicePath(servicePathInputDataAtoZ.getServicePathInput());
         deviceRenderer.deleteServicePath(servicePathInputDataZtoA.getServicePathInput());
-        networkModelWavelengthService.freeWavelengths(pathDescription);
-        sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, RpcStatusEx.Successful,
-                OPERATION_SUCCESSFUL);
+        sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceDelete,
+                serviceName, RpcStatusEx.Successful, OPERATION_SUCCESSFUL,pathDescription);
         return true;
     }
 
@@ -700,12 +651,76 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations
                 "Deleting otn-service path via renderer");
         OtnServicePathOutput result = otnDeviceRenderer.deleteOtnServicePath(ospi);
         if (result.isSuccess()) {
-            sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, RpcStatusEx.Successful,
-                OPERATION_SUCCESSFUL);
+            sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceDelete,
+                    serviceName, RpcStatusEx.Successful, OPERATION_SUCCESSFUL, pathDescription);
             return true;
         } else {
             return false;
         }
     }
 
+    /**
+     * Send renderer notification.
+     * @param servicePathNotificationTypes ServicePathNotificationTypes
+     * @param serviceName String
+     * @param rpcStatusEx RpcStatusEx
+     * @param message String
+     */
+    private void sendNotifications(ServicePathNotificationTypes servicePathNotificationTypes, String serviceName,
+            RpcStatusEx rpcStatusEx, String message) {
+        Notification notification = buildNotification(servicePathNotificationTypes, serviceName, rpcStatusEx, message,
+                null);
+        send(notification);
+    }
+
+    /**
+     * Send renderer notification with path description information.
+     * @param servicePathNotificationTypes ServicePathNotificationTypes
+     * @param serviceName String
+     * @param rpcStatusEx RpcStatusEx
+     * @param message String
+     * @param pathDescription PathDescription
+     */
+    private void sendNotificationsWithPathDescription(ServicePathNotificationTypes servicePathNotificationTypes,
+            String serviceName, RpcStatusEx rpcStatusEx, String message, PathDescription pathDescription) {
+        Notification notification = buildNotification(servicePathNotificationTypes, serviceName, rpcStatusEx, message,
+                pathDescription);
+        send(notification);
+    }
+
+    /**
+     * Build notification containing path description information.
+     * @param servicePathNotificationTypes ServicePathNotificationTypes
+     * @param serviceName String
+     * @param rpcStatusEx RpcStatusEx
+     * @param message String
+     * @param pathDescription PathDescription
+     * @return notification with RendererRpcResultSp type.
+     */
+    private RendererRpcResultSp buildNotification(ServicePathNotificationTypes servicePathNotificationTypes,
+            String serviceName, RpcStatusEx rpcStatusEx, String message, PathDescription pathDescription) {
+        RendererRpcResultSpBuilder builder = new RendererRpcResultSpBuilder()
+                .setNotificationType(servicePathNotificationTypes).setServiceName(serviceName).setStatus(rpcStatusEx)
+                .setStatusMessage(message);
+        if (pathDescription != null) {
+            builder.setAToZDirection(pathDescription.getAToZDirection())
+                    .setZToADirection(pathDescription.getZToADirection());
+        }
+        return builder.build();
+    }
+
+    /**
+     * Send renderer notification.
+     * @param notification Notification
+     */
+    private void send(Notification notification) {
+        try {
+            LOG.info("Sending notification {}", notification);
+            notificationPublishService.putNotification(notification);
+        } catch (InterruptedException e) {
+            LOG.info("notification offer rejected: ", e);
+            Thread.currentThread().interrupt();
+        }
+    }
+
 }
index 0196d940016702e8f9788bb6fafe45e1b699bcd4..d994e85ac675995fcae4d3f318e106428443ace1 100644 (file)
@@ -78,17 +78,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <argument ref="otnDeviceRenderer" />
   </bean>
 
-  <bean id="networkModelWavelengthService"
-        class="org.opendaylight.transportpce.renderer.NetworkModelWavelengthServiceImpl">
-    <argument ref="dataBroker" />
-  </bean>
-
   <bean id="rendererServiceOperations" class="org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperationsImpl" >
     <argument ref="deviceRenderer" />
     <argument ref="otnDeviceRenderer"/>
     <argument ref="olmService" />
     <argument ref="dataBroker" />
-    <argument ref="networkModelWavelengthService" />
     <argument ref="notificationPublishService" />
   </bean>
 
@@ -103,8 +97,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
            interface="org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService" />
   <service ref="rendererServiceOperations"
            interface="org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations" />
-  <service ref="networkModelWavelengthService"
-           interface="org.opendaylight.transportpce.renderer.NetworkModelWavelengthService" />
   <service ref="otnDeviceRenderer"
             interface="org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService"/>
 
index 465a8c03a71a69e3eecd2e78693bba0255077142..0f2217d5830b290787d6e320766fbee5c5b03b5c 100644 (file)
@@ -45,10 +45,10 @@ import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterf
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface221;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmOtnInterface221;
-import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
 import org.opendaylight.transportpce.renderer.utils.CreateOtsOmsDataUtils;
 import org.opendaylight.transportpce.renderer.utils.MountPointUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.CreateOtsOmsInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.CreateOtsOmsOutput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.Network;
index 1a40f26150b7f6dc3fc3e50e44706a3bf01af64b..1a6a0367fcb1e9fd17ad9feb2ddce5b5dff05040 100644 (file)
@@ -46,19 +46,17 @@ import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfa
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl121;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl221;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl710;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthServiceImpl;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface121;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface221;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmOtnInterface221;
-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.NotificationPublishServiceMock;
 import org.opendaylight.transportpce.renderer.utils.ServiceDeleteDataUtils;
 import org.opendaylight.transportpce.renderer.utils.TransactionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.test.stub.MountPointStub;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerTurndownOutputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.TransportpceOlmService;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceDeleteInputBuilder;
@@ -88,7 +86,6 @@ public class RendererServiceOperationsImplDeleteTest extends AbstractTest {
     private DeviceRendererService deviceRenderer;
     private PortMapping portMapping;
     private CrossConnect crossConnect;
-    private NetworkModelWavelengthService networkModelWavelengthService;
     private TransportpceOlmService olmService;
     private MappingUtils mappingUtils;
     private OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121;
@@ -149,11 +146,9 @@ public class RendererServiceOperationsImplDeleteTest extends AbstractTest {
         this.olmService = Mockito.spy(this.olmService);
         ListeningExecutorService executor =
             MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUMBER_OF_THREADS));
-        this.networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(getDataBroker());
         NotificationPublishService notificationPublishService = new NotificationPublishServiceMock();
         this.rendererServiceOperations =  new RendererServiceOperationsImpl(this.deviceRenderer,
-            this.otnDeviceRendererService, olmService, getDataBroker(), this.networkModelWavelengthService,
-            notificationPublishService);
+            this.otnDeviceRendererService, olmService, getDataBroker(), notificationPublishService);
 
     }
 
index a364ed6c8a0814278fd24a6cd97b232bdb065924..7f984bb816587cb632317533026ab0d64088027f 100644 (file)
@@ -42,19 +42,17 @@ import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfa
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl121;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl221;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl710;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthServiceImpl;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface121;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface221;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmOtnInterface221;
-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.MountPointUtils;
 import org.opendaylight.transportpce.renderer.utils.NotificationPublishServiceMock;
 import org.opendaylight.transportpce.renderer.utils.ServiceDataUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
+import org.opendaylight.transportpce.test.stub.MountPointStub;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.ServicePathOutputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.GetPmInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.GetPmInputBuilder;
@@ -83,7 +81,6 @@ public class RendererServiceOperationsImplTest extends AbstractTest {
     private OpenRoadmInterfaceFactory openRoadmInterfaceFactory;
     private CrossConnect crossConnect;
     private TransportpceOlmService olmService;
-    private NetworkModelWavelengthService networkModelWavelengthService;
     private MappingUtils mappingUtils;
     private OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121;
     private OpenRoadmInterfacesImpl221 openRoadmInterfacesImpl221;
@@ -130,7 +127,6 @@ public class RendererServiceOperationsImplTest extends AbstractTest {
     public void setUp() throws OpenRoadmInterfaceException {
         setMountPoint(new MountPointStub(getDataBroker()));
         this.olmService = new OlmServiceStub();
-        this.networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(getDataBroker());
         this.deviceRenderer = new DeviceRendererServiceImpl(this.getDataBroker(), this.deviceTransactionManager,
             openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect, portMapping, null);
         this.otnDeviceRendererService = new OtnDeviceRendererServiceImpl(openRoadmInterfaceFactory, this.crossConnect,
@@ -141,8 +137,7 @@ public class RendererServiceOperationsImplTest extends AbstractTest {
         this.olmService = Mockito.spy(this.olmService);
         this.deviceRenderer = Mockito.spy(this.deviceRenderer);
         this.rendererServiceOperations =  new RendererServiceOperationsImpl(this.deviceRenderer,
-            this.otnDeviceRendererService, this.olmService, getDataBroker(), this.networkModelWavelengthService,
-            notificationPublishService);
+            this.otnDeviceRendererService, this.olmService, getDataBroker(), notificationPublishService);
 
         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
             .setSuccess(true);
index 1a7b24fe0f212a211f29f4387316fe6ca7245aaa..4d12e4b6986acff2f8a3077c52f0de8f40a8af00 100644 (file)
@@ -16,7 +16,7 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
-import org.opendaylight.transportpce.renderer.stub.MountPointStub;
+import org.opendaylight.transportpce.test.stub.MountPointStub;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.Network;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.Nodes;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesKey;
index f2ec980a28437149874d75d2d198b643ca6272f6..c07bf0cd2df595e3a1446d9a6cf7951dedd5670b 100644 (file)
@@ -17,7 +17,6 @@ import org.opendaylight.mdsal.binding.api.NotificationPublishService;
 import org.opendaylight.transportpce.common.OperationResult;
 import org.opendaylight.transportpce.common.ResponseCodes;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
 import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
 import org.opendaylight.transportpce.servicehandler.DowngradeConstraints;
 import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
@@ -111,8 +110,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
 
     public ServicehandlerImpl(DataBroker databroker, PathComputationService pathComputationService,
             RendererServiceOperations rendererServiceOperations, NotificationPublishService notificationPublishService,
-            PceListenerImpl pceListenerImpl, RendererListenerImpl rendererListenerImpl,
-            NetworkModelWavelengthService networkModelWavelengthService) {
+            PceListenerImpl pceListenerImpl, RendererListenerImpl rendererListenerImpl) {
         this.db = databroker;
         this.serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(this.db);
         this.serviceDataStoreOperations.initialize();
index 33c268cf5b7c5591fa7db427673f4db3e3e401dd..ec1e2f55649c13085795b59eac4dac554a814efa 100644 (file)
@@ -13,7 +13,6 @@ import org.opendaylight.mdsal.binding.api.NotificationPublishService;
 import org.opendaylight.mdsal.binding.api.NotificationService;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
 import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
 import org.opendaylight.transportpce.servicehandler.listeners.PceListenerImpl;
 import org.opendaylight.transportpce.servicehandler.listeners.RendererListenerImpl;
@@ -38,7 +37,6 @@ public class ServicehandlerProvider {
     private final DataBroker dataBroker;
     private final RpcProviderService rpcService;
     private final NotificationService notificationService;
-    private final NetworkModelWavelengthService networkModelWavelengthService;
     private final NotificationPublishService notificationPublishService;
     private ListenerRegistration<TransportpcePceListener> pcelistenerRegistration;
     private ListenerRegistration<TransportpceRendererListener> rendererlistenerRegistration;
@@ -49,14 +47,12 @@ public class ServicehandlerProvider {
     public ServicehandlerProvider(final DataBroker dataBroker, RpcProviderService rpcProviderService,
             NotificationService notificationService, PathComputationService pathComputationService,
             RendererServiceOperations rendererServiceOperations,
-            NetworkModelWavelengthService networkModelWavelengthService,
             NotificationPublishService notificationPublishService) {
         this.dataBroker = dataBroker;
         this.rpcService = rpcProviderService;
         this.notificationService = notificationService;
         this.pathComputationService = pathComputationService;
         this.rendererServiceOperations = rendererServiceOperations;
-        this.networkModelWavelengthService = networkModelWavelengthService;
         this.notificationPublishService = notificationPublishService;
     }
 
@@ -72,8 +68,7 @@ public class ServicehandlerProvider {
         pcelistenerRegistration = notificationService.registerNotificationListener(pceListenerImpl);
         rendererlistenerRegistration = notificationService.registerNotificationListener(rendererListenerImpl);
         final ServicehandlerImpl servicehandler = new ServicehandlerImpl(dataBroker, pathComputationService,
-                rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl,
-                networkModelWavelengthService);
+                rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl);
         rpcRegistration =
             rpcService.registerRpcImplementation(OrgOpenroadmServiceService.class, servicehandler);
     }
index e1dc134f3f0ca2ff16974bee0d998758665ece4d..b79bcb518ca988ab810a36416586a8638fc43f32 100644 (file)
@@ -16,10 +16,11 @@ import org.opendaylight.transportpce.servicehandler.service.PCEServiceWrapper;
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.RendererRpcResultSp;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.TransportpceRendererListener;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultSh;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultShBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ServiceNotificationTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,12 +38,14 @@ public class RendererListenerImpl implements TransportpceRendererListener {
     private ServiceInput input;
     private PCEServiceWrapper pceServiceWrapper;
     private Boolean tempService;
+    private NotificationPublishService notificationPublishService;
 
     public RendererListenerImpl(PathComputationService pathComputationService,
             NotificationPublishService notificationPublishService) {
         this.pceServiceWrapper = new PCEServiceWrapper(pathComputationService, notificationPublishService);
         setServiceInput(null);
         setTempService(false);
+        this.notificationPublishService = notificationPublishService;
     }
 
     @Override
@@ -52,18 +55,17 @@ public class RendererListenerImpl implements TransportpceRendererListener {
             return;
         }
         serviceRpcResultSp = notification;
-        String serviceName = serviceRpcResultSp.getServiceName();
         int notifType = serviceRpcResultSp.getNotificationType().getIntValue();
         LOG.info("Renderer '{}' Notification received : {}", serviceRpcResultSp.getNotificationType().getName(),
                 notification);
         switch (notifType) {
             /* service-implementation-request. */
             case 3 :
-                onServiceImplementationResult(serviceName);
+                onServiceImplementationResult(notification);
                 break;
             /* service-delete. */
             case 4 :
-                onServiceDeleteResult(serviceName);
+                onServiceDeleteResult(notification);
                 break;
             default:
                 break;
@@ -72,20 +74,23 @@ public class RendererListenerImpl implements TransportpceRendererListener {
 
     /**
      * Process service delete result for serviceName.
-     * @param serviceName String
+     * @param notification RendererRpcResultSp
      */
-    private void onServiceDeleteResult(String serviceName) {
-        if (serviceRpcResultSp.getStatus() == RpcStatusEx.Failed) {
-            LOG.error("Renderer service delete failed !");
-            return;
-        } else if (serviceRpcResultSp.getStatus() == RpcStatusEx.Pending) {
-            LOG.warn("Renderer service delete returned a Penging RpcStatusEx code!");
-            return;
-        } else if (serviceRpcResultSp.getStatus() != RpcStatusEx.Successful) {
-            LOG.error("Renderer service delete returned an unknown RpcStatusEx code!");
-            return;
+    private void onServiceDeleteResult(RendererRpcResultSp notification) {
+        switch (serviceRpcResultSp.getStatus()) {
+            case Successful:
+                LOG.info("Service '{}' deleted !", notification.getServiceName());
+                break;
+            case Failed:
+                LOG.error("Renderer service delete failed !");
+                return;
+            case  Pending:
+                LOG.warn("Renderer service delete returned a Penging RpcStatusEx code!");
+                return;
+            default:
+                LOG.error("Renderer service delete returned an unknown RpcStatusEx code!");
+                return;
         }
-        LOG.info("Service '{}' deleted !", serviceName);
         if (this.input == null) {
             LOG.error("ServiceInput parameter is null !");
             return;
@@ -93,30 +98,35 @@ public class RendererListenerImpl implements TransportpceRendererListener {
         LOG.info("sending PCE cancel resource reserve for '{}'",  this.input.getServiceName());
         this.pceServiceWrapper.cancelPCEResource(this.input.getServiceName(),
                 ServiceNotificationTypes.ServiceDeleteResult);
+        sendServiceHandlerNotification(notification, ServiceNotificationTypes.ServiceDeleteResult);
     }
 
     /**
      * Process service implementation result for serviceName.
-     * @param serviceName String
-     * @param serviceName String
+     * @param notification RendererRpcResultSp
      */
-    private void onServiceImplementationResult(String serviceName) {
-        if (serviceRpcResultSp.getStatus() == RpcStatusEx.Successful) {
-            onSuccededServiceImplementation();
-        } else if (serviceRpcResultSp.getStatus() == RpcStatusEx.Failed) {
-            onFailedServiceImplementation(serviceName);
-        } else if (serviceRpcResultSp.getStatus() == RpcStatusEx.Pending) {
-            LOG.warn("Service Implementation still pending according to RpcStatusEx");
-        } else {
-            LOG.warn("Service Implementation has an unknown RpcStatusEx code");
+    private void onServiceImplementationResult(RendererRpcResultSp notification) {
+        switch (serviceRpcResultSp.getStatus()) {
+            case Successful:
+                onSuccededServiceImplementation(notification);
+                break;
+            case Failed:
+                onFailedServiceImplementation(notification.getServiceName());
+                break;
+            case  Pending:
+                LOG.warn("Service Implementation still pending according to RpcStatusEx");
+                break;
+            default:
+                LOG.warn("Service Implementation has an unknown RpcStatusEx code");
+                break;
         }
-
     }
 
     /**
      * Process succeeded service implementation for service.
+     * @param notification RendererRpcResultSp
      */
-    private void onSuccededServiceImplementation() {
+    private void onSuccededServiceImplementation(RendererRpcResultSp notification) {
         LOG.info("Service implemented !");
         if (serviceDataStoreOperations == null) {
             LOG.debug("serviceDataStoreOperations is null");
@@ -136,10 +146,37 @@ public class RendererListenerImpl implements TransportpceRendererListener {
                     AdminStates.InService);
             if (!operationResult.isSuccess()) {
                 LOG.warn("Service status not updated in datastore !");
+            } else {
+                sendServiceHandlerNotification(notification, ServiceNotificationTypes.ServiceCreateResult);
             }
         }
     }
 
+    /**
+     * Create and send service handler notification.
+     * @param notification RendererRpcResultSp
+     * @param type ServiceNotificationTypes
+     */
+    private void sendServiceHandlerNotification(RendererRpcResultSp notification, ServiceNotificationTypes type) {
+        try {
+            ServiceRpcResultSh serviceHandlerNotification = new ServiceRpcResultShBuilder()
+                    .setAToZDirection(notification.getAToZDirection())
+                    .setZToADirection(notification.getZToADirection())
+                    .setServiceName(notification.getServiceName())
+                    .setStatus(notification.getStatus())
+                    .setStatusMessage(notification.getStatusMessage())
+                    .setNotificationType(type)
+                    .build();
+            LOG.debug("Service update in datastore OK, sending notification {}", serviceHandlerNotification);
+            notificationPublishService.putNotification(
+                    serviceHandlerNotification);
+        } catch (InterruptedException e) {
+            LOG.warn("Something went wrong while sending notification for sevice {}",
+                    serviceRpcResultSp.getServiceName(), e);
+            Thread.currentThread().interrupt();
+        }
+    }
+
     /**
      * Process failed service implementation for serviceName.
      * @param serviceName String
index 913a1772f6f22c38f26bf191512a1227ff630441..bb3f257a3c662b539d0afebbf5e1ee1d955fdfb0 100644 (file)
@@ -12,7 +12,6 @@ import java.util.concurrent.ExecutionException;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
 import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
 import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl;
 import org.opendaylight.transportpce.servicehandler.listeners.PceListenerImpl;
@@ -33,10 +32,9 @@ public class ServiceHandlerOperationsImpl implements ServiceHandlerOperations {
 
     public ServiceHandlerOperationsImpl(DataBroker databroker, PathComputationService pathComputationService,
         RendererServiceOperations rendererServiceOperations, NotificationPublishService notificationPublishService,
-        PceListenerImpl pceListenerImpl, RendererListenerImpl rendererListenerImpl,
-        NetworkModelWavelengthService networkModelWavelengthService) {
+        PceListenerImpl pceListenerImpl, RendererListenerImpl rendererListenerImpl) {
         this.serviceHandler = new ServicehandlerImpl(databroker, pathComputationService, rendererServiceOperations,
-            notificationPublishService, pceListenerImpl, rendererListenerImpl,networkModelWavelengthService);
+            notificationPublishService, pceListenerImpl, rendererListenerImpl);
     }
 
     @Override
index 1ae0718773b94c03374a3fb415ba80e46b308c15..da36c098ebc9a7407eaac3185a1eb1556071af11 100644 (file)
@@ -31,9 +31,6 @@ Author: Martial Coulibaly <martial.coulibaly@gfi.com> on behalf of Orange
     <reference id="rendererServiceOperations"
              interface="org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations" />
 
-    <reference id="networkModelWavelengthService"
-           interface="org.opendaylight.transportpce.renderer.NetworkModelWavelengthService" />
-
     <bean id="serviceDatastoreOperation" class="org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl">
         <argument ref="dataBroker"/>
       </bean>
@@ -55,7 +52,6 @@ Author: Martial Coulibaly <martial.coulibaly@gfi.com> on behalf of Orange
         <argument ref="pathComputationService" />
         <argument ref="notificationPublishService" />
         <argument ref="rendererServiceOperations" />
-        <argument ref="networkModelWavelengthService" />
         <argument ref="pceListener" />
         <argument ref="rendererListener" />
     </bean>
@@ -69,7 +65,6 @@ Author: Martial Coulibaly <martial.coulibaly@gfi.com> on behalf of Orange
         <argument ref="notificationPublishService" />
         <argument ref="pathComputationService" />
         <argument ref="rendererServiceOperations" />
-        <argument ref="networkModelWavelengthService" />
     </bean>
 
     <service ref="serviceHandlerImpl"
index a7e139c21f0129bfc992053247f5ed42f67d8a8b..470975d8fa42905889e7a16f41b8de3af1218788 100644 (file)
@@ -95,7 +95,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
     public void createServiceShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException {
         ServicehandlerImpl servicehandlerImpl =
             new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceCreateOutput>> result =
             servicehandlerImpl.serviceCreate(new ServiceCreateInputBuilder().build());
         result.addListener(new Runnable() {
@@ -120,7 +120,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         Mockito.when(pathComputationService.pathComputationRequest(any())).thenReturn(Futures.immediateFuture(any()));
         ServicehandlerImpl servicehandlerImpl =
             new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceCreateOutput>> result =  servicehandlerImpl.serviceCreate(input);
         result.addListener(new Runnable() {
             @Override
@@ -141,7 +141,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
     public void deleteServiceShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException {
         ServicehandlerImpl servicehandlerImpl =
             new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceDeleteOutput>> result =
             servicehandlerImpl.serviceDelete(new ServiceDeleteInputBuilder()
                 .setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder().setServiceName("").build()).build());
@@ -165,7 +165,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         ServiceDeleteInput input = ServiceDataUtils.buildServiceDeleteInput();
         ServicehandlerImpl servicehandlerImpl =
             new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceDeleteOutput>> result = servicehandlerImpl.serviceDelete(input);
         result.addListener(new Runnable() {
             @Override
@@ -188,7 +188,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         Mockito.when(rendererServiceOperations.serviceDelete(any(), any())).thenReturn(Futures.immediateFuture(any()));
         ServicehandlerImpl servicehandlerImpl =
             new ServicehandlerImpl(dataBroker, pathComputationService, rendererServiceOperations,
-                notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ServiceDataStoreOperationsImpl serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(dataBroker);
         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
         serviceDataStoreOperations.createService(createInput);
@@ -214,7 +214,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
     public void serviceFeasibilityCheckShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException {
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> result =
                 servicehandlerImpl.serviceFeasibilityCheck(new ServiceFeasibilityCheckInputBuilder().build());
         result.addListener(new Runnable() {
@@ -239,7 +239,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         Mockito.when(pathComputationService.pathComputationRequest(any())).thenReturn(Futures.immediateFuture(any()));
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> result =
             servicehandlerImpl.serviceFeasibilityCheck(input);
         result.addListener(new Runnable() {
@@ -261,7 +261,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
     public void serviceReconfigureShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException {
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceReconfigureOutput>> result =
                 servicehandlerImpl.serviceReconfigure(new ServiceReconfigureInputBuilder().setServiceName("").build());
         result.addListener(new Runnable() {
@@ -287,7 +287,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         //action -> service reconfigure
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceReconfigureOutput>> result = servicehandlerImpl.serviceReconfigure(input);
 
         result.addListener(new Runnable() {
@@ -316,7 +316,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         //create service to reconfigure
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(dataBroker, pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ServiceDataStoreOperationsImpl serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(dataBroker);
         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
         serviceDataStoreOperations.createService(createInput);
@@ -344,7 +344,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
     public void serviceReRestorationShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException {
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceRestorationOutput>> result =
                 servicehandlerImpl.serviceRestoration(new ServiceRestorationInputBuilder().setServiceName("").build());
         result.addListener(new Runnable() {
@@ -370,7 +370,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         //action -> service restore
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceRestorationOutput>> result = servicehandlerImpl.serviceRestoration(input);
 
         result.addListener(new Runnable() {
@@ -399,7 +399,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         //create service to restore
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(dataBroker, pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ServiceDataStoreOperationsImpl serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(dataBroker);
         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
         serviceDataStoreOperations.createService(createInput);
@@ -427,7 +427,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
     public void serviceRerouteShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException {
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceRerouteOutput>> result =
                 servicehandlerImpl.serviceReroute(new ServiceRerouteInputBuilder().setServiceName("").build());
         result.addListener(new Runnable() {
@@ -452,7 +452,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         //action -> service reconfigure
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<ServiceRerouteOutput>> result = servicehandlerImpl.serviceReroute(input);
 
         result.addListener(new Runnable() {
@@ -481,7 +481,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         //create service to be rerouted later
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(dataBroker, pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ServiceDataStoreOperationsImpl serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(dataBroker);
         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
         serviceDataStoreOperations.createService(createInput);
@@ -509,7 +509,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
     public void tempServiceDeleteShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException {
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<TempServiceDeleteOutput>> result =
                 servicehandlerImpl.tempServiceDelete(new TempServiceDeleteInputBuilder()
                         .setCommonId("").build());
@@ -536,7 +536,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         TempServiceDeleteInput input = ServiceDataUtils.buildTempServiceDeleteInput();
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<TempServiceDeleteOutput>> result = servicehandlerImpl.tempServiceDelete(input);
         result.addListener(new Runnable() {
             @Override
@@ -561,7 +561,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
         //create temp service to delete in the temp delete action
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(dataBroker, pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ServiceDataStoreOperationsImpl serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(dataBroker);
         TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
         serviceDataStoreOperations.createTempService(createInput);
@@ -588,7 +588,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
     public void tempServiceCreateShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException {
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
         ListenableFuture<RpcResult<TempServiceCreateOutput>> result =
                 servicehandlerImpl.tempServiceCreate(new TempServiceCreateInputBuilder().build());
         result.addListener(new Runnable() {
@@ -615,7 +615,7 @@ public class ServicehandlerImplTest extends AbstractTest  {
 
         ServicehandlerImpl servicehandlerImpl =
                 new ServicehandlerImpl(getNewDataBroker(), pathComputationService, rendererServiceOperations,
-                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl);
 
         ListenableFuture<RpcResult<TempServiceCreateOutput>> result =  servicehandlerImpl.tempServiceCreate(input);
         result.addListener(new Runnable() {
index 4c3b66b84698d863940b5f7b3f1c6dda38f69fb4..923944b655de0f165e60f93748fe74112735c8c4 100644 (file)
@@ -18,7 +18,6 @@ import org.mockito.MockitoAnnotations;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
-import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
 import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
 import org.opendaylight.transportpce.test.AbstractTest;
 
@@ -36,9 +35,6 @@ public class ServicehandlerProviderTest  extends AbstractTest {
     @Mock
     RpcProviderService rpcProviderRegistry;
 
-    @Mock
-    NetworkModelWavelengthService networkModelWavelengthService;
-
     @Before
     public void init() {
         MockitoAnnotations.initMocks(this);
@@ -50,8 +46,7 @@ public class ServicehandlerProviderTest  extends AbstractTest {
         ServicehandlerProvider provider =  new ServicehandlerProvider(
                 getDataBroker(), rpcProviderRegistry,
                 getNotificationService() , pathComputationService,
-                rendererServiceOperations, networkModelWavelengthService,
-                notificationPublishService);
+                rendererServiceOperations, notificationPublishService);
 
         provider.init();
 
similarity index 95%
rename from renderer/src/test/java/org/opendaylight/transportpce/renderer/stub/MountPointServiceStub.java
rename to test-common/src/main/java/org/opendaylight/transportpce/test/stub/MountPointServiceStub.java
index fb75517b5f3396f056c2e084be4d3d306e7fe36b..edd5f76b40993c29c28c55bae371b64148ae8719 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.transportpce.renderer.stub;
+package org.opendaylight.transportpce.test.stub;
 
 import java.util.Optional;
 import org.opendaylight.mdsal.binding.api.MountPoint;
similarity index 96%
rename from renderer/src/test/java/org/opendaylight/transportpce/renderer/stub/MountPointStub.java
rename to test-common/src/main/java/org/opendaylight/transportpce/test/stub/MountPointStub.java
index e4c82b98c6644330e6e1159d48dba7717bdae1eb..362a40b638b9c8570bb285b839cae2693033c6c3 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.transportpce.renderer.stub;
+package org.opendaylight.transportpce.test.stub;
 
 import java.util.Optional;
 import javax.annotation.Nonnull;