This repository contains the remote code execution engine for the pennant-notebook project.
Application can be accessed at : www.trypennant.com
v1.3.0-deployment: Adds security features. Not recommended as a base for development since it requires configuration of secrets
v1.3.0: Distributed architecture separating API server from docker host.
v1.2.0: Revised declaration to reassignment & container cleanup. Pre-functional partitioning of API server and docker host.
v1.1.0: Previous state before merge of declaration to reassignment logic and resource cleanup
The 1.0.0 branch implements the code execution service as an EDA. Endpoints have not changed.
Latest stable version is branch v0.1.0
Last updated: 6/28/23
The default base URL for all API endpoints is: http://localhost:3002/api
Submits a notebook for execution.
URL: /submit
Method: POST
Parameter | Type | Required | Description |
---|---|---|---|
notebookId |
string |
Yes | The ID of the notebook |
cells |
array |
Yes | An array of cells to be executed. |
The cells
array should contain objects with the following properties:
Parameter | Type | Required | Description |
---|---|---|---|
cellId |
string |
Yes | The ID of the cell to be executed. |
code |
string |
Yes | The code content of the cell to be executed. |
Response:
Property | Type | Description |
---|---|---|
message |
string |
A status message indicating success. |
submissionId |
string |
Token to track the status of the submission. |
Retrieves the status of a submitted notebook.
URL: /status/:submissionId
Method: GET
Parameters:
Parameter | Type | Required | Description |
---|---|---|---|
submissionId |
string |
Yes | Token received by the submission endpoint. |
Response: Returns the output of the notebook submission.
Property | Type | Description |
---|---|---|
submissionId |
string |
|
status |
string |
pending , success , or error |
requestOrder |
array |
Order of the cells array from the original submission |
cellsExecuted |
array |
Actual cells executed |
results |
array |
Array of cell execution results |
results
is an array of objects with the following properties:
Property | Type | Description |
---|---|---|
cellId |
string |
|
type |
string |
output , error or critical |
output |
string |
Console output string or stack trace |
Resets the context for a notebook.
URL: /reset/:notebookId
Method: POST
Parameter:
Parameter | Type | Required | Description |
---|---|---|---|
notebookId |
string |
Yes | The ID of the notebook to reset the context. |
Response: Returns a message indicating that the context has been reset.
Status code | Description |
---|---|
200 | OK |
400 | Bad request |
404 | Not found |
500 | Internal server error |
Returns: 200 OK and submissionId
(token)
Initiates submission. Starts code execution process. You can send one or many cells as an array value. Cells will be executed in order.
Sending one:
{
"notebookId": "111", // from FE
"cells": [
{
"cellId": "2", // From frontend
"code": "console.log('hi judah!')"
}
],
"timeout": 5
}
Sending many:
{
"notebookId": "111",
"cells": [
{
"cellId": "3",
"code": "const name = 'Bob'"
},
{
"cellId": "4",
"code": "const age = 30"
},
{
"cellId": "5",
"code": "console.log(name, ' is ', age, ' years old')"
}
],
"timeout": 5
}
Returns: 200 OK and payload of results. status
field may be "pending", "success" or "error". Note that error refers to an exception being raised by a cell execution; not a server-side issue. Such errors will be flagged using HTTP status codes.
{
"submissionId": "0c5796d7-c8fb-4b4c-a13d-9ebedc914551",
"status": "success",
"requestOrder": [
[
"3",
"4",
"5"
]
],
"cellsExecuted": [
"3",
"4",
"5"
],
"results": [
{
"cellId": "3",
"type": "output",
"output": ""
},
{
"cellId": "4",
"type": "output",
"output": ""
},
{
"cellId": "5",
"type": "output",
"output": "Bob is 30 years old\n"
}
]
}