Various Bmv2 protocol refactorings in preparation of the flow rule
translator (ONOS-4044)
- Added new classes for different match parameters (exact, ternary, lpm,
valid)
- Divided api package in two sub-packages, model (previously under
drivers) and runtime (old api package)
- Improved Bmv2ThriftClient caching and table entry handling
Change-Id: I23c174cf3e8f9f6ecddb99c2d09dc531e8f1c73f
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2FlowRuleDriver.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2FlowRuleDriver.java
index c000f52..c226e60 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2FlowRuleDriver.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2FlowRuleDriver.java
@@ -20,10 +20,10 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import org.onosproject.bmv2.api.Bmv2ExtensionSelector;
-import org.onosproject.bmv2.api.Bmv2ExtensionTreatment;
-import org.onosproject.bmv2.api.Bmv2TableEntry;
-import org.onosproject.bmv2.api.Bmv2Exception;
+import org.onosproject.bmv2.api.runtime.Bmv2ExtensionSelector;
+import org.onosproject.bmv2.api.runtime.Bmv2ExtensionTreatment;
+import org.onosproject.bmv2.api.runtime.Bmv2TableEntry;
+import org.onosproject.bmv2.api.runtime.Bmv2RuntimeException;
import org.onosproject.bmv2.ctl.Bmv2ThriftClient;
import org.onosproject.net.driver.AbstractHandlerBehaviour;
import org.onosproject.net.flow.DefaultFlowEntry;
@@ -70,7 +70,7 @@
Bmv2ThriftClient deviceClient;
try {
deviceClient = getDeviceClient();
- } catch (Bmv2Exception e) {
+ } catch (Bmv2RuntimeException e) {
return Collections.emptyList();
}
@@ -107,7 +107,7 @@
tableEntryIdsMap.put(rule, entryId);
deviceEntriesMap.put(rule, new DefaultFlowEntry(
rule, FlowEntry.FlowEntryState.ADDED, 0, 0, 0));
- } catch (Bmv2Exception e) {
+ } catch (Bmv2RuntimeException e) {
log.error("Unable to update flow rule", e);
continue;
}
@@ -121,7 +121,7 @@
tableEntryIdsMap.put(rule, entryId);
deviceEntriesMap.put(rule, new DefaultFlowEntry(
rule, FlowEntry.FlowEntryState.ADDED, 0, 0, 0));
- } catch (Bmv2Exception e) {
+ } catch (Bmv2RuntimeException e) {
log.error("Unable to add flow rule", e);
continue;
}
@@ -138,7 +138,7 @@
Bmv2ThriftClient deviceClient;
try {
deviceClient = getDeviceClient();
- } catch (Bmv2Exception e) {
+ } catch (Bmv2RuntimeException e) {
return Collections.emptyList();
}
@@ -152,7 +152,7 @@
try {
deviceClient.deleteTableEntry(tableName, entryId);
- } catch (Bmv2Exception e) {
+ } catch (Bmv2RuntimeException e) {
log.error("Unable to delete flow rule", e);
continue;
}
@@ -225,10 +225,10 @@
return "table" + String.valueOf(tableId);
}
- private Bmv2ThriftClient getDeviceClient() throws Bmv2Exception {
+ private Bmv2ThriftClient getDeviceClient() throws Bmv2RuntimeException {
try {
return Bmv2ThriftClient.of(handler().data().deviceId());
- } catch (Bmv2Exception e) {
+ } catch (Bmv2RuntimeException e) {
log.error("Failed to connect to Bmv2 device", e);
throw e;
}