Add make_blueprint, make_module_config + use optional arguments (#5)

This commit is contained in:
folex 2021-07-02 18:53:53 +03:00 committed by GitHub
parent a42965f53c
commit 4b6cbbc31e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,6 +4,15 @@ alias Field : []string
alias Argument : []string
alias Bytes : []u8
alias PeerId : string
alias Pairs : [][]string
alias Base58String : string
-- There are two types of dependencies: named and by-hash.
-- name:foobar specifies dependency by module name, points to a module with import name 'foobar'
-- hash:04dc884... specifies dependency by module hash
-- By-hash dependencies are preffered since they are deteremenistic
-- while by-name dependency can yield different modules at different points in time
alias Dependency : string
data Service:
id: string
@ -35,9 +44,9 @@ data Module:
hash: string
config: ModuleConfig
data AddBlueprint:
data Blueprint:
name: string
dependencies: []string
dependencies: []Dependency
data Blueprint:
id: string
@ -59,19 +68,19 @@ service Op("op"):
-- does nothing
noop()
-- takes any number of arguments and wraps them into a single array
array(a: string, b: string, c: string) -> []string
array(a: string, b: ?string, c: ?string, d: ?string) -> []string
-- takes any number of arrays and flattens them by concatenating
concat(a: []string, b: []string, c: []string) -> []string
concat(a: []string, b: ?[]string, c: ?[]string, d: ?[]string) -> []string
-- takes a single argument and returns it back
identity(s: ?string) -> ?string
string_to_b58(s: string) -> string
string_from_b58(b: string) -> string
bytes_to_b58(bs: []u8) -> string
bytes_from_b58(b: string) -> []u8
string_to_b58(s: string) -> Base58String
string_from_b58(b: Base58String) -> string
bytes_to_b58(bs: []u8) -> Base58String
bytes_from_b58(b: Base58String) -> []u8
-- Applies SHA256 to the given string
-- Argument: s - string to apply sha256 to
-- Argument: s - string to apply sha256 to (hash is applied to utf8 bytes of s)
-- Returns: returns sha256 multihash encoded as base58
sha256_string(s: string) -> string
sha256_string(s: string) -> Base58String
service Peer("peer"):
-- Checks if there is a direct connection to the peer identified by a given PeerId
@ -81,10 +90,10 @@ service Peer("peer"):
-- Initiates a connection to the specified peer
-- Arguments:
-- PeerId id of the target peer
-- [Multiaddr] an array of target peer's addresses
-- id - id of the target peer
-- multiaddrs an array of target peer's addresses
-- Returns: bool - true if connection was successful
connect(id: PeerId, multiaddrs: []string) -> bool
connect(id: PeerId, multiaddrs: ?[]string) -> bool
-- Resolves the contact of a peer via Kademlia
-- Argument: PeerId id of the target peer
-- Returns: Contact - true if connection was successful
@ -102,26 +111,30 @@ service Peer("peer"):
service Kademlia("kad"):
-- Instructs node to return the locally-known nodes
-- in the Kademlia neighborhood for a given key
neighborhood(key: PeerId, already_hashed: bool) -> []PeerId
-- Arguments:
-- key base58 string
-- already_hashed default false; if set to true, key is considered to be a SHA256 multihash
-- count default 20; limits number of returned nodes
neighborhood(key: Base58String, already_hashed: ?bool, count: ?u32) -> []PeerId
-- Merges given lists and sorts them by distance to target
-- Arguments:
-- target base58 string; result is sorted by XOR distance to target
-- left list of base58 strings
-- right list of base58 strings
-- count how many items to return
-- target base58 string; result is sorted by XOR distance to target
-- left list of base58 strings
-- right list of base58 strings
-- count how many items to return, unlimited by default
-- Returns: list of base58 strings sorted by distance to target; list will contain at most count elements
merge(target: string, left: []string, right: []string, count: u32) -> []string
merge(target: Base58String, left: []string, right: []string, count: ?u32) -> []string
service Srv("srv"):
-- Used to create a service on a certain node
-- Arguments:
-- blueprint_id ID of the blueprint that has been added to the node specified in the service call by the dist add_blueprint service.
-- blueprint_id ID of the blueprint that has been added to the node specified in the service call by the dist add_blueprint service.
-- Returns: service_id the service ID of the created service.
create(blueprint_id: string) -> string
-- Used to remove a service from a certain node
-- Arguments:
-- service_id ID of the service to remove
-- service_id ID of the service to remove
remove(service_id: string)
-- Returns a list of services running on a peer
@ -129,9 +142,9 @@ service Srv("srv"):
-- Adds an alias on service, so, service could be called
-- not only by service_id but by alias as well.
-- Argument:
-- alias - settable service name
-- service_id ID of the service whose interface you want to name.
-- Arguments:
-- alias - settable service name
-- service_id ID of the service whose interface you want to name.
add_alias(alias: string, service_id: string)
-- Resolves given alias to a service id
@ -147,19 +160,38 @@ service Srv("srv"):
service Dist("dist"):
-- Used to add modules to the node specified in the service call
-- Arguments:
-- bytes a base64 string containing the .wasm module to add.
-- config module info
-- Returns: blake3 hash of the module
-- bytes a base64 string containing the .wasm module to add.
-- config module info
-- Returns: blake3 hash of the module
add_module(wasm_b56_content: Bytes, conf: ModuleConfig) -> string
-- Constructs a ModuleConfig structure
-- Arguments:
-- module_name - import name of the module
-- mem_pages_count - Maximum memory size accessible by a module in Wasm pages (64 Kb)
-- logger_enabled - Defines whether Marine should provide a special host log_utf8_string function for this module
-- preopened_files - Files available for this module. Module can access only files from this list
-- envs - environment variables available for this module
-- mapped_dirs - Directory mapping, e.g. [["/sites", "./web/data"]] so all
-- reads & writes to /sites will actually to go ./web/data
-- mounted_binaries - Mapping of host binaries available to call from module,
-- e.g. [["curl", "/usr/bin/curl"]] will allow module to
-- call /usr/bin/curl binary as function 'curl'
-- logging_mask - Binary mask to enable & disable logging targets. Targets are
-- configured in WasmLoggerBuilder::with_target_map
-- mem_pages_count - Maximum memory size accessible by a module in Wasm pages (64 Kb)
make_module_config(name: string, mem_pages_count: ?u32, logger_enabled: ?bool, preopened_files: ?[]string, envs: ?Pairs, mapped_dirs: ?Pairs, mounted_binaries: ?Pairs, logging_mask: ?s32) -> ModuleConfig
-- Get a list of modules available on the node
list_modules() -> []Module
-- Get the interface of a module
get_interface(module_id: string) -> Interface
-- Used to add a blueprint to the node specified in the service call
add_blueprint(blueprint: AddBlueprint) -> string
-- Add a blueprint to the node
add_blueprint(blueprint: Blueprint) -> string
-- Creates Blueprint structure from from blueprint name and dependencies (modules)
make_blueprint(name: string, dependencies: []Dependency) -> Blueprint
-- Used to get the blueprints available on the node specified in the service call.
-- A blueprint is an object of the following structure
@ -167,7 +199,14 @@ service Dist("dist"):
service Script("script"):
-- Adds the given script to a node
add(air_content: string, run_every: string) -> string
-- Arguments:
-- air_script - raw AIR script without any undefined variables
-- interval - if not set, script will be ran only once
-- if set, script will be ran once in the interval
-- (NOTE: actual interval may vary by up to 3 seconds)
--
-- TODO: change interval to ?u64 when node API is updated
add(air_script: string, interval: ?string) -> string
-- Removes recurring script from a node. Only a creator of the script can delete it
remove(script_id: string) -> bool