Skip to content

Commit 660dcd5

Browse files
authored
fix: persist hostname-override flag to context (#630)
Signed-off-by: ivanauth <ivan@authzed.com>
1 parent 7fde559 commit 660dcd5

6 files changed

Lines changed: 54 additions & 39 deletions

File tree

internal/client/client.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,19 @@ func tokenFromCli(cmd *cobra.Command) (storage.Token, error) {
165165
nvc := cobrautil.MustGetBool(cmd, "no-verify-ca")
166166
notVerifyCA = &nvc
167167
}
168+
169+
var hostnameOverride string
170+
if cmd.Flags().Changed("hostname-override") {
171+
hostnameOverride = cobrautil.MustGetString(cmd, "hostname-override")
172+
}
173+
168174
overrideToken := storage.Token{
169-
APIToken: cobrautil.MustGetString(cmd, "token"),
170-
Endpoint: cobrautil.MustGetString(cmd, "endpoint"),
171-
Insecure: notSecure,
172-
NoVerifyCA: notVerifyCA,
173-
CACert: certBytes,
175+
APIToken: cobrautil.MustGetString(cmd, "token"),
176+
Endpoint: cobrautil.MustGetString(cmd, "endpoint"),
177+
Insecure: notSecure,
178+
NoVerifyCA: notVerifyCA,
179+
CACert: certBytes,
180+
HostnameOverride: hostnameOverride,
174181
}
175182
return overrideToken, nil
176183
}
@@ -278,9 +285,8 @@ func DialOptsFromFlags(cmd *cobra.Command, token storage.Token) ([]grpc.DialOpti
278285
opts = append(opts, certOpt)
279286
}
280287

