Minor checkstyle corrections
[transportpce.git] / renderer / src / main / java / org / opendaylight / transportpce / renderer / RendererNotificationsImpl.java
index 15fd24aee82f0e7fcde94ef67e124fdc2ed08f65..c0dd38ebdb2f94345dc0506976c125c991c30158 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.transportpce.renderer;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
@@ -15,6 +14,7 @@ import com.google.common.cache.LoadingCache;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -29,12 +29,13 @@ import org.opendaylight.controller.md.sal.binding.api.MountPointService;
 import org.opendaylight.controller.md.sal.binding.api.NotificationService;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.renderer.listeners.AlarmNotificationListener;
 import org.opendaylight.transportpce.renderer.listeners.DeOperationsListener;
 import org.opendaylight.transportpce.renderer.listeners.DeviceListener;
 import org.opendaylight.transportpce.renderer.listeners.LldpListener;
 import org.opendaylight.transportpce.renderer.listeners.TcaListener;
-import org.opendaylight.transportpce.renderer.mapping.PortMapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev161014.AlarmNotification;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev161014.OrgOpenroadmAlarmListener;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.de.operations.rev161014.OrgOpenroadmDeOperationsListener;
@@ -61,12 +62,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class RendererNotificationsImpl implements DataTreeChangeListener<Node> {
-
     private final DataBroker dataBroker;
     private final MountPointService mountService;
     private static final Logger LOG = LoggerFactory.getLogger(RendererNotificationsImpl.class);
     private ListenerRegistration<RendererNotificationsImpl> dataTreeChangeListenerRegistration;
-
+    private final PortMapping portMapping;
+    private final DeviceTransactionManager deviceTransactionManager;
     private final Set<String> currentMountedDevice;
     public static final InstanceIdentifier<Topology> NETCONF_TOPO_IID = InstanceIdentifier.create(NetworkTopology.class)
         .child(Topology.class, new TopologyKey(new TopologyId(TopologyNetconf.QNAME.getLocalName())));
@@ -80,13 +81,20 @@ public class RendererNotificationsImpl implements DataTreeChangeListener<Node> {
         });
 
     public RendererNotificationsImpl(final DataBroker dataBroker, final MountPointService mountService,
-        Set<String> currentMountedDevice) {
+        Set<String> currentMountedDevice, PortMapping portMapping,DeviceTransactionManager deviceTransactionManager) {
         this.dataBroker = dataBroker;
         this.mountService = mountService;
         this.currentMountedDevice = currentMountedDevice;
+        this.portMapping = portMapping;
+        this.deviceTransactionManager = deviceTransactionManager;
+        if (portMapping == null) {
+            LOG.error("Portmapping is null !");
+        }
+        if (deviceTransactionManager == null) {
+            LOG.error("deviceTransactionManager is null");
+        }
         if (mountService == null) {
             LOG.error("Mount service is null");
-
         }
         if (dataBroker != null) {
             this.dataTreeChangeListenerRegistration = dataBroker.registerDataTreeChangeListener(
@@ -94,15 +102,23 @@ public class RendererNotificationsImpl implements DataTreeChangeListener<Node> {
         }
     }
 
-    private void registerNotificationListener(final NodeId nodeId) {
+    private void registerNotificationListener(final String nodeId) {
 
-        MountPoint mountPoint = PortMapping.getDeviceMountPoint(nodeId.getValue(), mountService);
+        LOG.info("onDeviceConnected: {}", nodeId);
+        Optional<MountPoint> mountPointOpt = this.deviceTransactionManager.getDeviceMountPoint(nodeId);
+        MountPoint mountPoint;
+        if (mountPointOpt.isPresent()) {
+            mountPoint = mountPointOpt.get();
+        } else {
+            LOG.error("Failed to get mount point for node {}", nodeId);
+            return;
+        }
 
-        // Register notification service
-        final Optional<NotificationService> notificationService = mountPoint.getService(
-            NotificationService.class);
+        final Optional<NotificationService> notificationService =
+                mountPoint.getService(NotificationService.class).toJavaUtil();
         if (!notificationService.isPresent()) {
-            LOG.error("Failed to get RpcService for node {}", nodeId.getValue());
+            LOG.error("Failed to get RpcService for node {}", nodeId);
+            return;
         }
 
         final OrgOpenroadmAlarmListener alarmListener;
@@ -110,36 +126,31 @@ public class RendererNotificationsImpl implements DataTreeChangeListener<Node> {
         LOG.info("Registering notification listener on {} for node: {}", AlarmNotification.QNAME, nodeId);
         // Register notification listener
 
-
         final OrgOpenroadmDeOperationsListener deOperationsListener;
         deOperationsListener = new DeOperationsListener();
         LOG.info("Registering notification listener on OrgOpenroadmDeOperationsListener for node: {}", nodeId);
         // Register notification listener
 
-
         final OrgOpenroadmDeviceListener deviceListener;
         deviceListener = new DeviceListener();
         LOG.info("Registering notification listener on OrgOpenroadmDeviceListener for node: {}", nodeId);
         // Register notification listener
 
-
         final OrgOpenroadmLldpListener lldpListener;
         lldpListener = new LldpListener();
         LOG.info("Registering notification listener on OrgOpenroadmLldpListener for node: {}", nodeId);
         // Register notification listener
 
-
         final OrgOpenroadmTcaListener tcaListener;
         tcaListener = new TcaListener();
         LOG.info("Registering notification listener on OrgOpenroadmTcaListener for node: {}", nodeId);
         // Register notification listener
 
-
         // Listening to NETCONF datastream
         final String streamName = "NETCONF";
-        final Optional<RpcConsumerRegistry> service = mountPoint.getService(RpcConsumerRegistry.class);
+        final Optional<RpcConsumerRegistry> service = mountPoint.getService(RpcConsumerRegistry.class).toJavaUtil();
         if (!service.isPresent()) {
-            LOG.error("Failed to get RpcService for node {}", nodeId.getValue());
+            LOG.error("Failed to get RpcService for node {}", nodeId);
         }
 
         final NotificationsService rpcService = service.get().getRpcService(NotificationsService.class);
@@ -152,8 +163,8 @@ public class RendererNotificationsImpl implements DataTreeChangeListener<Node> {
     public void close() {
         LOG.info("RenderernotificationsImpl Closed");
         // Clean up the Data Change Listener registration
-        if (dataTreeChangeListenerRegistration != null) {
-            dataTreeChangeListenerRegistration.close();
+        if (this.dataTreeChangeListenerRegistration != null) {
+            this.dataTreeChangeListenerRegistration.close();
         }
     }
 
@@ -170,13 +181,22 @@ public class RendererNotificationsImpl implements DataTreeChangeListener<Node> {
                     "Node not connected via Netconf protocol");
                 nodeId = rootNode.getDataAfter().getKey().getNodeId().getValue();
             }
-            if (nnode != null) {
-                if (rootNode.getModificationType() == ModificationType.WRITE) {
-                    LOG.info("Node added " + nodeId);
 
-                } else if (rootNode.getModificationType() == ModificationType.SUBTREE_MODIFIED) {
+            if (rootNode.getModificationType() == ModificationType.DELETE) {
+                String nodeid = rootNode.getDataBefore().getKey().getNodeId().getValue();
+                LOG.info("Node {} removed...", nodeid);
+                this.portMapping.deleteMappingData(nodeid);
+            }
 
-                    LOG.info("Node modified " + nodeId);
+            if (nnode != null) {
+                if (nodeId.equals("controller-config")) {
+                    // We shouldn't process controller-config as an OpenROAM device
+                    LOG.info("{} ignored: org-openroadm-device advertised but not a real ROADM device", nodeId);
+                    return;
+                }
+                if ((rootNode.getModificationType() == ModificationType.WRITE) ||
+                        (rootNode.getModificationType() == ModificationType.SUBTREE_MODIFIED)) {
+                    LOG.info("Node added or modified {}", nodeId);
                     ConnectionStatus csts = nnode.getConnectionStatus();
 
                     switch (csts) {
@@ -186,16 +206,16 @@ public class RendererNotificationsImpl implements DataTreeChangeListener<Node> {
                                 .stream().map(cp -> cp.getCapability()).collect(Collectors.toList());
                             LOG.info("Capabilities: {}", capabilities);
                             /*
-                             * TODO: check for required
-                             * capabilities to listen for notifications
+                             * TODO: check for required capabilities to listen
+                             * for notifications
                              */
-                            registerNotificationListener(rootNode.getDataAfter(). getNodeId());
-                            currentMountedDevice.add(nodeId);
-                            new PortMapping(dataBroker, mountService, nodeId).createMappingData();
+                            registerNotificationListener(nodeId);
+                            this.currentMountedDevice.add(nodeId);
+                            this.portMapping.createMappingData(nodeId);
                             break;
                         }
                         case Connecting: {
-                            LOG.info("NETCONF Node: {} was disconnected", nodeId);
+                            LOG.info("NETCONF Node: {} is (dis)connecting", nodeId);
                             break;
                         }
                         case UnableToConnect: {
@@ -203,13 +223,11 @@ public class RendererNotificationsImpl implements DataTreeChangeListener<Node> {
                             break;
                         }
                         default:
-                            LOG.warn("Unexpected connection status " + csts.getName());
+                            LOG.warn("Unexpected connection status {}", csts.getName());
                     }
-                } else if (rootNode.getModificationType() ==  ModificationType.DELETE) {
-                    LOG.info("Node removed " + nodeId);
-                    currentMountedDevice.remove(nodeId);
                 }
             }
         }
+        LOG.info("Netconf devices currently mounted are : {}", this.currentMountedDevice.toString());
     }
-}
\ No newline at end of file
+}