Skip to content

Commit f1f88c4

Browse files
authored
cmd: init now only allows API key auth for ESS users (#189)
The ecctl init command disables the option to configure user/pass authentication for ESS and ESSP. ECE auth configuration stays the same.
1 parent 1dbdd0b commit f1f88c4

File tree

2 files changed

+35
-21
lines changed

2 files changed

+35
-21
lines changed

pkg/ecctl/init.go

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -299,18 +299,14 @@ func InitConfig(params InitConfigParams) error {
299299
// endpoints with self-signed certificates.
300300
cfg.Insecure = true
301301

302-
if err := askInfraSelection(&cfg, scanner, params.Writer, params.ErrWriter); err != nil {
302+
if err := askInfraSelection(&cfg, scanner, params.Writer, params.ErrWriter, params.PasswordReadFunc); err != nil {
303303
return err
304304
}
305305

306306
if err := askOutputFormat(&cfg, scanner, params.Writer, params.ErrWriter); err != nil {
307307
return err
308308
}
309309

310-
if err := askAuthMechanism(&cfg, scanner, params.Writer, params.PasswordReadFunc); err != nil {
311-
return err
312-
}
313-
314310
if err := validateAuth(cfg, params.Writer); err != nil {
315311
return err
316312
}
@@ -358,7 +354,7 @@ func printConfig(writer io.Writer, v *viper.Viper) error {
358354
return enc.Encode(c)
359355
}
360356

361-
func askInfraSelection(cfg *Config, scanner *input.Scanner, writer, errWriter io.Writer) error {
357+
func askInfraSelection(cfg *Config, scanner *input.Scanner, writer, errWriter io.Writer, passFunc PassFunc) error {
362358
infraChoiceRaw := scanner.Scan(hostChoiceMsg)
363359
fmt.Fprintln(writer)
364360
infraChoice, err := strconv.Atoi(infraChoiceRaw)
@@ -373,10 +369,19 @@ func askInfraSelection(cfg *Config, scanner *input.Scanner, writer, errWriter io
373369
if err := askRegionSelection(cfg, scanner, writer, essRegions); err != nil {
374370
return err
375371
}
372+
if err := askAPIKey(cfg, writer, passFunc); err != nil {
373+
return err
374+
}
376375
case eceInfraChoice:
377376
cfg.Host = scanner.Scan(eceHostMsg)
377+
if err := askAuthMechanism(cfg, scanner, writer, passFunc); err != nil {
378+
return err
379+
}
378380
case esspInfraChoice:
379381
cfg.Host = scanner.Scan(esspHostMsg)
382+
if err := askAPIKey(cfg, writer, passFunc); err != nil {
383+
return err
384+
}
380385
// For the time being the only available region for ESSP is us-west-2. Once more
381386
// regions have been added, this should be set in a similar way to essInfraChoice
382387
cfg.Region = "us-west-2"
@@ -422,6 +427,7 @@ func askOutputFormat(cfg *Config, scanner *input.Scanner, writer, errWriter io.W
422427
fmt.Fprintln(errWriter, "invalid choice, defaulting to \"text\"")
423428
}
424429

430+
fmt.Fprintln(writer)
425431
return nil
426432
}
427433

@@ -437,12 +443,9 @@ func askAuthMechanism(cfg *Config, scanner *input.Scanner, writer io.Writer, pas
437443
default:
438444
return errors.New("invalid authentication choice")
439445
case apiKeyChoice:
440-
apikey, err := ReadSecret(writer, passFunc, apiKeyMsg)
441-
if err != nil {
446+
if err := askAPIKey(cfg, writer, passFunc); err != nil {
442447
return err
443448
}
444-
cfg.APIKey = string(apikey)
445-
cfg.User, cfg.Pass = "", ""
446449
case userPassChoice:
447450
cfg.User = scanner.Scan(userMsg)
448451

@@ -454,7 +457,18 @@ func askAuthMechanism(cfg *Config, scanner *input.Scanner, writer io.Writer, pas
454457
cfg.APIKey = ""
455458
}
456459

457-
fmt.Fprintln(writer)
460+
return nil
461+
}
462+
463+
func askAPIKey(cfg *Config, writer io.Writer, passFunc PassFunc) error {
464+
apikey, err := ReadSecret(writer, passFunc, apiKeyMsg)
465+
if err != nil {
466+
return err
467+
}
468+
469+
cfg.APIKey = string(apikey)
470+
cfg.User, cfg.Pass = "", ""
471+
458472
return nil
459473
}
460474

pkg/ecctl/init_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,8 @@ func TestInitConfig(t *testing.T) {
244244
strings.NewReader("1\n"),
245245
strings.NewReader("1\n"),
246246
strings.NewReader("1\n"),
247-
strings.NewReader("1\n"),
248247
strings.NewReader("anapikey\n"),
248+
strings.NewReader("1\n"),
249249
),
250250
Writer: new(bytes.Buffer),
251251
ErrWriter: new(bytes.Buffer),
@@ -265,8 +265,8 @@ func TestInitConfig(t *testing.T) {
265265
},
266266
wantOutput: disclaimer + missingConfigMsg + hostChoiceMsg + "\n" +
267267
fmt.Sprintf(essChoiceMsg, essHostAddress) + regionChoiceMsg + "\n" +
268-
formatChoiceMsg + "\n" + authChoiceMsg + "\n" + apiKeyMsg + "\n" +
269-
"\n" + fmt.Sprintf(validCredentialsMsg, "anacleto") + finalMsg + "\n",
268+
apiKeyMsg + "\n" + formatChoiceMsg + "\n" + "\n" +
269+
fmt.Sprintf(validCredentialsMsg, "anacleto") + finalMsg + "\n",
270270
},
271271
{
272272
name: "doesn't find a config file and user creates a new one with user/pass",
@@ -277,9 +277,9 @@ func TestInitConfig(t *testing.T) {
277277
strings.NewReader("y\n"),
278278
strings.NewReader("2\n"),
279279
strings.NewReader("https://ahost\n"),
280-
strings.NewReader("1\n"),
281280
strings.NewReader("2\n"),
282281
strings.NewReader("auser\n"),
282+
strings.NewReader("1\n"),
283283
),
284284
Writer: new(bytes.Buffer),
285285
ErrWriter: new(bytes.Buffer),
@@ -303,7 +303,7 @@ func TestInitConfig(t *testing.T) {
303303
"user": "auser",
304304
},
305305
wantOutput: disclaimer + missingConfigMsg + hostChoiceMsg + "\n" + eceHostMsg +
306-
formatChoiceMsg + "\n" + authChoiceMsg + "\n" + userMsg + passMsg +
306+
authChoiceMsg + "\n" + userMsg + passMsg + "\n" + formatChoiceMsg +
307307
"\n" + "\n" + fmt.Sprintf(validCredentialsMsg, "auser") + finalMsg + "\n",
308308
},
309309
{
@@ -316,8 +316,8 @@ func TestInitConfig(t *testing.T) {
316316
strings.NewReader("3\n"),
317317
strings.NewReader("https://ahost\n"),
318318
strings.NewReader("1\n"),
319-
strings.NewReader("1\n"),
320319
strings.NewReader("anapikey\n"),
320+
strings.NewReader("1\n"),
321321
),
322322
Writer: new(bytes.Buffer),
323323
ErrWriter: new(bytes.Buffer),
@@ -338,7 +338,7 @@ func TestInitConfig(t *testing.T) {
338338
wantOutput: disclaimer +
339339
fmt.Sprintf(settingsPathMsg, "test_files/userpassmodif.yaml") +
340340
userPassConfigToModifyContents + "\n" + existingConfigMsg + hostChoiceMsg +
341-
"\n" + esspHostMsg + formatChoiceMsg + "\n" + authChoiceMsg + "\n" + apiKeyMsg +
341+
"\n" + esspHostMsg + apiKeyMsg + "\n" + formatChoiceMsg +
342342
"\n" + "\n" + fmt.Sprintf(validCredentialsMsg, "anacleto") + finalMsg + "\n",
343343
},
344344
{
@@ -350,9 +350,9 @@ func TestInitConfig(t *testing.T) {
350350
strings.NewReader("y\n"),
351351
strings.NewReader("2\n"),
352352
strings.NewReader("https://ahost\n"),
353-
strings.NewReader("1\n"),
354353
strings.NewReader("2\n"),
355354
strings.NewReader("auser\n"),
355+
strings.NewReader("1\n"),
356356
),
357357
Writer: new(bytes.Buffer),
358358
ErrWriter: new(bytes.Buffer),
@@ -378,8 +378,8 @@ func TestInitConfig(t *testing.T) {
378378
wantOutput: disclaimer +
379379
fmt.Sprintf(settingsPathMsg, "test_files/apikeymodif.yaml") +
380380
apiKeyConfigToModifyContents + "\n" + existingConfigMsg + hostChoiceMsg +
381-
"\n" + eceHostMsg + formatChoiceMsg + "\n" + authChoiceMsg + "\n" + userMsg +
382-
passMsg + "\n" + "\n" + fmt.Sprintf(validCredentialsMsg, "auser") + finalMsg + "\n",
381+
"\n" + eceHostMsg + authChoiceMsg + "\n" + userMsg +
382+
passMsg + "\n" + formatChoiceMsg + "\n" + "\n" + fmt.Sprintf(validCredentialsMsg, "auser") + finalMsg + "\n",
383383
},
384384
}
385385
for _, tt := range tests {

0 commit comments

Comments
 (0)