[VOL-4137] Reporting logical device deletion through event to of-agent for immediate disconnection from ONOS

Change-Id: I35cd8922ee34bbb8055c9418e46a2bd754dfbd02
diff --git a/rw_core/core/device/event/event.go b/rw_core/core/device/event/event.go
index d21995f..ab80736 100644
--- a/rw_core/core/device/event/event.go
+++ b/rw_core/core/device/event/event.go
@@ -201,6 +201,19 @@
 	}
 }
 
+// SendDeviceDeletionEvent notifies the ofAgent that the logical device was removed.
+func (q *Manager) SendDeviceDeletionEvent(ctx context.Context, logicalDeviceID string) {
+	logger.Infow(ctx, "send-change-event-for-device-deletion", log.Fields{"logical-device-id": logicalDeviceID})
+	q.changeEventQueue <- openflow_13.ChangeEvent{
+		Id: logicalDeviceID,
+		Event: &openflow_13.ChangeEvent_DeviceStatus{
+			DeviceStatus: &openflow_13.OfpDeviceStatus{
+				Status: openflow_13.OfpDeviceConnection_OFPDEV_DISCONNECTED,
+			},
+		},
+	}
+}
+
 // ReceiveChangeEvents receives change in events
 func (q *Manager) ReceiveChangeEvents(_ *empty.Empty, changeEvents voltha.VolthaService_ReceiveChangeEventsServer) error {
 	ctx := context.Background()
diff --git a/rw_core/core/device/logical_manager.go b/rw_core/core/device/logical_manager.go
index e663632..8a2a8a8 100644
--- a/rw_core/core/device/logical_manager.go
+++ b/rw_core/core/device/logical_manager.go
@@ -267,7 +267,7 @@
 }
 
 func (ldMgr *LogicalManager) deleteLogicalDevice(ctx context.Context, device *voltha.Device) error {
-	logger.Debugw(ctx, "deleting-logical-device", log.Fields{"device-id": device.Id})
+	logger.Infow(ctx, "deleting-logical-device", log.Fields{"device-id": device.Id})
 	// Sanity check
 	if !device.Root {
 		return errors.New("device-not-root")
@@ -285,11 +285,11 @@
 		}
 		//Remove the logical device agent from the Map
 		ldMgr.deleteLogicalDeviceAgent(logDeviceID)
+		ldMgr.SendDeviceDeletionEvent(ctx, logDeviceID)
 	} else {
 		logger.Warnw(ctx, "no-logical-device-agent-on-deletion", log.Fields{"device-id": logDeviceID})
 	}
-
-	logger.Debug(ctx, "deleting-logical-device-ends")
+	logger.Debugw(ctx, "deleting-logical-device-ends", log.Fields{"device-id": device.Id})
 	return nil
 }
 
@@ -424,7 +424,7 @@
 			return err
 		}
 	}
-	logger.Debug(ctx, "deleting-logical-ports-ends")
+	logger.Debugw(ctx, "deleting-logical-ports-ends", log.Fields{"device-id": deviceID})
 	return nil
 }