…by indirect 'addThreadDeviceTask' processing
This commit implements
- POST `addThreadDeviceTask` on api/actions/
- GET api/actions/<actionId>
- DELETE api/actions
The commit also provides integration tests, see tests/restjsonapi.
Please follow the following steps to install/build OTBR.
1. Checkout this PR
2. Build and Install OTBR as usual, e.g. on a Raspberry Pi
3. Restart the OTBR. `sudo systemctl restart otbr-agent`
4. To monitor the log [Errors|Warnings|Info] please open a different terminal instance and use following command:
```
tail -f /var/log/syslog | grep otbr
```
5. Send POST request using BRUNO or CURL, e.g. to join a new device into your network.
```
curl -X POST -H 'Content-Type: application/vnd.api+json' http://localhost:8081/api/actions -d '{"data": [{"type": "addThreadDeviceTask", "attributes": {"eui": "6234567890AACDEA", "pskd": "J01NME", "timeout": 3600}}]}' | jq
```
should return
```
{
"data": [
{
"id": "2d5a8844-b1bc-4f02-93f0-d87b8c3b4e92",
"type": "addThreadDeviceTask",
"attributes": {
"eui": "6234567890AACDEB",
"pskd": "J01NME",
"timeout": 3600,
"status": "pending"
},
}
]
}
```
6. You may check the status and get the full collection of actions.
```
curl -X GET -H 'Accept: application/vnd.api+json' http://localhost:8081/api/actions | jq
```
should return
```
{
"data": [
{
"id": "2d5a8844-b1bc-4f02-93f0-d87b8c3b4e92",
"type": "addThreadDeviceTask",
"attributes": {
"eui": "6234567890AACDEB",
"pskd": "J01NME",
"timeout": 3600,
"status": "pending"
}
}
],
"meta": {
"collection": {
"offset": 0,
"limit": 100,
"total": 1
}
}
}
```
7. View the entry added to the commissioner's table `sudo ot-ctl commissioner joiner table` and expect
```
| ID | PSKd | Expiration |
+-----------------------+----------------------------------+------------+
| 6234567890aacdea | J01NME | 3459027 |
Done
```
8. Start your joiner and after a few seconds repeat above steps 6. and 7.
9. For running the included test script install Bruno-Cli and run the bash script on your border router
```
cd tests/restjsonapi
source ./install_bruno_cli
./test-restjsonapi-server
```