Network toplogy GUI for VM-to-VM flow statistics configuration.
Change-Id: I86543c7bb30d79ec8b5d57f822756b5e8a8e5e40
diff --git a/apps/openstacknetworkingui/src/main/java/org/onosproject/openstacknetworkingui/OpenstackNetworkingUiMessageHandler.java b/apps/openstacknetworkingui/src/main/java/org/onosproject/openstacknetworkingui/OpenstackNetworkingUiMessageHandler.java
index 1dfefb8..c49944d 100644
--- a/apps/openstacknetworkingui/src/main/java/org/onosproject/openstacknetworkingui/OpenstackNetworkingUiMessageHandler.java
+++ b/apps/openstacknetworkingui/src/main/java/org/onosproject/openstacknetworkingui/OpenstackNetworkingUiMessageHandler.java
@@ -47,6 +47,7 @@
import org.onosproject.openstacknode.api.OpenstackNode;
import org.onosproject.openstacknode.api.OpenstackNodeService;
import org.onosproject.openstacknode.api.OpenstackSshAuth;
+import org.onosproject.openstacktelemetry.api.StatsFlowRuleAdminService;
import org.onosproject.ui.JsonUtils;
import org.onosproject.ui.RequestHandler;
import org.onosproject.ui.UiConnection;
@@ -84,6 +85,8 @@
private static final String OPENSTACK_NETWORKING_UI_UPDATE = "openstackNetworkingUiUpdate";
private static final String OPENSTACK_NETWORKING_UI_STOP = "openstackNetworkingUiStop";
private static final String ANNOTATION_NETWORK_ID = "networkId";
+ private static final String FLOW_STATS_ADD_REQUEST = "flowStatsAddRequest";
+ private static final String FLOW_STATS_REMOVE_REQUEST = "flowStatsRemoveRequest";
private static final String FLOW_TRACE_REQUEST = "flowTraceRequest";
private static final String SRC_IP = "srcIp";
private static final String DST_IP = "dstIp";
@@ -95,6 +98,9 @@
private static final String TRACE_RESULT = "traceResult";
private static final String IS_SUCCESS = "isSuccess";
private static final String TRACE_SUCCESS = "traceSuccess";
+ private static final String STATS_SUCCESS = "statsSuccess";
+ private static final String FLOW_STATS_ADD_RESULT = "flowStatsAddResult";
+ private static final String FLOW_STATS_REMOVE_RESULT = "flowStatsRemoveResult";
private static final String FLOW_TRACE_RESULT = "flowTraceResult";
private static final String SRC_DEVICE_ID = "srcDeviceId";
private static final String DST_DEVICE_ID = "dstDeviceId";
@@ -124,6 +130,7 @@
private OpenstackNodeService osNodeService;
private InstancePortService instancePortService;
private OpenstackNetworkService osNetService;
+ private StatsFlowRuleAdminService statsFlowRuleService;
private Mode currentMode = Mode.IDLE;
private Element elementOfNote;
@@ -139,6 +146,7 @@
osNodeService = directory.get(OpenstackNodeService.class);
instancePortService = directory.get(InstancePortService.class);
osNetService = directory.get(OpenstackNetworkService.class);
+ statsFlowRuleService = directory.get(StatsFlowRuleAdminService.class);
}
@Override
@@ -147,6 +155,8 @@
new DisplayStartHandler(),
new DisplayUpdateHandler(),
new DisplayStopHandler(),
+ new FlowStatsAddRequestHandler(),
+ new FlowStatsRemoveRequestHandler(),
new FlowTraceRequestHandler()
);
}
@@ -179,6 +189,36 @@
}
}
+ private final class FlowStatsAddRequestHandler extends RequestHandler {
+ public FlowStatsAddRequestHandler() {
+ super(FLOW_STATS_ADD_REQUEST);
+ }
+
+ @Override
+ public void process(ObjectNode payload) {
+ String srcIp = string(payload, SRC_IP);
+ String dstIp = string(payload, DST_IP);
+ log.info("Flow statistics add request called with src IP: {}, dst IP: {}",
+ srcIp, dstIp);
+ eventExecutor.execute(() -> processFlowStatsRequest(srcIp, dstIp, true));
+ }
+ }
+
+ private final class FlowStatsRemoveRequestHandler extends RequestHandler {
+ public FlowStatsRemoveRequestHandler() {
+ super(FLOW_STATS_REMOVE_REQUEST);
+ }
+
+ @Override
+ public void process(ObjectNode payload) {
+ String srcIp = string(payload, SRC_IP);
+ String dstIp = string(payload, DST_IP);
+ log.info("Flow statistics removal request called with src IP: {}, dst IP: {}",
+ srcIp, dstIp);
+ eventExecutor.execute(() -> processFlowStatsRequest(srcIp, dstIp, false));
+ }
+ }
+
private final class FlowTraceRequestHandler extends RequestHandler {
public FlowTraceRequestHandler() {
super(FLOW_TRACE_REQUEST);
@@ -393,6 +433,16 @@
return NodeBadge.number(Status.INFO, n, "Openstack Node");
}
+ private void processFlowStatsRequest(String srcIp, String dstIp, Boolean install) {
+ boolean statsSuccess = true;
+ ObjectMapper mapper = new ObjectMapper();
+ ObjectNode statsResult = mapper.createObjectNode();
+
+ statsFlowRuleService.setStatFlowL2Rule(srcIp, dstIp, install);
+ statsResult.put(STATS_SUCCESS, statsSuccess);
+ sendMessagetoUi(FLOW_STATS_ADD_RESULT, statsResult);
+ }
+
private void processFlowTraceRequest(String srcIp, String dstIp, String srcDeviceId) {
boolean traceSuccess = true;
@@ -443,8 +493,6 @@
traceSuccess = false;
}
- //TODO implements trace result in backward
-
traceResult.put(TRACE_SUCCESS, traceSuccess);
log.debug("traceResult Json: {}", traceResult);