OESS NSI Implementation Details
There are 2 parts to the OESS NSI Implementation. The NSI cgi (webservices/idc/nsi.cgi) and the OESS NSI Daemon (/usr/bin/oess-nsi).
The NSI CGI is a SOAP endpoint that provides a place for RAs to send request to OESS (essentially it is a transparent proxy to the oess-nsi daemon). The NSI CGI parses and sends the NSI message over the org.nddi.nsi DBus channel which is handled by the NSI daemon.
The NSI Daemon then processes the request and pushes an event onto it's queue to handle the event. Once the event is queued a success/fail value is returned to the CGI through the DBus channel. At which point the CGI will reply with the ACK message to the requester.
The NSI Daemon then processes its request queue on a timer, and handles all messages in the queue. Once the request is completed (or fails) the Daemon then sends it reply message to the requester.
Permissions and Topology for NSI are determined through the NSI workgroup (see configuring NSI for OESS). All requests for NSI are sent to OESS via web-services so if the NSI workgroup doesn't have permission to use a VLAN tag or interface than the provisioning request will fail.
A few things to note based on this architecture. This implementation is not an Aggregator or a Requester Agent. This implementation is only a Provider Agent for the OESS application.