...
The following table enumerates the events, providing a high-level description of the payload. For explicit details of the payloads, see the source-code .
Note that the term "node" (in this context) is used to mean "device or host node" in the topology visualization.
Source | Event Type | Description of Payload | Trigger | Comments | |
---|---|---|---|---|---|
UI | requestSummary | (no payload) | Summary pane shown | Client requesting the server to send topology summary data. Invoked when the summary pane is brought into view. | |
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. Invoked when the summary pane is hidden. | |
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 the storage of data data (a memento) associated with a specific node (a to be stored server-side; That same data (memento) , to should be returned in the payload of future events pertaining to that node. This is a mechanism whereby the location of the node (as dragged and pinned by the user) is persisted server-sidemechanism 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. Sent in response to the user selecting a node on the map. | |
Server | showDetails | item ID, item type (switch, roadm, endstation, ...) and list of properties | Response to requestDetails | Server response to requestDetails. | |
UIrequestTraffic | 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 nodeslist of IDs for selected items, ID of hovered-over itemnode | 'V' keystroke | Client requesting traffic data to display on the topology. Invoked when the user requests traffic data, and starts exploring the data by hovering the mouse over nodes.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) | |
UI | requestDeviceLinkFlows‡ | IDs of selected nodes, ID of hovered-over node | 'F' keystroke | ?? (Thomas) | |
UI | requestAllTraffic‡ | (no payload) | 'A' keystroke | ?? (Thomas) | |
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 | . Invoked by user gesture (typically the ESC key). |
UI | equalizeMasters | (no payload) | 'E' keystroke | Client requesting server to rebalance mastership of devices across the cluster. Invoked by a keystroke: 'E'. | |
UI | addHostIntent | IDs of two selected hosts | Client requesting server to install a host-to-host intent. Invoked from action button on multi-select display pane. | ||
UI | addMultiSourceIntent | IDs of selected nodes (multi source, single destination) | Client requesting server to install multiple intents. Invoked from action button on multi-select display pane. | ||
UI | requestDeviceLinkFlows | IDs of selected nodes, ID of hovered-over node | Client requesting traffic information for showing flow data of selected nodes. | ||
UI | requestAllTraffic | (no payload) | Client requesting traffic information for whole network. | ||
Notes:
(**(1) Technically, only the ID field is required, but this simplifies the code on the server sideserver-side code is simplified by using the payload as is.
A Note about Links
The topology model on the server side represents links as unidirectional, with a source and destination. In the UI, each link model object abstracts away the directionality.
<<more details to follow>><<Simon to add details >>
Server-Side Architecture
<details of web-socket handling, TopologyResource and related classes, etc.>
Websocket Servlet
<Thomas to add details>
Topology Resources
The following Java classes comprise the server-side code for the Topology View:
- TopologyResource
- TopologyViewIntentFilter
- TopologyViewMessages
- TopologyViewWebSocket
<Thomas to add details>