Evict pipeliner/driver cache only on DEVICE_REMOVE
- step toward runtime driver reconfig
Change-Id: I55a9db9a6c2e54a25ca18bec326f4fb33a013d74
diff --git a/core/net/src/main/java/org/onosproject/net/flowobjective/impl/FlowObjectiveManager.java b/core/net/src/main/java/org/onosproject/net/flowobjective/impl/FlowObjectiveManager.java
index d75470c..93a727f 100644
--- a/core/net/src/main/java/org/onosproject/net/flowobjective/impl/FlowObjectiveManager.java
+++ b/core/net/src/main/java/org/onosproject/net/flowobjective/impl/FlowObjectiveManager.java
@@ -269,11 +269,6 @@
*/
private Pipeliner initPipelineHandler(DeviceId deviceId) {
start = now();
- // ?? We never use defaultDriverService, do we still need this check?
- if (defaultDriverService == null) {
- // We're not ready to go to work yet.
- return null;
- }
// Attempt to lookup the handler in the cache
DriverHandler handler = driverHandlers.get(deviceId);
@@ -323,19 +318,22 @@
getDevicePipeliner(event.subject().id());
} else {
log.debug("Device is no longer available {}", event.subject().id());
- // evict Pipeliner cache.
- // User might restart Device to assign new Driver/Pipeliner
- // loaded afterwards.
- pipeliners.remove(event.subject().id());
}
break;
case DEVICE_UPDATED:
break;
case DEVICE_REMOVED:
- case DEVICE_SUSPENDED:
- // evict Pipeliner cache.
+ // evict Pipeliner and Handler cache, when
+ // the Device was administratively removed.
+ //
+ // System expect the user to clear all existing flows,
+ // before removing device, especially if they intend to
+ // replace driver/pipeliner assigned to the device.
+ driverHandlers.remove(event.subject().id());
pipeliners.remove(event.subject().id());
break;
+ case DEVICE_SUSPENDED:
+ break;
case PORT_ADDED:
break;
case PORT_UPDATED: