Files
MaxScale/Documentation/REST-API/Resources-MaxScale.md
Markus Mäkelä ba546fcd21 MXS-1220: Add execution of module commands to REST API
The module command self links now point to an endpoint that executes the
module command. Depending on the type of the module command, either a GET
or a POST request must be made.
2017-06-02 12:52:33 +03:00

426 lines
10 KiB
Markdown

# MaxScale Resource
The MaxScale resource represents a MaxScale instance and it is the core on top
of which the modules build upon.
## Resource Operations
## Get global information
Retrieve global information about a MaxScale instance. This includes various
file locations, configuration options and version information.
```
GET /v1/maxscale
```
#### Response
`Status: 200 OK`
```javascript
{
"links": {
"self": "http://localhost:8989/v1/maxscale/"
},
"data": {
"attributes": {
"parameters": {
"libdir": "/usr/lib64/maxscale",
"datadir": "/var/lib/maxscale",
"process_datadir": "/var/lib/maxscale/data16218",
"cachedir": "/var/cache/maxscale",
"configdir": "/etc",
"config_persistdir": "/var/lib/maxscale/maxscale.cnf.d",
"module_configdir": "/etc/maxscale.modules.d",
"piddir": "/var/run/maxscale",
"logdir": "/var/log/maxscale",
"langdir": "/var/lib/maxscale",
"execdir": "/usr/bin",
"connector_plugindir": "/var/lib/plugin",
"threads": 4,
"auth_connect_timeout": 3,
"auth_read_timeout": 1,
"auth_write_timeout": 2,
"skip_permission_checks": false,
"syslog": true,
"maxlog": true,
"log_to_shm": false,
"query_classifier": ""
},
"version": "2.1.3",
"commit": "a32aa6c16236d2d8830e1286ea3aa4dba19174ec",
"started_at": "Wed, 17 May 2017 05:33:46 GMT",
"uptime": 19
},
"id": "maxscale",
"type": "maxscale"
}
}
```
## Get thread information
Get the information and statistics of a particular thread. The _:id_ in
the URI must map to a valid thread number between 0 and the configured
value of `threads`.
```
GET /v1/maxscale/threads/:id
```
#### Response
`Status: 200 OK`
```javascript
{
"links": {
"self": "http://localhost:8989/v1/maxscale/threads/0"
},
"data": {
"id": "0",
"type": "threads",
"attributes": {
"stats": {
"reads": 2,
"writes": 0,
"errors": 0,
"hangups": 0,
"accepts": 0,
"blocking_polls": 180,
"event_queue_length": 1,
"max_event_queue_length": 1,
"max_exec_time": 0,
"max_queue_time": 0
}
},
"links": {
"self": "http://localhost:8989/v1/threads/0"
}
}
}
```
## Get information for all threads
Get the informatino for all threads. Returns a collection of threads resources.
```
GET /v1/maxscale/threads
```
#### Response
`Status: 200 OK`
```javascript
{
"links": {
"self": "http://localhost:8989/v1/maxscale/threads/"
},
"data": [
{
"id": "0",
"type": "threads",
"attributes": {
"stats": {
"reads": 1,
"writes": 0,
"errors": 0,
"hangups": 0,
"accepts": 0,
"blocking_polls": 116,
"event_queue_length": 1,
"max_event_queue_length": 1,
"max_exec_time": 0,
"max_queue_time": 0
}
},
"links": {
"self": "http://localhost:8989/v1/threads/0"
}
},
{
"id": "1",
"type": "threads",
"attributes": {
"stats": {
"reads": 1,
"writes": 0,
"errors": 0,
"hangups": 0,
"accepts": 0,
"blocking_polls": 116,
"event_queue_length": 1,
"max_event_queue_length": 1,
"max_exec_time": 0,
"max_queue_time": 0
}
},
"links": {
"self": "http://localhost:8989/v1/threads/1"
}
},
{
"id": "2",
"type": "threads",
"attributes": {
"stats": {
"reads": 1,
"writes": 0,
"errors": 0,
"hangups": 0,
"accepts": 0,
"blocking_polls": 116,
"event_queue_length": 1,
"max_event_queue_length": 1,
"max_exec_time": 0,
"max_queue_time": 0
}
},
"links": {
"self": "http://localhost:8989/v1/threads/2"
}
},
{
"id": "3",
"type": "threads",
"attributes": {
"stats": {
"reads": 1,
"writes": 0,
"errors": 0,
"hangups": 0,
"accepts": 0,
"blocking_polls": 116,
"event_queue_length": 1,
"max_event_queue_length": 1,
"max_exec_time": 0,
"max_queue_time": 0
}
},
"links": {
"self": "http://localhost:8989/v1/threads/3"
}
}
]
}
```
## Get logging information
Get information about the current state of logging, enabled log files and the
location where the log files are stored.
```
GET /v1/maxscale/logs
```
#### Response
`Status: 200 OK`
```javascript
{
"links": {
"self": "http://localhost:8989/v1/maxscale/logs/"
},
"data": {
"attributes": {
"parameters": {
"highprecision": false,
"maxlog": true,
"syslog": true,
"throttling": {
"count": 10,
"suppress_ms": 10000,
"window_ms": 1000
},
"log_warning": true,
"log_notice": true,
"log_info": false,
"log_debug": false
}
},
"id": "logs",
"type": "logs"
}
}
```
## Flush and rotate log files
Flushes any pending messages to disk and reopens the log files. The body of the
message is ignored.
```
POST /v1/maxscale/logs/flush
```
#### Response
```
Status: 204 No Content
```
## Get task schedule
Retrieve all pending tasks that are queued for execution.
```
GET /v1/maxscale/tasks
```
#### Response
`Status: 200 OK`
```javascript
{
"links": {
"self": "http://localhost:8989/v1/maxscale/tasks/"
},
"data": [] // No tasks active
}
```
## Get loaded modules
Retrieve information about a loaded module. This includes version, API and
maturity information as well as all the parameters that the module defines.
```
GET /v1/maxscale/modules
```
#### Response
`Status: 200 OK`
```javascript
{
"links": {
"self": "http://localhost:8989/v1/maxscale/modules/"
},
"data": {
"id": "dbfwfilter",
"type": "module",
"attributes": {
"module_type": "Filter",
"version": "V1.2.0",
"description": "Firewall Filter",
"api": "filter",
"status": "GA",
"commands": [
{
"id": "rules/reload",
"type": "module_command",
"links": {
"self": "http://localhost:8989/v1/modules/dbfwfilter/rules/reload"
},
"attributes": {
"method": "POST",
"arg_min": 1,
"arg_max": 2,
"parameters": [
{
"description": "Filter to reload",
"type": "FILTER",
"required": true
},
{
"description": "Path to rule file",
"type": "[STRING]",
"required": false
}
]
}
}
],
"parameters": [
{
"name": "rules",
"type": "path"
},
{
"name": "log_match",
"type": "bool",
"default_value": "false"
},
{
"name": "log_no_match",
"type": "bool",
"default_value": "false"
},
{
"name": "action",
"type": "enum",
"default_value": "block",
"enum_values": [
"allow",
"block",
"ignore"
]
}
]
},
"links": {
"self": "http://localhost:8989/v1/modules/dbfwfilter"
}
}
}
```
## Get all loaded modules
Retrieve information about all loaded modules.
```
GET /v1/maxscale/modules
```
#### Response
`Status: 200 OK`
```javascript
{
"links": {
"self": "http://localhost:8989/v1/maxscale/modules/"
},
"data": [
{
"id": "qc_sqlite",
"type": "module",
"attributes": {
"module_type": "QueryClassifier",
"version": "V1.0.0",
"description": "Query classifier using sqlite.",
"api": "query_classifier",
"status": "Beta",
"parameters": []
},
"links": {
"self": "http://localhost:8989/v1/modules/qc_sqlite"
}
},
{
"id": "MySQLAuth",
"type": "module",
"attributes": {
"module_type": "Authenticator",
"version": "V1.1.0",
"description": "The MySQL client to MaxScale authenticator implementation",
"api": "authenticator",
"status": "GA",
"parameters": []
},
"links": {
"self": "http://localhost:8989/v1/modules/MySQLAuth"
}
},
]
}
```