From 59cd299d5895ae593e3278230b1f78ea7f4c2025 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 6 Jul 2023 16:26:50 +0800 Subject: [PATCH 1/6] make golang relayer optional --- pystarport/cluster.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/pystarport/cluster.py b/pystarport/cluster.py index dd65f17..2896632 100644 --- a/pystarport/cluster.py +++ b/pystarport/cluster.py @@ -1083,20 +1083,23 @@ def init_cluster( ], check=True, ) - # restore the relayer account for rly - subprocess.run( - [ - "rly", - "keys", - "restore", - chain["chain_id"], - "relayer", - mnemonic, - "--home", - str(data_dir / "relayer"), - ], - check=True, - ) + try: + # restore the relayer account for rly + subprocess.run( + [ + "rly", + "keys", + "restore", + chain["chain_id"], + "relayer", + mnemonic, + "--home", + str(data_dir / "relayer"), + ], + check=True, + ) + except FileNotFoundError as e: + print(f"golang relayer is not supported:\n"f"{e}") def find_account(data_dir, chain_id, name): From bd26b2072c129b7cfd10e66e8574380089e515b7 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 6 Jul 2023 16:37:57 +0800 Subject: [PATCH 2/6] add change doc --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f09faf..38bd49a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#91](https://github.com/crypto-com/pystarport/pull/91) replace block with sync broadcast mode - [#93](https://github.com/crypto-com/pystarport/pull/93) add default gas prices for golang relayer - [#94](https://github.com/crypto-com/pystarport/pull/94) allow custom broadcast mode when create node +- [#95](https://github.com/crypto-com/pystarport/pull/95) make golang relayer optional *Feb 7, 2023* From 9d0f0c2460adf4e850b4cd60a681cf9829d3e97f Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 6 Jul 2023 16:40:26 +0800 Subject: [PATCH 3/6] fix lint --- pystarport/cluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pystarport/cluster.py b/pystarport/cluster.py index 2896632..b90fe3b 100644 --- a/pystarport/cluster.py +++ b/pystarport/cluster.py @@ -1099,7 +1099,7 @@ def init_cluster( check=True, ) except FileNotFoundError as e: - print(f"golang relayer is not supported:\n"f"{e}") + print(f"golang relayer is not supported:\n"f"{e}") def find_account(data_dir, chain_id, name): From f7ab62f4211422af5e011869b59c32f2f16dd401 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 7 Jul 2023 11:21:09 +0800 Subject: [PATCH 4/6] Apply suggestions from code review --- pystarport/cluster.py | 58 ++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/pystarport/cluster.py b/pystarport/cluster.py index b90fe3b..547e3f2 100644 --- a/pystarport/cluster.py +++ b/pystarport/cluster.py @@ -9,6 +9,7 @@ import sys import threading import time +from enum import IntEnum from pathlib import Path from typing import List @@ -987,6 +988,10 @@ def relayer_chain_config_rly(data_dir, chain, relayer_chains_config): } +class Relayer(IntEnum): + (HERMES, RLY) = range(2) + + def init_cluster( data_dir, config_path, @@ -995,6 +1000,7 @@ def init_cluster( image=IMAGE, cmd=None, gen_compose_file=False, + relayer=Relayer.HERMES, ): extension = Path(config_path).suffix if extension == ".jsonnet": @@ -1038,31 +1044,33 @@ def init_cluster( ) ) ) - # write relayer config folder for rly - relayer_config_rly = data_dir - for folder in ["relayer", "config"]: - relayer_config_rly = relayer_config_rly / folder - relayer_config_rly.mkdir() - relayer_config_rly = relayer_config_rly / "config.yaml" - relayer_config_rly.write_text( - yaml.dump( - { - "global": { - "api-listen-addr": ":5183", - "timeout": "10s", - "memo": "", - "light-cache-size": 20 - }, - "chains": { - c["chain_id"]: relayer_chain_config_rly(data_dir, c, cfg) - for c in chains - }, - } + is_rly = relayer == Relayer.RLY + if is_rly: + # write relayer config folder for rly + relayer_config_rly = data_dir + for folder in ["relayer", "config"]: + relayer_config_rly = relayer_config_rly / folder + relayer_config_rly.mkdir() + relayer_config_rly = relayer_config_rly / "config.yaml" + relayer_config_rly.write_text( + yaml.dump( + { + "global": { + "api-listen-addr": ":5183", + "timeout": "10s", + "memo": "", + "light-cache-size": 20 + }, + "chains": { + c["chain_id"]: relayer_chain_config_rly(data_dir, c, cfg) + for c in chains + }, + } + ) ) - ) for chain in chains: - relayer = chain.get("key_name", "relayer") - mnemonic = find_account(data_dir, chain["chain_id"], relayer)["mnemonic"] + key_name = chain.get("key_name", "relayer") + mnemonic = find_account(data_dir, chain["chain_id"], key_name)["mnemonic"] mnemonic_path = Path(data_dir) / "relayer.env" mnemonic_path.write_text(mnemonic) # restore the relayer account for hermes @@ -1083,7 +1091,7 @@ def init_cluster( ], check=True, ) - try: + if is_rly: # restore the relayer account for rly subprocess.run( [ @@ -1098,8 +1106,6 @@ def init_cluster( ], check=True, ) - except FileNotFoundError as e: - print(f"golang relayer is not supported:\n"f"{e}") def find_account(data_dir, chain_id, name): From 0fef6fef35359ae5fa3e18874da1bb66dd28e2da Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 7 Jul 2023 11:28:46 +0800 Subject: [PATCH 5/6] check hermes --- pystarport/cluster.py | 71 ++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/pystarport/cluster.py b/pystarport/cluster.py index 547e3f2..02ad518 100644 --- a/pystarport/cluster.py +++ b/pystarport/cluster.py @@ -1026,25 +1026,27 @@ def init_cluster( ) if len(chains) > 1: cfg = relayer_config.pop("chains", {}) - # write relayer config for hermes - relayer_config_hermes = (data_dir / "relayer.toml") - relayer_config_hermes.write_text( - tomlkit.dumps( - jsonmerge.merge( - { - "global": { - "log_level": "info", + is_hermes = relayer == Relayer.HERMES + is_rly = relayer == Relayer.RLY + if is_hermes: + # write relayer config for hermes + relayer_config_hermes = (data_dir / "relayer.toml") + relayer_config_hermes.write_text( + tomlkit.dumps( + jsonmerge.merge( + { + "global": { + "log_level": "info", + }, + "chains": [ + relayer_chain_config_hermes(data_dir, c, cfg) + for c in chains + ], }, - "chains": [ - relayer_chain_config_hermes(data_dir, c, cfg) - for c in chains - ], - }, - relayer_config, + relayer_config, + ) ) ) - ) - is_rly = relayer == Relayer.RLY if is_rly: # write relayer config folder for rly relayer_config_rly = data_dir @@ -1073,24 +1075,25 @@ def init_cluster( mnemonic = find_account(data_dir, chain["chain_id"], key_name)["mnemonic"] mnemonic_path = Path(data_dir) / "relayer.env" mnemonic_path.write_text(mnemonic) - # restore the relayer account for hermes - subprocess.run( - [ - "hermes", - "--config", - relayer_config_hermes, - "keys", - "add", - "--chain", - chain["chain_id"], - "--mnemonic-file", - str(mnemonic_path), - "--overwrite", - "--hd-path", - "m/44'/" + str(chain.get("coin-type", 394)) + "'/0'/0/0", - ], - check=True, - ) + if is_hermes: + # restore the relayer account for hermes + subprocess.run( + [ + "hermes", + "--config", + relayer_config_hermes, + "keys", + "add", + "--chain", + chain["chain_id"], + "--mnemonic-file", + str(mnemonic_path), + "--overwrite", + "--hd-path", + "m/44'/" + str(chain.get("coin-type", 394)) + "'/0'/0/0", + ], + check=True, + ) if is_rly: # restore the relayer account for rly subprocess.run( From aadbe2a6ee88de45a326ca09a727e874bae0291c Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 7 Jul 2023 12:18:51 +0800 Subject: [PATCH 6/6] Apply suggestions from code review --- pystarport/cluster.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/pystarport/cluster.py b/pystarport/cluster.py index 02ad518..2809166 100644 --- a/pystarport/cluster.py +++ b/pystarport/cluster.py @@ -1002,6 +1002,8 @@ def init_cluster( gen_compose_file=False, relayer=Relayer.HERMES, ): + is_hermes = relayer == Relayer.HERMES + is_rly = relayer == Relayer.RLY extension = Path(config_path).suffix if extension == ".jsonnet": config = expand_jsonnet(config_path, dotenv) @@ -1026,8 +1028,6 @@ def init_cluster( ) if len(chains) > 1: cfg = relayer_config.pop("chains", {}) - is_hermes = relayer == Relayer.HERMES - is_rly = relayer == Relayer.RLY if is_hermes: # write relayer config for hermes relayer_config_hermes = (data_dir / "relayer.toml") @@ -1047,13 +1047,11 @@ def init_cluster( ) ) ) - if is_rly: + elif is_rly: # write relayer config folder for rly - relayer_config_rly = data_dir - for folder in ["relayer", "config"]: - relayer_config_rly = relayer_config_rly / folder - relayer_config_rly.mkdir() - relayer_config_rly = relayer_config_rly / "config.yaml" + relayer_config_dir = (data_dir / "relayer/config") + relayer_config_dir.mkdir(parents=True, exist_ok=True) + relayer_config_rly = (relayer_config_dir / "config.yaml") relayer_config_rly.write_text( yaml.dump( { @@ -1094,7 +1092,7 @@ def init_cluster( ], check=True, ) - if is_rly: + elif is_rly: # restore the relayer account for rly subprocess.run( [