gitbook-docs/tutorials_tutorials/deploy-builtins.md
2021-06-17 19:32:48 +03:00

1.8 KiB

Add your own builtin service

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])
)