1
0
mirror of https://github.com/rtbrick/bngblaster.git synced 2024-05-06 15:54:57 +00:00
2022-05-03 10:27:29 +02:00

120 lines
3.0 KiB
ReStructuredText

.. _controller:
Controller
==========
The BNG Blaster controller provides a REST API to start and stop multiple test instances.
It exposes the BNG Blaster :ref:`JSON RPC API <api>` as REST API and provides endpoints
to download logs and reports.
https://github.com/rtbrick/bngblaster-controller
Installation
------------
The BNG Blaster controller should run on any modern linux distribution
but is primary tested on Ubuntu 18.04 LTS and Ubuntu 20.04 LTS.
Download and install debian package: https://github.com/rtbrick/bngblaster-controller/releases
API
---
OpenAPI: https://rtbrick.github.io/bngblaster-controller/
Create Test Instance
~~~~~~~~~~~~~~~~~~~~
`PUT /api/v1/bngblasters/<instance-name>`
This API endpoint creates a test instance if not already created. The body of this request
is stored as bngblaster configuration (`config.json`).
Each test instance creates a directory in `/var/bngblaster/<instance-name>`.
This directory contains the following files:
* `config.json`: bngblaster configuration
* `run.pid`: bngblaster process ID (if running)
* `run.json`: bngblaster arguments
* `run_report.json`: bngblaster report (if enabled)
* `run.pcap`: bngblaster traffic capture (if enabled)
* `run.sock`: bngblaster control socket
* `run.stderr`: bngblaster standard error
* `run.stdout`: bngblaster standard output
Start Test
~~~~~~~~~~~
`POST /api/v1/bngblasters/<instance-name>/_start`
The start API endpoint will start the bngblaster with the argument options
defined in the body.
Status
~~~~~~
`GET /api/v1/bngblasters/<instance-name>`
The status API endpoint returns the status of the test.
Command
~~~~~~~
`POST /api/v1/bngblasters/<instance-name>/_command`
The JSON body of this API call will be passed to the bngblaster instance
control socket (`/var/bngbnlaster/<instance-name>/run.sock`). The result will
be passed back to the client.
.. code-block:: none
curl --location --request POST 'http://<IP>>:8001/api/v1/instances/<instance-name>/_command' \
--header 'Content-Type: application/json' \
--data-raw '{
"command": "session-info",
"arguments": {
"session-id": 1
}
}'
.. code-block:: json
{
"status": "ok",
"code": 200,
"session-info": {
"type": "pppoe",
"session-id": 1,
"session-state": "Established",
"...": "..."
}
}
The result code is passed as HTTP response status code.
.. code-block:: json
{
"status": "warning",
"code": 404,
"message": "session not found"
}
Stop Test
~~~~~~~~~
`POST /api/v1/bngblasters/<instance-name>/_stop`
The stop API endpoint will send the SIGINT signal to the corresponding BNG blaster instance (`kill -INT <pid>`).
Delete Test Instance
~~~~~~~~~~~~~~~~~~~~
`DELETE /api/v1/bngblasters/<instance-name>`
This API endpoint deletes the test instance directory. The corresponding
test run is forcefully terminated (`kill -9 <pid>`) if running.