Skip to content

Commit 846f96c

Browse files
authored
fix: update key mgmt flags to consistent format (#570)
1 parent ebe260f commit 846f96c

30 files changed

+979
-852
lines changed

cmd/base-keys.go

Lines changed: 33 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package cmd
22

33
import (
4-
"errors"
4+
"fmt"
55

66
"github.com/evertras/bubble-table/table"
77
"github.com/opentdf/otdfctl/pkg/cli"
88
"github.com/opentdf/otdfctl/pkg/man"
9+
"github.com/opentdf/otdfctl/pkg/utils"
910
"github.com/opentdf/platform/protocol/go/policy/kasregistry"
1011
"github.com/spf13/cobra"
1112
)
@@ -27,34 +28,24 @@ const (
2728
var policyKasRegistryBaseKeysCmd *cobra.Command
2829

2930
func getKasKeyIdentifier(c *cli.Cli) (*kasregistry.KasKeyIdentifier, error) {
30-
keyID := c.Flags.GetOptionalString("keyId")
31-
kasID := c.Flags.GetOptionalString("kasId")
32-
kasName := c.Flags.GetOptionalString("kasName")
33-
kasURI := c.Flags.GetOptionalString("kasUri")
31+
keyIdentifier := c.Flags.GetRequiredString("key")
32+
kasIdentifier := c.Flags.GetRequiredString("kas")
3433

35-
var identifier *kasregistry.KasKeyIdentifier
36-
if keyID != "" {
37-
identifier = &kasregistry.KasKeyIdentifier{
38-
Kid: keyID,
39-
}
40-
switch {
41-
case kasID != "":
42-
identifier.Identifier = &kasregistry.KasKeyIdentifier_KasId{
43-
KasId: kasID,
44-
}
45-
case kasName != "":
46-
identifier.Identifier = &kasregistry.KasKeyIdentifier_Name{
47-
Name: kasName,
48-
}
49-
case kasURI != "":
50-
identifier.Identifier = &kasregistry.KasKeyIdentifier_Uri{
51-
Uri: kasURI,
52-
}
53-
default:
54-
return nil, errors.New("at least one of 'kasId', 'kasName', or 'kasUri' must be provided with 'keyId'")
55-
}
34+
identifier := &kasregistry.KasKeyIdentifier{
35+
Kid: keyIdentifier,
5636
}
5737

38+
kasInputType := utils.ClassifyString(kasIdentifier)
39+
switch kasInputType { //nolint:exhaustive // default catches unknown
40+
case utils.StringTypeUUID:
41+
identifier.Identifier = &kasregistry.KasKeyIdentifier_KasId{KasId: kasIdentifier}
42+
case utils.StringTypeURI:
43+
identifier.Identifier = &kasregistry.KasKeyIdentifier_Uri{Uri: kasIdentifier}
44+
case utils.StringTypeGeneric:
45+
identifier.Identifier = &kasregistry.KasKeyIdentifier_Name{Name: kasIdentifier}
46+
default: // Catches StringTypeUnknown and any other unexpected types
47+
return nil, fmt.Errorf("invalid KAS identifier: '%s'. Must be a KAS UUID, URI, or Name", kasIdentifier)
48+
}
5849
return identifier, nil
5950
}
6051

@@ -113,11 +104,15 @@ func setBaseKey(cmd *cobra.Command, args []string) {
113104
h := NewHandler(c)
114105
defer h.Close()
115106

116-
id := c.Flags.GetOptionalID("id")
107+
var identifier *kasregistry.KasKeyIdentifier
108+
var err error
117109

118-
identifier, err := getKasKeyIdentifier(c)
119-
if err != nil {
120-
c.ExitWithError("Invalid key identifier", err)
110+
id := c.Flags.GetOptionalString("key")
111+
if utils.ClassifyString(id) != utils.StringTypeUUID {
112+
identifier, err = getKasKeyIdentifier(c)
113+
if err != nil {
114+
c.ExitWithError("Invalid key identifier", err)
115+
}
121116
}
122117
baseKey, err := h.SetBaseKey(c.Context(), id, identifier)
123118
if err != nil {
@@ -152,38 +147,17 @@ func init() {
152147
man.WithRun(setBaseKey),
153148
)
154149
setDoc.Flags().StringP(
155-
setDoc.GetDocFlag("id").Name,
156-
setDoc.GetDocFlag("id").Shorthand,
157-
setDoc.GetDocFlag("id").Default,
158-
setDoc.GetDocFlag("id").Description,
159-
)
160-
setDoc.Flags().StringP(
161-
setDoc.GetDocFlag("keyId").Name,
162-
setDoc.GetDocFlag("keyId").Shorthand,
163-
setDoc.GetDocFlag("keyId").Default,
164-
setDoc.GetDocFlag("keyId").Description,
165-
)
166-
setDoc.Flags().StringP(
167-
setDoc.GetDocFlag("kasUri").Name,
168-
setDoc.GetDocFlag("kasUri").Shorthand,
169-
setDoc.GetDocFlag("kasUri").Default,
170-
setDoc.GetDocFlag("kasUri").Description,
171-
)
172-
setDoc.Flags().StringP(
173-
setDoc.GetDocFlag("kasId").Name,
174-
setDoc.GetDocFlag("kasId").Shorthand,
175-
setDoc.GetDocFlag("kasId").Default,
176-
setDoc.GetDocFlag("kasId").Description,
150+
setDoc.GetDocFlag("key").Name,
151+
setDoc.GetDocFlag("key").Shorthand,
152+
setDoc.GetDocFlag("key").Default,
153+
setDoc.GetDocFlag("key").Description,
177154
)
178155
setDoc.Flags().StringP(
179-
setDoc.GetDocFlag("kasName").Name,
180-
setDoc.GetDocFlag("kasName").Shorthand,
181-
setDoc.GetDocFlag("kasName").Default,
182-
setDoc.GetDocFlag("kasName").Description,
156+
setDoc.GetDocFlag("kas").Name,
157+
setDoc.GetDocFlag("kas").Shorthand,
158+
setDoc.GetDocFlag("kas").Default,
159+
setDoc.GetDocFlag("kas").Description,
183160
)
184-
setDoc.MarkFlagsMutuallyExclusive("id", "keyId")
185-
setDoc.MarkFlagsOneRequired("id", "keyId")
186-
setDoc.MarkFlagsMutuallyExclusive("kasUri", "kasId", "kasName")
187161

188162
doc := man.Docs.GetCommand("policy/kas-registry/key/base",
189163
man.WithSubcommands(getDoc, setDoc))

0 commit comments

Comments
 (0)