-
Notifications
You must be signed in to change notification settings - Fork 274
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Minimal major configuration overhaul #4161
Comments
Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com>
re: What would also be nice to see diagnostics-wise is emission of all validation errors in one go, so that the user would not have to re-try launching iroha after fixing errors one-by-one and could instead see all (or, at least, most) of the validation problems right away. This can be achieved by using a error accumulator pattern, like was done in iroha macros (the |
Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com>
Thanks, will consider
For sure! It is one of the main points of the RFC. |
* [refactor]: refactor cli(s) - `iroha`: use `clap` `v4` - `iroha`: update CLI (`--config`, `--terminal-colors`) - `iroha`: handle user-provided config file strictly - `iroha`: parse ENV config after file config - `iroha_config`: add `genesis.file`, remove `account_*` prefix - `iroha_config`: move some genesis config validation logic from `iroha` - `iroha_client_cli`: upgrade `clap` to `v4` - `iroha_genesis`: remove side effects (bail, logs) - `iroha_genesis`: clarify validation logic (#3075) - `iroha_genesis`: remove `pub` to guard invariant of `GenesisNetwork` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chore Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: fix & test config - `iroha_config`: use `PathBuf` when appropriate - `iroha_config`: fix `Path` behaviour - `iroha_config`: finally, make `disable_panic_terminal_colors` truly optional (#3506) - `iroha`: resolve all relative paths in config file - `iroha`: improve config error messages - `iroha`: add config integration tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: test & refactor - `iroha_client_cli`: adopt `--config` from `iroha` - `iroha_client_cli`: refactor `--metadata` arg - `iroha`: extend tests - update test code overall Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: clippy, tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: use `serde_as_str` for paths Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: re-generate peer config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: update `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: remove deprecated option from test config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update README Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: remove obsolete comment Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: update `iroha_swarm` Now it relies on that `genesis.file` is set in the config file Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: `kagami config peer` + `--genesis-file-in-config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chores Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Ekaterina Mekhnetsova <mekkatya@gmail.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * [feat]: use `PATH` as value name Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: align `StatusFailure` message Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: adopt suggestion in `iroha_client_cli` #4153 (comment) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [build]: exclude `genesis.file` from default config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: refine genesis config parse error Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix & refactor `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix CANNOT_BE_EMPTY message It is updated with a new version of clap Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: return `disable_panic_terminal_colors: null` to test config It is needed so that only `iroha_test_config.json` without defaults layer is valid (will fix on config refactoring) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: handle configuration properly in `iroha_swarm` - set `GENESIS_FILE` in env, since `config.json` doesn't have it - strictly specify `config.json` and `genesis.json` files Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * Update client_cli/src/main.rs Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * [refactor]: eliminate extra `iroha_config` dependency Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove dead code Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: use `serde_json::json!` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove `disable_panic_terminal_colors` parameter Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update genesis & its testing - remove `cfg(test)` behaviour from `GenesisNetwork::new()` - refactor `impl TestGenesis for Genesis` - remove extra `bool` + `Option` invariant - allow creating genesis with additional ISIs - remove `test-utils` feature & `GenesisNetwork::transactions_mut()` - update related tests - update error message on signing failure Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove extension check from `Path::default()` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update genesis topology messages Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Popen`'s `env` instead of global `os.environ` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: typo Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Partial`/`Full` terminology Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: inherit env from OS Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: link issue #4161 Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: format Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: apply lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: panic on default path extension Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: update err message Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update docs of `read_config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> --------- Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> Co-authored-by: Ekaterina Mekhnetsova <mekkatya@gmail.com> Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com>
…ctor CLIs (hyperledger#4153) * [refactor]: refactor cli(s) - `iroha`: use `clap` `v4` - `iroha`: update CLI (`--config`, `--terminal-colors`) - `iroha`: handle user-provided config file strictly - `iroha`: parse ENV config after file config - `iroha_config`: add `genesis.file`, remove `account_*` prefix - `iroha_config`: move some genesis config validation logic from `iroha` - `iroha_client_cli`: upgrade `clap` to `v4` - `iroha_genesis`: remove side effects (bail, logs) - `iroha_genesis`: clarify validation logic (hyperledger#3075) - `iroha_genesis`: remove `pub` to guard invariant of `GenesisNetwork` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chore Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: fix & test config - `iroha_config`: use `PathBuf` when appropriate - `iroha_config`: fix `Path` behaviour - `iroha_config`: finally, make `disable_panic_terminal_colors` truly optional (hyperledger#3506) - `iroha`: resolve all relative paths in config file - `iroha`: improve config error messages - `iroha`: add config integration tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: test & refactor - `iroha_client_cli`: adopt `--config` from `iroha` - `iroha_client_cli`: refactor `--metadata` arg - `iroha`: extend tests - update test code overall Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: clippy, tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: use `serde_as_str` for paths Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: re-generate peer config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: update `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: remove deprecated option from test config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update README Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: remove obsolete comment Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: update `iroha_swarm` Now it relies on that `genesis.file` is set in the config file Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: `kagami config peer` + `--genesis-file-in-config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chores Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Ekaterina Mekhnetsova <mekkatya@gmail.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * [feat]: use `PATH` as value name Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: align `StatusFailure` message Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: adopt suggestion in `iroha_client_cli` hyperledger#4153 (comment) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [build]: exclude `genesis.file` from default config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: refine genesis config parse error Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix & refactor `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix CANNOT_BE_EMPTY message It is updated with a new version of clap Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: return `disable_panic_terminal_colors: null` to test config It is needed so that only `iroha_test_config.json` without defaults layer is valid (will fix on config refactoring) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: handle configuration properly in `iroha_swarm` - set `GENESIS_FILE` in env, since `config.json` doesn't have it - strictly specify `config.json` and `genesis.json` files Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * Update client_cli/src/main.rs Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * [refactor]: eliminate extra `iroha_config` dependency Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove dead code Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: use `serde_json::json!` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove `disable_panic_terminal_colors` parameter Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update genesis & its testing - remove `cfg(test)` behaviour from `GenesisNetwork::new()` - refactor `impl TestGenesis for Genesis` - remove extra `bool` + `Option` invariant - allow creating genesis with additional ISIs - remove `test-utils` feature & `GenesisNetwork::transactions_mut()` - update related tests - update error message on signing failure Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove extension check from `Path::default()` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update genesis topology messages Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Popen`'s `env` instead of global `os.environ` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: typo Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Partial`/`Full` terminology Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: inherit env from OS Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: link issue hyperledger#4161 Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: format Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: apply lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: panic on default path extension Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: update err message Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update docs of `read_config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> --------- Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> Co-authored-by: Ekaterina Mekhnetsova <mekkatya@gmail.com> Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com>
…ctor CLIs (hyperledger#4153) * [refactor]: refactor cli(s) - `iroha`: use `clap` `v4` - `iroha`: update CLI (`--config`, `--terminal-colors`) - `iroha`: handle user-provided config file strictly - `iroha`: parse ENV config after file config - `iroha_config`: add `genesis.file`, remove `account_*` prefix - `iroha_config`: move some genesis config validation logic from `iroha` - `iroha_client_cli`: upgrade `clap` to `v4` - `iroha_genesis`: remove side effects (bail, logs) - `iroha_genesis`: clarify validation logic (hyperledger#3075) - `iroha_genesis`: remove `pub` to guard invariant of `GenesisNetwork` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chore Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: fix & test config - `iroha_config`: use `PathBuf` when appropriate - `iroha_config`: fix `Path` behaviour - `iroha_config`: finally, make `disable_panic_terminal_colors` truly optional (hyperledger#3506) - `iroha`: resolve all relative paths in config file - `iroha`: improve config error messages - `iroha`: add config integration tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: test & refactor - `iroha_client_cli`: adopt `--config` from `iroha` - `iroha_client_cli`: refactor `--metadata` arg - `iroha`: extend tests - update test code overall Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: clippy, tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: use `serde_as_str` for paths Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: re-generate peer config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: update `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: remove deprecated option from test config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update README Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: remove obsolete comment Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: update `iroha_swarm` Now it relies on that `genesis.file` is set in the config file Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: `kagami config peer` + `--genesis-file-in-config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chores Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Ekaterina Mekhnetsova <mekkatya@gmail.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * [feat]: use `PATH` as value name Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: align `StatusFailure` message Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: adopt suggestion in `iroha_client_cli` hyperledger#4153 (comment) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [build]: exclude `genesis.file` from default config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: refine genesis config parse error Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix & refactor `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix CANNOT_BE_EMPTY message It is updated with a new version of clap Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: return `disable_panic_terminal_colors: null` to test config It is needed so that only `iroha_test_config.json` without defaults layer is valid (will fix on config refactoring) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: handle configuration properly in `iroha_swarm` - set `GENESIS_FILE` in env, since `config.json` doesn't have it - strictly specify `config.json` and `genesis.json` files Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * Update client_cli/src/main.rs Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * [refactor]: eliminate extra `iroha_config` dependency Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove dead code Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: use `serde_json::json!` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove `disable_panic_terminal_colors` parameter Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update genesis & its testing - remove `cfg(test)` behaviour from `GenesisNetwork::new()` - refactor `impl TestGenesis for Genesis` - remove extra `bool` + `Option` invariant - allow creating genesis with additional ISIs - remove `test-utils` feature & `GenesisNetwork::transactions_mut()` - update related tests - update error message on signing failure Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove extension check from `Path::default()` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update genesis topology messages Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Popen`'s `env` instead of global `os.environ` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: typo Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Partial`/`Full` terminology Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: inherit env from OS Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: link issue hyperledger#4161 Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: format Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: apply lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: panic on default path extension Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: update err message Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update docs of `read_config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> --------- Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> Co-authored-by: Ekaterina Mekhnetsova <mekkatya@gmail.com> Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: Asem-Abdelhady <asemshawkey@gmail.com>
…ctor CLIs (hyperledger#4153) * [refactor]: refactor cli(s) - `iroha`: use `clap` `v4` - `iroha`: update CLI (`--config`, `--terminal-colors`) - `iroha`: handle user-provided config file strictly - `iroha`: parse ENV config after file config - `iroha_config`: add `genesis.file`, remove `account_*` prefix - `iroha_config`: move some genesis config validation logic from `iroha` - `iroha_client_cli`: upgrade `clap` to `v4` - `iroha_genesis`: remove side effects (bail, logs) - `iroha_genesis`: clarify validation logic (hyperledger#3075) - `iroha_genesis`: remove `pub` to guard invariant of `GenesisNetwork` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chore Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: fix & test config - `iroha_config`: use `PathBuf` when appropriate - `iroha_config`: fix `Path` behaviour - `iroha_config`: finally, make `disable_panic_terminal_colors` truly optional (hyperledger#3506) - `iroha`: resolve all relative paths in config file - `iroha`: improve config error messages - `iroha`: add config integration tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: test & refactor - `iroha_client_cli`: adopt `--config` from `iroha` - `iroha_client_cli`: refactor `--metadata` arg - `iroha`: extend tests - update test code overall Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: clippy, tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: use `serde_as_str` for paths Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: re-generate peer config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: update `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: remove deprecated option from test config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update README Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: remove obsolete comment Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: update `iroha_swarm` Now it relies on that `genesis.file` is set in the config file Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: `kagami config peer` + `--genesis-file-in-config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chores Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Ekaterina Mekhnetsova <mekkatya@gmail.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * [feat]: use `PATH` as value name Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: align `StatusFailure` message Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: adopt suggestion in `iroha_client_cli` hyperledger#4153 (comment) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [build]: exclude `genesis.file` from default config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: refine genesis config parse error Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix & refactor `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix CANNOT_BE_EMPTY message It is updated with a new version of clap Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: return `disable_panic_terminal_colors: null` to test config It is needed so that only `iroha_test_config.json` without defaults layer is valid (will fix on config refactoring) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: handle configuration properly in `iroha_swarm` - set `GENESIS_FILE` in env, since `config.json` doesn't have it - strictly specify `config.json` and `genesis.json` files Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * Update client_cli/src/main.rs Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> * [refactor]: eliminate extra `iroha_config` dependency Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove dead code Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: use `serde_json::json!` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove `disable_panic_terminal_colors` parameter Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update genesis & its testing - remove `cfg(test)` behaviour from `GenesisNetwork::new()` - refactor `impl TestGenesis for Genesis` - remove extra `bool` + `Option` invariant - allow creating genesis with additional ISIs - remove `test-utils` feature & `GenesisNetwork::transactions_mut()` - update related tests - update error message on signing failure Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove extension check from `Path::default()` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update genesis topology messages Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Popen`'s `env` instead of global `os.environ` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: typo Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Partial`/`Full` terminology Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: inherit env from OS Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: link issue hyperledger#4161 Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: format Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: apply lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: panic on default path extension Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: update err message Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update docs of `read_config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> --------- Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> Signed-off-by: 0x009922 <43530070+0x009922@users.noreply.github.com> Co-authored-by: Ekaterina Mekhnetsova <mekkatya@gmail.com> Co-authored-by: ⭐️NINIKA⭐️ <DCNick3@users.noreply.github.com>
* [refactor]: wip Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update structure - exclude genesis block loading from config - construct `KeyPair` on `iroha` completion - use full field names in `complete()`s Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: apply lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: include more ENV vars, refactor Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: impl merging - `UserField` wrap instead of `Option` - move trusted peers uniqueness check Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update Kagami - Remove `config` subcommand - Update default `genesis` building Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: restructure code - move generic tools to `iroha_config_base` - remove `iroha_client_config` crate - define client config in `iroha_client::config` - add client config sample TOML Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update `iroha_logger` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update `iroha_telemetry` - update usage of `iroha_config` - use `Duration` in `RetryPeriod` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: fix util macro Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: re-struct config, update `iroha_core` - split "user-layer" and "actual" config modules - update logger, telemetry, and kagami (genesis) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update more crates - `iroha_client` - `iroha_torii` - move Torii `uri` to `iroha_torii_const` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: compile `iroha`! Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: compile `iroha_client`! Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: compile `iroha_client_cli`! Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: compile everything *_* Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: chores Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: pass tests - update signature of `PeerId::new` (avoid extra clone) - fix `UserField::set` - fix deps of `iroha_config_base` - resolve runtime todos in `iroha_config` - update `iroha_swarm` generation output - some other refactoring Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: implement `extends` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: update default snapshot storage Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: update after rebase Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update just everything - `test_env.py`: use toml configs - remove other channel configs - put example configs into `config_samples` dir - put docker setup into `config_samples/swarm` dir - pytests: split settings for CLI and config paths - make test env runnable Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: refactored config boilerplate into dedicated modules Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: apply some lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update config naming in `[queue]` also run tests with all features enabled Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [feat]: implement `Config::load` shorthand Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: add comment Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [ci]: fix typo Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [ci]: install `tomli_w` via pacman Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: fix whitespace Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [revert]: update the snapshot store path Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: fix pytests - do not mutate client config from tests, override via env instead - add `TORII_URL` env var to client config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: apply suggestions from code review Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: curl up `SumeragiStartArgs` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: refine telemetry - simplify `regular_telemetry` to just `telemetry` - clearer config passing Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Infallible` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: simplify client config - `nonce` instead of `add_nonce` - move `[api]` to root Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update `--config` arg - remove default value - remove `IROHA_CONFIG` env Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update `read_config_and_genesis` docs Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: chore Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: just `idle_time`, without `query_` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [revert]: use `ident_length_limits` in _actual_ config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `Config`, not vague `Root` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: remove comment Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `capacity` term in Queue Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: `set_creation_time_ms`, use `*` instead of `mul` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: remove dead code Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update `--config` args - use `PathBuf` again - remove default value at Client CLI Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: cleaning Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `strum` in place of `parse_display` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: no unsafe code any more Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: docs & refinements - document code in: - `iroha_config_base` - `iroha_config` - `iroha_client::config` - refactor `iroha_config_base` APIs - move `ExtendsPaths` into `iroha_config_base` - remove `[iroha]` user config section - move `chain_id` and key pair to the root - move `p2p_address` to `network.address` - rename `user_layer` modules to `user` - add `_bytes` suffix for relevant fields, put a TODO to add a newtype for it Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: fill `peer.example.toml` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: re-export `ConfigurationDTO` from client Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix them Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: apply lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix pytests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [misc]: re-arrange sample configurations - use `configs` dir again - name example configs as _templates_ Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update README Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove `parse-display` from deps Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: remove extra `iroha_config_base` exposure from the client Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: import `Deserialize` in the macro Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `PrivateKey::into_raw` instead Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [ci]: use `--break-system-packages` `pip` flag Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: regenerate swarms Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [ci]: fix pytests workflow Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: remove `PrivateKey::payload()` access Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: fix "unable to validate" doc Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: accept `Duration` for `set_creation_time` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: `PrivateKey::to_raw` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: do not extend trusted peers in config Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: hide user view from `iroha_client::config` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: rename `*configuration` to `config` everywhere﹡ ﹡except crypto Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: update default wasm fuel limit Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: change docs and methods of `WebLogin` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: trusted peers and config tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: rename `telemetry.dev.out_file` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [docs]: update `GenesisNetwork::new` errors Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `serde_with` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [misc]: move `nonzero_ext` to workspace level Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: make `--config` optional It is still possible to set full config via env (e.g. `iroha_swarm` case) Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: remove "regular" from telemetry re-export Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: rename imports in `wasm.rs` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: use `serde_with` in swarm Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: rename parameters, cover full config in tests, fix bugs Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: cover absolute paths Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: update client configs, cover full in tests Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [refactor]: lints Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [fix]: also rename ENVs Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [build]: add notes to Dockerfile Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [chore]: update style in `iroha_test_config.toml` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: fix old params in `test_env.py` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> * [test]: add a note to `panic_on_invalid_genesis.sh` Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com> --------- Signed-off-by: Dmitry Balashov <43530070+0x009922@users.noreply.github.com>
Closed by #4239 |
Description
Part of the RFC: #2585
After making semi-minor changes to the config and CLI, I think it is possible to make a major step in Configuration Overhaul. In this issue I describe how I see this next major step.
At the very least it should match with the configuration reference (hyperledger/iroha-2-docs#397), which I will enhance at the same time.
Planned changes
extends
mechanism for easy configuration compositioniroha_config
, clearly distinguishing user-provided config from the parsed onemiette
for comprehensive error reportsGoals in mind
Since there will be a lot of boilerplate, it makes sense to continue development of project soukousei which will provide a generic way to work with configuration. However, I think it would be too costly to bother about it right now. Instead I want to re-write
iroha_config
fully manually. Although there will be a lot of boilerplate, the process will be streamlined and focused on the final result from the start. Moreover, after manual implementation it will be clearer how to designsoukousei
.Therefore:
iroha_config
fully manually, despite having a lot of boilerplateThe text was updated successfully, but these errors were encountered: