234 lines
5.4 KiB
Markdown
234 lines
5.4 KiB
Markdown
REST API
|
|
===
|
|
|
|
Process API
|
|
---
|
|
|
|
### Start a new process
|
|
|
|
#### Request
|
|
|
|
_POST /process_
|
|
|
|
- `channel`(optional) - the id of the channel which should be subscribed to the process events
|
|
- `types`(optional) - comma separated types works only in couple with specified `channel`, defines
|
|
the events which will be sent by the process to the `channel`. Several values may be specified,
|
|
e.g. `channel=channel-1&types=stderr,stdout`. By default channel will be subscribed to
|
|
all the existing types(listed below). Possible type values:
|
|
- `stderr` - output from the process stderr
|
|
- `stdout` - output from the process stdout
|
|
- `process_status` - the process status events(_started, died_)
|
|
|
|
|
|
```json
|
|
{
|
|
"name" : "build",
|
|
"commandLine" : "mvn clean install",
|
|
"type" : "maven"
|
|
}
|
|
```
|
|
|
|
#### Response
|
|
|
|
```json
|
|
{
|
|
"pid": 1,
|
|
"name": "build",
|
|
"commandLine": "mvn clean install",
|
|
"type" : "maven",
|
|
"alive": true,
|
|
"nativePid": 9186
|
|
}
|
|
```
|
|
- `200` if successfully started
|
|
- `400` if incoming data is not valid e.g. name is empty
|
|
- `404` if specified `channel` doesn't exist
|
|
- `500` if any other error occurs
|
|
|
|
|
|
### Get a process
|
|
|
|
#### Request
|
|
|
|
_GET /process/{pid}_
|
|
|
|
- `pid` - the id of the process to get
|
|
|
|
#### Response
|
|
|
|
```json
|
|
{
|
|
"pid": 1,
|
|
"name": "build",
|
|
"commandLine": "mvn clean install",
|
|
"type" : "maven",
|
|
"alive": false,
|
|
"nativePid": 9186,
|
|
}
|
|
```
|
|
|
|
- `200` if response contains requested process
|
|
- `400` if `pid` is not valid, unsigned int required
|
|
- `404` if there is no such process
|
|
- `500` if any other error occurs
|
|
|
|
### Kill a process
|
|
|
|
#### Request
|
|
|
|
_DELETE /process/{pid}_
|
|
|
|
- `pid` - the id of the process to kill
|
|
|
|
#### Response
|
|
|
|
```json
|
|
{
|
|
"pid": 1,
|
|
"name": "build",
|
|
"commandLine": "mvn clean install",
|
|
"type" : "maven",
|
|
"alive": true,
|
|
"nativePid": 9186,
|
|
}
|
|
```
|
|
- `200` if successfully killed
|
|
- `400` if `pid` is not valid, unsigned int required
|
|
- `404` if there is no such process
|
|
- `500` if any other error occurs
|
|
|
|
|
|
### Get process logs
|
|
|
|
#### Request
|
|
|
|
_GET /process/{pid}/logs_
|
|
|
|
- `pid` - the id of the process to get logs
|
|
- `from`(optional) - time to get logs from e.g. _2016-07-12T01:48:04.097980475+03:00_ the format is _RFC3339Nano_
|
|
don't forget to encode this query parameter
|
|
- `till`(optional) - time to get logs till e.g. _2016-07-12T01:49:04.097980475+03:00_ the format is _RFC3339Nano_
|
|
don't forget to encode this query parameter
|
|
- `format`(optional) - the format of the response, default is `json`, possible values are: `text`, `json`
|
|
- `limit`(optional) - the limit of logs in result, the default value is _50_, logs are limited from the
|
|
latest to the earliest
|
|
- `skip` (optional) - the logs to skip, default value is `0`
|
|
|
|
#### Response
|
|
|
|
The result logs of the process with the command line `printf "Hello\nWorld\n"`
|
|
|
|
Text:
|
|
```text
|
|
[STDOUT] 2016-07-04 08:37:56.315082296 +0300 EEST Hello
|
|
[STDOUT] 2016-07-04 08:37:56.315128242 +0300 EEST World
|
|
```
|
|
|
|
Json:
|
|
```json
|
|
[
|
|
{
|
|
"Kind" : "STDOUT",
|
|
"Time" : "2016-07-16T19:51:32.313368463+03:00",
|
|
"Text" : "Hello"
|
|
},
|
|
{
|
|
"Kind" : "STDOUT",
|
|
"Time" : "2016-07-16T19:51:32.313603625+03:00",
|
|
"Text" : "World"
|
|
}
|
|
]
|
|
```
|
|
|
|
- `200` if logs are successfully fetched
|
|
- `400` if `from` or `till` format is invalid
|
|
- `404` if there is no such process
|
|
- `500` if any other error occurs
|
|
|
|
### Get processes
|
|
|
|
#### Request
|
|
|
|
_GET /process_
|
|
|
|
- `all`(optional) - if `true` then all the processes including _dead_ ones will be returned(respecting paging ofc),
|
|
otherwise only _alive_ processes will be returnedg
|
|
|
|
#### Response
|
|
|
|
The result of the request _GET /process?all=true_
|
|
```json
|
|
[
|
|
{
|
|
"pid": 1,
|
|
"name": "build",
|
|
"commandLine": "mvn clean install",
|
|
"type" : "maven",
|
|
"alive": true,
|
|
"nativePid": 9186,
|
|
},
|
|
{
|
|
"pid": 2,
|
|
"name": "build",
|
|
"commandLine": "printf \"Hello World\"",
|
|
"alive": false,
|
|
"nativePid": 9588
|
|
}
|
|
]
|
|
```
|
|
- `200` if processes are successfully retrieved
|
|
- `500` if any error occurs
|
|
|
|
### Subscribe to the process events
|
|
|
|
#### Request
|
|
|
|
_POST /process/{pid}/events/{channel}_
|
|
|
|
- `pid` - the id of the process to subscribe to
|
|
- `channel` - the id of the webscoket channel which is subscriber
|
|
- `types`(optional) - the types of the events separated by comma e.g. `?types=stderr,stdout`
|
|
- `after`(optional) - process logs which appeared after given time will
|
|
be republished to the channel. This method may be useful in the reconnect process
|
|
|
|
#### Response
|
|
|
|
- `200` if successfully subscribed
|
|
- `400` if any of the parameters is not valid
|
|
- `404` if there is no such process or channel
|
|
- `500` if any other error occurs
|
|
|
|
### Unsubscribe from the process events
|
|
|
|
#### Request
|
|
|
|
_DELETE /process/{pid}/events/{channel}_
|
|
|
|
- `pid` - the id of the process to unsubscribe from
|
|
- `channel` - the id of the webscoket channel which currenly subscribed
|
|
to the process events
|
|
|
|
#### Response
|
|
|
|
- `200` if successfully unsubsribed
|
|
- `400` if any of the parameters is not valid
|
|
- `404` if there is no such process or channel
|
|
- `500` if any other error occurs
|
|
|
|
### Update the process events subscriber
|
|
|
|
#### Request
|
|
|
|
_PUT /process/{pid}/events/{channel}_
|
|
|
|
- `pid` - the id of the process
|
|
- `channel` - the id of the websocket channel which is subscriber
|
|
- `types` - the types of the events separated with comma e.g. `?types=stderr,stdout`
|
|
|
|
#### Response
|
|
|
|
- `200` if successfully updated
|
|
- `400` if any of the parameters is not valid
|
|
- `404` if there is no such process or channel
|
|
- `500` if any other error occurs
|