Controller
The BNG Blaster controller provides a REST API to start and stop multiple test instances. It exposes the BNG Blaster JSON RPC 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/instances/<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/instances/<instance-name>/_start
The start API endpoint will start the bngblaster with the argument options defined in the body.
Status
GET /api/v1/instances/<instance-name>
The status API endpoint returns the status of the test.
Command
POST /api/v1/instances/<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.
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
}
}'
{
"status": "ok",
"code": 200,
"session-info": {
"type": "pppoe",
"session-id": 1,
"session-state": "Established",
"...": "..."
}
}
The result code is passed as HTTP response status code.
{
"status": "warning",
"code": 404,
"message": "session not found"
}
Stop Test
POST /api/v1/instances/<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/instances/<instance-name>
This API endpoint deletes the test instance directory. The corresponding test run is forcefully terminated (kill -9 <pid>) if running.