[ONOS-6484] Implements OpenStack Pipeline at the application layer.
Change-Id: I9aeca05936cf846b86ffafc856f6e84697f5e94d
diff --git a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHandler.java b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHandler.java
index 975096f..10b1776 100644
--- a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHandler.java
+++ b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHandler.java
@@ -32,12 +32,11 @@
import org.onosproject.net.flow.DefaultTrafficTreatment;
import org.onosproject.net.flow.TrafficSelector;
import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
import org.onosproject.openstacknetworking.api.InstancePort;
import org.onosproject.openstacknetworking.api.InstancePortEvent;
import org.onosproject.openstacknetworking.api.InstancePortListener;
import org.onosproject.openstacknetworking.api.InstancePortService;
+import org.onosproject.openstacknetworking.api.OpenstackFlowRuleService;
import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
import org.onosproject.openstacknode.OpenstackNodeService;
import org.openstack4j.model.network.Network;
@@ -47,7 +46,12 @@
import static java.util.concurrent.Executors.newSingleThreadExecutor;
import static org.onlab.util.Tools.groupedThreads;
-import static org.onosproject.openstacknetworking.api.Constants.*;
+import static org.onosproject.openstacknetworking.api.Constants.ACL_TABLE;
+import static org.onosproject.openstacknetworking.api.Constants.FORWARDING_TABLE;
+import static org.onosproject.openstacknetworking.api.Constants.OPENSTACK_NETWORKING_APP_ID;
+import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_SWITCHING_RULE;
+import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_TUNNEL_TAG_RULE;
+import static org.onosproject.openstacknetworking.api.Constants.SRC_VNI_TABLE;
import static org.onosproject.openstacknetworking.impl.RulePopulatorUtil.buildExtension;
import static org.onosproject.openstacknode.OpenstackNodeService.NodeType.COMPUTE;
import static org.slf4j.LoggerFactory.getLogger;
@@ -74,7 +78,7 @@
protected DeviceService deviceService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected FlowObjectiveService flowObjectiveService;
+ protected OpenstackFlowRuleService osFlowRuleService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected InstancePortService instancePortService;
@@ -134,14 +138,13 @@
.setOutput(instPort.portNumber())
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
instPort.deviceId(),
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_SWITCHING_RULE,
+ FORWARDING_TABLE,
install);
// switching rules for the instPorts in the remote node
@@ -158,14 +161,13 @@
.setOutput(osNodeService.tunnelPort(osNode.intBridge()).get())
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
osNode.intBridge(),
selector,
treatmentToRemote,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_SWITCHING_RULE,
+ FORWARDING_TABLE,
install);
});
}
@@ -184,14 +186,13 @@
.setOutput(instPort.portNumber())
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
instPort.deviceId(),
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_SWITCHING_RULE,
+ FORWARDING_TABLE,
install);
// switching rules for the instPorts in the remote node
@@ -204,14 +205,13 @@
.setOutput(osNodeService.vlanPort(osNode.intBridge()).get())
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
osNode.intBridge(),
selector,
treatmentToRemote,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_SWITCHING_RULE,
+ FORWARDING_TABLE,
install);
});
@@ -225,16 +225,16 @@
TrafficTreatment treatment = DefaultTrafficTreatment.builder()
.setTunnelId(getVni(instPort))
+ .transition(ACL_TABLE)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
instPort.deviceId(),
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_TUNNEL_TAG_RULE,
+ SRC_VNI_TABLE,
install);
}
@@ -247,16 +247,16 @@
TrafficTreatment treatment = DefaultTrafficTreatment.builder()
.pushVlan()
.setVlanId(getVlanId(instPort))
+ .transition(ACL_TABLE)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
instPort.deviceId(),
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_TUNNEL_TAG_RULE,
+ SRC_VNI_TABLE,
install);
}