Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

SourceEvent TypeDescription of PayloadTriggerComments
UIrequestSummary(no payload)Summary pane shownClient requesting the server to send topology summary data.
ServershowSummaryHigh level summary properties: total number of devices, links, hosts, ...Periodic updates in response to requestSummaryThe summary data is displayed in a "fly-in" pane in the top right of the view. Note that the server will continue to send these events to keep the summary data up-to-date.
UIcancelSummary(no payload)Summary pane hiddenClient requesting the server to stop sending summary data.
ServeraddInstanceInstance ID, IP address, online status, ...ONOS instance added to clusterAn ONOS instance to be added to the model.
ServeraddDeviceDevice ID, type, online status, mastership, labels, properties, ...ONOS discovers new deviceA device (switch, roadm, ...) to be added to the model.
ServeraddHostHost ID, type, connection point, labels, properties, ...ONOS discovers new hostA host (endstation, bgpSpeaker, router, ...) to be added to the model.
ServeraddLinkLink ID, type, source ID/port, destination ID/port, ...ONOS discovers new linkA link (direct, optical, tunnel, ...) to be added to the model.
ServerupdateInstance(same as addInstance)Instance changes stateAn ONOS instance with updated state.
ServerupdateDevice(same as addDevice)Device changes stateA device with updated state.
ServerupdateHost(same as addHost)Host changes stateA host with updated state.
ServerupdateLink(same as addLink)Link changes stateA link with updated state.
ServerremoveInstance(same as addInstance)(1)ONOS instance leaves clusterAn ONOS instance to be removed from the model.
ServerremoveDevice(same as addDevice)(1)Device removedA device to be removed from the model.
ServerremoveHost(same as addHost)(1)Host removedA host to be removed from the model.
ServerremoveLink(same as addLink)(1)Link removedA link to be removed from the model.
UIupdateMetaitem ID, item class (device, host, ...) memento dataUser drags node to new positionClient requesting data (a memento) associated with a specific node to be stored server-side; That same data (memento) should be returned in the payload of future events pertaining to that node. This mechanism facilitates server-side persistence of client-side meta data, such as the (user-placed) location of a node on the topology map.
UIrequestDetailsitem ID, item class (device, host, ...)User selects node on mapClient requesting details for the specified item.
ServershowDetailsitem ID, item type (switch, roadm, endstation, ...) and list of propertiesResponse to requestDetailsServer response to requestDetails.
UIaddHostIntentIDs of two selected hosts'Create Host-to-Host Flow' action button on multi-select pane.Client requesting server to install a host-to-host intent.
UIaddMultiSourceIntentIDs of selected nodes (multi source, single destination)'Create Multi-Source Flow' action button on multi-select pane.Client requesting server to install multiple intents.
UIrequestRelatedIntentsIDs of selected nodes, ID of hovered-over node'V' keystrokeClient requesting intents relating to current selection of nodes be highlighted.
UIrequestPrevRelatedIntent(no payload)'L-arrow' keystrokeClient requesting previous related intent to be highlighted
UIrequestNextRelatedIntent(no payload)'R-arrow' keystrokeClient requesting next related intent to be highlighted
UIrequestSelectedIntentTraffic(no payload)'W' keystroke?? (Thomas)Client requesting continuous monitoring of traffic on the links of the selected intent
UIrequestDeviceLinkFlowsIDs of selected nodes, ID of hovered-over node'F' keystroke?? (ThomasClient requesting continuous monitoring of flow rules on the egress links of the selected device(s)
UIrequestAllTraffic(no payload)'A' keystroke?? (Thomas)Client requesting continuous monitoring of traffic on all network infrastructure links
ServershowTrafficlist of paths (sets of link IDs) and labels to apply to those links, as well as the styling classes to apply to those pathsResponse to UI requests marked with Server response to requestTraffic. Note that the server will continue to send these events to keep updating the display.
UIcancelTraffic(no payload)'ESC' keystrokeUser cancels selection – Client requesting the server to stop sending traffic updates.
UIequalizeMasters(no payload)'E' keystrokeClient requesting server to rebalance mastership of devices across the cluster.

...

Server-Side Architecture

Websocket Servlet

<Thomas to add details>When the topology view is loaded it makes an HTTP request to ws://<server>/onos/ui/ws/topology URL. This requests gets upgraded into a Web-Socket, thus establishing a symmetric and persistent connection between the client and the server. On the server side, this process is facilitated by GuiWebSocketServlet, which extends Jetty WebSocketServlet and results in creation of a session-specific TopologyViewWebSocket instance. This instance holds the necessary session-state for interacting with this specific client.

Topology Resources

The following Java classes comprise the server-side code for the Topology View:

  • TopologyResource - provides REST API for some auxiliary functionality, e.g. export of GEO location data
  • TopologyViewIntentFilter - responsible for identifying list of intents which pertain to the specified sets of end-station hosts or infrastructure devices
  • TopologyViewMessages - base class for composing various messages destined for the client and parsing those that were received from the client
  • TopologyViewWebSocket - main controller for processing inbound messages and emitting appropriate responses

<<more detail?>><Thomas to add details>