Merge "RAN Slice YANG Model and Associated Feature code"
[ccsdk/features.git] / sdnr / wt / devicemanager / provider / src / main / java / org / onap / ccsdk / features / sdnr / wt / devicemanager / impl / DeviceManagerApiServiceImpl.java
index 79b4b05..266bb04 100644 (file)
@@ -1,4 +1,4 @@
-/*******************************************************************************
+/*
  * ============LICENSE_START========================================================================
  * ONAP : ccsdk feature sdnr wt
  * =================================================================================================
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  * ============LICENSE_END==========================================================================
- ******************************************************************************/
+ */
 package org.onap.ccsdk.features.sdnr.wt.devicemanager.impl;
 
-import com.google.common.util.concurrent.ListenableFuture;
 import java.util.List;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
+import org.eclipse.jdt.annotation.Nullable;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.housekeeping.ResyncNetworkElementsListener;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.maintenance.MaintenanceRPCServiceAPI;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.maintenance.impl.MaintenanceServiceImpl;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.ClearCurrentFaultByNodenameInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.ClearCurrentFaultByNodenameOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.ClearCurrentFaultByNodenameOutputBuilder;
@@ -33,6 +33,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicema
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.GetRequiredNetworkElementKeysInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.GetRequiredNetworkElementKeysOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.GetRequiredNetworkElementKeysOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.PushAttributeChangeNotificationInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.PushAttributeChangeNotificationOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.PushFaultNotificationInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.PushFaultNotificationOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.SetMaintenanceModeInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.SetMaintenanceModeOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.SetMaintenanceModeOutputBuilder;
@@ -42,31 +46,34 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicema
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.TestMaintenanceModeInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.TestMaintenanceModeOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.TestMaintenanceModeOutputBuilder;
+import org.opendaylight.yangtools.concepts.ObjectRegistration;
 import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@SuppressWarnings("deprecation")
+import com.google.common.util.concurrent.ListenableFuture;
+
 public class DeviceManagerApiServiceImpl implements DevicemanagerService, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(DevicemanagerService.class);
 
-    private final RpcRegistration<DevicemanagerService> rpcReg;
+    private final ObjectRegistration<DevicemanagerService> rpcReg;
+    private @Nullable final MaintenanceRPCServiceAPI maintenanceService;
+    private @Nullable final PushNotifications pushNotificationsListener;
+    private @Nullable final ResyncNetworkElementsListener resyncCallbackListener;
 
