[ONOS-6484] Implements OpenStack Pipeline at the application layer.
Change-Id: I9aeca05936cf846b86ffafc856f6e84697f5e94d
diff --git a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingHandler.java b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingHandler.java
index b004ee7..e0b5ccb 100644
--- a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingHandler.java
+++ b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingHandler.java
@@ -41,9 +41,8 @@
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.Constants;
+import org.onosproject.openstacknetworking.api.OpenstackFlowRuleService;
import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
import org.onosproject.openstacknetworking.api.OpenstackRouterEvent;
import org.onosproject.openstacknetworking.api.OpenstackRouterListener;
@@ -53,7 +52,6 @@
import org.onosproject.openstacknode.OpenstackNodeListener;
import org.onosproject.openstacknode.OpenstackNodeService;
import org.onosproject.openstacknode.OpenstackNodeService.NetworkMode;
-
import org.openstack4j.model.network.ExternalGateway;
import org.openstack4j.model.network.Network;
import org.openstack4j.model.network.NetworkType;
@@ -72,7 +70,13 @@
import static org.onlab.util.Tools.groupedThreads;
import static org.onosproject.net.AnnotationKeys.PORT_MAC;
import static org.onosproject.net.AnnotationKeys.PORT_NAME;
-import static org.onosproject.openstacknetworking.api.Constants.*;
+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_EXTERNAL_ROUTING_RULE;
+import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ICMP_RULE;
+import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_INTERNAL_ROUTING_RULE;
+import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_SWITCHING_RULE;
+import static org.onosproject.openstacknetworking.api.Constants.ROUTING_TABLE;
import static org.onosproject.openstacknode.OpenstackNodeService.NodeType.COMPUTE;
/**
@@ -98,9 +102,6 @@
protected ClusterService clusterService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected FlowObjectiveService flowObjectiveService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected OpenstackNodeService osNodeService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -112,6 +113,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected DeviceService deviceService;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected OpenstackFlowRuleService osFlowRuleService;
+
private final ExecutorService eventExecutor = newSingleThreadScheduledExecutor(
groupedThreads(this.getClass().getSimpleName(), "event-handler", log));
private final OpenstackNodeListener osNodeListener = new InternalNodeEventListener();
@@ -344,14 +348,13 @@
.setOutput(PortNumber.CONTROLLER)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
deviceId,
selector,
treatment,
- ForwardingObjective.Flag.VERSATILE,
PRIORITY_ICMP_RULE,
+ Constants.GW_COMMON_TABLE,
install);
}
@@ -371,16 +374,16 @@
treatment = DefaultTrafficTreatment.builder()
.setTunnelId(Long.parseLong(dstSegmentId))
+ .transition(FORWARDING_TABLE)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
deviceId,
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_INTERNAL_ROUTING_RULE,
+ ROUTING_TABLE,
install);
selector = DefaultTrafficSelector.builder()
@@ -392,16 +395,16 @@
treatment = DefaultTrafficTreatment.builder()
.setTunnelId(Long.parseLong(dstSegmentId))
+ .transition(FORWARDING_TABLE)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
deviceId,
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_INTERNAL_ROUTING_RULE,
+ ROUTING_TABLE,
install);
break;
case VLAN:
@@ -414,16 +417,16 @@
treatment = DefaultTrafficTreatment.builder()
.setVlanId(VlanId.vlanId(dstSegmentId))
+ .transition(FORWARDING_TABLE)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
deviceId,
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_INTERNAL_ROUTING_RULE,
+ ROUTING_TABLE,
install);
selector = DefaultTrafficSelector.builder()
@@ -435,16 +438,16 @@
treatment = DefaultTrafficTreatment.builder()
.setVlanId(VlanId.vlanId(dstSegmentId))
+ .transition(FORWARDING_TABLE)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
deviceId,
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_INTERNAL_ROUTING_RULE,
+ ROUTING_TABLE,
install);
break;
default:
@@ -488,14 +491,13 @@
.group(groupId)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
deviceId,
sBuilder.build(),
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_EXTERNAL_ROUTING_RULE,
+ ROUTING_TABLE,
install);
}
@@ -530,14 +532,13 @@
tBuilder.setOutput(PortNumber.CONTROLLER);
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
deviceId,
sBuilder.build(),
tBuilder.build(),
- ForwardingObjective.Flag.VERSATILE,
PRIORITY_EXTERNAL_ROUTING_RULE,
+ Constants.GW_COMMON_TABLE,
install);
}
@@ -569,14 +570,13 @@
.group(groupId)
.build();
- RulePopulatorUtil.setRule(
- flowObjectiveService,
+ osFlowRuleService.setRule(
appId,
deviceId,
selector,
treatment,
- ForwardingObjective.Flag.SPECIFIC,
PRIORITY_SWITCHING_RULE,
+ ROUTING_TABLE,
install);
}