Extending DeviceProvider interface to include triggerDisconnect method.
- extended interface with default method implementation
- modified DeviceManager to exploit the new provider feature
- refactored a number of device providers to use the new method
instead of relying on indirect DEVICE_REMOVED events
Change-Id: Ib315357ef06463012fcf26bbe937c8cdccbf3a94
diff --git a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
index f675dbc..8281f4e 100644
--- a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
+++ b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
@@ -377,6 +377,12 @@
}
}
+ @Override
+ public void triggerDisconnect(DeviceId deviceId) {
+ log.debug("Forcing disconnect for device {}", deviceId);
+ controller.disconnectDevice(deviceId, true);
+ }
+
private class InnerNetconfDeviceListener implements NetconfDeviceListener {
@@ -639,16 +645,14 @@
private class InternalDeviceListener implements DeviceListener {
@Override
public void event(DeviceEvent event) {
- if ((event.type() == DeviceEvent.Type.DEVICE_ADDED)) {
- executor.execute(() -> discoverPorts(event.subject().id()));
- } else if ((event.type() == DeviceEvent.Type.DEVICE_REMOVED)) {
- log.debug("removing device {}", event.subject().id());
- controller.disconnectDevice(event.subject().id(), true);
- }
+ executor.execute(() -> discoverPorts(event.subject().id()));
}
@Override
public boolean isRelevant(DeviceEvent event) {
+ if (event.type() != DeviceEvent.Type.DEVICE_ADDED) {
+ return false;
+ }
if (mastershipService.getMasterFor(event.subject().id()) == null) {
return true;
}