281-
hostnameOverride := cobrautil.MustGetString(cmd, "hostname-override")
282-
if hostnameOverride != "" {
283-
opts = append(opts, grpc.WithAuthority(hostnameOverride))
288+
if token.HostnameOverride != "" {
289+
opts = append(opts, grpc.WithAuthority(token.HostnameOverride))
284290
}
285291

286292
maxMessageSize := cobrautil.MustGetInt(cmd, "max-message-size")

internal/cmd/context.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,16 @@ func contextSetCmdFunc(cmd *cobra.Command, args []string) error {
145145

146146
insecure := cobrautil.MustGetBool(cmd, "insecure")
147147
noVerifyCA := cobrautil.MustGetBool(cmd, "no-verify-ca")
148+
hostnameOverride := cobrautil.MustGetString(cmd, "hostname-override")
148149
cfgStore, secretStore := client.DefaultStorage()
149150
err = storage.PutToken(storage.Token{
150-
Name: name,
151-
Endpoint: stringz.DefaultEmpty(endpoint, "grpc.authzed.com:443"),
152-
APIToken: apiToken,
153-
Insecure: &insecure,
154-
NoVerifyCA: &noVerifyCA,
155-
CACert: certBytes,
151+
Name: name,
152+
Endpoint: stringz.DefaultEmpty(endpoint, "grpc.authzed.com:443"),
153+
APIToken: apiToken,
154+
Insecure: &insecure,
155+
NoVerifyCA: &noVerifyCA,
156+
CACert: certBytes,
157+
HostnameOverride: hostnameOverride,
156158
}, secretStore)
157159
if err != nil {
158160
return err

internal/storage/config.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,13 @@ func TokenWithOverride(overrideToken Token, referenceToken Token) (Token, error)
6363
}
6464

6565
return Token{
66-
Name: referenceToken.Name,
67-
Endpoint: stringz.DefaultEmpty(overrideToken.Endpoint, referenceToken.Endpoint),
68-
APIToken: stringz.DefaultEmpty(overrideToken.APIToken, referenceToken.APIToken),
69-
Insecure: insecure,
70-
NoVerifyCA: noVerifyCA,
71-
CACert: caCert,
66+
Name: referenceToken.Name,
67+
Endpoint: stringz.DefaultEmpty(overrideToken.Endpoint, referenceToken.Endpoint),
68+
APIToken: stringz.DefaultEmpty(overrideToken.APIToken, referenceToken.APIToken),
69+
Insecure: insecure,
70+
NoVerifyCA: noVerifyCA,
71+
CACert: caCert,
72+
HostnameOverride: stringz.DefaultEmpty(overrideToken.HostnameOverride, referenceToken.HostnameOverride),
7273
}, nil
7374
}
7475

internal/storage/config_test.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,24 @@ import (
1010
func TestTokenWithOverride(t *testing.T) {
1111
bTrue := true
1212
referenceToken := Token{
13-
Name: "n1",
14-
Endpoint: "e1",
15-
APIToken: "a1",
16-
Insecure: &bTrue,
17-
NoVerifyCA: &bTrue,
18-
CACert: []byte("c1"),
13+
Name: "n1",
14+
Endpoint: "e1",
15+
APIToken: "a1",
16+
Insecure: &bTrue,
17+
NoVerifyCA: &bTrue,
18+
CACert: []byte("c1"),
19+
HostnameOverride: "h1",
1920
}
2021

2122
bFalse := false
2223
override := Token{
23-
Name: "n2",
24-
Endpoint: "e2",
25-
APIToken: "a2",
26-
Insecure: &bFalse,
27-
NoVerifyCA: &bFalse,
28-
CACert: []byte("c2"),
24+
Name: "n2",
25+
Endpoint: "e2",
26+
APIToken: "a2",
27+
Insecure: &bFalse,
28+
NoVerifyCA: &bFalse,
29+
CACert: []byte("c2"),
30+
HostnameOverride: "h2",
2931
}
3032

3133
result, err := TokenWithOverride(override, referenceToken)
@@ -36,6 +38,7 @@ func TestTokenWithOverride(t *testing.T) {
3638
require.False(t, *result.Insecure)
3739
require.False(t, *result.NoVerifyCA)
3840
require.Equal(t, 0, bytes.Compare([]byte("c2"), result.CACert))
41+
require.Equal(t, "h2", result.HostnameOverride)
3942

4043
result, err = TokenWithOverride(Token{}, referenceToken)
4144
require.NoError(t, err)
@@ -45,4 +48,5 @@ func TestTokenWithOverride(t *testing.T) {
4548
require.True(t, *result.Insecure)
4649
require.True(t, *result.NoVerifyCA)
4750
require.Equal(t, 0, bytes.Compare([]byte("c1"), result.CACert))
51+
require.Equal(t, "h1", result.HostnameOverride)
4852
}

internal/storage/secrets.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,17 @@ import (
1515
)
1616

1717
type Token struct {
18-
Name string
19-
Endpoint string
20-
APIToken string //nolint:gosec // not a hardcoded credential, this is a user-provided API token field
21-
Insecure *bool
22-
NoVerifyCA *bool
23-
CACert []byte
18+
Name string
19+
Endpoint string
20+
APIToken string //nolint:gosec // not a hardcoded credential, this is a user-provided API token field
21+
Insecure *bool
22+
NoVerifyCA *bool
23+
CACert []byte
24+
HostnameOverride string
2425
}
2526

2627
func (t Token) AnyValue() bool {
27-
if t.Endpoint != "" || t.APIToken != "" || t.Insecure != nil || t.NoVerifyCA != nil || len(t.CACert) > 0 {
28+
if t.Endpoint != "" || t.APIToken != "" || t.Insecure != nil || t.NoVerifyCA != nil || len(t.CACert) > 0 || t.HostnameOverride != "" {
2829
return true
2930
}
3031

internal/storage/secrets_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ func TestTokenAnyValue(t *testing.T) {
1616
require.True(t, Token{Insecure: &b}.AnyValue())
1717
require.True(t, Token{NoVerifyCA: &b}.AnyValue())
1818
require.True(t, Token{CACert: []byte("a")}.AnyValue())
19+
require.True(t, Token{HostnameOverride: "foo"}.AnyValue())
1920
}

0 commit comments

Comments
 (0)