The Abiquo Outbound API (the "M" module) listens for events from Abiquo and broadcasts them to connected clients.
The Abiquo Outbound API aims to help third-party software providers to develop software for integration with the Abiquo platform. It allows customers to drive external systems or processes based on activity on the Abiquo platform. For example, you may want to be notified when a new VM is deployed in order to update an asset management register. Users can subscribe to a specific event, a set of events, or all events. Users will need to have access to the Abiquo API and privileges to access events. Abiquo customers and their cloud customers can subscribe to the events they have permission to access.
The following diagram shows the basic architecture of the Outbound API.
Abiquo supports OAuth authentication to the streaming API. You should sign a request to ''endpoint/api/login'' and use this header in the request to M.
The streaming API can be used to subscribe to a set of Events, so you can receive all events that interest you in "real time".
The following example shows a subscription request using Server-Side Events as the streaming transport. The subscription does not specify any filter, so by default all Events will be received in "real time".
Note that there are also specific Atmosphere query parameters in the request. Please see the Atmosphere documentation for a complete reference of all available parameters used to configure the streaming connection.
During the subscription, a virtual datacenter was created and a VM was deployed, and all events were received in real-time on the client side.
You can refine your subscriptions to receive only the events you are interested in. The following query parameters are available:
|severity||The severity of the events||INFO, WARN, ERROR|
|entity||The entity that originated the event||DATACENTER, RACK, VIRTUAL_MACHINE, etc.|
|action||The action performed on the "entity"||CREATE, DEPLOY, DELETE, etc.|
|user||The "id" of the user who generated the event||1, 2, 25, system, etc.|
|enterprise||The "id" of the enterprise generating the event|
1, 2, 25, etc.
|scope||The scope of the event||VIRTUALDATACENTER, ENTERPRISE, DATACENTER, PLATFORM|
For a full list of all entities and actions that will generate events in Abiquo, see Events Table
Traces related to events on the platform can be found in the Abiquo Logs
The Events Table contains all events including the Trace column that contains the messages created by the tracers and registered in the catalina.out log.
The following examples show several subscriptions to receive a subset of events in real time. Atmosphere query parameters are needed but have been removed from the examples to make them easier to read. Remember to configure all the parameters if you are going to test the examples, and you may also require the insecure option for test systems:
A user can display the events for which their role has privileges, as listed in the Events Table. This access is combined with the User event privileges from Abiquo as described in the following table.
|Privilege and Scope||Outbound API||Default roles|
|No event privileges||User events only|
|Display all events for current enterprise|
All enterprise events, including Infrastructure events.
|Cloud admin, Ent Admin, Ent User|
|Display all events + global scope||All events including SYSTEM events||Cloud admin|
|Display all events + limited scope||All events for the locations and enterprises in scope|
If the third-party system goes down, customers can recover any events lost during downtime by retrieving events using the REST API and filtering them by time stamp. See EventsResource
The format of events in the stream is the same as the events returned by the Abiquo API with the Event Media Type.
The format of events in the Abiquo UI is described at Events View.
The Abiquo Events Notifier is an example of an outbound API Integration. This project is not currently maintained so it does not include the changes to the events format introduced in Abiquo 4.7.
The Abiquo Java Stream Client is available with the API Java Client to help developers build integrations with the Outbound API. The API Stream Client supports OAuth authentication to enable secure connections. The Java Stream Client will enable developers to build event-based integrations and it complements the API Java Client.