diff --git a/pages/docs/_meta.json b/pages/docs/_meta.json index 940342b..5453005 100644 --- a/pages/docs/_meta.json +++ b/pages/docs/_meta.json @@ -6,5 +6,6 @@ "index": "Introduction", "getting-started": "Getting Started", "user-guide": "User Guide", + "reference": "Reference", "advanced": "Advanced" } diff --git a/pages/docs/reference/_meta.json b/pages/docs/reference/_meta.json new file mode 100644 index 0000000..57a00a6 --- /dev/null +++ b/pages/docs/reference/_meta.json @@ -0,0 +1,4 @@ +{ + "api-rest": "API REST", + "configuration": "Configuration" +} diff --git a/pages/docs/reference/api-rest/_meta.json b/pages/docs/reference/api-rest/_meta.json new file mode 100644 index 0000000..69bb635 --- /dev/null +++ b/pages/docs/reference/api-rest/_meta.json @@ -0,0 +1,3 @@ +{ + "post-run": "POST /run" +} diff --git a/pages/docs/reference/api-rest/post-run.mdx b/pages/docs/reference/api-rest/post-run.mdx new file mode 100644 index 0000000..8d97c66 --- /dev/null +++ b/pages/docs/reference/api-rest/post-run.mdx @@ -0,0 +1,59 @@ +--- +title: 'POST /run' +description: 'Documentation for the POST /run API endpoint in Faast.' +--- + +import { Callout } from 'nextra/components'; + +# POST /run + +This section provides documentation for the `POST /run` API endpoint in Faast. + +## Request Body + +The request body for the `POST /run` API endpoint should be a JSON object with +the following fields: + +- `language` (String): The name of the programming language. +- `version` (String): The version of the language runtime. +- `input` (String): The input data for code execution (stdin). +- `code` (Array of FileModel): An array of code files required for execution. + Each `FileModel` object in the array should have the following fields: + + - `filename` (String): The name of the file. + - `content` (String): The content of the file. + +Here is an example request body for an API call that executes a Node.js program: + +```json copy filename="request.json" +{ + "language": "NODE", + "version": "12", + "input": "", + "code": [ + { + "filename": "main.js", + "content": "console.log('Hello, World!');" + } + ] +} +``` + +## Response Body + +The response body for the `POST /run` API endpoint represents the execution +result. It is a JSON object with the following fields: + +- `status` (Integer): The exit status code of the code execution. +- `stdout` (String): The standard output of the code execution. +- `stderr` (String): The standard error output of the code execution. + +Here is an example response body: + +```json +{ + "status": 0, + "stdout": "Hello, World!\n", + "stderr": "" +} +``` diff --git a/pages/docs/reference/configuration.mdx b/pages/docs/reference/configuration.mdx new file mode 100644 index 0000000..a7fa20d --- /dev/null +++ b/pages/docs/reference/configuration.mdx @@ -0,0 +1,132 @@ +--- +title: 'Configuration Reference' +description: 'Reference guide for configuring Faast.' +--- + +import { Callout } from 'nextra/components'; + +# Configuration Reference + +This reference guide provides details on configuring Faast for all parameters. + +## API Configuration + +Here is an example of the API configuration: + +```yaml copy filename="config.yaml" +apiVersion: lambdo.io/v1alpha1 +kind: Config +api: + web_host: 0.0.0.0 + web_port: 3000 + grpc_host: 0.0.0.0 + gprc_port: 50051 + bridge: lambdo0 + ip: 10.0.50.0/8 +``` + +### API Server + +The API server configuration includes: + +- **`web_host`**: The interface on which the API server will listen + > Example: `0.0.0.0` (all interfaces) +- **`web_port`**: The port on which the API server will listen + > Example: `3000` + +### gRPC Server + +The gRPC server configuration includes: + +- **`grpc_host`**: The interface on which the gRPC server will listen + > Example: `0.0.0.0` (all interfaces) +- **`gprc_port`**: The port on which the gRPC server will listen + > Example: `50051` + +### Bridge Configuration + +The bridge configuration includes: + +- **`bridge`**: The name of the bridge + > Example: `lambdo0` +- **`ip`**: The IP address of the bridge + > Example: `10.0.50.0/8` + +## VMM Configuration (Virtual Machine Monitor) + +Here is an example of the VMM configuration: + +```yaml copy filename="config.yaml" +apiVersion: lambdo.io/v1alpha1 +kind: Config +vmm: + kernel: /var/lib/lambdo/kernel/vmlinux.bin +``` + +The VMM configuration includes: + +- **`kernel`**: The path to the Linux kernel binary utilized by the VMM + > Example: `/var/lib/lambdo/kernel/vmlinux.bin` + +## Agent Configuration + + + The agent configuration is not implemented yet. + + +Here is an example of the agent configuration: + +```yaml copy filename="config.yaml" +apiVersion: lambdo.io/v1alpha1 +kind: Config +agent: # NOT IMPLEMENTED + path: /usr/local/bin/lambdo-agent + config: /etc/lambdo/agent.yaml +``` + +The agent configuration includes: + +- **`path`**: The path to the agent binary + > Example: `/usr/local/bin/lambdo-agent` +- **`config`**: The path to the agent configuration file + > Example: `/etc/lambdo/agent.yaml` + +## Language Runtime Configuration + +Here is an example of the language runtime configuration: + +```yaml copy filename="config.yaml" +apiVersion: lambdo.io/v1alpha1 +kind: Config +languages: + - name: NODE + version: 12 + initramfs: /var/lib/lambdo/initramfs/node-12.img + steps: + - name: Run the code + command: /usr/local/bin/node {{filename}} + output: + enabled: true + debug: false +``` + +The configuration for a Node.js runtime includes: + +- **`name`**: The name of the runtime + > Example: `NODE` +- **`version`**: The version of the runtime + > Example: `12` +- **`initramfs`**: The path to the initramfs for the runtime + > Example: `/var/lib/lambdo/initramfs/node-12.img` +- **`steps`**: The steps to run the code. Each step includes the following + parameters: + - **`name`**: The name of the step + > Example: `Run the code` + - **`command`**: The command to run for the step + > Example: `/usr/local/bin/node {{filename}}` + - **`output`**: The output configuration for the step. This includes the + following parameters: + - **`enabled`**: Whether to enable the output + > Example: `true` + - **`debug`**: Whether to enable debug output (useful for build steps) + > Example: `false`