GitBook: [builtins] 57 pages and 20 assets modified
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
@ -39,7 +39,7 @@
|
|||||||
* [Tutorials](tutorials_tutorials/README.md)
|
* [Tutorials](tutorials_tutorials/README.md)
|
||||||
* [Deploy A Local Fluence Node](tutorials_tutorials/tutorial_run_local_node.md)
|
* [Deploy A Local Fluence Node](tutorials_tutorials/tutorial_run_local_node.md)
|
||||||
* [Deploy A Private Fluence Network](tutorials_tutorials/running-a-fluence-network.md)
|
* [Deploy A Private Fluence Network](tutorials_tutorials/running-a-fluence-network.md)
|
||||||
* [Add Your Own Builtin](tutorials_tutorials/add-your-own-builtin.md)
|
* [Add Your Own Node Native Service](tutorials_tutorials/add-your-own-builtin.md)
|
||||||
* [TrustGraph In Action](tutorials_tutorials/tutorial_trustgraph.md)
|
* [TrustGraph In Action](tutorials_tutorials/tutorial_trustgraph.md)
|
||||||
* [Securing Services](tutorials_tutorials/securing-services.md)
|
* [Securing Services](tutorials_tutorials/securing-services.md)
|
||||||
* [Developing a Frontend Application with JS-SDK](tutorials_tutorials/developing-a-frontend-application-with-js-sdk.md)
|
* [Developing a Frontend Application with JS-SDK](tutorials_tutorials/developing-a-frontend-application-with-js-sdk.md)
|
||||||
|
@ -23,7 +23,7 @@ AIR instructions are intended to launch the execution of a service method as fol
|
|||||||
4. The arguments specified by the argument list are passed to the method
|
4. The arguments specified by the argument list are passed to the method
|
||||||
5. The result of the method returned under the name output name
|
5. The result of the method returned under the name output name
|
||||||
|
|
||||||
**Figure 2: Sequential Instruction** 
|
**Figure 2: Sequential Instruction** 
|
||||||
|
|
||||||
The _**seq**_ instruction takes two instructions at most as its arguments and executes them sequentially, one after the other.
|
The _**seq**_ instruction takes two instructions at most as its arguments and executes them sequentially, one after the other.
|
||||||
|
|
||||||
|
@ -1,14 +1,48 @@
|
|||||||
# Add Your Own Builtin
|
---
|
||||||
|
description: The Case For Node Native Services
|
||||||
|
---
|
||||||
|
|
||||||
|
# Add Your Own Node Native Service
|
||||||
|
|
||||||
|
As discussed in the [Node](../knowledge_knowledge/node/knowledge_node_services.md) section, some service functionalities useful to a large audience. Such services and can be directly deployed to a peer node as a Wasm module. The remainder of this tutorial guides you through the steps necessary to create and submit a Node Native Service candidate.
|
||||||
|
|
||||||
If you want to have a service that available out-of-the-box with startup script and scheduled scripts, you can use `builtins deployer` feature. It will upload modules, deploy service, run init script and schedule others.
|
In order to have a service available out-of-the-box with the necessary startup and scheduling scripts, we can take advantage of the Fluence [deployer feature](https://github.com/fluencelabs/fluence/tree/master/deploy) for Node native Services. This feature handles the complete deployment process including
|
||||||
You should put your service files in the corresponding folder specified in config as `builtins_base_dir`.
|
|
||||||
|
|
||||||
### Builtins directory structure
|
* module uploads,
|
||||||
|
* service deployment,
|
||||||
|
* script initialization and scheduling
|
||||||
|
|
||||||
|
Note that the deployment process is a fully automated workflow requiring you to merely submit your service assets in the appropriate structure as a PR to the appropriate GitHub repository. At this point you should have a solid grasp of creating service modules and their associated configuration files. See the [Developing Modules And Services](../development_development/) section for details.
|
||||||
|
|
||||||
|
Our first step is fork the ??? repo by clicking on the Fork button, upper right of the repo webpage, and follow the instructions to create a local copy. In your local repo copy, checkout a new branch with a new, unique branch name:
|
||||||
|
|
||||||
|
```text
|
||||||
|
git checkout -b MyBranchName
|
||||||
|
```
|
||||||
|
|
||||||
|
In your new branch create a new directory with the service name in the _builtin_ directory:
|
||||||
|
|
||||||
|
```text
|
||||||
|
cd builtins
|
||||||
|
mkdir my-new-super-service
|
||||||
|
cd new-super-service
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace my-_new-super-service_ with your service name.
|
||||||
|
|
||||||
|
Now we can build and populate the required directory structure with your service assets. You should put your service files in the corresponding my-_new-super-service_ directory specified in config as `builtins_base_dir` **TODO: check if that applies to new repo approach.**
|
||||||
|
|
||||||
|
Asset Requirements
|
||||||
|
|
||||||
|
In order to deploy a builtin service, you need
|
||||||
|
|
||||||
|
* the wasm files for each module as the module build
|
||||||
|
* the blueprint file for the service
|
||||||
|
* start and schedule scripts
|
||||||
|
|
||||||
|
Just to recap, Blueprints capture module names, blueprint name, and blueprint id. -- builtins
|
||||||
|
|
||||||
```text
|
```text
|
||||||
-- builtins
|
|
||||||
-- {service_alias}
|
-- {service_alias}
|
||||||
-- scheduled
|
-- scheduled
|
||||||
-- {script_name}_{interval_in_seconds}.air [optional]
|
-- {script_name}_{interval_in_seconds}.air [optional]
|
||||||
|