[ONOS-7279] Fix for illegal state exception when deactivating driver providers

Change-Id: I9a8c16e33cac40b91c2b6f405e66f94bcdf5e0e0
diff --git a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleDriverProvider.java b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleDriverProvider.java
index c058ab6..abda2bf 100644
--- a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleDriverProvider.java
+++ b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleDriverProvider.java
@@ -104,6 +104,15 @@
                                               pollFrequency, TimeUnit.SECONDS);
     }
 
+    void terminate() {
+        deviceService.removeListener(deviceListener);
+        deviceService = null;
+        providerService = null;
+        mastershipService = null;
+        poller.cancel(true);
+        executor.shutdown();
+    }
+
     @Override
     public void applyFlowRule(FlowRule... flowRules) {
         rulesByDevice(flowRules).asMap().forEach(this::applyFlowRules);