-    private MaintenanceRPCServiceAPI maintenanceService;
-    private ResyncNetworkElementsListener resyncCallbackListener;
+    public DeviceManagerApiServiceImpl(final RpcProviderService rpcProviderRegistry,
+            MaintenanceServiceImpl maintenanceService, ResyncNetworkElementsListener listener,
+            PushNotifications pushNotificationsListener) {
+        this.maintenanceService = maintenanceService;
+        this.pushNotificationsListener = pushNotificationsListener;
+        this.resyncCallbackListener = listener;
 
-    DeviceManagerApiServiceImpl(final RpcProviderRegistry rpcProviderRegistry) {
         // Register ourselves as the REST API RPC implementation
-        LOG.info("Register RPC Service "+DevicemanagerService.class.getSimpleName());
-        this.maintenanceService = null;
-        this.rpcReg = rpcProviderRegistry.addRpcImplementation(DevicemanagerService.class, this);
-    }
-
-    public void setMaintenanceService(MaintenanceServiceImpl maintenanceService2) {
-        this.maintenanceService = maintenanceService2;
+        LOG.info("Register RPC Service " + DevicemanagerService.class.getSimpleName());
+        this.rpcReg = rpcProviderRegistry.registerRpcImplementation(DevicemanagerService.class, this);
     }
 
     @Override
@@ -93,8 +100,9 @@ public class DeviceManagerApiServiceImpl implements DevicemanagerService, AutoCl
         LOG.info("RPC Request: getRequiredNetworkElementKeys");
         RpcResultBuilder<GetRequiredNetworkElementKeysOutput> result;
         try {
-            GetRequiredNetworkElementKeysOutputBuilder outputBuilder = maintenanceService.getRequiredNetworkElementKeys();
-            result =  RpcResultBuilder.success(outputBuilder);
+            GetRequiredNetworkElementKeysOutputBuilder outputBuilder =
+                    maintenanceService.getRequiredNetworkElementKeys();
+            result = RpcResultBuilder.success(outputBuilder);
         } catch (Exception e) {
             result = RpcResultBuilder.failed();
             result.withError(ErrorType.APPLICATION, "Exception", e);
@@ -110,8 +118,9 @@ public class DeviceManagerApiServiceImpl implements DevicemanagerService, AutoCl
         RpcResultBuilder<ShowRequiredNetworkElementOutput> result;
 
         try {
-            ShowRequiredNetworkElementOutputBuilder outputBuilder = maintenanceService.showRequiredNetworkElement(input);
-            result =  RpcResultBuilder.success(outputBuilder);
+            ShowRequiredNetworkElementOutputBuilder outputBuilder =
+                    maintenanceService.showRequiredNetworkElement(input);
+            result = RpcResultBuilder.success(outputBuilder);
         } catch (Exception e) {
             result = RpcResultBuilder.failed();
             result.withError(ErrorType.APPLICATION, "Exception", e);
@@ -122,12 +131,12 @@ public class DeviceManagerApiServiceImpl implements DevicemanagerService, AutoCl
     @Override
     public ListenableFuture<RpcResult<SetMaintenanceModeOutput>> setMaintenanceMode(SetMaintenanceModeInput input) {
 
-        LOG.info("RPC Request: setMaintenanceMode input: {}", input.getMountpointName());
+        LOG.info("RPC Request: setMaintenanceMode input: {}", input.getNodeId());
         RpcResultBuilder<SetMaintenanceModeOutput> result;
 
         try {
             SetMaintenanceModeOutputBuilder outputBuilder = maintenanceService.setMaintenanceMode(input);
-            result =  RpcResultBuilder.success(outputBuilder);
+            result = RpcResultBuilder.success(outputBuilder);
         } catch (Exception e) {
             result = RpcResultBuilder.failed();
             result.withError(ErrorType.APPLICATION, "Exception", e);
@@ -146,7 +155,7 @@ public class DeviceManagerApiServiceImpl implements DevicemanagerService, AutoCl
 
         try {
             GetMaintenanceModeOutputBuilder outputBuilder = maintenanceService.getMaintenanceMode(input);
-            result =  RpcResultBuilder.success(outputBuilder);
+            result = RpcResultBuilder.success(outputBuilder);
         } catch (Exception e) {
             result = RpcResultBuilder.failed();
             result.withError(ErrorType.APPLICATION, "Exception", e);
@@ -162,7 +171,7 @@ public class DeviceManagerApiServiceImpl implements DevicemanagerService, AutoCl
 
         try {
             TestMaintenanceModeOutputBuilder outputBuilder = maintenanceService.testMaintenanceMode(input);
-            result =  RpcResultBuilder.success(outputBuilder);
+            result = RpcResultBuilder.success(outputBuilder);
         } catch (Exception e) {
             result = RpcResultBuilder.failed();
             result.withError(ErrorType.APPLICATION, "Exception", e);
@@ -178,24 +187,53 @@ public class DeviceManagerApiServiceImpl implements DevicemanagerService, AutoCl
         LOG.info("RPC Request: clearNetworkElementAlarms input: {}", input.getNodenames());
         RpcResultBuilder<ClearCurrentFaultByNodenameOutput> result;
         try {
-            if(this.resyncCallbackListener!=null) {
-                List<String> nodeNames= this.resyncCallbackListener.doClearCurrentFaultByNodename(input.getNodenames());
+            if (this.resyncCallbackListener != null) {
+                List<String> nodeNames =
+                        this.resyncCallbackListener.doClearCurrentFaultByNodename(input.getNodenames());
                 ClearCurrentFaultByNodenameOutputBuilder outputBuilder = new ClearCurrentFaultByNodenameOutputBuilder();
                 outputBuilder.setNodenames(nodeNames);
-                result =  RpcResultBuilder.success(outputBuilder);
+                result = RpcResultBuilder.success(outputBuilder);
             } else {
                 result = RpcResultBuilder.failed();
-                result.withError(ErrorType.APPLICATION, "Startup running" );
+                result.withError(ErrorType.APPLICATION, "Startup running");
             }
-        } catch(Exception e) {
+        } catch (Exception e) {
             result = RpcResultBuilder.failed();
             result.withError(ErrorType.APPLICATION, "Exception", e);
         }
         return result.buildFuture();
     }
 
-    public void setResyncListener(ResyncNetworkElementsListener listener) {
-        this.resyncCallbackListener = listener;
+    @Override
+    public ListenableFuture<RpcResult<PushFaultNotificationOutput>> pushFaultNotification(
+            PushFaultNotificationInput input) {
+        LOG.info("RPC Received fault notification {}", input);
+        RpcResultBuilder<PushFaultNotificationOutput> result;
+        try {
+            pushNotificationsListener.pushFaultNotification(input);
+            result = RpcResultBuilder.success();
+        } catch (Exception e) {
+            result = RpcResultBuilder.failed();
+            result.withError(ErrorType.APPLICATION, "Exception", e);
+        }
+        return result.buildFuture();
     }
 
+    @Override
+    public ListenableFuture<RpcResult<PushAttributeChangeNotificationOutput>> pushAttributeChangeNotification(
+            PushAttributeChangeNotificationInput input) {
+        LOG.info("RPC Received change notification {}", input);
+        RpcResultBuilder<PushAttributeChangeNotificationOutput> result;
+        try {
+            pushNotificationsListener.pushAttributeChangeNotification(input);
+            result = RpcResultBuilder.success();
+        } catch (Exception e) {
+            result = RpcResultBuilder.failed();
+            result.withError(ErrorType.APPLICATION, "Exception", e);
+        }
+        return result.buildFuture();
+    }
+
+
+
 }