...
Source | Event Type | Description of Payload | Trigger | Comments |
---|---|---|---|---|
UI | requestSummary | (no payload) | Summary pane shown | Client requesting the server to send topology summary data. |
Server | showSummary | High level summary properties: total number of devices, links, hosts, ... | Periodic updates in response to requestSummary | The 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. |
UI | cancelSummary | (no payload) | Summary pane hidden | Client requesting the server to stop sending summary data. |
Server | addInstance | Instance ID, IP address, online status, ... | ONOS instance added to cluster | An ONOS instance to be added to the model. |
Server | addDevice | Device ID, type, online status, mastership, labels, properties, ... | ONOS discovers new device | A device (switch, roadm, ...) to be added to the model. |
Server | addHost | Host ID, type, connection point, labels, properties, ... | ONOS discovers new host | A host (endstation, bgpSpeaker, router, ...) to be added to the model. |
Server | addLink | Link ID, type, source ID/port, destination ID/port, ... | ONOS discovers new link | A link (direct, optical, tunnel, ...) to be added to the model. |
Server | updateInstance | (same as addInstance) | Instance changes state | An ONOS instance with updated state. |
Server | updateDevice | (same as addDevice) | Device changes state | A device with updated state. |
Server | updateHost | (same as addHost) | Host changes state | A host with updated state. |
Server | updateLink | (same as addLink) | Link changes state | A link with updated state. |
Server | removeInstance | (same as addInstance)(1) | ONOS instance leaves cluster | An ONOS instance to be removed from the model. |
Server | removeDevice | (same as addDevice)(1) | Device removed | A device to be removed from the model. |
Server | removeHost | (same as addHost)(1) | Host removed | A host to be removed from the model. |
Server | removeLink | (same as addLink)(1) | Link removed | A link to be removed from the model. |
UI | updateMeta | item ID, item class (device, host, ...) memento data | User drags node to new position | Client 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. |
UI | requestDetails | item ID, item class (device, host, ...) | User selects node on map | Client requesting details for the specified item. |
Server | showDetails | item ID, item type (switch, roadm, endstation, ...) and list of properties | Response to requestDetails | Server response to requestDetails. |
UI | addHostIntent‡ | IDs 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. |
UI | addMultiSourceIntent‡ | IDs of selected nodes (multi source, single destination) | 'Create Multi-Source Flow' action button on multi-select pane. | Client requesting server to install multiple intents. |
UI | requestRelatedIntents‡ | IDs of selected nodes, ID of hovered-over node | 'V' keystroke | Client requesting intents relating to current selection of nodes be highlighted. |
UI | requestPrevRelatedIntent‡ | (no payload) | 'L-arrow' keystroke | Client requesting previous related intent to be highlighted |
UI | requestNextRelatedIntent‡ | (no payload) | 'R-arrow' keystroke | Client requesting next related intent to be highlighted |
UI | requestSelectedIntentTraffic‡ | (no payload) | 'W' keystroke?? (Thomas) | Client requesting continuous monitoring of traffic on the links of the selected intent |
UI | requestDeviceLinkFlows‡ | IDs 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) |
UI | requestAllTraffic‡ | (no payload) | 'A' keystroke?? (Thomas) | Client requesting continuous monitoring of traffic on all network infrastructure links |
Server | showTraffic | list of paths (sets of link IDs) and labels to apply to those links, as well as the styling classes to apply to those paths | Response to UI requests marked with ‡ | Server response to requestTraffic. Note that the server will continue to send these events to keep updating the display. |
UI | cancelTraffic | (no payload) | 'ESC' keystroke | User cancels selection – Client requesting the server to stop sending traffic updates. |
UI | equalizeMasters | (no payload) | 'E' keystroke | Client 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 dataTopologyViewIntentFilter
- responsible for identifying list of intents which pertain to the specified sets of end-station hosts or infrastructure devicesTopologyViewMessages
- base class for composing various messages destined for the client and parsing those that were received from the clientTopologyViewWebSocket
- main controller for processing inbound messages and emitting appropriate responses
<<more detail?>><Thomas to add details>