Low level openflow drivers have been promoted to the driver subsystem.
All new device drivers should provide a handshaking behaviour as well
as well as a pipeline behaviour.
Change-Id: I883830b074e5d254a8cc6100e6c4fa0023594a36
diff --git a/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java b/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
index 9a091f4..2b4cb22 100644
--- a/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
+++ b/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
@@ -15,10 +15,7 @@
*/
package org.onosproject.driver.pipeline;
-import com.google.common.util.concurrent.SettableFuture;
-
import org.onlab.osgi.ServiceDirectory;
-import org.onosproject.core.DefaultGroupId;
import org.onosproject.net.DeviceId;
import org.onosproject.net.behaviour.Pipeliner;
import org.onosproject.net.behaviour.PipelinerContext;
@@ -84,27 +81,32 @@
treatment = flowTreatment.build();
}
- FlowRule rule = new DefaultFlowRule(deviceId, selector,
- treatment,
- fwd.priority(), fwd.appId(),
- new DefaultGroupId(fwd.id()),
- fwd.timeout(), fwd.permanent());
+ FlowRule.Builder ruleBuilder = DefaultFlowRule.builder()
+ .forDevice(deviceId)
+ .withSelector(selector)
+ .withTreatment(fwd.treatment())
+ .fromApp(fwd.appId())
+ .withPriority(fwd.priority());
+
+ if (fwd.permanent()) {
+ ruleBuilder.makePermanent();
+ } else {
+ ruleBuilder.makeTemporary(fwd.timeout());
+ }
+
switch (fwd.op()) {
case ADD:
- flowBuilder.add(rule);
+ flowBuilder.add(ruleBuilder.build());
break;
case REMOVE:
- flowBuilder.remove(rule);
+ flowBuilder.remove(ruleBuilder.build());
break;
default:
log.warn("Unknown operation {}", fwd.op());
}
-
- SettableFuture<Boolean> future = SettableFuture.create();
-
flowRuleService.apply(flowBuilder.build(new FlowRuleOperationsContext() {
@Override
public void onSuccess(FlowRuleOperations ops) {