diff options
Diffstat (limited to 'framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java')
-rw-r--r-- | framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java | 58 |
1 files changed, 51 insertions, 7 deletions
diff --git a/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java b/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java index 8acdc2cf..82b7a782 100644 --- a/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java +++ b/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java @@ -27,12 +27,14 @@ import org.onosproject.cluster.ClusterEventListener; import org.onosproject.cluster.ControllerNode; import org.onosproject.core.ApplicationId; import org.onosproject.core.CoreService; +import org.onosproject.core.DefaultApplicationId; import org.onosproject.event.Event; import org.onosproject.mastership.MastershipAdminService; import org.onosproject.mastership.MastershipEvent; import org.onosproject.mastership.MastershipListener; import org.onosproject.net.ConnectPoint; import org.onosproject.net.Device; +import org.onosproject.net.DeviceId; import org.onosproject.net.Host; import org.onosproject.net.HostId; import org.onosproject.net.HostLocation; @@ -48,11 +50,14 @@ import org.onosproject.net.flow.TrafficTreatment; import org.onosproject.net.host.HostEvent; import org.onosproject.net.host.HostListener; import org.onosproject.net.intent.HostToHostIntent; +import org.onosproject.net.intent.Intent; import org.onosproject.net.intent.IntentEvent; import org.onosproject.net.intent.IntentListener; +import org.onosproject.net.intent.Key; import org.onosproject.net.intent.MultiPointToSinglePointIntent; import org.onosproject.net.link.LinkEvent; import org.onosproject.net.link.LinkListener; +import org.onosproject.ui.JsonUtils; import org.onosproject.ui.RequestHandler; import org.onosproject.ui.UiConnection; import org.onosproject.ui.impl.TrafficMonitor.Mode; @@ -76,7 +81,9 @@ import static org.onlab.util.Tools.groupedThreads; import static org.onosproject.cluster.ClusterEvent.Type.INSTANCE_ADDED; import static org.onosproject.net.DeviceId.deviceId; import static org.onosproject.net.HostId.hostId; -import static org.onosproject.net.device.DeviceEvent.Type.*; +import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_ADDED; +import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_UPDATED; +import static org.onosproject.net.device.DeviceEvent.Type.PORT_STATS_UPDATED; import static org.onosproject.net.host.HostEvent.Type.HOST_ADDED; import static org.onosproject.net.link.LinkEvent.Type.LINK_ADDED; import static org.onosproject.ui.JsonUtils.envelope; @@ -97,6 +104,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { private static final String REQ_NEXT_INTENT = "requestNextRelatedIntent"; private static final String REQ_PREV_INTENT = "requestPrevRelatedIntent"; private static final String REQ_SEL_INTENT_TRAFFIC = "requestSelectedIntentTraffic"; + private static final String SEL_INTENT = "selectIntent"; private static final String REQ_ALL_FLOW_TRAFFIC = "requestAllFlowTraffic"; private static final String REQ_ALL_PORT_TRAFFIC = "requestAllPortTraffic"; private static final String REQ_DEV_LINK_FLOWS = "requestDeviceLinkFlows"; @@ -117,9 +125,13 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { private static final String SPRITE_LIST_RESPONSE = "spriteListResponse"; private static final String SPRITE_DATA_RESPONSE = "spriteDataResponse"; private static final String UPDATE_INSTANCE = "updateInstance"; + private static final String TOPO_START_DONE = "topoStartDone"; // fields private static final String ID = "id"; + private static final String KEY = "key"; + private static final String APP_ID = "appId"; + private static final String APP_NAME = "appName"; private static final String DEVICE = "device"; private static final String HOST = "host"; private static final String CLASS = "class"; @@ -135,7 +147,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { private static final String DEACTIVATE = "deactivate"; - private static final String APP_ID = "org.onosproject.gui"; + private static final String MY_APP_ID = "org.onosproject.gui"; private static final long TRAFFIC_PERIOD = 5000; private static final long SUMMARY_PERIOD = 30000; @@ -176,7 +188,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { @Override public void init(UiConnection connection, ServiceDirectory directory) { super.init(connection, directory); - appId = directory.get(CoreService.class).registerApplication(APP_ID); + appId = directory.get(CoreService.class).registerApplication(MY_APP_ID); traffic = new TrafficMonitor(TRAFFIC_PERIOD, servicesBundle, this); } @@ -213,6 +225,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { new ReqNextIntent(), new ReqPrevIntent(), new ReqSelectedIntentTraffic(), + new SelIntent(), new CancelTraffic() ); @@ -241,6 +254,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { sendAllDevices(); sendAllLinks(); sendAllHosts(); + sendTopoStartDone(); } } @@ -344,11 +358,13 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { PropertyPanel pp = null; if (type.equals(DEVICE)) { - pp = deviceDetails(deviceId(id), sid); - overlayCache.currentOverlay().modifyDeviceDetails(pp); + DeviceId did = deviceId(id); + pp = deviceDetails(did, sid); + overlayCache.currentOverlay().modifyDeviceDetails(pp, did); } else if (type.equals(HOST)) { - pp = hostDetails(hostId(id), sid); - overlayCache.currentOverlay().modifyHostDetails(pp); + HostId hid = hostId(id); + pp = hostDetails(hid, sid); + overlayCache.currentOverlay().modifyHostDetails(pp, hid); } sendMessage(envelope(SHOW_DETAILS, sid, json(pp))); @@ -524,6 +540,31 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { } } + private final class SelIntent extends RequestHandler { + private SelIntent() { + super(SEL_INTENT); + } + + @Override + public void process(long sid, ObjectNode payload) { + int appId = Integer.parseInt(string(payload, APP_ID)); + String appName = string(payload, APP_NAME); + ApplicationId applicId = new DefaultApplicationId(appId, appName); + long intentKey = Long.decode(string(payload, KEY)); + + Key key = Key.of(intentKey, applicId); + log.debug("Attempting to select intent key={}", key); + + Intent intent = intentService.getIntent(key); + if (intent == null) { + log.debug("no such intent found!"); + } else { + log.debug("starting to monitor intent {}", key); + traffic.monitor(intent); + } + } + } + private final class CancelTraffic extends RequestHandler { private CancelTraffic() { super(CANCEL_TRAFFIC); @@ -623,6 +664,9 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { return hostIds; } + private void sendTopoStartDone() { + sendMessage(JsonUtils.envelope(TOPO_START_DONE, objectNode())); + } private synchronized void startSummaryMonitoring() { stopSummaryMonitoring(); |