From 28e6ca2db0aab8a9542e2ce769f6ed127adf2dc3 Mon Sep 17 00:00:00 2001 From: Rogger Vasquez Date: Tue, 12 Jul 2022 17:57:35 -0500 Subject: [PATCH] rpk:make redpanda start use loaded file or default In the viper removal PR (#5061) we introduced a bug: rpk redpanda start will load the file and update some unset defaults such as rpk.kafka_api. This breaks backward compatibility for some users so we are correcting it in this commit. --- src/go/rpk/pkg/cli/cmd/redpanda/start.go | 1 + src/go/rpk/pkg/cli/cmd/redpanda/start_test.go | 6 ------ tests/rptest/tests/rpk_config_test.py | 15 --------------- 3 files changed, 1 insertion(+), 21 deletions(-) diff --git a/src/go/rpk/pkg/cli/cmd/redpanda/start.go b/src/go/rpk/pkg/cli/cmd/redpanda/start.go index 1667ce7114804..613c4578d0559 100644 --- a/src/go/rpk/pkg/cli/cmd/redpanda/start.go +++ b/src/go/rpk/pkg/cli/cmd/redpanda/start.go @@ -152,6 +152,7 @@ func NewStartCommand(fs afero.Fs, launcher rp.Launcher) *cobra.Command { if err != nil { return fmt.Errorf("unable to load config file: %s", err) } + cfg = cfg.FileOrDefaults() if len(configKvs) > 0 { if err = setConfig(cfg, configKvs); err != nil { diff --git a/src/go/rpk/pkg/cli/cmd/redpanda/start_test.go b/src/go/rpk/pkg/cli/cmd/redpanda/start_test.go index aa843be833d45..cfcfde0a3556d 100644 --- a/src/go/rpk/pkg/cli/cmd/redpanda/start_test.go +++ b/src/go/rpk/pkg/cli/cmd/redpanda/start_test.go @@ -14,9 +14,7 @@ package redpanda import ( "bytes" - "net" "os" - "strconv" "testing" "github.com/redpanda-data/redpanda/src/go/rpk/pkg/config" @@ -194,10 +192,6 @@ func TestStartCommand(t *testing.T) { path, ) c := config.Default() - // Adding unset default that get added on first load. - b0 := c.Redpanda.KafkaAPI[0] - c.Rpk.KafkaAPI.Brokers = []string{net.JoinHostPort(b0.Address, strconv.Itoa(b0.Port))} - c.Rpk.AdminAPI.Addresses = []string{"127.0.0.1:9644"} conf, err := new(config.Params).Load(fs) require.NoError(st, err) diff --git a/tests/rptest/tests/rpk_config_test.py b/tests/rptest/tests/rpk_config_test.py index 18047df74fa51..f5115dcfbd611 100644 --- a/tests/rptest/tests/rpk_config_test.py +++ b/tests/rptest/tests/rpk_config_test.py @@ -53,15 +53,9 @@ def test_config_init(self): port: 9644 developer_mode: true rpk: - admin_api: - addresses: - - 127.0.0.1:9644 coredump_dir: /var/lib/redpanda/coredump enable_memory_locking: false enable_usage_stats: false - kafka_api: - brokers: - - 0.0.0.0:9092 overprovisioned: false tune_aio_events: false tune_ballast_file: false @@ -182,9 +176,6 @@ def test_config_set_json(self): rpk.config_set(key, value, format='json') expected_config = yaml.full_load(''' -admin_api: - addresses: - - 127.0.0.1:9644 coredump_dir: /var/lib/redpanda/coredump enable_memory_locking: false enable_usage_stats: false @@ -210,12 +201,6 @@ def test_config_set_json(self): with open(os.path.join(d, 'redpanda.yaml')) as f: actual_config = yaml.full_load(f.read()) - assert actual_config['rpk']['kafka_api'] is not None - - # Delete 'kafka_api' so they can be compared since the - # brokers change depending on the container it's running - del actual_config['rpk']['kafka_api'] - if actual_config['rpk'] != expected_config: self.logger.error("Configs differ") self.logger.error(