Package: exonum-launcher
Exonum Dynamic Service LauncherStatus:Exonum Dynamic Service Launcher is a tool to manage the lifecycle of the Exonum services.This tool is capable of deploying artifacts, managing running services, and
changing the configuration of the Exonum blockchain.Usageusage:exonum_launcher[-h]-iINPUT[-rRUNTIMES[RUNTIMES...]][--runtime-parsersRUNTIME_PARSERS[RUNTIME_PARSERS...]][--instance-parsersINSTANCE_PARSERS[INSTANCE_PARSERS...]]Exonumservicelauncher

optionalarguments:-h,--helpshowthishelpmessageandexit-iINPUT,--inputINPUTApathtoyamlinputforserviceinitialization-rRUNTIMES[RUNTIMES...],--runtimesRUNTIMES[RUNTIMES...]Additionalruntimes,e.g.`--runtimesjava=1python=2wasm=3`--runtime-parsersRUNTIME_PARSERS[RUNTIME_PARSERS...]Runtimespecparsers,e.g.`--runtime-parserspython=your_module.YourRuntimeSpecLoader`ValueswillbeimportedandtreatedlikeSpecLoader,soensurethatmodulewithloaderisin`sys.path`.--instance-parsersINSTANCE_PARSERS[INSTANCE_PARSERS...]Instancespecparsers,e.g.`--runtime-parserspython=your_module.YourInstanceSpecLoader`ValueswillbeimportedandtreatedlikeInstanceSpecLoader,soensurethatmodulewithloaderisin`sys.path`.So, if you want to runexonum-launcherwith Rust runtime only and without custom artifact spec loaders, you can just use:python3-mexonum_launcher-isample.ymlIf you want to useexonum-launcherwith Python runtime and Python runtime spec loader, the command will be:python3-mexonum_launcher--runtimespython=2--runtime-parserspython=exonum_launcher.runtimes.python.PythonSpecLoader-isample.ymlExample of expectedyamlfile:networks:-host:"127.0.0.1"ssl:falsepublic-api-port:8080private-api-port:8081deadline_height:10000artifacts:cryptocurrency:runtime:rustname:"exonum-cryptocurrency-advanced:0.1.0"action:deploy# Example of artifact that should not be deployedexample_artifact:runtime:rustname:"exonum-cryptocurrency-advanced:0.1.0"instances:xnm-token:artifact:cryptocurrencyaction:startconfig:[]nnm-token:artifact:"cryptocurrency"action:startconfig:[]some-instance:# Since we will not deploy `example_artifact`, it is assumed that it is already deployedartifact:"example_artifact"action:startconfig:val_a:"123"val_b:345actionfield in theartifactssection can be one of the following:deploy- to deploy an artifact.unload- to unload deployed artifact.none- to do nothing (default action).actionfield in theinstancessection can be one of the following:start- to start a new instance (default action);config- to change a configuration of existing service (only insimplesupervisor mode!);stop- to stop a running service.freeze- to freeze a running service.resume- to resume a frozen or stopped service.Important:if you have more than one validator in the network, ensure that connection data
(networkssection of the config) is specified foreveryvalidator.Deploy&init process requires requests to be sent to each validator, so don't expect that transaction broadcast
mechanism will work here.If supervisor works in thesimplemode, it's also possible to change consensus config
by providing aconsensusfield in the config, for example:consensus:validator_keys:-["1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a","2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b"]first_round_timeout:100status_timeout:100peers_timeout:100txs_block_limit:100max_message_len:100min_propose_timeout:100max_propose_timeout:100propose_timeout_threshold:100PluginsYou can define custom runtimes and plugins in the config (so you won't have to provide them from command line):runtimes:python:2plugins:runtime:python:"exonum_launcher.runtimes.python.PythonSpecLoader"artifact:{}Seesamplesfolder for more examples.Installpipinstallexonum-launcher--no-binary=protobufLicenseApache 2.0 - seeLICENSEfor more information.