VOL-4465 raise ONU/OLT deleted events

Change-Id: I8f8aea3dcf97996816f8a856b05e751f7c391ee4
diff --git a/rw_core/core/device/event/event.go b/rw_core/core/device/event/event.go
index ab80736..5d8ccda 100644
--- a/rw_core/core/device/event/event.go
+++ b/rw_core/core/device/event/event.go
@@ -321,3 +321,27 @@
 	logger.Debugw(ctx, "device-state-change-sent", log.Fields{"event": *de})
 	return nil
 }
+
+// SendDeviceDeletedEvent sends Device deleted Event to message bus
+func (q *Agent) SendDeviceDeletedEvent(ctx context.Context, device *voltha.Device, raisedTs int64) error {
+
+	var onuId uint32
+	var ponId uint32
+
+	subCategory := voltha.EventSubCategory_OLT
+	if !device.Root {
+		onuId = device.ProxyAddress.OnuId
+		ponId = device.ProxyAddress.ChannelId
+		subCategory = voltha.EventSubCategory_ONU
+	}
+	de := ev.CreateDeviceDeletedEvent(device.SerialNumber, device.Id, device.ParentId,
+		onuId, ponId, device.Root)
+
+	if err := q.eventProxy.SendDeviceEvent(ctx, de, voltha.EventCategory_EQUIPMENT,
+		subCategory, raisedTs); err != nil {
+		logger.Errorw(ctx, "error-sending-device-deleted-event", log.Fields{"id": device.Id, "err": err})
+		return err
+	}
+	logger.Debugw(ctx, "device-deleted-event-sent", log.Fields{"event": *de})
+	return nil
+}