From df94f522f99fc62329c90f63f6b71817ad957af3 Mon Sep 17 00:00:00 2001 From: Alessio Treglia Date: Tue, 5 Feb 2019 20:57:36 -0800 Subject: [PATCH] Merge PR #3498: various improvements to gaiad gentx/init --- PENDING.md | 2 ++ cmd/gaia/cli_test/test_helpers.go | 2 +- cmd/gaia/init/gentx.go | 17 +++++++++++++---- cmd/gaia/init/init.go | 11 ++++------- cmd/gaia/init/init_test.go | 13 +++---------- docs/gaia/deploy-testnet.md | 2 +- docs/gaia/join-testnet.md | 4 ++-- 7 files changed, 26 insertions(+), 25 deletions(-) diff --git a/PENDING.md b/PENDING.md index 6925c8bcf..41695c068 100644 --- a/PENDING.md +++ b/PENDING.md @@ -15,6 +15,7 @@ BREAKING CHANGES - `--insecure` flag is removed. - `--tls` is now used to enable secure layer. - [\#3451](https://github.com/cosmos/cosmos-sdk/pull/3451) `gaiacli` now returns transactions in plain text including tags. + - [\#3497](https://github.com/cosmos/cosmos-sdk/issues/3497) `gaiad init` now takes moniker as required arguments, not as parameter. * [\#3501](https://github.com/cosmos/cosmos-sdk/issues/3501) Change validator address Bech32 encoding to consensus address in `tendermint-validator-set`. @@ -63,6 +64,7 @@ IMPROVEMENTS * Gaia CLI (`gaiacli`) * [\#3476](https://github.com/cosmos/cosmos-sdk/issues/3476) New `withdraw-all-rewards` command to withdraw all delegations rewards for delegators. + - [\#3497](https://github.com/cosmos/cosmos-sdk/issues/3497) `gaiad gentx` supports `--ip` and `--node-id` flags to override defaults. * Gaia * [\#3418](https://github.com/cosmos/cosmos-sdk/issues/3418) Add vesting account diff --git a/cmd/gaia/cli_test/test_helpers.go b/cmd/gaia/cli_test/test_helpers.go index 5a206a997..b54fc523a 100644 --- a/cmd/gaia/cli_test/test_helpers.go +++ b/cmd/gaia/cli_test/test_helpers.go @@ -153,7 +153,7 @@ func (f *Fixtures) UnsafeResetAll(flags ...string) { // GDInit is gaiad init // NOTE: GDInit sets the ChainID for the Fixtures instance func (f *Fixtures) GDInit(moniker string, flags ...string) { - cmd := fmt.Sprintf("gaiad init -o --moniker=%s --home=%s", moniker, f.GDHome) + cmd := fmt.Sprintf("gaiad init -o --home=%s %s", f.GDHome, moniker) _, stderr := tests.ExecuteT(f.T, addFlags(cmd, flags), app.DefaultKeyPass) var chainID string diff --git a/cmd/gaia/init/gentx.go b/cmd/gaia/init/gentx.go index ec3ae3573..6ce761965 100644 --- a/cmd/gaia/init/gentx.go +++ b/cmd/gaia/init/gentx.go @@ -62,10 +62,15 @@ following delegation and commission default parameters: return err } - ip, err := server.ExternalIP() - if err != nil { - fmt.Fprintf(os.Stderr, "couldn't retrieve an external IP, "+ - "consequently the tx's memo field will be unset: %s", err) + // Read --nodeID, if empty take it from priv_validator.json + if nodeIDString := viper.GetString(cli.FlagNodeID); nodeIDString != "" { + nodeID = nodeIDString + } + + ip := viper.GetString(cli.FlagIP) + if ip == "" { + fmt.Fprintf(os.Stderr, "couldn't retrieve an external IP; "+ + "the tx's memo field will be unset") } genDoc, err := LoadGenesisDoc(cdc, config.GenesisFile()) @@ -156,11 +161,15 @@ following delegation and commission default parameters: }, } + ip, _ := server.ExternalIP() + cmd.Flags().String(tmcli.HomeFlag, app.DefaultNodeHome, "node's home directory") cmd.Flags().String(flagClientHome, app.DefaultCLIHome, "client's home directory") cmd.Flags().String(client.FlagName, "", "name of private key with which to sign the gentx") cmd.Flags().String(client.FlagOutputDocument, "", "write the genesis transaction JSON document to the given file instead of the default location") + cmd.Flags().String(cli.FlagIP, ip, "The node's public IP") + cmd.Flags().String(cli.FlagNodeID, "", "The node's NodeID") cmd.Flags().AddFlagSet(cli.FsCommissionCreate) cmd.Flags().AddFlagSet(cli.FsAmount) cmd.Flags().AddFlagSet(cli.FsPk) diff --git a/cmd/gaia/init/init.go b/cmd/gaia/init/init.go index 922cfbafa..a2af2a1c2 100644 --- a/cmd/gaia/init/init.go +++ b/cmd/gaia/init/init.go @@ -21,7 +21,6 @@ import ( const ( flagOverwrite = "overwrite" flagClientHome = "home-client" - flagMoniker = "moniker" ) type printInfo struct { @@ -46,11 +45,11 @@ func displayInfo(cdc *codec.Codec, info printInfo) error { // nolint func InitCmd(ctx *server.Context, cdc *codec.Codec) *cobra.Command { cmd := &cobra.Command{ - Use: "init", + Use: "init [moniker]", Short: "Initialize private validator, p2p, genesis, and application configuration files", Long: `Initialize validators's and node's configuration files.`, - Args: cobra.NoArgs, - RunE: func(_ *cobra.Command, _ []string) error { + Args: cobra.ExactArgs(1), + RunE: func(_ *cobra.Command, args []string) error { config := ctx.Config config.SetRoot(viper.GetString(cli.HomeFlag)) @@ -64,7 +63,7 @@ func InitCmd(ctx *server.Context, cdc *codec.Codec) *cobra.Command { return err } - config.Moniker = viper.GetString(flagMoniker) + config.Moniker = args[0] var appState json.RawMessage genFile := config.GenesisFile() @@ -89,8 +88,6 @@ func InitCmd(ctx *server.Context, cdc *codec.Codec) *cobra.Command { cmd.Flags().String(cli.HomeFlag, app.DefaultNodeHome, "node's home directory") cmd.Flags().BoolP(flagOverwrite, "o", false, "overwrite the genesis.json file") cmd.Flags().String(client.FlagChainID, "", "genesis file chain-id, if left blank will be randomly created") - cmd.Flags().String(flagMoniker, "", "set the validator's moniker") - cmd.MarkFlagRequired(flagMoniker) return cmd } diff --git a/cmd/gaia/init/init_test.go b/cmd/gaia/init/init_test.go index faf324e6c..e10347334 100644 --- a/cmd/gaia/init/init_test.go +++ b/cmd/gaia/init/init_test.go @@ -36,10 +36,7 @@ func TestInitCmd(t *testing.T) { cdc := app.MakeCodec() cmd := InitCmd(ctx, cdc) - viper.Set(flagMoniker, "gaianode-test") - - err = cmd.RunE(nil, nil) - require.NoError(t, err) + require.NoError(t, cmd.RunE(nil, []string{"gaianode-test"})) } func setupClientHome(t *testing.T) func() { @@ -64,11 +61,9 @@ func TestEmptyState(t *testing.T) { ctx := server.NewContext(cfg, logger) cdc := app.MakeCodec() - viper.Set(flagMoniker, "gaianode-test") cmd := InitCmd(ctx, cdc) - err = cmd.RunE(nil, nil) - require.NoError(t, err) + require.NoError(t, cmd.RunE(nil, []string{"gaianode-test"})) old := os.Stdout r, w, _ := os.Pipe() @@ -103,7 +98,6 @@ func TestStartStandAlone(t *testing.T) { os.RemoveAll(home) }() viper.Set(cli.HomeFlag, home) - viper.Set(client.FlagName, "moniker") defer setupClientHome(t)() logger := log.NewNopLogger() @@ -112,8 +106,7 @@ func TestStartStandAlone(t *testing.T) { ctx := server.NewContext(cfg, logger) cdc := app.MakeCodec() initCmd := InitCmd(ctx, cdc) - err = initCmd.RunE(nil, nil) - require.NoError(t, err) + require.NoError(t, initCmd.RunE(nil, []string{"gaianode-test"})) app, err := mock.NewApp(home, logger) require.Nil(t, err) diff --git a/docs/gaia/deploy-testnet.md b/docs/gaia/deploy-testnet.md index c617e2052..a91c6d09c 100644 --- a/docs/gaia/deploy-testnet.md +++ b/docs/gaia/deploy-testnet.md @@ -26,7 +26,7 @@ This guide helps you create a single validator node that runs a network locally cd $HOME # Initialize the genesis.json file that will help you to bootstrap the network -gaiad init --chain-id testing --moniker testing +gaiad init --chain-id=testing testing # Create a key to hold your validator account gaiacli keys add validator diff --git a/docs/gaia/join-testnet.md b/docs/gaia/join-testnet.md index 91b3afef6..df47f88bb 100644 --- a/docs/gaia/join-testnet.md +++ b/docs/gaia/join-testnet.md @@ -19,11 +19,11 @@ These instructions are for setting up a brand new full node from scratch. First, initialize the node and create the necessary config files: ```bash -gaiad init --moniker +gaiad init ``` ::: warning Note -Only ASCII characters are supported for the `--moniker`. Using Unicode characters will render your node unreachable. +Monikers can contain only ASCII characters. Using Unicode characters will render your node unreachable. ::: You can edit this `moniker` later, in the `~/.gaiad/config/config.toml` file: