{ "info": { "author": "The Exonum Team", "author_email": "contact@exonum.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Security :: Cryptography" ], "description": "# Exonum Dynamic Service Launcher\n\n**Status:**\n[![Travis Build Status](https://travis-ci.org/exonum/exonum-launcher.svg?branch=master)](https://travis-ci.org/exonum/exonum-launcher)\n\nExonum Dynamic Service Launcher is a tool to manage the lifecycle of the Exonum services.\n\nThis tool is capable of deploying artifacts, managing running services, and\nchanging the configuration of the Exonum blockchain.\n\n## Usage\n\n```sh\nusage: exonum_launcher [-h] -i INPUT [-r RUNTIMES [RUNTIMES ...]]\n [--runtime-parsers RUNTIME_PARSERS [RUNTIME_PARSERS ...]]\n [--instance-parsers INSTANCE_PARSERS [INSTANCE_PARSERS ...]]\n\nExonum service launcher\n\noptional arguments:\n -h, --help show this help message and exit\n -i INPUT, --input INPUT\n A path to yaml input for service initialization\n -r RUNTIMES [RUNTIMES ...], --runtimes RUNTIMES [RUNTIMES ...]\n Additional runtimes, e.g. `--runtimes java=1 python=2\n wasm=3`\n --runtime-parsers RUNTIME_PARSERS [RUNTIME_PARSERS ...]\n Runtime spec parsers, e.g. `--runtime-parsers\n python=your_module.YourRuntimeSpecLoader` Values will\n be imported and treated like SpecLoader, so ensure\n that module with loader is in `sys.path`.\n --instance-parsers INSTANCE_PARSERS [INSTANCE_PARSERS ...]\n Instance spec parsers, e.g. `--runtime-parsers\n python=your_module.YourInstanceSpecLoader` Values will\n be imported and treated like InstanceSpecLoader, so\n ensure that module with loader is in `sys.path`.\n```\n\nSo, if you want to run `exonum-launcher` with Rust runtime only and without custom artifact spec loaders, you can just use:\n\n```sh\npython3 -m exonum_launcher -i sample.yml\n```\n\nIf you want to use `exonum-launcher` with Python runtime and Python runtime spec loader, the command will be:\n\n```sh\npython3 -m exonum_launcher --runtimes python=2 --runtime-parsers python=exonum_launcher.runtimes.python.PythonSpecLoader -i sample.yml\n```\n\nExample of expected `yaml` file:\n\n```yaml\nnetworks:\n - host: \"127.0.0.1\"\n ssl: false\n public-api-port: 8080\n private-api-port: 8081\n\ndeadline_height: 10000\n\nartifacts:\n cryptocurrency:\n runtime: rust\n name: \"exonum-cryptocurrency-advanced:0.1.0\"\n action: deploy\n \n # Example of artifact that should not be deployed\n example_artifact:\n runtime: rust\n name: \"exonum-cryptocurrency-advanced:0.1.0\"\n \ninstances:\n xnm-token:\n artifact: cryptocurrency\n action: start\n config: []\n nnm-token:\n artifact: \"cryptocurrency\"\n action: start\n config: []\n some-instance:\n # Since we will not deploy `example_artifact`, it is assumed that it is already deployed\n artifact: \"example_artifact\"\n action: start\n config:\n val_a: \"123\"\n val_b: 345\n```\n\n`action` field in the `artifacts` section can be one of the following:\n\n- `deploy` - to deploy an artifact.\n- `unload` - to unload deployed artifact.\n- `none` - to do nothing (default action).\n\n`action` field in the `instances` section can be one of the following:\n\n- `start` - to start a new instance (default action);\n- `config` - to change a configuration of existing service (only in `simple` supervisor mode!);\n- `stop` - to stop a running service.\n- `freeze` - to freeze a running service.\n- `resume` - to resume a frozen or stopped service.\n\n**Important:** if you have more than one validator in the network, ensure that connection data\n(`networks` section of the config) is specified for **every** validator.\n\nDeploy&init process requires requests to be sent to each validator, so don't expect that transaction broadcast\nmechanism will work here.\n\nIf supervisor works in the `simple` mode, it's also possible to change consensus config\nby providing a `consensus` field in the config, for example:\n\n```yaml\nconsensus:\n validator_keys:\n - [\"1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a\",\n \"2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b\"]\n first_round_timeout: 100\n status_timeout: 100\n peers_timeout: 100\n txs_block_limit: 100\n max_message_len: 100\n min_propose_timeout: 100\n max_propose_timeout: 100\n propose_timeout_threshold: 100\n```\n\n## Plugins\n\nYou can define custom runtimes and plugins in the config (so you won't have to provide them from command line):\n\n```yaml\nruntimes:\n python: 2\n\nplugins:\n runtime:\n python: \"exonum_launcher.runtimes.python.PythonSpecLoader\"\n artifact: {}\n```\n\nSee `samples` folder for more examples.\n\n## Install\n\n```sh\npip install exonum-launcher --no-binary=protobuf\n```\n\n## License\n\nApache 2.0 - see [LICENSE](LICENSE) for more information.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/exonum/exonum-launcher", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "exonum-launcher", "package_url": "https://pypi.org/project/exonum-launcher/", "platform": "", "project_url": "https://pypi.org/project/exonum-launcher/", "project_urls": { "Homepage": "https://github.com/exonum/exonum-launcher" }, "release_url": "https://pypi.org/project/exonum-launcher/0.2.0/", "requires_dist": null, "requires_python": ">=3.6", "summary": "Exonum Dynamic Services Launcher", "version": "0.2.0", "yanked": false, "yanked_reason": null }, "last_serial": 6935096, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "8121d03611322120bfcd82045ec7acf9", "sha256": "2c2c0a4ca9a35960854b712200aa0aa82a12d0bf757989abf3f12a42259d4b38" }, "downloads": -1, "filename": "exonum-launcher-0.1.0.tar.gz", "has_sig": false, "md5_digest": "8121d03611322120bfcd82045ec7acf9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10533, "upload_time": "2019-10-25T03:55:11", "upload_time_iso_8601": "2019-10-25T03:55:11.010648Z", "url": "https://files.pythonhosted.org/packages/54/62/41d1e7099cd6069bcf2fe1d2f1b1650cae8b6ec77e00348578dbc94339bb/exonum-launcher-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "96a3bcb198bbee4015f7023f7638e6a2", "sha256": "cdc900a8d34722f41cf87963a89a13e16f9dc7eda811b54c1f2b960187829e13" }, "downloads": -1, "filename": "exonum-launcher-0.1.1.tar.gz", "has_sig": false, "md5_digest": "96a3bcb198bbee4015f7023f7638e6a2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10921, "upload_time": "2019-11-22T09:12:54", "upload_time_iso_8601": "2019-11-22T09:12:54.107348Z", "url": "https://files.pythonhosted.org/packages/40/8b/09db81d5571b8a35d333c2a0507b6b214c38d68264fec1f0a46367abaeb3/exonum-launcher-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "dacc51b85cd47d6697ba615474c0bf20", "sha256": "c8acc1fdae3f73ec6ff849ab6f655332d7fc04ccd0eafdf415605199ffd98963" }, "downloads": -1, "filename": "exonum-launcher-0.1.2.tar.gz", "has_sig": false, "md5_digest": "dacc51b85cd47d6697ba615474c0bf20", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10918, "upload_time": "2019-11-27T12:51:23", "upload_time_iso_8601": "2019-11-27T12:51:23.999454Z", "url": "https://files.pythonhosted.org/packages/80/ea/967e00010a51c5bc2e593403b0c978a17729946939267b030d5967303a9c/exonum-launcher-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e8806f51c7e7fa187b2369e2d5f3bbba", "sha256": "ea624ef717ff448efadbee046ae2fe77af9d26a949fdfbf827c46b5ace8c094e" }, "downloads": -1, "filename": "exonum-launcher-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e8806f51c7e7fa187b2369e2d5f3bbba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10956, "upload_time": "2019-12-03T09:29:04", "upload_time_iso_8601": "2019-12-03T09:29:04.711370Z", "url": "https://files.pythonhosted.org/packages/a3/35/fb45591271b889c4541bb55d1efeab5ecdeade5b37fde88863178a5137b3/exonum-launcher-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d5055ca26bdcd01622e492de4f621cc2", "sha256": "df549f9a9b5ee9d3576d449ee6badf5aaa7eb97434d3b51a04b82a19767ed362" }, "downloads": -1, "filename": "exonum-launcher-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d5055ca26bdcd01622e492de4f621cc2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16333, "upload_time": "2020-04-02T11:41:09", "upload_time_iso_8601": "2020-04-02T11:41:09.158129Z", "url": "https://files.pythonhosted.org/packages/b7/5b/8d397388291086f9536df8db02058288beebf706588e5275515f4132b9e2/exonum-launcher-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d5055ca26bdcd01622e492de4f621cc2", "sha256": "df549f9a9b5ee9d3576d449ee6badf5aaa7eb97434d3b51a04b82a19767ed362" }, "downloads": -1, "filename": "exonum-launcher-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d5055ca26bdcd01622e492de4f621cc2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16333, "upload_time": "2020-04-02T11:41:09", "upload_time_iso_8601": "2020-04-02T11:41:09.158129Z", "url": "https://files.pythonhosted.org/packages/b7/5b/8d397388291086f9536df8db02058288beebf706588e5275515f4132b9e2/exonum-launcher-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }