1.8 KiB
Add Your Own Builtin
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.
You should put your service files in the corresponding folder specified in config as builtins_base_dir
.
Builtins directory structure
-- builtins
-- {service_alias}
-- scheduled
-- {script_name}_{interval_in_seconds}.air [optional]
-- blueprint.json
-- on_start.air [optional]
-- on_start.json [optional]
-- {module1_name}.wasm
-- {module1_name}_config.json
-- {module2_name}.wasm
-- {module2_name}_config.json
...
In blueprint you can specify dependencies either with name or hashes but .wasm files and config should have corresponding names. blieprint.json
example:
{
"name": "aqua-dht",
"dependencies": [
"hash:558a483b1c141b66765947cf6a674abe5af2bb5b86244dfca41e5f5eb2a86e9e",
"name:aqua-dht"
]
}
So modules and configs names should look like this:
-- aqua-dht.wasm
-- aqua-dht_config.json
-- 558a483b1c141b66765947cf6a674abe5af2bb5b86244dfca41e5f5eb2a86e9e.wasm
-- 558a483b1c141b66765947cf6a674abe5af2bb5b86244dfca41e5f5eb2a86e9e_config.json
on_start.air
is optional and can contain some startup script and you can specify necessary variables in on_start.json
. It will be executed only once after service deployment or node restart.
on_start.json
example:
{
"variable1" : "some_string",
"variable2" : 5,
}
on_start.air
example:
(seq
(call relay ("some_service_alias" "some_func1") [variable1] result)
(call relay ("some_service_alias" "some_func2") [variable2 result])
)