[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
}